Back out 2 changesets (bug 1291312) for making Win7 debug wpt-e10s-2 permanently fail by taking more than 7200 seconds to run, a=backout
authorPhil Ringnalda <philringnalda@gmail.com>
Wed, 03 Aug 2016 18:50:40 -0700
changeset 307968 1576e7bc1bec7232e9e4ba78cce62526b1a6380b
parent 307967 de6fd5bb93d26985b6b7eb8b1e2ec896b8e7611a
child 307992 3a0a2331334c5f5734f1fd4769c9fcc0b0b3709d
child 308015 03e541a38d87381782c7fccea38aaa32cdd491df
child 308146 ac2e016915e47560b5fea1fcffe15927af697ac4
push id30525
push userphilringnalda@gmail.com
push dateThu, 04 Aug 2016 01:50:59 +0000
treeherdermozilla-central@1576e7bc1bec [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbackout
bugs1291312
milestone51.0a1
backs out0267734ec297ab7a539437afbe87e49d7d745ba7
8232b0211660f6b5b60ab1db9acdcab022a995e0
first release with
nightly linux32
1576e7bc1bec / 51.0a1 / 20160804030441 / files
nightly linux64
1576e7bc1bec / 51.0a1 / 20160804030441 / files
nightly mac
1576e7bc1bec / 51.0a1 / 20160804030441 / files
nightly win32
1576e7bc1bec / 51.0a1 / 20160804030441 / files
nightly win64
1576e7bc1bec / 51.0a1 / 20160804030441 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Back out 2 changesets (bug 1291312) for making Win7 debug wpt-e10s-2 permanently fail by taking more than 7200 seconds to run, a=backout Backed out changeset 0267734ec297 (bug 1291312) Backed out changeset 8232b0211660 (bug 1291312)
testing/web-platform/meta/FileAPI/idlharness.html.ini
testing/web-platform/meta/FileAPI/idlharness.worker.js.ini
testing/web-platform/meta/IndexedDB/interfaces.worker.js.ini
testing/web-platform/meta/IndexedDB/transaction-lifetime-empty.html.ini
testing/web-platform/meta/MANIFEST.json
testing/web-platform/meta/WebCryptoAPI/digest/digest.worker.js.ini
testing/web-platform/meta/WebCryptoAPI/digest/test_digest.html.ini
testing/web-platform/meta/WebCryptoAPI/idlharness.worker.js.ini
testing/web-platform/meta/XMLHttpRequest/send-redirect-post-upload.htm.ini
testing/web-platform/meta/custom-elements/custom-elements-registry/define.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-async-creation-with-gc.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-keystatuses.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-reload.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-onencrypted.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-two-videos.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-syntax.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-update-disallowed-input.html.ini
testing/web-platform/meta/encrypted-media/Google/encrypted-media-waiting-for-a-key.html.ini
testing/web-platform/meta/encrypted-media/clearkey-check-initdata-type.html.ini
testing/web-platform/meta/encrypted-media/clearkey-events.html.ini
testing/web-platform/meta/encrypted-media/clearkey-generate-request-disallowed-input.html.ini
testing/web-platform/meta/encrypted-media/clearkey-keystatuses-multiple-sessions.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-events.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-multikey.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html.ini
testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary.html.ini
testing/web-platform/meta/encrypted-media/clearkey-not-callable-after-createsession.html.ini
testing/web-platform/meta/encrypted-media/drm-check-initdata-type.html.ini
testing/web-platform/meta/encrypted-media/drm-events.html.ini
testing/web-platform/meta/encrypted-media/drm-generate-request-disallowed-input.html.ini
testing/web-platform/meta/encrypted-media/drm-keystatuses-multiple-sessions.html.ini
testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-events.html.ini
testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html.ini
testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-multikey.html.ini
testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html.ini
testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-two-videos.html.ini
testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary.html.ini
testing/web-platform/meta/encrypted-media/drm-not-callable-after-createsession.html.ini
testing/web-platform/meta/encrypted-media/idlharness.html.ini
testing/web-platform/meta/fetch/api/cors/cors-cookies-worker.html.ini
testing/web-platform/meta/fetch/api/cors/cors-cookies.html.ini
testing/web-platform/meta/fetch/api/cors/cors-preflight-referrer-worker.html.ini
testing/web-platform/meta/fetch/api/cors/cors-preflight-referrer.html.ini
testing/web-platform/meta/fetch/api/cors/cors-preflight-worker.html.ini
testing/web-platform/meta/html/dom/interfaces.html.ini
testing/web-platform/meta/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
testing/web-platform/meta/html/semantics/embedded-content/the-img-element/invalid-src.html.ini
testing/web-platform/meta/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html.ini
testing/web-platform/meta/html/semantics/interactive-elements/the-dialog-element/dialog-open.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-charset-03.html.ini
testing/web-platform/meta/mozilla-sync
testing/web-platform/meta/pointerevents/pointerevent_suppress_compat_events_on_click.html.ini
testing/web-platform/meta/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html.ini
testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-001.html.ini
testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-002.html.ini
testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-003.html.ini
testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-004.html.ini
testing/web-platform/meta/url/a-element-xhtml.xhtml.ini
testing/web-platform/meta/url/a-element.html.ini
testing/web-platform/meta/url/url-constructor.html.ini
testing/web-platform/meta/web-animations/interfaces/Animatable/animate.html.ini
testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/constructor.html.ini
testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html.ini
testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/setKeyframes.html.ini
testing/web-platform/meta/workers/constructors/Worker/expected-self-properties.html.ini
testing/web-platform/meta/workers/constructors/Worker/expected-self-properties.worker.js.ini
testing/web-platform/tests/2dcontext/tools/gentest.py
testing/web-platform/tests/2dcontext/tools/specextract.py
testing/web-platform/tests/FileAPI/idlharness.idl
testing/web-platform/tests/FileAPI/idlharness.worker.js
testing/web-platform/tests/WebCryptoAPI/digest/digest.js
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.any.js
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.html
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js
testing/web-platform/tests/XMLHttpRequest/open-url-multi-window.htm
testing/web-platform/tests/XMLHttpRequest/resources/last-modified.py
testing/web-platform/tests/XMLHttpRequest/responsexml-basic.htm
testing/web-platform/tests/XMLHttpRequest/send-blob-with-no-mime-type.html
testing/web-platform/tests/annotation-model/.editorconfig
testing/web-platform/tests/annotation-model/CONTRIBUTING.md
testing/web-platform/tests/annotation-model/OWNERS
testing/web-platform/tests/annotation-model/README.md
testing/web-platform/tests/annotation-model/TODO
testing/web-platform/tests/annotation-model/definitions/.gitignore
testing/web-platform/tests/annotation-model/definitions/choiceSet.json
testing/web-platform/tests/annotation-model/definitions/externalWebResource.json
testing/web-platform/tests/annotation-model/definitions/specificResource.json
testing/web-platform/tests/annotation-model/definitions/stringUri.json
testing/web-platform/tests/annotation-model/definitions/textualBody.json
testing/web-platform/tests/annotation-model/examples/README.md
testing/web-platform/tests/annotation-model/examples/example1-manual.html
testing/web-platform/tests/annotation-model/examples/example1.test
testing/web-platform/tests/annotation-model/examples/example2-manual.html
testing/web-platform/tests/annotation-model/examples/example2.test
testing/web-platform/tests/annotation-model/examples/exampleContext.json
testing/web-platform/tests/annotation-model/examples/exampleTarget.json
testing/web-platform/tests/annotation-model/scripts/JSONtest.js
testing/web-platform/tests/annotation-model/scripts/ajv.min.js
testing/web-platform/tests/annotation-model/scripts/ajv.min.js.map
testing/web-platform/tests/annotation-model/tools/make_tests.py
testing/web-platform/tests/annotation-model/tools/template
testing/web-platform/tests/annotation-model/tools/tests/README.md
testing/web-platform/tests/custom-elements/custom-elements-registry/define.html
testing/web-platform/tests/docs/test-format-guidelines.md
testing/web-platform/tests/domparsing/DOMParser-parseFromString-html.html
testing/web-platform/tests/domparsing/DOMParser-parseFromString-xml.html
testing/web-platform/tests/encrypted-media/EncryptedMediaExtensions.idl
testing/web-platform/tests/encrypted-media/Google/encrypted-media-async-creation-with-gc.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-check-init-data-type.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-events.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-keystatuses.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-lifetime-reload.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-not-callable-after-createsession.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-onencrypted.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-playback-two-videos.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-session-closed-event.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-setmediakeys.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-syntax.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-unique-origin.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-update-disallowed-input.html
testing/web-platform/tests/encrypted-media/Google/encrypted-media-utils.js
testing/web-platform/tests/encrypted-media/Google/encrypted-media-waiting-for-a-key.html
testing/web-platform/tests/encrypted-media/Google/test-encrypted-different-av-keys.webm
testing/web-platform/tests/encrypted-media/Google/test-encrypted.webm
testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted-different-av-keys.webm
testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted.webm
testing/web-platform/tests/encrypted-media/Google/webm/test.webm
testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html
testing/web-platform/tests/encrypted-media/clearkey-events.html
testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html
testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html
testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html
testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html
testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_bis.mp4
testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4
testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4
testing/web-platform/tests/encrypted-media/content/content-metadata.js
testing/web-platform/tests/encrypted-media/content/drmconfig.json
testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4
testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_bis.mp4
testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4
testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html
testing/web-platform/tests/encrypted-media/drm-events.html
testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html
testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html
testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html
testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html
testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html
testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html
testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html
testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html
testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html
testing/web-platform/tests/encrypted-media/idlharness.html
testing/web-platform/tests/encrypted-media/polyfill/Makefile
testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js
testing/web-platform/tests/encrypted-media/polyfill/chrome-polyfill.js
testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js
testing/web-platform/tests/encrypted-media/polyfill/firefox-polyfill.js
testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html
testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js
testing/web-platform/tests/encrypted-media/scripts/events.js
testing/web-platform/tests/encrypted-media/scripts/generate-request-disallowed-input.js
testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js
testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js
testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js
testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js
testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js
testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js
testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js
testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey.js
testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys-first.js
testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js
testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js
testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js
testing/web-platform/tests/encrypted-media/util/drmtoday-messagehandler.js
testing/web-platform/tests/encrypted-media/util/fetch.js
testing/web-platform/tests/encrypted-media/util/testmediasource.js
testing/web-platform/tests/encrypted-media/util/utf8.js
testing/web-platform/tests/encrypted-media/util/utils.js
testing/web-platform/tests/eventsource/resources/cors.py
testing/web-platform/tests/fetch/api/basic/integrity.js
testing/web-platform/tests/fetch/api/basic/mode-no-cors.js
testing/web-platform/tests/fetch/api/basic/mode-same-origin-worker.html
testing/web-platform/tests/fetch/api/basic/mode-same-origin.html
testing/web-platform/tests/fetch/api/basic/mode-same-origin.js
testing/web-platform/tests/fetch/api/basic/request-head-worker.html
testing/web-platform/tests/fetch/api/basic/request-head.html
testing/web-platform/tests/fetch/api/basic/request-head.js
testing/web-platform/tests/fetch/api/basic/response-url-worker.html
testing/web-platform/tests/fetch/api/basic/response-url.html
testing/web-platform/tests/fetch/api/basic/response-url.js
testing/web-platform/tests/fetch/api/cors/cors-basic-worker.html
testing/web-platform/tests/fetch/api/cors/cors-basic.html
testing/web-platform/tests/fetch/api/cors/cors-basic.js
testing/web-platform/tests/fetch/api/cors/cors-cookies-worker.html
testing/web-platform/tests/fetch/api/cors/cors-cookies.html
testing/web-platform/tests/fetch/api/cors/cors-cookies.js
testing/web-platform/tests/fetch/api/cors/cors-filtering.js
testing/web-platform/tests/fetch/api/cors/cors-multiple-origins.js
testing/web-platform/tests/fetch/api/cors/cors-no-preflight-worker.html
testing/web-platform/tests/fetch/api/cors/cors-no-preflight.html
testing/web-platform/tests/fetch/api/cors/cors-no-preflight.js
testing/web-platform/tests/fetch/api/cors/cors-origin-worker.html
testing/web-platform/tests/fetch/api/cors/cors-origin.html
testing/web-platform/tests/fetch/api/cors/cors-origin.js
testing/web-platform/tests/fetch/api/cors/cors-preflight-redirect-worker.html
testing/web-platform/tests/fetch/api/cors/cors-preflight-redirect.html
testing/web-platform/tests/fetch/api/cors/cors-preflight-redirect.js
testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer-worker.html
testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer.html
testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer.js
testing/web-platform/tests/fetch/api/cors/cors-preflight-status-worker.html
testing/web-platform/tests/fetch/api/cors/cors-preflight-status.html
testing/web-platform/tests/fetch/api/cors/cors-preflight-status.js
testing/web-platform/tests/fetch/api/cors/cors-preflight.js
testing/web-platform/tests/fetch/api/cors/cors-redirect-credentials.html
testing/web-platform/tests/fetch/api/cors/cors-redirect-credentials.js
testing/web-platform/tests/fetch/api/cors/cors-redirect-worker.html
testing/web-platform/tests/fetch/api/cors/cors-redirect.html
testing/web-platform/tests/fetch/api/cors/cors-redirect.js
testing/web-platform/tests/fetch/api/headers/headers-basic.html
testing/web-platform/tests/fetch/api/request/request-cache.html
testing/web-platform/tests/fetch/api/request/request-init-002.html
testing/web-platform/tests/fetch/api/request/request-init-003.sub.html
testing/web-platform/tests/fetch/api/request/resources/get-host-info.sub.js
testing/web-platform/tests/fetch/api/resources/get-host-info.sub.js
testing/web-platform/tests/fetch/api/resources/utils.js
testing/web-platform/tests/fetch/api/response/response-clone.html
testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/empty_fragment.html
testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/empty_fragment_iframe.html
testing/web-platform/tests/html/dom/interfaces.html
testing/web-platform/tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html
testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html
testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.py
testing/web-platform/tests/html/semantics/embedded-content/the-img-element/invalid-src.html
testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html
testing/web-platform/tests/html/semantics/grouping-content/the-li-element/grouping-li.html
testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-open.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-charset-03.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-not-executed-after-shutdown-child.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-not-executed-after-shutdown.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-not-executed-after-shutdown.js
testing/web-platform/tests/html/semantics/tabular-data/the-table-element/remove-row.html
testing/web-platform/tests/html/tools/update_html5lib_tests.py
testing/web-platform/tests/lint.whitelist
testing/web-platform/tests/mixed-content/generic/tools/common_paths.py
testing/web-platform/tests/payment-request/OWNERS
testing/web-platform/tests/pointerevents/OWNERS
testing/web-platform/tests/pointerevents/README.md
testing/web-platform/tests/pointerevents/pointerevent_attributes_mouse-manual.html
testing/web-platform/tests/pointerevents/pointerevent_button_attribute_mouse-manual.html
testing/web-platform/tests/pointerevents/pointerevent_multiple_primary_pointers_boundary_events-manual.html
testing/web-platform/tests/pointerevents/pointerevent_pointerId_scope-manual.html
testing/web-platform/tests/pointerevents/pointerevent_properties_mouse-manual.html
testing/web-platform/tests/pointerevents/pointerevent_styles.css
testing/web-platform/tests/pointerevents/pointerevent_support.js
testing/web-platform/tests/pointerevents/pointerevent_suppress_compat_events_on_click.html
testing/web-platform/tests/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html
testing/web-platform/tests/pointerevents/pointerevent_touch-action-button-test_touch-manual.html
testing/web-platform/tests/pointerevents/pointerevent_touch-action-svg-test_touch-manual.html
testing/web-platform/tests/pointerevents/resources/pointerevent_pointerId_scope-iframe.html
testing/web-platform/tests/presentation-api/controlling-ua/idlharness.html
testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html
testing/web-platform/tests/referrer-policy/generic/subresource/subresource.py
testing/web-platform/tests/referrer-policy/generic/tools/common_paths.py
testing/web-platform/tests/resources/idlharness.js
testing/web-platform/tests/resources/testharness.js
testing/web-platform/tests/service-workers/tools/blink-import.py
testing/web-platform/tests/shadow-dom/leaktests/html-collection.html
testing/web-platform/tests/shadow-dom/untriaged/user-interaction/focus-navigation/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/user-interaction/focus-navigation/test-002.html
testing/web-platform/tests/shadow-dom/untriaged/user-interaction/focus-navigation/test-003.html
testing/web-platform/tests/shadow-dom/untriaged/user-interaction/focus-navigation/test-004.html
testing/web-platform/tests/streams/readable-streams/bad-strategies.js
testing/web-platform/tests/tools/lint/lint.py
testing/web-platform/tests/tools/manifest/sourcefile.py
testing/web-platform/tests/tools/manifest/tests/test_manifest.py
testing/web-platform/tests/tools/runner/index.html
testing/web-platform/tests/tools/runner/report.py
testing/web-platform/tests/tools/runner/runner.css
testing/web-platform/tests/tools/runner/runner.js
testing/web-platform/tests/tools/serve/serve.py
testing/web-platform/tests/tools/setup.cfg
testing/web-platform/tests/tools/sslutils/openssl.py
testing/web-platform/tests/web-animations/README.md
testing/web-platform/tests/web-animations/interfaces/Animation/cancel.html
testing/web-platform/tests/web-animations/interfaces/Animation/constructor.html
testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/document-timeline.html
testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/idlharness.html
testing/web-platform/tests/web-animations/interfaces/DocumentTimeline/idlharness.html
testing/web-platform/tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html
testing/web-platform/tests/web-animations/resources/keyframe-utils.js
testing/web-platform/tests/web-animations/timing-model/timelines/default-document-timeline.html
testing/web-platform/tests/webgl/tools/import-conformance-tests.py
testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/buildtests.py
testing/web-platform/tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html
testing/web-platform/tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js
testing/web-platform/tests/workers/constructors/Worker/expected-self-properties.html
testing/web-platform/tests/workers/constructors/Worker/expected-self-properties.worker.js
testing/web-platform/tests/workers/constructors/Worker/terminate.html
testing/web-platform/tests/workers/constructors/Worker/unexpected-self-properties.html
testing/web-platform/tests/workers/constructors/Worker/unexpected-self-properties.worker.js
testing/web-platform/tests/workers/interfaces.idl
testing/web-platform/tests/workers/workers.js
--- a/testing/web-platform/meta/FileAPI/idlharness.html.ini
+++ b/testing/web-platform/meta/FileAPI/idlharness.html.ini
@@ -19,16 +19,19 @@
     expected: FAIL
 
   [Blob interface: new File(["myFileBits"\], "myFileName") must inherit property "isClosed" with the proper type (2)]
     expected: FAIL
 
   [Blob interface: new File(["myFileBits"\], "myFileName") must inherit property "close" with the proper type (4)]
     expected: FAIL
 
+  [FileReaderSync interface: existence and properties of interface object]
+    expected: FAIL
+
   [FileReaderSync interface object length]
     expected: FAIL
 
   [FileReaderSync interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [FileReaderSync interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
--- a/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini
+++ b/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini
@@ -19,16 +19,19 @@
     expected: FAIL
 
   [Blob interface: new File(["myFileBits"\], "myFileName") must inherit property "isClosed" with the proper type (2)]
     expected: FAIL
 
   [Blob interface: new File(["myFileBits"\], "myFileName") must inherit property "close" with the proper type (4)]
     expected: FAIL
 
+  [FileList interface: existence and properties of interface object]
+    expected: FAIL
+
   [FileList interface object length]
     expected: FAIL
 
   [FileList interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [FileList interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
@@ -37,29 +40,8 @@
     expected: FAIL
 
   [FileList interface: attribute length]
     expected: FAIL
 
   [FileList interface object name]
     expected: FAIL
 
-  [ArrayBuffer interface: existence and properties of interface object]
-    expected: FAIL
-
-  [URL interface: existence and properties of interface object]
-    expected: FAIL
-
-  [EventTarget interface: existence and properties of interface object]
-    expected: FAIL
-
-  [Event interface: existence and properties of interface object]
-    expected: FAIL
-
-  [Blob interface: existence and properties of interface object]
-    expected: FAIL
-
-  [File interface: existence and properties of interface object]
-    expected: FAIL
-
-  [FileReader interface: existence and properties of interface object]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/IndexedDB/interfaces.worker.js.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-[interfaces.worker]
-  type: testharness
-  [WorkerGlobalScope interface: existence and properties of interface object]
-    expected: FAIL
-
-  [Event interface: existence and properties of interface object]
-    expected: FAIL
-
-  [EventTarget interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBKeyRange interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBRequest interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBOpenDBRequest interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBVersionChangeEvent interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBFactory interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBDatabase interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBObjectStore interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBIndex interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBCursor interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBCursorWithValue interface: existence and properties of interface object]
-    expected: FAIL
-
-  [IDBTransaction interface: existence and properties of interface object]
-    expected: FAIL
-
--- a/testing/web-platform/meta/IndexedDB/transaction-lifetime-empty.html.ini
+++ b/testing/web-platform/meta/IndexedDB/transaction-lifetime-empty.html.ini
@@ -1,3 +1,4 @@
 [transaction-lifetime-empty.html]
   type: testharness
   disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1290853
+
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -93,24 +93,16 @@
         "path": "XMLHttpRequest/send-authentication-prompt-2-manual.htm",
         "url": "/XMLHttpRequest/send-authentication-prompt-2-manual.htm"
       },
       {
         "path": "XMLHttpRequest/send-authentication-prompt-manual.htm",
         "url": "/XMLHttpRequest/send-authentication-prompt-manual.htm"
       },
       {
-        "path": "annotation-model/examples/example1-manual.html",
-        "url": "/annotation-model/examples/example1-manual.html"
-      },
-      {
-        "path": "annotation-model/examples/example2-manual.html",
-        "url": "/annotation-model/examples/example2-manual.html"
-      },
-      {
         "path": "battery-status/battery-charging-manual.html",
         "url": "/battery-status/battery-charging-manual.html"
       },
       {
         "path": "battery-status/battery-discharging-manual.html",
         "url": "/battery-status/battery-discharging-manual.html"
       },
       {
@@ -933,18 +925,18 @@
         "path": "page-visibility/test_minimize-manual.html",
         "url": "/page-visibility/test_minimize-manual.html"
       },
       {
         "path": "page-visibility/test_tab_state_change-manual.html",
         "url": "/page-visibility/test_tab_state_change-manual.html"
       },
       {
-        "path": "pointerevents/pointerevent_attributes_mouse-manual.html",
-        "url": "/pointerevents/pointerevent_attributes_mouse-manual.html"
+        "path": "pointerevents/pointerevent_button_attribute_mouse-manual.html",
+        "url": "/pointerevents/pointerevent_button_attribute_mouse-manual.html"
       },
       {
         "path": "pointerevents/pointerevent_capture_mouse-manual.html",
         "url": "/pointerevents/pointerevent_capture_mouse-manual.html"
       },
       {
         "path": "pointerevents/pointerevent_capture_suppressing_mouse-manual.html",
         "url": "/pointerevents/pointerevent_capture_suppressing_mouse-manual.html"
@@ -961,24 +953,16 @@
         "path": "pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html",
         "url": "/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html"
       },
       {
         "path": "pointerevents/pointerevent_lostpointercapture_is_first-manual.html",
         "url": "/pointerevents/pointerevent_lostpointercapture_is_first-manual.html"
       },
       {
-        "path": "pointerevents/pointerevent_multiple_primary_pointers_boundary_events-manual.html",
-        "url": "/pointerevents/pointerevent_multiple_primary_pointers_boundary_events-manual.html"
-      },
-      {
-        "path": "pointerevents/pointerevent_pointerId_scope-manual.html",
-        "url": "/pointerevents/pointerevent_pointerId_scope-manual.html"
-      },
-      {
         "path": "pointerevents/pointerevent_pointercancel_touch-manual.html",
         "url": "/pointerevents/pointerevent_pointercancel_touch-manual.html"
       },
       {
         "path": "pointerevents/pointerevent_pointerdown-manual.html",
         "url": "/pointerevents/pointerevent_pointerdown-manual.html"
       },
       {
@@ -1081,16 +1065,20 @@
         "path": "pointerevents/pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html",
         "url": "/pointerevents/pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html"
       },
       {
         "path": "pointerevents/pointerevent_pointerup_pointertype-manual.html",
         "url": "/pointerevents/pointerevent_pointerup_pointertype-manual.html"
       },
       {
+        "path": "pointerevents/pointerevent_properties_mouse-manual.html",
+        "url": "/pointerevents/pointerevent_properties_mouse-manual.html"
+      },
+      {
         "path": "pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html",
         "url": "/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html"
       },
       {
         "path": "pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html",
         "url": "/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html"
       },
       {
@@ -9061,20 +9049,16 @@
         "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html",
         "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html"
       },
       {
         "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html",
         "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html"
       },
       {
-        "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html",
-        "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html"
-      },
-      {
         "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html",
         "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html"
       },
       {
         "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html",
         "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html"
       },
       {
@@ -12541,22 +12525,22 @@
         "path": "WebIDL/ecmascript-binding/interface-object.html",
         "url": "/WebIDL/ecmascript-binding/interface-object.html"
       },
       {
         "path": "XMLHttpRequest/FormData-append.html",
         "url": "/XMLHttpRequest/FormData-append.html"
       },
       {
-        "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.any.js",
-        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.any.html"
-      },
-      {
-        "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.any.js",
-        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.any.worker"
+        "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.html",
+        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.html"
+      },
+      {
+        "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js",
+        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.worker"
       },
       {
         "path": "XMLHttpRequest/abort-after-receive.htm",
         "url": "/XMLHttpRequest/abort-after-receive.htm"
       },
       {
         "path": "XMLHttpRequest/abort-after-send.htm",
         "url": "/XMLHttpRequest/abort-after-send.htm"
@@ -12721,20 +12705,16 @@
         "path": "XMLHttpRequest/getresponseheader-special-characters.htm",
         "url": "/XMLHttpRequest/getresponseheader-special-characters.htm"
       },
       {
         "path": "XMLHttpRequest/getresponseheader-unsent-opened-state.htm",
         "url": "/XMLHttpRequest/getresponseheader-unsent-opened-state.htm"
       },
       {
-        "path": "XMLHttpRequest/headers-normalize-response.htm",
-        "url": "/XMLHttpRequest/headers-normalize-response.htm"
-      },
-      {
         "path": "XMLHttpRequest/interfaces.html",
         "url": "/XMLHttpRequest/interfaces.html"
       },
       {
         "path": "XMLHttpRequest/open-after-abort.htm",
         "url": "/XMLHttpRequest/open-after-abort.htm"
       },
       {
@@ -13013,20 +12993,16 @@
         "path": "XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm",
         "url": "/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm"
       },
       {
         "path": "XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred.htm",
         "url": "/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred.htm"
       },
       {
-        "path": "XMLHttpRequest/send-blob-with-no-mime-type.html",
-        "url": "/XMLHttpRequest/send-blob-with-no-mime-type.html"
-      },
-      {
         "path": "XMLHttpRequest/send-conditional.htm",
         "url": "/XMLHttpRequest/send-conditional.htm"
       },
       {
         "path": "XMLHttpRequest/send-content-type-charset.htm",
         "url": "/XMLHttpRequest/send-content-type-charset.htm"
       },
       {
@@ -14341,20 +14317,16 @@
         "path": "dom/collections/domstringmap-supported-property-names.html",
         "url": "/dom/collections/domstringmap-supported-property-names.html"
       },
       {
         "path": "dom/collections/namednodemap-supported-property-names.html",
         "url": "/dom/collections/namednodemap-supported-property-names.html"
       },
       {
-        "path": "dom/events/AddEventListenerOptions-once.html",
-        "url": "/dom/events/AddEventListenerOptions-once.html"
-      },
-      {
         "path": "dom/events/AddEventListenerOptions-passive.html",
         "url": "/dom/events/AddEventListenerOptions-passive.html"
       },
       {
         "path": "dom/events/CustomEvent.html",
         "url": "/dom/events/CustomEvent.html"
       },
       {
@@ -14497,20 +14469,16 @@
         "path": "dom/interfaces.html",
         "url": "/dom/interfaces.html"
       },
       {
         "path": "dom/lists/DOMTokenList-coverage-for-attributes.html",
         "url": "/dom/lists/DOMTokenList-coverage-for-attributes.html"
       },
       {
-        "path": "dom/lists/DOMTokenList-iteration.html",
-        "url": "/dom/lists/DOMTokenList-iteration.html"
-      },
-      {
         "path": "dom/lists/DOMTokenList-stringifier.html",
         "url": "/dom/lists/DOMTokenList-stringifier.html"
       },
       {
         "path": "dom/lists/DOMTokenList-value.html",
         "url": "/dom/lists/DOMTokenList-value.html"
       },
       {
@@ -15577,172 +15545,16 @@
         "path": "encoding/textencoder-constructor-non-utf.html",
         "url": "/encoding/textencoder-constructor-non-utf.html"
       },
       {
         "path": "encoding/textencoder-utf16-surrogates.html",
         "url": "/encoding/textencoder-utf16-surrogates.html"
       },
       {
-        "path": "encrypted-media/Google/encrypted-media-async-creation-with-gc.html",
-        "url": "/encrypted-media/Google/encrypted-media-async-creation-with-gc.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-async-setcert-with-gc.html",
-        "url": "/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-check-init-data-type.html",
-        "url": "/encrypted-media/Google/encrypted-media-check-init-data-type.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-clear-key-invalid-license.html",
-        "url": "/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html",
-        "url": "/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-events.html",
-        "url": "/encrypted-media/Google/encrypted-media-events.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html",
-        "url": "/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html",
-        "url": "/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html",
-        "url": "/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-keystatuses.html",
-        "url": "/encrypted-media/Google/encrypted-media-keystatuses.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-mediakeys.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-lifetime-reload.html",
-        "url": "/encrypted-media/Google/encrypted-media-lifetime-reload.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-not-callable-after-createsession.html",
-        "url": "/encrypted-media/Google/encrypted-media-not-callable-after-createsession.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-onencrypted.html",
-        "url": "/encrypted-media/Google/encrypted-media-onencrypted.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html",
-        "url": "/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-playback-multiple-sessions.html",
-        "url": "/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html",
-        "url": "/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html",
-        "url": "/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-playback-two-videos.html",
-        "url": "/encrypted-media/Google/encrypted-media-playback-two-videos.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html",
-        "url": "/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html",
-        "url": "/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-session-closed-event.html",
-        "url": "/encrypted-media/Google/encrypted-media-session-closed-event.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-setmediakeys.html",
-        "url": "/encrypted-media/Google/encrypted-media-setmediakeys.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-syntax.html",
-        "url": "/encrypted-media/Google/encrypted-media-syntax.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-unique-origin.html",
-        "url": "/encrypted-media/Google/encrypted-media-unique-origin.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-update-disallowed-input.html",
-        "url": "/encrypted-media/Google/encrypted-media-update-disallowed-input.html"
-      },
-      {
-        "path": "encrypted-media/Google/encrypted-media-waiting-for-a-key.html",
-        "url": "/encrypted-media/Google/encrypted-media-waiting-for-a-key.html"
-      },
-      {
-        "path": "encrypted-media/idlharness.html",
-        "url": "/encrypted-media/idlharness.html"
-      },
-      {
         "path": "eventsource/dedicated-worker/eventsource-close.htm",
         "url": "/eventsource/dedicated-worker/eventsource-close.htm"
       },
       {
         "path": "eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm",
         "url": "/eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm"
       },
       {
@@ -15997,44 +15809,24 @@
         "path": "fetch/api/basic/request-forbidden-headers-worker.html",
         "url": "/fetch/api/basic/request-forbidden-headers-worker.html"
       },
       {
         "path": "fetch/api/basic/request-forbidden-headers.html",
         "url": "/fetch/api/basic/request-forbidden-headers.html"
       },
       {
-        "path": "fetch/api/basic/request-head-worker.html",
-        "url": "/fetch/api/basic/request-head-worker.html"
-      },
-      {
-        "path": "fetch/api/basic/request-head.html",
-        "url": "/fetch/api/basic/request-head.html"
-      },
-      {
         "path": "fetch/api/basic/request-headers-worker.html",
         "url": "/fetch/api/basic/request-headers-worker.html"
       },
       {
         "path": "fetch/api/basic/request-headers.html",
         "url": "/fetch/api/basic/request-headers.html"
       },
       {
-        "path": "fetch/api/basic/request-referrer.html",
-        "url": "/fetch/api/basic/request-referrer.html"
-      },
-      {
-        "path": "fetch/api/basic/response-url-worker.html",
-        "url": "/fetch/api/basic/response-url-worker.html"
-      },
-      {
-        "path": "fetch/api/basic/response-url.html",
-        "url": "/fetch/api/basic/response-url.html"
-      },
-      {
         "path": "fetch/api/basic/scheme-about-worker.html",
         "url": "/fetch/api/basic/scheme-about-worker.html"
       },
       {
         "path": "fetch/api/basic/scheme-about.html",
         "url": "/fetch/api/basic/scheme-about.html"
       },
       {
@@ -16221,24 +16013,16 @@
         "path": "fetch/api/policies/referrer-no-referrer-worker.html",
         "url": "/fetch/api/policies/referrer-no-referrer-worker.html"
       },
       {
         "path": "fetch/api/policies/referrer-no-referrer.html",
         "url": "/fetch/api/policies/referrer-no-referrer.html"
       },
       {
-        "path": "fetch/api/policies/referrer-origin-when-cross-origin-worker.html",
-        "url": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html"
-      },
-      {
-        "path": "fetch/api/policies/referrer-origin-when-cross-origin.html",
-        "url": "/fetch/api/policies/referrer-origin-when-cross-origin.html"
-      },
-      {
         "path": "fetch/api/policies/referrer-origin-worker.html",
         "url": "/fetch/api/policies/referrer-origin-worker.html"
       },
       {
         "path": "fetch/api/policies/referrer-origin.html",
         "url": "/fetch/api/policies/referrer-origin.html"
       },
       {
@@ -16625,20 +16409,16 @@
         "path": "html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_location.html",
         "url": "/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_location.html"
       },
       {
         "path": "html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_submit.html",
         "url": "/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_submit.html"
       },
       {
-        "path": "html/browsers/browsing-the-web/navigating-across-documents/empty_fragment.html",
-        "url": "/html/browsers/browsing-the-web/navigating-across-documents/empty_fragment.html"
-      },
-      {
         "path": "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-query-fragment-components.html",
         "url": "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-query-fragment-components.html"
       },
       {
         "path": "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html",
         "url": "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html"
       },
       {
@@ -18141,20 +17921,16 @@
         "path": "html/semantics/document-metadata/the-base-element/base_multiple.html",
         "url": "/html/semantics/document-metadata/the-base-element/base_multiple.html"
       },
       {
         "path": "html/semantics/document-metadata/the-base-element/base_srcdoc.html",
         "url": "/html/semantics/document-metadata/the-base-element/base_srcdoc.html"
       },
       {
-        "path": "html/semantics/document-metadata/the-link-element/document-without-browsing-context.html",
-        "url": "/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html"
-      },
-      {
         "path": "html/semantics/document-metadata/the-link-element/link-load-event.html",
         "url": "/html/semantics/document-metadata/the-link-element/link-load-event.html"
       },
       {
         "path": "html/semantics/document-metadata/the-link-element/link-rellist.html",
         "url": "/html/semantics/document-metadata/the-link-element/link-rellist.html"
       },
       {
@@ -19485,20 +19261,16 @@
         "path": "html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html",
         "url": "/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html"
       },
       {
         "path": "html/semantics/embedded-content/the-img-element/img.complete.html",
         "url": "/html/semantics/embedded-content/the-img-element/img.complete.html"
       },
       {
-        "path": "html/semantics/embedded-content/the-img-element/invalid-src.html",
-        "url": "/html/semantics/embedded-content/the-img-element/invalid-src.html"
-      },
-      {
         "path": "html/semantics/embedded-content/the-img-element/relevant-mutations.html",
         "url": "/html/semantics/embedded-content/the-img-element/relevant-mutations.html"
       },
       {
         "path": "html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute.html",
         "url": "/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute.html"
       },
       {
@@ -20001,20 +19773,16 @@
         "path": "html/semantics/interactive-elements/the-details-element/toggleEvent.html",
         "url": "/html/semantics/interactive-elements/the-details-element/toggleEvent.html"
       },
       {
         "path": "html/semantics/interactive-elements/the-dialog-element/dialog-close.html",
         "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-close.html"
       },
       {
-        "path": "html/semantics/interactive-elements/the-dialog-element/dialog-open.html",
-        "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-open.html"
-      },
-      {
         "path": "html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html",
         "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html"
       },
       {
         "path": "html/semantics/interfaces.html",
         "url": "/html/semantics/interfaces.html"
       },
       {
@@ -20093,20 +19861,16 @@
         "path": "html/semantics/scripting-1/the-script-element/script-charset-01.html",
         "url": "/html/semantics/scripting-1/the-script-element/script-charset-01.html"
       },
       {
         "path": "html/semantics/scripting-1/the-script-element/script-charset-02.html",
         "url": "/html/semantics/scripting-1/the-script-element/script-charset-02.html"
       },
       {
-        "path": "html/semantics/scripting-1/the-script-element/script-charset-03.html",
-        "url": "/html/semantics/scripting-1/the-script-element/script-charset-03.html"
-      },
-      {
         "path": "html/semantics/scripting-1/the-script-element/script-for-event-xhtml.xhtml",
         "url": "/html/semantics/scripting-1/the-script-element/script-for-event-xhtml.xhtml"
       },
       {
         "path": "html/semantics/scripting-1/the-script-element/script-for-event.html",
         "url": "/html/semantics/scripting-1/the-script-element/script-for-event.html"
       },
       {
@@ -20121,20 +19885,16 @@
         "path": "html/semantics/scripting-1/the-script-element/script-languages-02.html",
         "url": "/html/semantics/scripting-1/the-script-element/script-languages-02.html"
       },
       {
         "path": "html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml",
         "url": "/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml"
       },
       {
-        "path": "html/semantics/scripting-1/the-script-element/script-not-executed-after-shutdown.html",
-        "url": "/html/semantics/scripting-1/the-script-element/script-not-executed-after-shutdown.html"
-      },
-      {
         "path": "html/semantics/scripting-1/the-script-element/script-not-found-not-executed.html",
         "url": "/html/semantics/scripting-1/the-script-element/script-not-found-not-executed.html"
       },
       {
         "path": "html/semantics/scripting-1/the-script-element/script-onload-string.html",
         "url": "/html/semantics/scripting-1/the-script-element/script-onload-string.html"
       },
       {
@@ -20313,20 +20073,16 @@
         "path": "html/semantics/tabular-data/the-table-element/insertRow-method-02.html",
         "url": "/html/semantics/tabular-data/the-table-element/insertRow-method-02.html"
       },
       {
         "path": "html/semantics/tabular-data/the-table-element/insertRow-method-03.html",
         "url": "/html/semantics/tabular-data/the-table-element/insertRow-method-03.html"
       },
       {
-        "path": "html/semantics/tabular-data/the-table-element/remove-row.html",
-        "url": "/html/semantics/tabular-data/the-table-element/remove-row.html"
-      },
-      {
         "path": "html/semantics/tabular-data/the-table-element/tBodies.html",
         "url": "/html/semantics/tabular-data/the-table-element/tBodies.html"
       },
       {
         "path": "html/semantics/tabular-data/the-table-element/tFoot.html",
         "url": "/html/semantics/tabular-data/the-table-element/tFoot.html"
       },
       {
@@ -23285,24 +23041,16 @@
         "path": "pointerevents/pointerevent_constructor.html",
         "url": "/pointerevents/pointerevent_constructor.html"
       },
       {
         "path": "pointerevents/pointerevent_pointermove-on-chorded-mouse-button.html",
         "url": "/pointerevents/pointerevent_pointermove-on-chorded-mouse-button.html"
       },
       {
-        "path": "pointerevents/pointerevent_suppress_compat_events_on_click.html",
-        "url": "/pointerevents/pointerevent_suppress_compat_events_on_click.html"
-      },
-      {
-        "path": "pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html",
-        "url": "/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html"
-      },
-      {
         "path": "pointerevents/pointerevent_touch-action-illegal.html",
         "url": "/pointerevents/pointerevent_touch-action-illegal.html"
       },
       {
         "path": "pointerevents/pointerevent_touch-action-verification.html",
         "url": "/pointerevents/pointerevent_touch-action-verification.html"
       },
       {
@@ -29397,40 +29145,32 @@
         "path": "service-workers/service-worker/activate-event-after-install-state-change.https.html",
         "url": "/service-workers/service-worker/activate-event-after-install-state-change.https.html"
       },
       {
         "path": "service-workers/service-worker/activation-after-registration.https.html",
         "url": "/service-workers/service-worker/activation-after-registration.https.html"
       },
       {
-        "path": "service-workers/service-worker/activation.https.html",
-        "url": "/service-workers/service-worker/activation.https.html"
-      },
-      {
         "path": "service-workers/service-worker/active.https.html",
         "url": "/service-workers/service-worker/active.https.html"
       },
       {
         "path": "service-workers/service-worker/appcache-ordering-main.https.html",
         "url": "/service-workers/service-worker/appcache-ordering-main.https.html"
       },
       {
         "path": "service-workers/service-worker/claim-not-using-registration.https.html",
         "url": "/service-workers/service-worker/claim-not-using-registration.https.html"
       },
       {
         "path": "service-workers/service-worker/claim-using-registration.https.html",
         "url": "/service-workers/service-worker/claim-using-registration.https.html"
       },
       {
-        "path": "service-workers/service-worker/client-navigate.https.html",
-        "url": "/service-workers/service-worker/client-navigate.https.html"
-      },
-      {
         "path": "service-workers/service-worker/clients-get-cross-origin.https.html",
         "url": "/service-workers/service-worker/clients-get-cross-origin.https.html"
       },
       {
         "path": "service-workers/service-worker/clients-get.https.html",
         "url": "/service-workers/service-worker/clients-get.https.html"
       },
       {
@@ -29441,20 +29181,16 @@
         "path": "service-workers/service-worker/clients-matchall-include-uncontrolled.https.html",
         "url": "/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html"
       },
       {
         "path": "service-workers/service-worker/clients-matchall.https.html",
         "url": "/service-workers/service-worker/clients-matchall.https.html"
       },
       {
-        "path": "service-workers/service-worker/controller-on-disconnect.https.html",
-        "url": "/service-workers/service-worker/controller-on-disconnect.https.html"
-      },
-      {
         "path": "service-workers/service-worker/controller-on-load.https.html",
         "url": "/service-workers/service-worker/controller-on-load.https.html"
       },
       {
         "path": "service-workers/service-worker/controller-on-reload.https.html",
         "url": "/service-workers/service-worker/controller-on-reload.https.html"
       },
       {
@@ -30013,16 +29749,32 @@
         "path": "shadow-dom/untriaged/user-interaction/active-element/test-002.html",
         "url": "/shadow-dom/untriaged/user-interaction/active-element/test-002.html"
       },
       {
         "path": "shadow-dom/untriaged/user-interaction/editing/inheritance-of-content-editable-001.html",
         "url": "/shadow-dom/untriaged/user-interaction/editing/inheritance-of-content-editable-001.html"
       },
       {
+        "path": "shadow-dom/untriaged/user-interaction/focus-navigation/test-001.html",
+        "url": "/shadow-dom/untriaged/user-interaction/focus-navigation/test-001.html"
+      },
+      {
+        "path": "shadow-dom/untriaged/user-interaction/focus-navigation/test-002.html",
+        "url": "/shadow-dom/untriaged/user-interaction/focus-navigation/test-002.html"
+      },
+      {
+        "path": "shadow-dom/untriaged/user-interaction/focus-navigation/test-003.html",
+        "url": "/shadow-dom/untriaged/user-interaction/focus-navigation/test-003.html"
+      },
+      {
+        "path": "shadow-dom/untriaged/user-interaction/focus-navigation/test-004.html",
+        "url": "/shadow-dom/untriaged/user-interaction/focus-navigation/test-004.html"
+      },
+      {
         "path": "shadow-dom/untriaged/user-interaction/ranges-and-selections/test-001.html",
         "url": "/shadow-dom/untriaged/user-interaction/ranges-and-selections/test-001.html"
       },
       {
         "path": "shadow-dom/untriaged/user-interaction/ranges-and-selections/test-002.html",
         "url": "/shadow-dom/untriaged/user-interaction/ranges-and-selections/test-002.html"
       },
       {
@@ -30509,20 +30261,16 @@
         "path": "webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html",
         "url": "/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html"
       },
       {
         "path": "webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html",
         "url": "/webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html"
       },
       {
-        "path": "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html",
-        "url": "/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html"
-      },
-      {
         "path": "webdriver/interface.html",
         "url": "/webdriver/interface.html"
       },
       {
         "path": "webgl/bufferSubData.html",
         "url": "/webgl/bufferSubData.html"
       },
       {
@@ -35245,34 +34993,34 @@
         "path": "workers/constructors/Worker/AbstractWorker.onerror.html",
         "url": "/workers/constructors/Worker/AbstractWorker.onerror.html"
       },
       {
         "path": "workers/constructors/Worker/Blob-url.html",
         "url": "/workers/constructors/Worker/Blob-url.html"
       },
       {
-        "path": "workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js",
-        "url": "/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker"
+        "path": "workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html",
+        "url": "/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html"
       },
       {
         "path": "workers/constructors/Worker/ctor-1.html",
         "url": "/workers/constructors/Worker/ctor-1.html"
       },
       {
         "path": "workers/constructors/Worker/ctor-null.html",
         "url": "/workers/constructors/Worker/ctor-null.html"
       },
       {
         "path": "workers/constructors/Worker/ctor-undefined.html",
         "url": "/workers/constructors/Worker/ctor-undefined.html"
       },
       {
-        "path": "workers/constructors/Worker/expected-self-properties.worker.js",
-        "url": "/workers/constructors/Worker/expected-self-properties.worker"
+        "path": "workers/constructors/Worker/expected-self-properties.html",
+        "url": "/workers/constructors/Worker/expected-self-properties.html"
       },
       {
         "path": "workers/constructors/Worker/no-arguments-ctor.html",
         "url": "/workers/constructors/Worker/no-arguments-ctor.html"
       },
       {
         "path": "workers/constructors/Worker/resolve-empty-string.html",
         "url": "/workers/constructors/Worker/resolve-empty-string.html"
@@ -35281,18 +35029,18 @@
         "path": "workers/constructors/Worker/same-origin.html",
         "url": "/workers/constructors/Worker/same-origin.html"
       },
       {
         "path": "workers/constructors/Worker/terminate.html",
         "url": "/workers/constructors/Worker/terminate.html"
       },
       {
-        "path": "workers/constructors/Worker/unexpected-self-properties.worker.js",
-        "url": "/workers/constructors/Worker/unexpected-self-properties.worker"
+        "path": "workers/constructors/Worker/unexpected-self-properties.html",
+        "url": "/workers/constructors/Worker/unexpected-self-properties.html"
       },
       {
         "path": "workers/constructors/Worker/unresolvable-url.html",
         "url": "/workers/constructors/Worker/unresolvable-url.html"
       },
       {
         "path": "workers/constructors/Worker/use-base-url.html",
         "url": "/workers/constructors/Worker/use-base-url.html"
@@ -36104,141 +35852,16 @@
         "url": "/encoding/api-invalid-label.html"
       },
       {
         "path": "encoding/single-byte-decoder.html",
         "timeout": "long",
         "url": "/encoding/single-byte-decoder.html"
       },
       {
-        "path": "encrypted-media/clearkey-check-initdata-type.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-check-initdata-type.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-events.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-events.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-generate-request-disallowed-input.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-generate-request-disallowed-input.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-keystatuses-multiple-sessions.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-keystatuses-multiple-sessions.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-persistent-usage-record.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-temporary-events.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-temporary-events.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-temporary-multikey.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-temporary-multikey.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-temporary-two-videos.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-mp4-playback-temporary.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-mp4-playback-temporary.html"
-      },
-      {
-        "path": "encrypted-media/clearkey-not-callable-after-createsession.html",
-        "timeout": "long",
-        "url": "/encrypted-media/clearkey-not-callable-after-createsession.html"
-      },
-      {
-        "path": "encrypted-media/drm-check-initdata-type.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-check-initdata-type.html"
-      },
-      {
-        "path": "encrypted-media/drm-events.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-events.html"
-      },
-      {
-        "path": "encrypted-media/drm-generate-request-disallowed-input.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-generate-request-disallowed-input.html"
-      },
-      {
-        "path": "encrypted-media/drm-keystatuses-multiple-sessions.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-keystatuses-multiple-sessions.html"
-      },
-      {
-        "path": "encrypted-media/drm-mp4-playback-temporary-events.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-mp4-playback-temporary-events.html"
-      },
-      {
-        "path": "encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html"
-      },
-      {
-        "path": "encrypted-media/drm-mp4-playback-temporary-multikey.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-mp4-playback-temporary-multikey.html"
-      },
-      {
-        "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html"
-      },
-      {
-        "path": "encrypted-media/drm-mp4-playback-temporary-two-videos.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-mp4-playback-temporary-two-videos.html"
-      },
-      {
-        "path": "encrypted-media/drm-mp4-playback-temporary.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-mp4-playback-temporary.html"
-      },
-      {
-        "path": "encrypted-media/drm-not-callable-after-createsession.html",
-        "timeout": "long",
-        "url": "/encrypted-media/drm-not-callable-after-createsession.html"
-      },
-      {
         "path": "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm",
         "timeout": "long",
         "url": "/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm"
       },
       {
         "path": "eventsource/eventsource-constructor-non-same-origin.htm",
         "timeout": "long",
         "url": "/eventsource/eventsource-constructor-non-same-origin.htm"
@@ -37541,17 +37164,20 @@
       },
       {
         "path": "webdriver/navigation.py",
         "url": "/webdriver/navigation.py"
       }
     ]
   },
   "local_changes": {
-    "deleted": [],
+    "deleted": [
+      "web-animations/interfaces/AnimationTimeline/idlharness.html",
+      "web-animations/interfaces/AnimationTimeline/document-timeline.html"
+    ],
     "deleted_reftests": {},
     "items": {
       "reftest": {
         "html/semantics/grouping-content/the-ol-element/reversed-1a.html": [
           {
             "path": "html/semantics/grouping-content/the-ol-element/reversed-1a.html",
             "references": [
               [
@@ -37601,16 +37227,96 @@
       },
       "testharness": {
         "html/semantics/forms/the-form-element/form-submission-sandbox.html": [
           {
             "path": "html/semantics/forms/the-form-element/form-submission-sandbox.html",
             "url": "/html/semantics/forms/the-form-element/form-submission-sandbox.html"
           }
         ]
+      },
+      "testharness": {
+        "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html": [
+          {
+            "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html",
+            "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html"
+          }
+        ],
+        "XMLHttpRequest/headers-normalize-response.htm": [
+          {
+            "path": "XMLHttpRequest/headers-normalize-response.htm",
+            "url": "/XMLHttpRequest/headers-normalize-response.htm"
+          }
+        ],
+        "dom/events/AddEventListenerOptions-once.html": [
+          {
+            "path": "dom/events/AddEventListenerOptions-once.html",
+            "url": "/dom/events/AddEventListenerOptions-once.html"
+          }
+        ],
+        "dom/lists/DOMTokenList-iteration.html": [
+          {
+            "path": "dom/lists/DOMTokenList-iteration.html",
+            "url": "/dom/lists/DOMTokenList-iteration.html"
+          }
+        ],
+        "fetch/api/basic/request-referrer.html": [
+          {
+            "path": "fetch/api/basic/request-referrer.html",
+            "url": "/fetch/api/basic/request-referrer.html"
+          }
+        ],
+        "fetch/api/policies/referrer-origin-when-cross-origin-worker.html": [
+          {
+            "path": "fetch/api/policies/referrer-origin-when-cross-origin-worker.html",
+            "url": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html"
+          }
+        ],
+        "fetch/api/policies/referrer-origin-when-cross-origin.html": [
+          {
+            "path": "fetch/api/policies/referrer-origin-when-cross-origin.html",
+            "url": "/fetch/api/policies/referrer-origin-when-cross-origin.html"
+          }
+        ],
+        "service-workers/service-worker/activation.https.html": [
+          {
+            "path": "service-workers/service-worker/activation.https.html",
+            "url": "/service-workers/service-worker/activation.https.html"
+          }
+        ],
+        "service-workers/service-worker/client-navigate.https.html": [
+          {
+            "path": "service-workers/service-worker/client-navigate.https.html",
+            "url": "/service-workers/service-worker/client-navigate.https.html"
+          }
+        ],
+        "service-workers/service-worker/controller-on-disconnect.https.html": [
+          {
+            "path": "service-workers/service-worker/controller-on-disconnect.https.html",
+            "url": "/service-workers/service-worker/controller-on-disconnect.https.html"
+          }
+        ],
+        "web-animations/interfaces/DocumentTimeline/idlharness.html": [
+          {
+            "path": "web-animations/interfaces/DocumentTimeline/idlharness.html",
+            "url": "/web-animations/interfaces/DocumentTimeline/idlharness.html"
+          }
+        ],
+        "web-animations/timing-model/timelines/default-document-timeline.html": [
+          {
+            "path": "web-animations/timing-model/timelines/default-document-timeline.html",
+            "url": "/web-animations/timing-model/timelines/default-document-timeline.html"
+          }
+        ],
+        "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html": [
+          {
+            "path": "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html",
+            "url": "/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html"
+          }
+        ]
       }
     },
     "reftest_nodes": {
       "html/semantics/grouping-content/the-ol-element/reversed-1a.html": [
         {
           "path": "html/semantics/grouping-content/the-ol-element/reversed-1a.html",
           "references": [
             [
@@ -43992,12 +43698,12 @@
             "/webvtt/rendering/cues-with-video/processing-model/too_many_cues_wrapped-ref.html",
             "=="
           ]
         ],
         "url": "/webvtt/rendering/cues-with-video/processing-model/too_many_cues_wrapped.html"
       }
     ]
   },
-  "rev": "7a6a5c9f436730f86123e6f48a44bf1b7ba5654f",
+  "rev": "6744ac43d76207bdd1ececa4b91c9bfeef3ad522",
   "url_base": "/",
   "version": 3
 }
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/WebCryptoAPI/digest/digest.worker.js.ini
@@ -0,0 +1,50 @@
+[digest.worker]
+  type: testharness
+  [AES-GCM with empty]
+    expected: FAIL
+
+  [RSA-OAEP with empty]
+    expected: FAIL
+
+  [PBKDF2 with empty]
+    expected: FAIL
+
+  [AES-KW with empty]
+    expected: FAIL
+
+  [AES-GCM with short]
+    expected: FAIL
+
+  [RSA-OAEP with short]
+    expected: FAIL
+
+  [PBKDF2 with short]
+    expected: FAIL
+
+  [AES-KW with short]
+    expected: FAIL
+
+  [AES-GCM with medium]
+    expected: FAIL
+
+  [RSA-OAEP with medium]
+    expected: FAIL
+
+  [PBKDF2 with medium]
+    expected: FAIL
+
+  [AES-KW with medium]
+    expected: FAIL
+
+  [AES-GCM with long]
+    expected: FAIL
+
+  [RSA-OAEP with long]
+    expected: FAIL
+
+  [PBKDF2 with long]
+    expected: FAIL
+
+  [AES-KW with long]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/WebCryptoAPI/digest/test_digest.html.ini
@@ -0,0 +1,50 @@
+[test_digest.html]
+  type: testharness
+  [AES-GCM with empty]
+    expected: FAIL
+
+  [RSA-OAEP with empty]
+    expected: FAIL
+
+  [PBKDF2 with empty]
+    expected: FAIL
+
+  [AES-KW with empty]
+    expected: FAIL
+
+  [AES-GCM with short]
+    expected: FAIL
+
+  [RSA-OAEP with short]
+    expected: FAIL
+
+  [PBKDF2 with short]
+    expected: FAIL
+
+  [AES-KW with short]
+    expected: FAIL
+
+  [AES-GCM with medium]
+    expected: FAIL
+
+  [RSA-OAEP with medium]
+    expected: FAIL
+
+  [PBKDF2 with medium]
+    expected: FAIL
+
+  [AES-KW with medium]
+    expected: FAIL
+
+  [AES-GCM with long]
+    expected: FAIL
+
+  [RSA-OAEP with long]
+    expected: FAIL
+
+  [PBKDF2 with long]
+    expected: FAIL
+
+  [AES-KW with long]
+    expected: FAIL
+
--- a/testing/web-platform/meta/WebCryptoAPI/idlharness.worker.js.ini
+++ b/testing/web-platform/meta/WebCryptoAPI/idlharness.worker.js.ini
@@ -22,11 +22,8 @@
     expected: FAIL
 
   [CryptoKey interface: attribute algorithm]
     expected: FAIL
 
   [CryptoKey interface: attribute usages]
     expected: FAIL
 
-  [ArrayBuffer interface: existence and properties of interface object]
-    expected: FAIL
-
--- a/testing/web-platform/meta/XMLHttpRequest/send-redirect-post-upload.htm.ini
+++ b/testing/web-platform/meta/XMLHttpRequest/send-redirect-post-upload.htm.ini
@@ -1,4 +1,8 @@
 [send-redirect-post-upload.htm]
   type: testharness
   disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1290916
+  [XMLHttpRequest: The send() method: POSTing to URL that redirects (307)]
+    expected:
+      if not debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86") and (bits == 32): FAIL
+      if not debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
 
--- a/testing/web-platform/meta/custom-elements/custom-elements-registry/define.html.ini
+++ b/testing/web-platform/meta/custom-elements/custom-elements-registry/define.html.ini
@@ -214,29 +214,8 @@
     expected: FAIL
 
   [If constructor.prototype.attributeChangedCallback is object, should throw a TypeError]
     expected: FAIL
 
   [If constructor.prototype.attributeChangedCallback is integer, should throw a TypeError]
     expected: FAIL
 
-  [If constructor is HTMLElement, should throw a TypeError]
-    expected: FAIL
-
-  [If constructor is HTMLButtonElement, should throw a TypeError]
-    expected: FAIL
-
-  [If constructor is HTMLImageElement, should throw a TypeError]
-    expected: FAIL
-
-  [If constructor is HTMLMediaElement, should throw a TypeError]
-    expected: FAIL
-
-  [If constructor is Image, should throw a TypeError]
-    expected: FAIL
-
-  [If constructor is Audio, should throw a TypeError]
-    expected: FAIL
-
-  [If constructor is Option, should throw a TypeError]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-async-creation-with-gc.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[encrypted-media-async-creation-with-gc.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-async-setcert-with-gc.html]
-  type: testharness
-  expected: ERROR
-  [Test asynchronous setServerCertificate while running garbage collection.]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-keystatuses-multiple-sessions.html]
-  type: testharness
-  [Verify MediaKeySession.keyStatuses with multiple sessions.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-keystatuses-multiple-updates.html]
-  type: testharness
-  [Verify MediaKeySession.keyStatuses with multiple updates.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-keystatuses.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-keystatuses.html]
-  type: testharness
-  [Verify MediaKeySession.keyStatuses.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-lifetime-mediakeys-with-session.html]
-  type: testharness
-  [MediaKeys lifetime with session]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[encrypted-media-lifetime-mediakeys.html]
-  type: testharness
-  [Creating and destroying MediaKeys does not crash]
-    expected: TIMEOUT
-
-  [MediaKeys is not collected as long as we have a reference]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-lifetime-mediakeysession-reference.html]
-  type: testharness
-  [MediaKeySession lifetime without release()]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-lifetime-mediakeysession-release-noreference.html]
-  type: testharness
-  [MediaKeySession lifetime after release() without references]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-lifetime-mediakeysession-release.html]
-  type: testharness
-  [MediaKeySession lifetime after release()]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-lifetime-multiple-mediakeys.html]
-  type: testharness
-  [Multiple MediaKeys lifetime]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-lifetime-reload.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-lifetime-reload.html]
-  type: testharness
-  expected: TIMEOUT
-  [Reloading during encrypted media playback.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-onencrypted.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-onencrypted.html]
-  type: testharness
-  expected: TIMEOUT
-  [encrypted fired on encrypted media file.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-playback-encrypted-and-clear-sources.html]
-  type: testharness
-  expected: TIMEOUT
-  [Multiple playbacks alternating between encrypted and clear sources.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-playback-multiple-sessions.html]
-  type: testharness
-  expected: TIMEOUT
-  [Playback using Clear Key key system with multiple sessions.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-playback-setmediakeys-after-src.html]
-  type: testharness
-  expected: TIMEOUT
-  [Playback using Clear Key key system, calling setMediaKeys() after setting src attribute.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-playback-setmediakeys-before-src.html]
-  type: testharness
-  expected: TIMEOUT
-  [Playback using Clear Key key system, calling setMediaKeys() before setting src attribute.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-playback-two-videos.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-playback-two-videos.html]
-  type: testharness
-  expected: TIMEOUT
-  [Play two videos at the same time.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-reset-src-after-setmediakeys.html]
-  type: testharness
-  expected: TIMEOUT
-  [Reset src after setMediaKeys().]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-setmediakeys-again-after-playback.html]
-  type: testharness
-  expected: TIMEOUT
-  [setMediaKeys() again after playback]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-setmediakeys-again-after-resetting-src.html]
-  type: testharness
-  expected: TIMEOUT
-  [setMediaKeys() again after resetting src]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[encrypted-media-setmediakeys-at-same-time.html]
-  type: testharness
-  expected: TIMEOUT
-  [Set MediaKeys multiple times in parallel.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html]
-  type: testharness
-  [setMediaKeys() multiple times with different MediaKeys.]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-syntax.html.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[encrypted-media-syntax.html]
-  type: testharness
-  [Test Navigator.requestMediaKeySystemAccess() exceptions.]
-    expected: TIMEOUT
-
-  [Test MediaKeys createSession() exceptions.]
-    expected: TIMEOUT
-
-  [Test MediaKeys generateRequest() exceptions.]
-    expected: TIMEOUT
-
-  [Test MediaKeys load() exceptions.]
-    expected: TIMEOUT
-
-  [Test MediaKeySession update() exceptions.]
-    expected: TIMEOUT
-
-  [Test MediaKeySession update().]
-    expected: TIMEOUT
-
-  [Test MediaKeySession close().]
-    expected: TIMEOUT
-
-  [Test MediaKeys setServerCertificate() exceptions.]
-    expected: TIMEOUT
-
-  [Test MediaKeys setServerCertificate().]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-update-disallowed-input.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-update-disallowed-input.html]
-  type: testharness
-  [update() with response longer than 64Kb characters.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/Google/encrypted-media-waiting-for-a-key.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[encrypted-media-waiting-for-a-key.html]
-  type: testharness
-  [Waiting for a key.]
-    expected: TIMEOUT
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-check-initdata-type.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[clearkey-check-initdata-type.html]
-  type: testharness
-  expected: ERROR
-  [org.w3.clearkey support for "webm".]
-    expected: FAIL
-
-  [org.w3.clearkey support for "cenc".]
-    expected: FAIL
-
-  [org.w3.clearkey support for "keyids".]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-events.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[clearkey-events.html]
-  type: testharness
-  expected: ERROR
-  [org.w3.clearkey, events]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-generate-request-disallowed-input.html.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[clearkey-generate-request-disallowed-input.html]
-  type: testharness
-  expected: ERROR
-  [org.w3.clearkey: generateRequest() with webm initData longer than 64Kb characters.]
-    expected: FAIL
-
-  [org.w3.clearkey: generateRequest() with cenc initData longer than 64Kb characters.]
-    expected: FAIL
-
-  [org.w3.clearkey: generateRequest() with keyids initData longer than 64Kb characters.]
-    expected: FAIL
-
-  [org.w3.clearkey: generateRequest() with invalid pssh data.]
-    expected: FAIL
-
-  [org.w3.clearkey: generateRequest() with non pssh data.]
-    expected: FAIL
-
-  [org.w3.clearkey: generateRequest() with too short key ID.]
-    expected: FAIL
-
-  [org.w3.clearkey: generateRequest() with too long key ID.]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-keystatuses-multiple-sessions.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-keystatuses-multiple-sessions.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-persistent-usage-record-events.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-persistent-usage-record.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-retrieve-persistent-usage-record.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-events.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-temporary-events.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-temporary-multikey-sequential.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-multikey.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-temporary-multikey.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-temporary-setMediaKeys-first.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-temporary-two-videos.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-mp4-playback-temporary.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[clearkey-mp4-playback-temporary.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/clearkey-not-callable-after-createsession.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[clearkey-not-callable-after-createsession.html]
-  type: testharness
-  expected: ERROR
-  [org.w3.clearkey: Update() immediately after CreateSession().]
-    expected: FAIL
-
-  [org.w3.clearkey: Close() immediately after CreateSession().]
-    expected: FAIL
-
-  [org.w3.clearkey: Remove() immediately after CreateSession().]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-check-initdata-type.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-check-initdata-type.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-events.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-events.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-generate-request-disallowed-input.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-generate-request-disallowed-input.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-keystatuses-multiple-sessions.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-keystatuses-multiple-sessions.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-events.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-mp4-playback-temporary-events.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-mp4-playback-temporary-multikey-sequential.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-multikey.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-mp4-playback-temporary-multikey.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-mp4-playback-temporary-setMediaKeys-first.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary-two-videos.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-mp4-playback-temporary-two-videos.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-mp4-playback-temporary.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-mp4-playback-temporary.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/drm-not-callable-after-createsession.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[drm-not-callable-after-createsession.html]
-  type: testharness
-  expected: ERROR
deleted file mode 100644
--- a/testing/web-platform/meta/encrypted-media/idlharness.html.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[idlharness.html]
-  type: testharness
-  [HTMLMediaElement interface: attribute onwaitingforkey]
-    expected: FAIL
-
-  [MediaKeySession interface: existence and properties of interface object]
-    expected: FAIL
-
-  [MediaKeySession interface: existence and properties of interface prototype object]
-    expected: FAIL
-
-  [MediaKeySession interface: attribute onkeystatuseschange]
-    expected: FAIL
-
-  [MediaKeySession interface: attribute onmessage]
-    expected: FAIL
-
-  [MediaKeyMessageEvent interface: existence and properties of interface object]
-    expected: FAIL
-
-  [MediaKeyMessageEvent interface: existence and properties of interface prototype object]
-    expected: FAIL
-
-  [MediaEncryptedEvent interface: existence and properties of interface object]
-    expected: FAIL
-
-  [MediaEncryptedEvent interface: existence and properties of interface prototype object]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/fetch/api/cors/cors-cookies-worker.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cors-cookies-worker.html]
-  type: testharness
-  [Include mode: remote cookies are not sent with other remote request]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/fetch/api/cors/cors-cookies.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cors-cookies.html]
-  type: testharness
-  [Include mode: remote cookies are not sent with other remote request]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/fetch/api/cors/cors-preflight-referrer-worker.html.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[cors-preflight-referrer-worker.html]
-  type: testharness
-  [Referrer policy: no-referrer]
-    expected: FAIL
-
-  [Referrer policy: ""]
-    expected: FAIL
-
-  [Referrer policy: origin]
-    expected: FAIL
-
-  [Referrer policy: origin-when-cross-origin]
-    expected: FAIL
-
-  [Referrer policy: unsafe-url]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/fetch/api/cors/cors-preflight-referrer.html.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[cors-preflight-referrer.html]
-  type: testharness
-  [Referrer policy: no-referrer]
-    expected: FAIL
-
-  [Referrer policy: ""]
-    expected: FAIL
-
-  [Referrer policy: origin]
-    expected: FAIL
-
-  [Referrer policy: origin-when-cross-origin]
-    expected: FAIL
-
-  [Referrer policy: unsafe-url]
-    expected: FAIL
-
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/fetch/api/cors/cors-preflight-worker.html.ini
@@ -0,0 +1,3 @@
+[cors-preflight-worker.html]
+  type: testharness
+  expected: TIMEOUT
--- a/testing/web-platform/meta/html/dom/interfaces.html.ini
+++ b/testing/web-platform/meta/html/dom/interfaces.html.ini
@@ -1901,16 +1901,19 @@
     expected: FAIL
 
   [Navigator interface: calling unregisterContentHandler(DOMString,DOMString) on window.navigator with too few arguments must throw TypeError]
     expected: FAIL
 
   [Navigator interface: window.navigator must inherit property "yieldForStorageUpdates" with the proper type (17)]
     expected: FAIL
 
+  [Navigator interface: window.navigator must inherit property "javaEnabled" with the proper type (20)]
+    expected: FAIL
+
   [PortCollection interface: existence and properties of interface object]
     expected: FAIL
 
   [PortCollection interface object length]
     expected: FAIL
 
   [PortCollection interface: existence and properties of interface prototype object]
     expected: FAIL
@@ -1925,16 +1928,19 @@
     expected: FAIL
 
   [PortCollection interface: operation clear()]
     expected: FAIL
 
   [PortCollection interface: operation iterate(PortCollectionCallback)]
     expected: FAIL
 
+  [WorkerGlobalScope interface: existence and properties of interface object]
+    expected: FAIL
+
   [WorkerGlobalScope interface object length]
     expected: FAIL
 
   [WorkerGlobalScope interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [WorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
@@ -1988,31 +1994,37 @@
     expected: FAIL
 
   [WorkerGlobalScope interface: operation btoa(DOMString)]
     expected: FAIL
 
   [WorkerGlobalScope interface: operation atob(DOMString)]
     expected: FAIL
 
+  [DedicatedWorkerGlobalScope interface: existence and properties of interface object]
+    expected: FAIL
+
   [DedicatedWorkerGlobalScope interface object length]
     expected: FAIL
 
   [DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
 
   [DedicatedWorkerGlobalScope interface: operation postMessage(any,[object Object\])]
     expected: FAIL
 
   [DedicatedWorkerGlobalScope interface: attribute onmessage]
     expected: FAIL
 
+  [SharedWorkerGlobalScope interface: existence and properties of interface object]
+    expected: FAIL
+
   [SharedWorkerGlobalScope interface object length]
     expected: FAIL
 
   [SharedWorkerGlobalScope interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [SharedWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
@@ -2021,16 +2033,19 @@
     expected: FAIL
 
   [SharedWorkerGlobalScope interface: attribute applicationCache]
     expected: FAIL
 
   [SharedWorkerGlobalScope interface: attribute onconnect]
     expected: FAIL
 
+  [WorkerNavigator interface: existence and properties of interface object]
+    expected: FAIL
+
   [WorkerNavigator interface object length]
     expected: FAIL
 
   [WorkerNavigator interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [WorkerNavigator interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
@@ -2060,16 +2075,19 @@
     expected: FAIL
 
   [WorkerNavigator interface: attribute languages]
     expected: FAIL
 
   [WorkerNavigator interface: attribute onLine]
     expected: FAIL
 
+  [WorkerLocation interface: existence and properties of interface object]
+    expected: FAIL
+
   [WorkerLocation interface object length]
     expected: FAIL
 
   [WorkerLocation interface: existence and properties of interface prototype object]
     expected: FAIL
 
   [WorkerLocation interface: existence and properties of interface prototype object's "constructor" property]
     expected: FAIL
@@ -3023,11 +3041,8 @@
     expected: FAIL
 
   [HTMLInputElement interface: createInput("button") must inherit property "valueHigh" with the proper type (38)]
     expected: FAIL
 
   [HTMLInputElement interface: createInput("button") must inherit property "labels" with the proper type (48)]
     expected: FAIL
 
-  [TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type (0)]
-    expected: FAIL
-
--- a/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -1,12 +1,8 @@
 [viewport-change.html]
   type: testharness
   [picture: same URL in source (max-width:500px) and img, resize to wide]
-    expected:
-      if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
-      FAIL
+    expected: FAIL
 
   [picture: same URL in source (max-width:500px) and img, resize to narrow]
-    expected:
-      if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
-      FAIL
+    expected: FAIL
 
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/invalid-src.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[invalid-src.html]
-  type: testharness
-  expected: TIMEOUT
-  [Loading a non-parsing URL as an image should silently fail; triggering appropriate events]
-    expected: TIMEOUT
-
--- a/testing/web-platform/meta/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html.ini
+++ b/testing/web-platform/meta/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html.ini
@@ -19,14 +19,8 @@
     expected: FAIL
 
   [textarea direction of setSelectionRange(0,1,"BACKWARD")]
     expected: FAIL
 
   [textarea direction of setSelectionRange(0,1)]
     expected: FAIL
 
-  [input setSelectionRange(1,-1)]
-    expected: FAIL
-
-  [input setSelectionRange(-1,1)]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/interactive-elements/the-dialog-element/dialog-open.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dialog-open.html]
-  type: testharness
-  [On getting, the IDL open attribute must return true if the content open attribute is set, and false if it is absent.]
-    expected: FAIL
-
-  [On setting, the content open attribute must be removed if the IDL open attribute is set to false, and must be present if the IDL open attribute is set to true.]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-charset-03.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[script-charset-03.html]
-  type: testharness
-  [Script changing @charset]
-    expected: FAIL
-
--- a/testing/web-platform/meta/mozilla-sync
+++ b/testing/web-platform/meta/mozilla-sync
@@ -1,1 +1,1 @@
-41a1810c95089690ccfc3c1ea48b2ee82cd725b0
\ No newline at end of file
+c16304ae0ddedde913c21f64f7a037311a702c6a
\ No newline at end of file
deleted file mode 100644
--- a/testing/web-platform/meta/pointerevents/pointerevent_suppress_compat_events_on_click.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[pointerevent_suppress_compat_events_on_click.html]
-  type: testharness
-  expected: TIMEOUT
-  [Suppress compat mouse events on click]
-    expected: NOTRUN
-
deleted file mode 100644
--- a/testing/web-platform/meta/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[pointerevent_suppress_compat_events_on_drag_mouse.html]
-  type: testharness
-  expected: TIMEOUT
-  [Suppress compat mouse events on drag]
-    expected: NOTRUN
-
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-001.html.ini
@@ -0,0 +1,5 @@
+[test-001.html]
+  type: testharness
+  [A_07_02_01_T01]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-002.html.ini
@@ -0,0 +1,8 @@
+[test-002.html]
+  type: testharness
+  [A_07_02_02_T01]
+    expected: FAIL
+
+  [A_07_02_02_T02]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-003.html.ini
@@ -0,0 +1,8 @@
+[test-003.html]
+  type: testharness
+  [A_07_02_03_T01]
+    expected: FAIL
+
+  [A_07_02_03_T02]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/shadow-dom/untriaged/user-interaction/focus-navigation/test-004.html.ini
@@ -0,0 +1,14 @@
+[test-004.html]
+  type: testharness
+  [A_07_02_04_T01]
+    expected: FAIL
+
+  [A_07_02_04_T02]
+    expected: FAIL
+
+  [A_07_02_04_T03]
+    expected: FAIL
+
+  [A_07_02_04_T04]
+    expected: FAIL
+
--- a/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini
+++ b/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini
@@ -438,9 +438,8 @@
   [Parsing: <http:> against <https://example.org/foo/bar>]
     expected: FAIL
 
   [Parsing: <http://example.com/foo/%2e%2> against <about:blank>]
     expected: FAIL
 
   [Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank>]
     expected: FAIL
-
--- a/testing/web-platform/meta/url/a-element.html.ini
+++ b/testing/web-platform/meta/url/a-element.html.ini
@@ -447,9 +447,8 @@
   [Parsing: <http:> against <https://example.org/foo/bar>]
     expected: FAIL
 
   [Parsing: <http://example.com/foo/%2e%2> against <about:blank>]
     expected: FAIL
 
   [Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank>]
     expected: FAIL
-
--- a/testing/web-platform/meta/url/url-constructor.html.ini
+++ b/testing/web-platform/meta/url/url-constructor.html.ini
@@ -282,9 +282,8 @@
   [Parsing: <http://www/foo%2Ehtml> against <about:blank>]
     expected: FAIL
 
   [Parsing: <http://example.com/foo/%2e%2> against <about:blank>]
     expected: FAIL
 
   [Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank>]
     expected: FAIL
-
--- a/testing/web-platform/meta/web-animations/interfaces/Animatable/animate.html.ini
+++ b/testing/web-platform/meta/web-animations/interfaces/Animatable/animate.html.ini
@@ -31,11 +31,8 @@
   [Element.animate() accepts a two property keyframe sequence where one property is missing from the first keyframe]
     expected: FAIL
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1216844
 
   [Element.animate() accepts a two property keyframe sequence where one property is missing from the last keyframe]
     expected: FAIL
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1216844
 
-  [Element.animate() accepts a single keyframe sequence with string offset]
-    expected: FAIL
-
--- a/testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/constructor.html.ini
+++ b/testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/constructor.html.ini
@@ -75,14 +75,8 @@
   [a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the last keyframe]
     expected: FAIL
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1216844
 
   [a KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the last keyframe roundtrips]
     expected: FAIL
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1216844
 
-  [a KeyframeEffectReadOnly can be constructed with a single keyframe sequence with string offset]
-    expected: FAIL
-
-  [a KeyframeEffectReadOnly constructed with a single keyframe sequence with string offset roundtrips]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[processing-a-keyframes-argument.html]
-  type: testharness
-  [Equivalent property indexed and sequenced keyframes: two properties with one value]
-    expected: FAIL
-
-  [Equivalent property indexed and sequenced keyframes: same offset applied to all keyframes]
-    expected: FAIL
-
--- a/testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/setKeyframes.html.ini
+++ b/testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/setKeyframes.html.ini
@@ -29,11 +29,8 @@
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1216844
 
   [Keyframes can be replaced with a one property one keyframe sequence]
     expected: FAIL
 
   [Keyframes can be replaced with a single keyframe sequence with omitted offsets]
     expected: FAIL
 
-  [Keyframes can be replaced with a single keyframe sequence with string offset]
-    expected: FAIL
-
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/workers/constructors/Worker/expected-self-properties.html.ini
@@ -0,0 +1,5 @@
+[expected-self-properties.html]
+  type: testharness
+  [expected interface objects/constructors]
+    expected: FAIL
+
deleted file mode 100644
--- a/testing/web-platform/meta/workers/constructors/Worker/expected-self-properties.worker.js.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[expected-self-properties.worker]
-  type: testharness
-  [existence of EventSource]
-    expected: FAIL
-
-  [existence of SharedWorker]
-    expected: FAIL
-
--- a/testing/web-platform/tests/2dcontext/tools/gentest.py
+++ b/testing/web-platform/tests/2dcontext/tools/gentest.py
@@ -123,28 +123,28 @@ def expand_nonfinite(method, argstr, tai
     return '\n'.join('%s(%s)%s' % (method, ', '.join(c), tail) for c in calls)
 
 # Run with --test argument to run unit tests
 if len(sys.argv) > 1 and sys.argv[1] == '--test':
     import doctest
     doctest.testmod()
     sys.exit()
 
-templates = yaml.load(open('templates.yaml', "r").read())
-name_mapping = yaml.load(open('name2dir.yaml', "r").read())
+templates = yaml.load(open('templates.yaml').read())
+name_mapping = yaml.load(open('name2dir.yaml').read())
 
 spec_assertions = []
-for s in yaml.load(open('spec.yaml', "r").read())['assertions']:
+for s in yaml.load(open('spec.yaml').read())['assertions']:
     if 'meta' in s:
         eval(compile(s['meta'], '<meta spec assertion>', 'exec'), {}, {'assertions':spec_assertions})
     else:
         spec_assertions.append(s)
 
 tests = []
-for t in sum([ yaml.load(open(f, "r").read()) for f in ['tests.yaml', 'tests2d.yaml', 'tests2dtext.yaml']], []):
+for t in sum([ yaml.load(open(f).read()) for f in ['tests.yaml', 'tests2d.yaml', 'tests2dtext.yaml']], []):
     if 'DISABLED' in t:
         continue
     if 'meta' in t:
         eval(compile(t['meta'], '<meta test>', 'exec'), {}, {'tests':tests})
     else:
         tests.append(t)
 
 category_names = []
@@ -538,17 +538,17 @@ def write_results():
     for item in category_contents_all['.']: results[item] = {}
 
     f = open('%s/results.html' % MISCOUTPUTDIR, 'w')
     f.write(templates['results'])
 
     if not os.path.exists('results.yaml'):
         print "Can't find results.yaml"
     else:
-        for resultset in yaml.load(open('results.yaml', "r").read()):
+        for resultset in yaml.load(open('results.yaml').read()):
             #title = "%s (%s)" % (resultset['ua'], resultset['time'])
             title = resultset['name']
             #assert title not in uas # don't allow repetitions
             if title not in uas:
                 uas.append(title)
                 uastrings[title] = resultset['ua']
             else:
                 assert uastrings[title] == resultset['ua']
--- a/testing/web-platform/tests/2dcontext/tools/specextract.py
+++ b/testing/web-platform/tests/2dcontext/tools/specextract.py
@@ -4,17 +4,17 @@ import html5lib.treebuilders.dom
 # Expected use:
 #   curl --compressed http://www.whatwg.org/specs/web-apps/current-work/ >current-work
 #   python specextract.py
 #
 # Generates current-work-canvas.xhtml, for use by gentest.py to create the annotated spec document
 
 def extract():
     parser = html5lib.html5parser.HTMLParser(tree=html5lib.treebuilders.dom.TreeBuilder)
-    doc = parser.parse(open('current-work', "r"), encoding='utf-8')
+    doc = parser.parse(open('current-work'), encoding='utf-8')
 
     head = doc.getElementsByTagName('head')[0]
     for n in head.childNodes:
         if n.tagName == 'script':
             head.removeChild(n)
 
     header = doc.getElementsByTagName('header')[0]
     #thecanvas = doc.getElementById('the-canvas') # doesn't work (?!)
--- a/testing/web-platform/tests/FileAPI/idlharness.idl
+++ b/testing/web-platform/tests/FileAPI/idlharness.idl
@@ -74,18 +74,8 @@ interface FileReader: EventTarget {
 
 partial interface URL {
 
   static DOMString createObjectURL(Blob blob);
   static DOMString createFor(Blob blob);
   static void revokeObjectURL(DOMString url);
 
 };
-
-[Constructor, Exposed=Worker]
-interface FileReaderSync {
-
-  // Synchronously return strings
-
-  ArrayBuffer readAsArrayBuffer(Blob blob);
-  DOMString readAsText(Blob blob, optional DOMString label);
-  DOMString readAsDataURL(Blob blob);
-};
--- a/testing/web-platform/tests/FileAPI/idlharness.worker.js
+++ b/testing/web-platform/tests/FileAPI/idlharness.worker.js
@@ -13,17 +13,30 @@ request.onload = function() {
     idl_array.add_untested_idls("interface ArrayBuffer {};");
     idl_array.add_untested_idls("interface ArrayBufferView {};");
     idl_array.add_untested_idls("interface URL {};");
     idl_array.add_untested_idls("interface EventTarget {};");
     idl_array.add_untested_idls("interface Event {};");
     idl_array.add_untested_idls("[TreatNonCallableAsNull] callback EventHandlerNonNull = any (Event event);");
     idl_array.add_untested_idls("typedef EventHandlerNonNull? EventHandler;");
 
+
+    var worker_idls =
+            '[Constructor, Exposed=Worker]\n' +
+            'interface FileReaderSync {\n' +
+            '\n' +
+            '  // Synchronously return strings\n' +
+            '\n' +
+            '  ArrayBuffer readAsArrayBuffer(Blob blob);\n' +
+            '  DOMString readAsText(Blob blob, optional DOMString label);\n' +
+            '  DOMString readAsDataURL(Blob blob);\n' +
+            '};';
+
     idl_array.add_idls(idls);
+    idl_array.add_idls(worker_idls);
 
     idl_array.add_objects({
         Blob: ['new Blob(["TEST"])'],
         File: ['new File(["myFileBits"], "myFileName")'],
         FileReader: ['new FileReader()'],
         FileReaderSync: ['new FileReaderSync()']
     });
 
--- a/testing/web-platform/tests/WebCryptoAPI/digest/digest.js
+++ b/testing/web-platform/tests/WebCryptoAPI/digest/digest.js
@@ -103,17 +103,17 @@ function run_test() {
     Object.keys(sourceData).forEach(function(size) {
         badNames.forEach(function(badName) {
 
             promise_test(function(test) {
                 var promise = subtle.digest({name: badName}, sourceData[size])
                 .then(function(result) {
                     assert_unreached("digest() should not have worked for " + alg + ":" + size);
                 }, function(err) {
-                    assert_equals(err.name, "NotSupportedError", "Bad algorithm name should cause NotSupportedError")
+                    assert_equals(err.message, "OperationError", "Bad algorithm name should cause OperationError")
                 });
 
                 return promise;
             }, badName + " with " + size);
 
         });
     });
 
deleted file mode 100644
--- a/testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.any.js
+++ /dev/null
@@ -1,40 +0,0 @@
-test(function() {
-  var client = new XMLHttpRequest()
-  assert_false(client.withCredentials, "withCredentials defaults to false")
-  client.withCredentials = true
-  assert_true(client.withCredentials, "is true after setting")
-}, "default value is false, set value is true")
-
-test(function() {
-  var client = new XMLHttpRequest()
-  client.open("GET", "resources/delay.py?ms=1000", true)
-  client.withCredentials = true
-  assert_true(client.withCredentials, "set in OPEN state")
-}, "can also be set in OPEN state")
-
-test(function() {
-  var client = new XMLHttpRequest()
-  client.open("GET", "resources/delay.py?ms=1000", false)
-  client.withCredentials = true
-  assert_true(client.withCredentials, "set in OPEN state")
-}, "setting on synchronous XHR")
-
-async_test(function() {
-  var client = new XMLHttpRequest()
-  client.open("GET", "resources/delay.py?ms=1000")
-  client.send()
-  assert_throws("InvalidStateError", function() { client.withCredentials = true })
-  client.onreadystatechange = this.step_func(function() {
-    assert_throws("InvalidStateError", function() { client.withCredentials = true })
-    if (client.readyState === 4) {
-      this.done()
-    }
-  })
-}, "setting withCredentials when not in UNSENT, OPENED state (asynchronous)")
-
-test(function() {
-  var client = new XMLHttpRequest()
-  client.open("GET", "resources/delay.py?ms=1000", false)
-  client.send();
-  assert_throws("InvalidStateError", function() { client.withCredentials = true })
-}, "setting withCredentials when in DONE state (synchronous)")
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>XMLHttpRequest#withCredentials</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src=XMLHttpRequest-withCredentials.js></script>
+<link rel="help" href="https://xhr.spec.whatwg.org/#the-withcredentials-attribute"
+      data-tested-assertations="following::ol/li[1] following::ol/li[2]
+                                following::ol/li[3] following::ol/li[4]">
+<div id="log"></div>
+<script>
+test_withCredentials(false)
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js
@@ -0,0 +1,42 @@
+function test_withCredentials(worker) {
+  test(function() {
+    var client = new XMLHttpRequest()
+    assert_false(client.withCredentials, "withCredentials defaults to false")
+    client.withCredentials = true
+    assert_true(client.withCredentials, "is true after setting")
+  }, "default value is false, set value is true")
+
+  test(function() {
+    var client = new XMLHttpRequest()
+    client.open("GET", "resources/delay.py?ms=1000", true)
+    client.withCredentials = true
+    assert_true(client.withCredentials, "set in OPEN state")
+  }, "can also be set in OPEN state")
+
+  test(function() {
+    var client = new XMLHttpRequest()
+    client.open("GET", "resources/delay.py?ms=1000", false)
+    client.withCredentials = true
+    assert_true(client.withCredentials, "set in OPEN state")
+  }, "setting on synchronous XHR")
+
+  async_test(function() {
+    var client = new XMLHttpRequest()
+    client.open("GET", "resources/delay.py?ms=1000")
+    client.send()
+    assert_throws("InvalidStateError", function() { client.withCredentials = true })
+    client.onreadystatechange = this.step_func(function() {
+      assert_throws("InvalidStateError", function() { client.withCredentials = true })
+      if (client.readyState === 4) {
+        this.done()
+      }
+    })
+  }, "setting withCredentials when not in UNSENT, OPENED state (asynchronous)")
+
+  test(function() {
+    var client = new XMLHttpRequest()
+    client.open("GET", "resources/delay.py?ms=1000", false)
+    client.send();
+    assert_throws("InvalidStateError", function() { client.withCredentials = true })
+  }, "setting withCredentials when in DONE state (synchronous)")
+}
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js
@@ -0,0 +1,4 @@
+importScripts("/resources/testharness.js")
+importScripts("XMLHttpRequest-withCredentials.js")
+test_withCredentials(true);
+done()
--- a/testing/web-platform/tests/XMLHttpRequest/open-url-multi-window.htm
+++ b/testing/web-platform/tests/XMLHttpRequest/open-url-multi-window.htm
@@ -10,20 +10,19 @@
     <div id="log"></div>
     <script>
       var test = async_test()
       function init() {
         test.step(function() {
           var client = new self[0].XMLHttpRequest()
           client.onreadystatechange = function() {
             test.step(function() {
-              if(client.readyState == 4) {
+              if(client.readyState == 4)
                 assert_equals(client.responseText, "bottom\n")
                 test.done()
-              }
             })
           }
           client.open("GET", "folder.txt")
           client.send("")
         })
       }
     </script>
     <iframe src="resources/init.htm"></iframe>
--- a/testing/web-platform/tests/XMLHttpRequest/resources/last-modified.py
+++ b/testing/web-platform/tests/XMLHttpRequest/resources/last-modified.py
@@ -1,7 +1,7 @@
 def main(request, response):
     import datetime, os
     srcpath = os.path.join(os.path.dirname(__file__), "well-formed.xml")
     srcmoddt = datetime.datetime.fromtimestamp(os.path.getmtime(srcpath))
     response.headers.set("Last-Modified", srcmoddt.strftime("%a, %d %b %Y %H:%M:%S GMT"))
     response.headers.set("Content-Type", "application/xml")
-    return open(srcpath, "r").read()
+    return open(srcpath).read()
--- a/testing/web-platform/tests/XMLHttpRequest/responsexml-basic.htm
+++ b/testing/web-platform/tests/XMLHttpRequest/responsexml-basic.htm
@@ -14,17 +14,17 @@
         var client = new XMLHttpRequest()
         assert_equals(client.responseXML, null)
         client.open("GET", "resources/well-formed.xml", false)
         assert_equals(client.responseXML, null)
         client.send(null)
         assert_equals(client.responseXML.documentElement.localName, "html", 'localName is html')
         assert_equals(client.responseXML.documentElement.childNodes.length, 5, 'childNodes is 5')
         assert_equals(client.responseXML.getElementById("n1").localName, client.responseXML.documentElement.childNodes[1].localName)
-        assert_equals(client.responseXML.getElementById("n2"), client.responseXML.documentElement.childrenNodes[3], 'getElementById("n2")')
+        assert_equals(client.responseXML.getElementById("n2"), null, 'getElementById("n2")')
         assert_equals(client.responseXML.getElementsByTagName("p")[1].namespaceURI, "namespacesarejuststrings", 'namespaceURI')
       })
       test(function() {
         var client = new XMLHttpRequest()
         client.open("GET", "resources/status.py?type=application/xml", false)
         client.send(null)
         assert_equals(client.responseXML, null)
       }, 'responseXML on empty response documents')
deleted file mode 100644
--- a/testing/web-platform/tests/XMLHttpRequest/send-blob-with-no-mime-type.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::ol[1]/li[4] following::ol[1]/li[4]/dl[1]/dd[2]/p[3]"/>
-    <link rel="help" href="https://xhr.spec.whatwg.org/#the-status-attribute"  data-tested-assertations="following::ol[1]/li[3]"/>
-    <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsetype-attribute"  data-tested-assertations="following::ol[1]/li[4]"/>
-    <link rel="help" href="https://xhr.spec.whatwg.org/#the-response-attribute"  data-tested-assertations="following::a[contains(@href,'#blob-response-entity-body')]/.."/>
-
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <title>XMLHttpRequest: The send() method: Blob data with no mime type</title>
-</head>
-
-<body>
-    <div id="log"></div>
-
-    <script type="text/javascript">
-        var blobTests = [
-            ["no mime type", new Blob(["data"])],
-            ["invalid mime type", new Blob(["data"], {type: "Invalid \r\n mime \r\n type"})]
-        ];
-
-        blobTests.forEach(function(item){
-            test(function() {
-                var xhr = new XMLHttpRequest();
-                xhr.open("POST", "./resources/content.py", false);
-                xhr.send(item[1]);
-
-                assert_equals(xhr.getResponseHeader("X-Request-Content-Length"), "4");
-                assert_equals(xhr.getResponseHeader("X-Request-Content-Type"), "NO");
-            }, "Synchronous blob loading with " + item[0]);
-
-            var atest = async_test("Asynchronous blob loading with " + item[0]);
-            atest.step(function() {
-                var xhr = new XMLHttpRequest();
-                xhr.onreadystatechange = function() {
-                    if (xhr.readyState == 4) {
-                        atest.step(function() {
-                            assert_equals(xhr.getResponseHeader("X-Request-Content-Length"), "4");
-                            assert_equals(xhr.getResponseHeader("X-Request-Content-Type"), "NO");
-                        });
-                        atest.done();
-                    }
-                }
-                xhr.open("POST", "./resources/content.py", true);
-                xhr.send(item[1]);
-            });
-        });
-    </script>
-</body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/CONTRIBUTING.md
+++ /dev/null
@@ -1,370 +0,0 @@
-Annotation-model: Guidelines for Contributing Tests
-===================================================
-
-This document describes the method people should use for authoring tests and
-integrating them into the repository.  Anyone is welcome to submit new tests to
-this collection.  If you do, please create the tests following the guidelines
-below.  Then submit them as a pull request so they can be evaluated
-
-Structure
----------
-
-Tests are organized by major section of the Annotation Model specification.  The
-folders associated with these are:
-
-* annotations
-* bodiesTargets
-* collections
-* specificResources
-  * selectors
-  * states
-
-Within these folders, special files ending with the suffix ".test" provide the source
-for the test as a set of declarative assertions about the required shape of the conforming
-JSON object.  These files are transformed using a test generation tool into ".html" files
-that are then accessed by the Web Platform Test framework.
-
-There are a few other folders that provide supporting materials for the tests:
-
-* common - assertionObjects, conditionObjects, and other supporting materials
-* definitions - JSON Schema definitions that can be referenced
-* scripts - JavaScript that are included by tests
-* tools - supporting scripts and files
-
-NOTE: The files in the definitions folder are expected to be JSON Schema
-definitions - basically commonly used concepts that are referenced by other JSON
-Schema files in the system.  All of these 'definitions' are preloaded by the
-system before any other parts of a test are processed.
-
-Test Cases
-----------
-
-Each test is expressed as a simple (or complex) requirement in a test file.
-For each section of the document, the requirement is represented as a structure
-that describes the nature of the test, and then includes or references minimal
-JSON Schema that test the assertions implied by the requirement.
-
-The structure of a test case is defined using a [JSON-LD
-Context](JSONtest-v1.jsonld).  That context defines the following terms:
-
-|Keyword        | Values          | Meaning
-|---------------|-----------------|---------
-|name           | string          | The name of this test for display purposes
-|description    | string          | A long self-describing paragraph that explains the purpose of the test and the expected input
-|ref            | URI             | An optional reference to the portion of the specification to which the test relates
-|testType       | `automated`, `manual`, `ref` | The type of test - this informs [WPT](https://github.com/w3c/web-platform-tests) how the test should be controlled and presented
-|assertions     | list of URI, List @@@ATRISK@@@, or AssertionObject | The ordered collection of tests the input should be run against. See [JSON Schema Usage](#jsonSchema) for the structure of the objects.  URI is relative to the top level folder of the test collection if it has a slash; relative to the current directory if it does not. @@@@ATRISK@@@@ Lists can be nested to define groups of sub-tests.  Assertions / groups can be conditionally skipped.  See [Assertion Lists](#assertionLists) for more details.
-
-Each test case has a suffix of `.test` and a shape like:
-
-<pre>
-{
-  "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
-  "name": "Verify annotation conforms to the model",
-  "description": "Supply an example annotation that conforms to the basic structure.",
-  "ref": "https://www.w3.org/TR/annotation-model/#model",
-  "testType": "manual",
-  "assertions": [
-    "common/has_context.json",
-    "common/has_id.json",
-    {
-      "$schema": "http://json-schema.org/draft-04/schema#",
-      "title": "Verify annotation has target",
-      "type": "object",
-      "expectedResult": "valid",
-      "errorMessage": "The object was missing a required 'target' property",
-      "properties": {
-        "target": {
-          "anyOf": [
-          {
-            "type": "string"
-          },
-          {
-            "type": "array",
-            "anyOf": [
-            {
-              "type": "string"
-            }
-            ]
-          }
-          ],
-            "not": {"type": "object"}
-        }
-      },
-      "required": ["target"]
-    }
-  ]
-}
-</pre>
-
-External references are used when the "assertion" is a common one that needs to
-be checked on many different test cases (e.g., that there is an @context in the
-supplied annotation).
-
-### <a id="assertionLists">Assertion Lists</a> ###
-
-The `assertion` list is an ordered list of assertions that will be evaluated
-against the submitted content. The list is *required*, and MUST have at least
-one entry. Entries in the list have the following types:
-
-* AssertionObject
-
-An in-line Object as defined in the section [Assertion
-Objects](#assertionObjects).
-* URI
-
-A relative or absolute URI that references a AssertionObject in a .json file.
-If the URI is relative but contains no slashes, then it is considered to be
-in the current directory.  If the URI is relative, contains slashes, but
-**does not start with a slash** then it is considered relative to the top of
-the tree of the current test collection (e.g., `annotation-model`).
-* List @@@ATRISK@@@
-
-A nested Assertion List.  While nested Assertion Lists are optional, if one
-is present it MUST have at least one entry.  Entries are as in this list.
-Assertion Lists can be nested to any depth (but don't do that - it would be
-too hard to maintain).
-
-
-<a id="assertionObjects">Assertion Objects</a>
------------------
-
-In this collection of tests, Assertion Objects can be contained inline in the
-`.test` files or contained in external files with the suffix `.json`.  The
-vocabularly and structure is as defined in [JSON Schema
-v4](http://json-schema.org/documentation.html) augmented with some additional
-properties defined in this section.
-
-In general each JSON Schema definition provided in this test suite should be as
-minimal as possible.  This promotes clarity and increases the likelihood that
-it is correct.  While it is ---possible--- to create JSON Schema files that
-enforce many different requirements on a data model, it increases the
-complexity and can also reduce the atomicity of tests / sub-tests (because a
-    test ends up testing more than one thing).  Please try to avoid creating
-complex JSON Schema.  (A notable exception is the situation where multiple
-    properties of a structure are interdependent.)
-
-Tools such as [the JSON Schema Creator](http://jsonschema.net/) may be helpful
-in creating schema snippets that can be integrated into JSONtest Assertion
-Objects.  Remember that the JSON Schema you create should be as permissive as
-possible to address the various shapes that a give property might take (e.g., a
-    'foo' might be a string or an object that contains sub-properties that express
-    the string, or an array of 1 or more objects with those sub-properties).
-
-In addition to the validation keys defined in JSON Schema v4, Schema files in
-this collection are also permitted to use the following keywords:
-
-|Keyword        | Values          | Meaning |
-|---------------|-----------------|---------|
-|onUnexpectedResult   | `failAndContinue`, `failAndSkip`, `failAndAbort`, `passAndContinue`, `passAndSkip`, `passAndAbort` | Action to take when the result is not as expected. Default is `failAndContinue` |
-|assertionType  | `must`, `may`, `should` | Informs the system about the severity of a failure. The default is `must` |
-|assertionFile | URI      | An external file that contains an assertion SCHEMA.  When this value is supplied, and local properties will override the ones loaded from the external file.
-|errorMessage   | string          | A human readable explanation of what it means if the test fails.  |
-|expectedResult | `valid`, `invalid`  | Tells the framework whether validating against this schema is expected to succeed or fail.  The default is `valid` |
-
-
-### Example Assertion Object ###
-
-<pre>
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-    "title": "Verify annotation has @context",
-    "type": "object",
-    "expectedResult" : "valid",
-    "properties": {
-      "@context": {
-        "anyOf": [
-        {
-          "type": "string"
-        },
-        {
-          "type": "array",
-          "anyOf": [
-          {
-            "type": "string"
-          }
-          ]
-        }
-        ],
-          "not": {"type": "object"}
-      }
-    },
-    "required": ["@context"]
-}
-</pre>
-
-Note that in the case where a feature is *optional* the JSON Schema MUST be
-crafted such that if the attribute is permitted to be missing from the content
-(so that the result is `true`), but when the attribute is present in the
-content it conforms to any requirements.
-
-
-
-<a id="conditionObjects">Condition Objects</a>
------------------
-
-A Condition Object is a sub-class of an Assertion Object.  It allows the
-specification of the evaluation strategy for the assertions referenced by the
-object.  An object is a Condition Object IFF it has a `assertions` property. In
-this case, there MUST NOT be an `assertionFile` property.
-
-
-|Keyword        | Values          | Meaning |
-|---------------|-----------------|---------|
-|compareWith    | `and`, `or` | How should the result of any referenced assertions be compared.  Defaults to `and`.  Note that this implies there is also an assertions property with a nested list of assertions to compare. |
-|assertions     | a list of assertions as in a Test Case above. This is required if there is a compareWith property |
-
-
-An example of a test that would pass if there were an `@context` OR there were an `@id`:
-
-<pre>
-{
-  "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
-    "name": "A test that has an 'or' clause",
-    "description": "A complex test that uses or-ing among a list of assertions",
-    "ref": "https://www.w3.org/TR/annotation-model/#model",
-    "testType": "manual",
-    "assertions": [
-    { "$schema": "http://json-schema.org/draft-04/schema#",
-      "title": "must have context or id",
-      "description": "A more complex example that allows one of many options to pass",
-      "assertions": [
-      { "title": "Condition Object",
-        "description": "A pseudo-test that will get a result from the aggregate of its children",
-        "assertionType": "must",
-        "expectedResult": "valid",
-        "errorMessage": "Error: None of the various options were present",
-        "compareWith": "or",
-        "assertions": [
-          "common/has_context.json",
-        "common/has_id.json"
-        ]
-      }
-      ]
-    }
-    ]
-}
-</pre>
-
-
-Command Line Tools
-------------------
-
-### Building the Test Files ###
-
-The actual .html test case files are generated using the script
-tools/make_tests.py.  This script will search the directory heriarchy looking for
-files ending on `.test` and creating `.html` files from them using the template in
-the tools folder.  If you want to regenerate the examples too, supply the
-`--examples` option to the script.
-
-Note that when submitting tests to the repository, the `.html` versions must be
-included.
-
-### Testing the Tests ###
-
-### Driving Tests with Input Files ###
-
-Complex Examples
-----------------
-
-This section is a collection of more complex examples to illustrate the
-expressive power of the [Assertion List](#assertionLists) structure.  These can
-be used as templates for creating actual `.test` files.
-
-### Including and Overriding an Assertion ###
-
-Assertions can be contained in external `.json` files.  It is possible for an
-object in an Assertion List to include the external file and override one or
-more of its properties:
-
-<pre>
-{
-  "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
-    "name": "Permit no target property",
-    "description": "Ensure there is no 'target' property when there is a 'randomName' property in the Annotation",
-    "assertions": [
-    {
-      "$schema": "http://json-schema.org/draft-04/schema#",
-      "title": "Verify annotation has randomName",
-      "type": "object",
-      "properties": {
-        "randomName": {
-          "type": "string"
-        }
-      },
-      "required": ["randomName"]
-    },
-    { "assertionFile" : "common/target.json",
-      "title" : "Require target to be missing",
-      "expectedResult" : "invalid",
-      "errorMessage" : "The target MUST not be present when 'randomName' is also present",
-    }
-    ]
-}
-</pre>
-
-### Nested Assertion Collections with Skip ###
-
-Assertion Lists can be nested within Assertion Lists.  This feature, combined
-with the `onUnexpectedResult` property, makes it possible to skip a collection
-of tests when an assertion in the list is not satisfied:
-
-<pre>
-{
-  "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
-    "name": "If there is no 'target' property, skip some tests",
-    "description": "When 'target' is not present, other properties related to 'target' are not required",
-    "assertions": [
-      "common/context.json",
-    [
-    { "assertionFile" : "common/target.json",
-      "errorMessage" : "Target was not present so skip the rest of this section",
-      "onUnexpectedResult" : "failAndSkip"
-    },
-    "sometest.json",
-    "sometest2.json",
-    "sometest3.json"
-    ]
-    ]
-} ;
-</pre>
-
-### Assertion that finds a specific @context Value ###
-
-Sometimes you want a property to be flexible, but to have one and only one of a
-specific value.  This is especially true with, for example, @context in JSON-LD.
-One way you might do this is:
-
-<pre>
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-    "title": "Verify a specific @context",
-    "type": "object",
-    "expectedResult" : "valid",
-    "properties": {
-      "@context": {
-        "anyOf": [
-        {
-          "type": "string"
-            "enum": [ "http://www.w3.org/ns/anno.jsonld" ]
-        },
-        {
-          "type": "array",
-          "minitems": "1",
-          "uniqueItems": true,
-          "additionalItems": true,
-          "items" : [
-          { "type": "string",
-            "enum": [ "http://www.w3.org/ns/anno.jsonld" ]
-          }
-          ]
-        }
-        ],
-          "not": {"type": "object"}
-      }
-    },
-    "required": ["@context"]
-}
-
-</pre>
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-@halindrome
-@bigbluehat
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-Annotation-model: Tests for the Web Annotation Data Model
-=========================================================
-
-The [Web Annotation Data Model](https://www.w3.org/TR/annotation-model)
-specification presents a JSON-oriented collection of terms and structure that
-permit the sharing of annotations about other content.
-
-The purpose of these tests is to help validate that each of the structural
-requirements expressed in the Data Model specification are properly supported
-by implementations.
-
-The general approach for this testing is to enable both manual and automated
-testing. However, since the specification has no actual user interface
-requirements, there is no general automation mechanism that can be presented
-for clients.  Instead, the automation mechanism is one where client
-implementors could take advantage of the plumbing we provide here to push their
-data into the tests and collect the results of the testing.  This assumes
-knowledge of the requirements of each test / collection of tests so that the
-input data is relevant.  Each test or test collection contains information
-sufficient for the task.
-
-Running Tests
--------------
-
-In the case of this test collection, we will be initially creating manual
-tests.  These will automatically determine pass or fail and generate output for
-the main WPT window.  The plan is to minimize the number of such tests to
-ease the burden on the testers while still exercising all the features.
-
-The workflow for running these tests is something like:
-
-1. Start up the test driver window and select the annotation-model tests -
-   click "Start"
-2. A window pops up that shows a test - the description of which tells the
-   tester what input is expected.  The window contains a textarea into which
-   the input can be typed / pasted, along with a button to click to start
-   testing that input.
-3. The tester (presumably in another window) brings up their annotation client
-   and uses it to generate an annotation that supplies the requested structure.
-   They then copy / paste that into the aforementioned textarea and select the
-   button.
-4. The test runs.  Success or failure is determined and reported to the test
-   driver window, which then cycles to the next test in the sequence.
-5. Repeat steps 2-4 until done.
-6. Download the JSON format report of test results, which can then be visually
-   inspected, reported on using various tools, or passed on to W3C for
-   evaluation and collection in the Implementation Report via github.
-
-**Remember that while these tests are written to help exercise implementations,
-their other (important) purpose is to increase confidence that there are
-interoperable implementations.** So, implementers are our audience, but these
-tests are not meant to be a comprehensive collection of tests for a client that
-might implement the Recommendation.  The bulk of the tests are manual because
-there are no UI requirements in the Recommendation that would make it possible
-to effectively stimulate every client portably.
-
-Having said that, because the structure of these "manual" tests is very rigid,
-it is possible for an implementer who understands test automation to use an
-open source tool such as [Selenium](http://www.seleniumhq.org/) to run these
-"manual" tests against their implementation - exercising their implementation
-against content they provide to create annotations and feed the data into our
-test input field and run the test.
-
-Capturing and Reporting Results
--------------------------------
-
-As tests are run against implementations, if the results of testing are
-submitted to [test-results](https://github.com/w3c/test-results/) then they will
-be automatically included in documents generated by
-[wptreport](https://www.github.com/w3c/wptreport). The same tool can be used
-locally to view reports about recorded results.
-
-
-Automating Test Execution
--------------------------
-
-Writing Tests
--------------
-
-If you are interested in writing tests for this environment, see the
-associated [CONTRIBUTING](CONTRIBUTING.md) document.
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/TODO
+++ /dev/null
@@ -1,18 +0,0 @@
-Things still to be developed:
-
-Script to run .jsonld files in tools/tests against .test files
-
-Script to batch run submitted .jsonld files from an implementation against .test
-files
-
-Websocket communication to runner tests with a corresponding listener that an
-implementation could use to auto-submit jsonld into the "manual" tests
-
-Change JSONtest logic so that it loads all of the required external files during
-initialization so that it can populate the list of assertions for the HTML in a
-manual test.  Use Promises and Promise.all() to achieve this.
-
-Add a Skip option to tools/runner
-
-Add a tuple mode for evaluating RDF declaratively as well.
-
deleted file mode 100644
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/definitions/choiceSet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "id" : "choiceSet.json",
-  "type": "object",
-  "properties":
-  {
-    "type":
-    {
-      "type": "string",
-      "enum": ["Choice", "Composite", "List", "Independents"]
-    },
-    "items" :
-    {
-      "type" : "array"
-    }
-  },
-  "required": [ "type", "items" ]
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/definitions/externalWebResource.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "id" : "externalWebResource.json",
-  "type": "object",
-  "properties":
-  {
-    "id":
-    {
-      "$ref": "stringUri.json#"
-    }
-  },
-  "required": [ "id" ]
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/definitions/specificResource.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "id" : "specificResource.json",
-  "type": "object",
-  "properties":
-  {
-    "source":
-    {
-      "type": ["string", "object" ],
-      "oneOf": [
-      { "$ref": "stringUri.json#" },
-      { "$ref": "externalWebResource.json#"}
-      ]
-    }
-  },
-  "required": ["source"]
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/definitions/stringUri.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "id" : "stringUri.json",
-  "type": "string",
-  "format": "uri"
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/definitions/textualBody.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "id" : "textualBody.json",
-  "type": "object",
-  "properties":
-  {
-    "value":
-    {
-      "type": "string"
-    }
-  },
-  "required": [ "value" ]
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Example Tests
-=============
-
-The tests in this folder are examples to show how the framework
-should be used.  They are NOT intended for conformance testing use, and
-tools/make_tests.py will not generate the tests in this folder without the
-`--examples` option.
-
-
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/example1-manual.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<title>Verify annotation conforms to the model</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/annotation-model/scripts/ajv.min.js"></script>
-<script src="/annotation-model/scripts/JSONtest.js"></script>
-<script>
-setup({explicit_timeout: true, explicit_done: true });
-
-var theDefinitions=[
-  "definitions/specificResource.json",
-  "definitions/stringUri.json",
-  "definitions/choiceSet.json",
-  "definitions/externalWebResource.json",
-  "definitions/textualBody.json"
-];
-
-var theTestFile="example1.test";
-
-var runningTest = new JSONtest( {
-    "testInput"   : "annotation-input",
-    "runTest"     : "annotation-run",
-    "closeWindow" : "annotation-close",
-    "schemaDefs"  : theDefinitions,
-    "testFile"    : theTestFile
-} ) ;
-
-</script>
-</head>
-<body>
-<p>Fill the textarea below with  JSON output from your annotation client
-implementation that supports the following criteria:</p>
-<div id="testDescription"></div>
-<p>Specifically, the following assertions will be evaluated:</p>
-<div id="assertion"></div>
-<form name="annotation" id="annotation">
-    <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" >
-    </textarea>
-    <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
-       <input style="display: none" type="button" id="annotation-close"
-       name="Close" value="Close"></p>
-</form>
-</body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/example1.test
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
-  "name": "Verify annotation conforms to the model",
-  "description": "Supply an example annotation that conforms to the basic structure.",
-  "ref": "https://www.w3.org/TR/annotation-model/#model",
-  "assertions": [
-    "exampleContext.json",
-    "exampleTarget.json"
-  ]
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/example2-manual.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<title>A test that has an 'or' clause</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/annotation-model/scripts/ajv.min.js"></script>
-<script src="/annotation-model/scripts/JSONtest.js"></script>
-<script>
-setup({explicit_timeout: true, explicit_done: true });
-
-var theDefinitions=[
-  "definitions/specificResource.json",
-  "definitions/stringUri.json",
-  "definitions/choiceSet.json",
-  "definitions/externalWebResource.json",
-  "definitions/textualBody.json"
-];
-
-var theTestFile="example2.test";
-
-var runningTest = new JSONtest( {
-    "testInput"   : "annotation-input",
-    "runTest"     : "annotation-run",
-    "closeWindow" : "annotation-close",
-    "schemaDefs"  : theDefinitions,
-    "testFile"    : theTestFile
-} ) ;
-
-</script>
-</head>
-<body>
-<p>Fill the textarea below with  JSON output from your annotation client
-implementation that supports the following criteria:</p>
-<div id="testDescription"></div>
-<p>Specifically, the following assertions will be evaluated:</p>
-<div id="assertion"></div>
-<form name="annotation" id="annotation">
-    <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" >
-    </textarea>
-    <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
-       <input style="display: none" type="button" id="annotation-close"
-       name="Close" value="Close"></p>
-</form>
-</body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/example2.test
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-  "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
-    "name": "A test that has an 'or' clause",
-    "description": "This is a complex test that uses or-ing among a list of assertions.",
-    "ref": "https://www.w3.org/TR/annotation-model/#model",
-    "testType": "manual",
-    "assertions":
-      { "title": "Condition Object",
-        "description": "A pseudo-test that will get a result from the aggregate of its children",
-        "assertionType": "must",
-        "expectedResult": "valid",
-        "errorMessage": "Error: None of the various options were present",
-        "compareWith": "or",
-        "assertions": [
-        {
-          "$schema": "http://json-schema.org/draft-04/schema#",
-          "title": "'The Annotation must have 1 or more @context values' (Section 3.1)",
-          "assertionType": "must",
-          "expectedResult": "valid",
-          "errorMessage": "Error: Annotation does not have an @context property.",
-          "type": "object",
-          "properties": {
-            "@context": {}
-          },
-          "required": ["@context"]
-        },
-        {
-          "$schema": "http://json-schema.org/draft-04/schema#",
-          "title": "'An Annotation should have exactly 1 id' (Section 3.1)",
-          "assertionType": "should",
-          "expectedResult": "valid",
-          "errorMessage": "Warning: The Annotation is not identified using the id key (Section 3.1).",
-          "type": "object",
-          "properties": {
-            "id": {}
-          },
-          "required": ["id"]
-        }
-        ]
-      }
-
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/exampleContext.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "title": "Check @context value",
-  "description": "'http://www.w3.org/ns/anno.jsonld must be' an @context value (Section 3.1)",
-  "assertionType": "must",
-  "expectedResult": "valid",
-  "errorMessage": "Error: 'http://www.w3.org/ns/anno.jsonld' is not an @context value.",
-  "type": "object",
-  "properties": {
-    "@context": {
-      "oneOf": [
-        { "type": "string",
-          "$ref": "#/definitions/contextValue" },
-        { "type": "array",
-          "$ref": "#/definitions/contextArray" }
-      ]
-    }
-  },
-  "definitions": {
-    "contextValue":
-       { "enum": [ "http://www.w3.org/ns/anno.jsonld" ] },
-    "contextArray":
-       { "not":
-          { "items":
-             { "not":
-                { "type": "string",
-                  "$ref": "#/definitions/contextValue" } }
-           }
-     }
-  }
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/examples/exampleTarget.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "$schema": "http://json-schema.org/draft-04/schema#",
-  "title": "Check if target feature implemented",
-  "description": "'There must be 1 or more target relationships associated with an Annotation.' (Section 3.1)",
-  "assertionType": "must",
-  "expectedResult": "valid",
-  "errorMessage": "Error: Annotation has no target relationships - at least 1 is required. (Section 3.1)",
-  "type": "object",
-  "properties": {
-    "target": { "type": ["string", "array", "object"] }
-  },
-  "required": ["target"]
-}
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/scripts/JSONtest.js
+++ /dev/null
@@ -1,702 +0,0 @@
-/* globals add_completion_callback, Promise, done, assert_true, Ajv, on_event */
-
-/**
- * Creates a JSONtest object.  If the parameters are supplied
- * it also loads a referenced testFile, processes that file, loads any
- * referenced external assertions, and sets up event listeners to process the
- * user's test data.  The loading is done asynchronously via Promises.  The test
- * button's text is changed to Loading while it is processing, and to "Check
- * JSON" once the data is loaded.
- *
- * @constructor
- * @param {object} params
- * @param {string} [params.test] - object containing JSON test definition
- * @param {string} [params.testFile] - URI of a file with JSON test definition
- * @param {string} params.runTest - IDREF of an element that when clicked will run the test
- * @param {string} params.testInput - IDREF of an element that contains the JSON(-LD) to evaluate against the assertions in the test / testFile
- * @event DOMContentLoaded Calls init once DOM is fully loaded
- * @returns {object} Reference to the new object
- */
-
-function JSONtest(params) {
-  'use strict';
-
-  this.Assertions = [];     // object that will contain the assertions to process
-  this.AssertionText = "";  // string that holds the titles of all the assertions in use
-  this.DescriptionText = "";
-  this.Base = null;         // URI "base" for the test suite being run
-  this.TestDir = null;      // URI "base" for the test case being run
-  this.Params = null;       // paramaters passed in
-  this.Properties = null;   // testharness_properties from the opening window
-  this.Test = null;         // test being run
-  this.AssertionCounter = 0;// keeps track of which assertion is being processed
-
-  this._assertionText = []; // Array of text or nested arrays of assertions
-  this._assertionCache = [];// Array to put loaded assertions into
-  this._loading = true;
-
-  var pending = [] ;
-
-  // set up in case DOM finishes loading early
-  pending.push(new Promise(function(resolve) {
-    on_event(document, "DOMContentLoaded", function() {
-        resolve(true);
-    }.bind(this));
-  }.bind(this)));
-
-  // create an ajv object that will stay around so that caching
-  // of schema that are compiled just works
-  this.ajv = new Ajv({allErrors: true, validateSchema: false}) ;
-
-  // determine the base URI for the test collection.  This is
-  // the top level folder in the test "document.location"
-
-  var l = document.location;
-  var p = l.pathname;
-  this.TestDir = p.substr(0, 1+p.lastIndexOf('/'));
-  this.Base = p.substr(0, 1+p.indexOf('/', 1));
-
-  // if we are under runner, then there are props in the parent window
-  //
-  // if "output" is set in that, then pause at the end of running so the output
-  // can be analyzed. @@@TODO@@@
-  if (window && window.opener && window.opener.testharness_properties) {
-    this.Properties = window.opener.testharness_properties;
-  }
-
-  this.Params = params;
-
-  // if there is a list of definitions in the params,
-  // include them
-  if (this.Params.schemaDefs) {
-    var defPromise = new Promise(function(resolve, reject) {
-      var promisedSchema = this.Params.schemaDefs.map(function(item) {
-        return this.loadDefinition(item);
-      }.bind(this));
-
-      // Once all the loadAssertion promises resolve...
-      Promise.all(promisedSchema)
-      .then(function (schemaContents) {
-        this.ajv.addSchema(schemaContents);
-        resolve(true);
-      }.bind(this))
-      .catch(function(err) {
-        reject(err);
-      }.bind(this));
-    }.bind(this));
-    // these schema need to load up too
-    pending.push(defPromise) ;
-  }
-
-  // start by loading the test (it might be inline, but
-  // loadTest deals with that
-  pending.push(this.loadTest(params)
-    .then(function(test) {
-      // if the test is NOT an object, turn it into one
-      if (typeof test === 'string') {
-        test = JSON.parse(test) ;
-      }
-
-      this.Test = test;
-
-      // Test should have information that we can put in the template
-
-      if (test.description) {
-        this.DescriptionText = test.description;
-      }
-
-      return new Promise(function(resolve, reject) {
-        if (test.assertions &&
-            typeof test.assertions === "object") {
-          // we have at least one assertion
-          // get the inline contents and the references to external files
-          var assertFiles = this._assertionRefs(test.assertions);
-
-          var promisedAsserts = assertFiles.map(function(item) {
-            return this.loadAssertion(item);
-          }.bind(this));
-
-          // Once all the loadAssertion promises resolve...
-          Promise.all(promisedAsserts)
-          .then(function (assertContents) {
-            // assertContents has assertions in document order
-
-            var assertIdx = 0;
-
-            // populate the display of assertions that are being exercised
-            // returns the list of top level assertions to walk through
-
-            var buildList = function(assertions, level) {
-              if (level === undefined) {
-                level = 1;
-              }
-
-              // accumulate the assertions - but only when level is 0
-              var list = [] ;
-
-              if (assertions) {
-                if (typeof assertions === "object" && assertions.hasOwnProperty('assertions')) {
-                  // this is a conditionObject
-                  if (level === 0) {
-                    list.push(assertContents[assertIdx]);
-                  }
-
-                  this.AssertionText += "<li>" + assertContents[assertIdx++].title;
-                  this.AssertionText += "<ol>";
-                  buildList(assertions.assertions, level+1) ;
-                  this.AssertionText += "</ol></li>\n";
-                } else {
-                  // it is NOT a conditionObject - must be an array
-                  assertions.forEach( function(assert) {
-                    if (typeof assert === "object" && Array.isArray(assert)) {
-                      this.AssertionText += "<ol>";
-                      // it is a nested list - recurse
-                      buildList(assert, level+1) ;
-                      this.AssertionText += "</ol>\n";
-                    } else if (typeof assert === "object" && !Array.isArray(assert) && assert.hasOwnProperty('assertions')) {
-                      if (level === 0) {
-                        list.push(assertContents[assertIdx]);
-                      }
-                      // there is a condition object in the array
-                      this.AssertionText += "<li>" + assertContents[assertIdx++].title;
-                      this.AssertionText += "<ol>";
-                      buildList(assert, level+1) ; // capture the children too
-                      this.AssertionText += "</ol></li>\n";
-                    } else {
-                      if (level === 0) {
-                        list.push(assertContents[assertIdx]);
-                      }
-                      this.AssertionText += "<li>" + assertContents[assertIdx++].title + "</li>\n";
-                    }
-                  }.bind(this));
-                }
-              }
-              return list;
-            }.bind(this);
-
-            // Assertions will ONLY contain the top level assertions
-            this.Assertions = buildList(test.assertions, 0);
-            resolve(true);
-          }.bind(this))
-          .catch(function(err) {
-            reject(err);
-          }.bind(this));
-        } else {
-          if (!test.assertions) {
-            reject("Test has no assertion property");
-          } else {
-            reject("Test assertion property is not an Array");
-          }
-        }
-      }.bind(this));
-    }.bind(this)));
-
-  // once the DOM and the test / assertions are loaded... set us up
-  Promise.all(pending)
-  .then(function() {
-    this.loading = false;
-    this.init();
-  }.bind(this))
-  .catch(function(err) {
-    // loading the components failed somehow - report the errors and mark the test failed
-    test( function() {
-      assert_true(false, "Loading of test components failed: " +JSON.stringify(err)) ;
-    }, "Loading test components");
-    done() ;
-    return ;
-  }.bind(this));
-
-  return this;
-}
-
-JSONtest.prototype = {
-
-  /**
-   * @listens click
-   */
-  init: function() {
-    'use strict';
-    // set up a handler
-    var runButton = document.getElementById(this.Params.runTest) ;
-    var closeButton = document.getElementById(this.Params.closeWindow) ;
-    var testInput  = document.getElementById(this.Params.testInput) ;
-    var assertion  = document.getElementById("assertion") ;
-    var desc  = document.getElementById("testDescription") ;
-
-    if (!this.loading) {
-      runButton.disabled = false;
-      runButton.value = "Check JSON";
-      if (desc) {
-        desc.innerHTML = this.DescriptionText;
-      }
-      if (assertion) {
-        assertion.innerHTML = "<ol>" + this.AssertionText + "</ol>\n";
-      }
-    } else {
-      window.alert("Loading did not finish before init handler was called!");
-    }
-
-    // @@@TODO@@@ implement the output showing handler
-    if (0 && this.Properties && this.Properties.output && closeButton) {
-      // set up a callback
-      add_completion_callback( function() {
-        var p = new Promise(function(resolve) {
-          closeButton.style.display = "inline";
-          closeButton.disabled = false;
-          on_event(closeButton, "click", function() {
-            resolve(true);
-          });
-        }.bind(this));
-        p.then();
-      }.bind(this));
-    }
-
-    on_event(runButton, "click", function() {
-      // user clicked
-      var content = testInput.value;
-      runButton.disabled = true;
-
-      // make sure content is an object
-      if (typeof content === "string") {
-        try {
-          content = JSON.parse(content) ;
-        } catch(err) {
-          // if the parsing failed, create a special test and mark it failed
-          test( function() {
-            assert_true(false, "Parse of JSON failed: " + err) ;
-          }, "Parsing submitted input");
-          // and just give up
-          done();
-          return ;
-        }
-      }
-
-      // iterate over all of the tests for this instance
-      this.runTests(this.Assertions, content);
-
-      // explicitly tell the test framework we are done
-      done();
-    }.bind(this));
-  },
-
-  // runTests - process tests
-  /**
-   * @param {object} assertions - List of assertions to process
-   * @param {string} content - JSON(-LD) to be evaluated
-   * @param {string} [testAction='continue'] - state of test processing (in parent when recursing)
-   * @param {integer} [level=0] - depth of recursion since assertion lists can nest
-   * @param {string} [compareWith='and'] - the way the results of the referenced assertions should be compared
-   * @returns {string} - the testAction resulting from evaluating all of the assertions
-   */
-  runTests: function(assertions, content, testAction, level, compareWith) {
-    'use strict';
-
-    // level
-    if (level === undefined) {
-      level = 1;
-    }
-
-    // testAction
-    if (testAction === undefined) {
-      testAction = 'continue';
-    }
-
-    // compareWith
-    if (compareWith === undefined) {
-      compareWith = 'and';
-    }
-
-    // for each assertion (in order) load the external json schema if
-    // one is referenced, or use the inline schema if supplied
-    // validate content against the referenced schema
-
-    var theResults = [] ;
-
-    if (assertions) {
-
-      assertions.forEach( function(assert, num) {
-
-        var expected = assert.hasOwnProperty('expectedResult') ? assert.expectedResult : 'valid' ;
-        var message = assert.hasOwnProperty('message') ? assert.message : "Result was not " + expected;
-
-        // first - what is the type of the assert
-        if (typeof assert === "object" && !Array.isArray(assert)) {
-          if (assert.hasOwnProperty("compareWith") && assert.hasOwnProperty("assertions") && Array.isArray(assert.assertions) ) {
-            // this is a comparisonObject
-            var r = this.runTests(assert.assertions, content, testAction, level+1, assert.compareWith);
-            // r is an object that contains, among other things, an array of results from the child assertions
-            testAction = r.action;
-
-            // evaluate the results against the compareWith setting
-            var result = true;
-            var data = r.results ;
-            var i;
-
-            if (assert.compareWith === "or") {
-              result = false;
-              for(i = 0; i < data.length; i++) {
-                if (data[i]) {
-                  result = true;
-                }
-              }
-            } else {
-              for(i = 0; i < data.length; i++) {
-                if (!data[i]) {
-                  result = false;
-                }
-              }
-            }
-
-            // create a test and push the result
-            test(function() {
-              var newAction = this.determineAction(assert, result) ;
-              // next time around we will use this action
-              testAction = newAction;
-
-              var err = ";";
-
-              if (testAction === 'abort') {
-                err += "; Aborting execution of remaining assertions;";
-              } else if (testAction === 'skip') {
-                err += "; Skipping execution of remaining assertions at level " + level + ";";
-              }
-
-              if (result === false) {
-                // test result was unexpected; use message
-                assert_true(result, message + err);
-              } else {
-                assert_true(result, err) ;
-              }
-            }.bind(this), "" + level + ":" + (num+1) + " " + assert.title);
-            // we are going to return out of this
-            return;
-          }
-        } else if (typeof assert === "object" && Array.isArray(assert)) {
-          // it is a nested list - recurse
-          var o = this.runTests(assert, content, testAction, level+1);
-          if (o.result && o.result === 'abort') {
-            // we are bailing out
-            testAction = 'abort';
-          }
-        }
-
-        if (testAction === 'abort') {
-          return {action: 'abort' };
-        }
-
-        var schemaName = "inline " + level + ":" + (num+1);
-
-        if (typeof assert === "string") {
-          // the assertion passed in is a file name; find it in the cache
-          if (this._assertionCache[assert]) {
-            assert = this._assertionCache[assert];
-          } else {
-            test( function() {
-              assert_true(false, "Reference to assertion " + assert + " at level " + level + ":" + (num+1) + " unresolved") ;
-            }, "Processing " + assert);
-            return ;
-          }
-        }
-
-        if (assert.assertionFile) {
-          schemaName = "external file " + assert.assertionFile + " " + level + ":" + (num+1);
-        }
-
-        var validate = null;
-
-        try {
-          validate = this.ajv.compile(assert);
-        }
-        catch(err) {
-          test( function() {
-            assert_true(false, "Compilation of schema " + level + ":" + (num+1) + " failed: " + err) ;
-          }, "Compiling " + schemaName);
-          return ;
-        }
-
-        if (testAction !== 'continue') {
-          // a previous test told us to not run this test; skip it
-          test(function() { }, "SKIPPED: " + assert.title);
-        } else {
-          // start an actual sub-test
-          test(function() {
-            var valid = validate(content) ;
-
-            var result = this.determineResult(assert, valid) ;
-
-            // remember the result
-            theResults.push(result);
-
-            var newAction = this.determineAction(assert, result) ;
-            // next time around we will use this action
-            testAction = newAction;
-
-            var err = ";";
-            if (validate.errors !== null) {
-              err = "; Errors: " + this.ajv.errorsText(validate.errors) + ";" ;
-            }
-            if (testAction === 'abort') {
-              err += "; Aborting execution of remaining assertions;";
-            } else if (testAction === 'skip') {
-              err += "; Skipping execution of remaining assertions at level " + level + ";";
-            }
-            if (result === false) {
-              // test result was unexpected; use message
-              assert_true(result, message + err);
-            } else {
-              assert_true(result, err) ;
-            }
-          }.bind(this), "" + level + ":" + (num+1) + " " + assert.title);
-        }
-      }.bind(this));
-    }
-
-    return { action: testAction, results: theResults} ;
-  },
-
-  determineResult: function(schema, valid) {
-    'use strict';
-    var r = 'valid' ;
-    if (schema.hasOwnProperty('expectedResult')) {
-      r = schema.expectedResult;
-    }
-
-    if (r === 'valid' && valid || r === 'invalid' && !valid) {
-      return true;
-    } else {
-      return false;
-    }
-  },
-
-  determineAction: function(schema, result) {
-    'use strict';
-    // mapping from results to actions
-    var mapping = {
-      'failAndContinue' : 'continue',
-      'failAndSkip'    : 'skip',
-      'failAndAbort'   : 'abort',
-      'passAndContinue': 'continue',
-      'passAndSkip'    : 'skip',
-      'passAndAbort'   : 'abort'
-    };
-
-    // if the result was as expected, then just keep going
-    if (result) {
-      return 'continue';
-    }
-
-    var a = 'failAndContinue';
-
-    if (schema.hasOwnProperty('onUnexpectedResult')) {
-      a = schema.onUnexpectedResult;
-    }
-
-    if (mapping[a]) {
-      return mapping[a];
-    } else {
-      return 'continue';
-    }
-  },
-
-  // loadAssertion - load an Assertion from an external JSON file
-  //
-  // returns a promise that resolves with the contents of the assertion file
-
-  loadAssertion: function(afile) {
-    'use strict';
-    if (typeof(afile) === 'string') {
-      var theFile = this._parseURI(afile);
-      // it is a file reference - load it
-      return new Promise(function(resolve, reject) {
-        this._loadFile("GET", theFile, true)
-          .then(function(data) {
-            data.assertionFile = afile;
-            this._assertionCache[afile] = data;
-            resolve(data);
-          }.bind(this))
-          .catch(function(err) {
-            if (typeof err === "object") {
-              err.theFile = theFile;
-            }
-            reject(err);
-          });
-        }.bind(this));
-      }
-      else if (afile.hasOwnProperty("assertionFile")) {
-      // this object is referecing an external assertion
-      return new Promise(function(resolve, reject) {
-        var theFile = this._parseURI(afile.assertionFile);
-        this._loadFile("GET", theFile, true)
-        .then(function(external) {
-          // okay - we have an external object
-          Object.keys(afile).forEach(function(key) {
-            if (key !== 'assertionFile') {
-              external[key] = afile[key];
-            }
-          });
-          resolve(external);
-        }.bind(this))
-        .catch(function(err) {
-          if (typeof err === "object") {
-            err.theFile = theFile;
-          }
-          reject(err);
-        });
-      }.bind(this));
-    } else {
-      // it is already a loaded assertion - just use it
-      return new Promise(function(resolve) {
-        resolve(afile);
-      });
-    }
-  },
-
-  // loadDefinition - load a JSON Schema definition from an external JSON file
-  //
-  // returns a promise that resolves with the contents of the definition file
-
-  loadDefinition: function(dfile) {
-    'use strict';
-    return new Promise(function(resolve, reject) {
-      this._loadFile("GET", this._parseURI(dfile), true)
-        .then(function(data) {
-          resolve(data);
-        }.bind(this))
-        .catch(function(err) {
-          reject(err);
-        });
-      }.bind(this));
-  },
-
-
-  // loadTest - load a test from an external JSON file
-  //
-  // returns a promise that resolves with the contents of the
-  // test
-
-  loadTest: function(params) {
-    'use strict';
-
-    if (params.hasOwnProperty('testFile')) {
-      // the test is referred to by a file name
-      return this._loadFile("GET", params.testFile);
-    } // else
-    return new Promise(function(resolve, reject) {
-      if (params.hasOwnProperty('test')) {
-        resolve(params.test);
-      } else {
-        reject("Must supply a 'test' or 'testFile' parameter");
-      }
-    });
-  },
-
-  _parseURI: function(theURI) {
-    'use strict';
-    // determine what the top level URI should be
-    if (theURI.indexOf('/') === -1) {
-      // no slash - it's relative to where we are
-      // so just use it
-      return this.TestDir + theURI;
-    } else if (theURI.indexOf('/') === 0 || theURI.indexOf('http:') === 0 || theURI.indexOf('https:') === 0) {
-      // it is an absolute URI so just use it
-      return theURI;
-    } else {
-      // it is relative and contains a slash.
-      // make it relative to the current test root
-      return this.Base + theURI;
-    }
-  },
-
-  /**
-   * return a list of all inline assertions or references
-   *
-   * @param {array} assertions list of assertions to examine
-   */
-
-  _assertionRefs: function(assertions) {
-    'use strict';
-    var ret = [] ;
-
-    // when the reference is to an object that has an array of assertions in it (a conditionObject)
-    // then remember that one and loop over its embedded assertions
-    if (typeof(assertions) === "object" && !Array.isArray(assertions) && assertions.hasOwnProperty('assertions')) {
-      ret.push(assertions) ;
-      assertions = assertions.assertions;
-    }
-    if (typeof(assertions) === "object" && Array.isArray(assertions)) {
-      assertions.forEach( function(assert) {
-        // first - what is the type of the assert
-        if (typeof assert === "object" && Array.isArray(assert)) {
-          // it is a nested list - recurse
-          this._assertionRefs(assert).forEach( function(item) {
-            ret.push(item);
-          }.bind(this));
-        } else if (typeof assert === "object") {
-          ret.push(assert) ;
-          if (assert.hasOwnProperty("assertions")) {
-            // there are embedded assertions; get those too
-            ret.concat(this._assertionRefs(assert.assertions));
-          }
-        } else {
-          // it is a file name
-          ret.push(assert) ;
-        }
-      }.bind(this));
-    }
-    return ret;
-  },
-
-  // _loadFile - return a promise loading a file
-  //
-  _loadFile: function(method, url, parse) {
-    'use strict';
-    if (parse === undefined) {
-      parse = true;
-    }
-
-    return new Promise(function (resolve, reject) {
-      if (document.location.search) {
-        var s = document.location.search;
-        s = s.replace(/^\?/, '');
-        if (url.indexOf('?') !== -1) {
-          url += "&" + s;
-        } else {
-          url += "?" + s;
-        }
-      }
-      var xhr = new XMLHttpRequest();
-      xhr.open(method, url);
-      xhr.onload = function () {
-        if (this.status >= 200 && this.status < 300) {
-          var d = xhr.response;
-          if (parse) {
-            try {
-              d = JSON.parse(d);
-              resolve(d);
-            }
-            catch(err) {
-              reject({ status: this.status,
-                       statusText: "Parsing of " + url + " failed: " + err }
-                   );
-            }
-          } else {
-            resolve(d);
-          }
-        } else {
-          reject({
-            status: this.status,
-            statusText: xhr.statusText
-          });
-        }
-      };
-      xhr.onerror = function () {
-        reject({
-          status: this.status,
-          statusText: xhr.statusText
-        });
-      };
-      xhr.send();
-    });
-  },
-
-};
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/scripts/ajv.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/* ajv 4.0.4: Another JSON Schema Validator */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.Ajv=e()}}(function(){var define,module,exports;return function e(r,t,a){function s(i,n){if(!t[i]){if(!r[i]){var l="function"==typeof require&&require;if(!n&&l)return l(i,!0);if(o)return o(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var h=t[i]={exports:{}};r[i][0].call(h.exports,function(e){var t=r[i][1][e];return s(t?t:e)},h,h.exports,e,r,t,a)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;a.length>i;i++)s(a[i]);return s}({1:[function(require,module,exports){"use strict";function setupAsync(e,r){r!==!1&&(r=!0);var t,a=e.async,s=e.transpile;switch(typeof s){case"string":var o=TRANSPILE[s];if(!o)throw new Error("bad transpiler: "+s);return e._transpileFunc=o(e,r);case"undefined":case"boolean":if("string"==typeof a){if(t=ASYNC[a],!t)throw new Error("bad async mode: "+a);return e.transpile=t(e,r)}for(var i=0;MODES.length>i;i++){var n=MODES[i];if(setupAsync(n,!1))return util.copy(n,e),e.transpile}throw new Error("generators, nodent and regenerator are not available");case"function":return e._transpileFunc=e.transpile;default:throw new Error("bad transpiler: "+s)}}function checkGenerators(opts,required){try{return eval("(function*(){})()"),!0}catch(e){if(required)throw new Error("generators not supported")}}function checkAsyncFunction(opts,required){try{return eval("(async function(){})()"),!0}catch(e){if(required)throw new Error("es7 async functions not supported")}}function getRegenerator(e,r){try{return regenerator||(regenerator=require("regenerator"),regenerator.runtime()),e.async&&e.async!==!0||(e.async="es7"),regeneratorTranspile}catch(t){if(r)throw new Error("regenerator not available")}}function regeneratorTranspile(e){return regenerator.compile(e).code}function getNodent(e,r){try{return nodent||(nodent=require("nodent")({log:!1,dontInstallRequireHook:!0})),"es7"!=e.async&&(e.async&&e.async!==!0&&console.warn("nodent transpiles only es7 async functions"),e.async="es7"),nodentTranspile}catch(t){if(r)throw new Error("nodent not available")}}function nodentTranspile(e){return nodent.compile(e,"",{promises:!0,sourcemap:!1}).code}function compileAsync(e,r){function t(e,r,a){function o(a){function o(a,o){if(a)return r(a);if(!s._refs[i]&&!s._schemas[i])try{s.addSchema(o,i)}catch(n){return void r(n)}t(e,r)}var i=a.missingSchema;if(s._refs[i]||s._schemas[i])return r(new Error("Schema "+i+" is loaded but"+a.missingRef+"cannot be resolved"));var n=s._loadingSchemas[i];n?"function"==typeof n?s._loadingSchemas[i]=[n,o]:n[n.length]=o:(s._loadingSchemas[i]=o,s._opts.loadSchema(i,function(e,r){var t=s._loadingSchemas[i];if(delete s._loadingSchemas[i],"function"==typeof t)t(e,r);else for(var a=0;t.length>a;a++)t[a](e,r)}))}function i(e,t){return a?void setTimeout(function(){r(e,t)}):r(e,t)}var n;try{n=s.compile(e)}catch(l){return void(l.missingSchema?o(l):i(l))}i(null,n)}var a,s=this;try{a=this._addSchema(e)}catch(o){return void setTimeout(function(){r(o)})}if(a.validate)setTimeout(function(){r(null,a.validate)});else{if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");t(e,r,!0)}}module.exports={setup:setupAsync,compile:compileAsync};var util=require("./compile/util"),ASYNC={"*":checkGenerators,"co*":checkGenerators,es7:checkAsyncFunction},TRANSPILE={nodent:getNodent,regenerator:getRegenerator},MODES=[{async:"co*"},{async:"es7",transpile:"nodent"},{async:"co*",transpile:"regenerator"}],regenerator,nodent},{"./compile/util":10}],2:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],3:[function(e,r,t){"use strict";r.exports={$ref:e("../dotjs/ref"),allOf:e("../dotjs/allOf"),anyOf:e("../dotjs/anyOf"),dependencies:e("../dotjs/dependencies"),"enum":e("../dotjs/enum"),format:e("../dotjs/format"),items:e("../dotjs/items"),maximum:e("../dotjs/_limit"),minimum:e("../dotjs/_limit"),maxItems:e("../dotjs/_limitItems"),minItems:e("../dotjs/_limitItems"),maxLength:e("../dotjs/_limitLength"),minLength:e("../dotjs/_limitLength"),maxProperties:e("../dotjs/_limitProperties"),minProperties:e("../dotjs/_limitProperties"),multipleOf:e("../dotjs/multipleOf"),not:e("../dotjs/not"),oneOf:e("../dotjs/oneOf"),pattern:e("../dotjs/pattern"),properties:e("../dotjs/properties"),required:e("../dotjs/required"),uniqueItems:e("../dotjs/uniqueItems"),validate:e("../dotjs/validate")}},{"../dotjs/_limit":13,"../dotjs/_limitItems":14,"../dotjs/_limitLength":15,"../dotjs/_limitProperties":16,"../dotjs/allOf":17,"../dotjs/anyOf":18,"../dotjs/dependencies":20,"../dotjs/enum":21,"../dotjs/format":22,"../dotjs/items":23,"../dotjs/multipleOf":24,"../dotjs/not":25,"../dotjs/oneOf":26,"../dotjs/pattern":27,"../dotjs/properties":29,"../dotjs/ref":30,"../dotjs/required":31,"../dotjs/uniqueItems":33,"../dotjs/validate":34}],4:[function(e,r,t){"use strict";r.exports=function a(e,r){if(e===r)return!0;var t,s=Array.isArray(e),o=Array.isArray(r);if(s&&o){if(e.length!=r.length)return!1;for(t=0;e.length>t;t++)if(!a(e[t],r[t]))return!1;return!0}if(s!=o)return!1;if(e&&r&&"object"==typeof e&&"object"==typeof r){var i=Object.keys(e);if(i.length!==Object.keys(r).length)return!1;for(t=0;i.length>t;t++)if(void 0===r[i[t]])return!1;for(t=0;i.length>t;t++)if(!a(e[i[t]],r[i[t]]))return!1;return!0}return!1}},{}],5:[function(e,r,t){"use strict";function a(e){e="full"==e?"full":"fast";var r=d.copy(a[e]);for(var t in a.compare)r[t]={validate:r[t],compare:a.compare[t]};return r}function s(e){var r=e.match(p);if(!r)return!1;var t=+r[1],a=+r[2];return t>=1&&12>=t&&a>=1&&m[t]>=a}function o(e,r){var t=e.match(v);if(!t)return!1;var a=t[1],s=t[2],o=t[3],i=t[5];return 23>=a&&59>=s&&59>=o&&(!r||i)}function i(e){var r=e.split(w);return s(r[0])&&o(r[1],!0)}function n(e){return 255>=e.length&&y.test(e)}function l(e){return j.test(e)&&g.test(e)}function c(e){try{return new RegExp(e),!0}catch(r){return!1}}function h(e,r){return e&&r?e>r?1:r>e?-1:e===r?0:void 0:void 0}function u(e,r){return e&&r&&(e=e.match(v),r=r.match(v),e&&r)?(e=e[1]+e[2]+e[3]+(e[4]||""),r=r[1]+r[2]+r[3]+(r[4]||""),e>r?1:r>e?-1:e===r?0:void 0):void 0}function f(e,r){if(e&&r){e=e.split(w),r=r.split(w);var t=h(e[0],r[0]);if(void 0!==t)return t||u(e[1],r[1])}}var d=e("./util"),p=/^\d\d\d\d-(\d\d)-(\d\d)$/,m=[0,31,29,31,30,31,30,31,31,30,31,30,31],v=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,y=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,g=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i,P=/^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,E=/^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i,b=/^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/;r.exports=a,a.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:y,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:P,"json-pointer":E,"relative-json-pointer":b},a.full={date:s,time:o,"date-time":i,uri:l,email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:P,"json-pointer":E,"relative-json-pointer":b},a.compare={date:h,time:u,"date-time":f};var w=/t|\s/i,j=/\/|\:/},{"./util":10}],6:[function(require,module,exports){"use strict";function compile(schema,root,localRefs,baseId){function localCompile(_schema,_root,localRefs,baseId){var isRoot=!_root||_root&&_root.schema==_schema;if(_root.schema!=root.schema)return compile.call(self,_schema,_root,localRefs,baseId);var $async=_schema.$async===!0;$async&&!opts.transpile&&async.setup(opts);var sourceCode=validateGenerator({isTop:!0,schema:_schema,isRoot:isRoot,baseId:baseId,root:_root,schemaPath:"",errSchemaPath:"#",errorPath:'""',RULES:RULES,validate:validateGenerator,util:util,resolve:resolve,resolveRef:resolveRef,usePattern:usePattern,useDefault:useDefault,useCustomRule:useCustomRule,opts:opts,formats:formats,self:self});sourceCode=vars(refVal,refValCode)+vars(patterns,patternCode)+vars(defaults,defaultCode)+vars(customRules,customRuleCode)+sourceCode,opts.beautify&&(beautify?sourceCode=beautify(sourceCode,opts.beautify):console.error('"npm install js-beautify" to use beautify option'));var validate,validateCode,transpile=opts._transpileFunc;try{validateCode=$async&&transpile?transpile(sourceCode):sourceCode,eval(validateCode),refVal[0]=validate}catch(e){throw console.error("Error compiling schema, function code:",validateCode),e}return validate.schema=_schema,validate.errors=null,validate.refs=refs,validate.refVal=refVal,validate.root=isRoot?validate:_root,$async&&(validate.$async=!0),validate.sourceCode=sourceCode,validate}function resolveRef(e,r,t){r=resolve.url(e,r);var a,s,o=refs[r];if(void 0!==o)return a=refVal[o],s="refVal["+o+"]",resolvedRef(a,s);if(!t){var i=root.refs[r];if(void 0!==i)return a=root.refVal[i],s=addLocalRef(r,a),resolvedRef(a,s)}s=addLocalRef(r);var n=resolve.call(self,localCompile,root,r);if(!n){var l=localRefs&&localRefs[r];l&&(n=resolve.inlineRef(l,opts.inlineRefs)?l:compile.call(self,l,root,localRefs,e))}return n?(replaceLocalRef(r,n),resolvedRef(n,s)):void 0}function addLocalRef(e,r){var t=refVal.length;return refVal[t]=r,refs[e]=t,"refVal"+t}function replaceLocalRef(e,r){var t=refs[e];refVal[t]=r}function resolvedRef(e,r){return"object"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&e.$async}}function usePattern(e){var r=patternsHash[e];return void 0===r&&(r=patternsHash[e]=patterns.length,patterns[r]=e),"pattern"+r}function useDefault(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return util.toQuotedString(e);case"object":if(null===e)return"null";var r=stableStringify(e),t=defaultsHash[r];return void 0===t&&(t=defaultsHash[r]=defaults.length,defaults[t]=e),"default"+t}}function useCustomRule(e,r,t,a){var s,o=e.definition.compile,i=e.definition.inline,n=e.definition.macro;o?s=o.call(self,r,t):n?(s=n.call(self,r,t),opts.validateSchema!==!1&&self.validateSchema(s,!0)):s=i?i.call(self,a,e.keyword,r,t):e.definition.validate;var l=customRules.length;return customRules[l]=s,{code:"customRule"+l,validate:s}}var self=this,opts=this._opts,refVal=[void 0],refs={},patterns=[],patternsHash={},defaults=[],defaultsHash={},customRules=[];root=root||{schema:schema,refVal:refVal,refs:refs};var formats=this._formats,RULES=this.RULES;return localCompile(schema,root,localRefs,baseId)}function patternCode(e,r){return"var pattern"+e+" = new RegExp("+util.toQuotedString(r[e])+");"}function defaultCode(e){return"var default"+e+" = defaults["+e+"];"}function refValCode(e,r){return r[e]?"var refVal"+e+" = refVal["+e+"];":""}function customRuleCode(e){return"var customRule"+e+" = customRules["+e+"];"}function vars(e,r){if(!e.length)return"";for(var t="",a=0;e.length>a;a++)t+=r(a,e);return t}var resolve=require("./resolve"),util=require("./util"),stableStringify=require("json-stable-stringify"),async=require("../async"),beautify=function(){try{return require("js-beautify").js_beautify}catch(e){}}(),validateGenerator=require("../dotjs/validate");module.exports=compile;var co=require("co"),ucs2length=util.ucs2length,equal=require("./equal"),ValidationError=require("./validation_error")},{"../async":1,"../dotjs/validate":34,"./equal":4,"./resolve":7,"./util":10,"./validation_error":11,co:39,"json-stable-stringify":40}],7:[function(e,r,t){"use strict";function a(e,r,t){var o=this._refs[t];if("string"==typeof o){if(!this._refs[o])return a.call(this,e,r,o);o=this._refs[o]}if(o=o||this._schemas[t],o instanceof g)return n(o.schema,this._opts.inlineRefs)?o.schema:o.validate||this._compile(o);var i,l,c,h=s.call(this,r,t);return h&&(i=h.schema,r=h.root,c=h.baseId),i instanceof g?l=i.validate||e.call(this,i.schema,r,void 0,c):i&&(l=n(i,this._opts.inlineRefs)?i:e.call(this,i,r,void 0,c)),l}function s(e,r){var t=m.parse(r,!1,!0),a=u(t),s=h(e.schema.id);if(a!==s){var n=f(a),l=this._refs[n];if("string"==typeof l)return o.call(this,e,l,t);if(l instanceof g)l.validate||this._compile(l),e=l;else if(l=this._schemas[n],l instanceof g){if(l.validate||this._compile(l),n==f(r))return{schema:l,root:e,baseId:s};e=l}if(!e.schema)return;s=h(e.schema.id)}return i.call(this,t,s,e.schema,e)}function o(e,r,t){var a=s.call(this,e,r);if(a){var o=a.schema,n=a.baseId;return e=a.root,o.id&&(n=d(n,o.id)),i.call(this,t,n,o,e)}}function i(e,r,t,a){if(e.hash=e.hash||"","#/"==e.hash.slice(0,2)){for(var o=e.hash.split("/"),i=1;o.length>i;i++){var n=o[i];if(n){if(n=y.unescapeFragment(n),t=t[n],!t)break;if(t.id&&!P[n]&&(r=d(r,t.id)),t.$ref){var l=d(r,t.$ref),c=s.call(this,a,l);c&&(t=c.schema,a=c.root,r=c.baseId)}}}return t&&t!=a.schema?{schema:t,root:a,baseId:r}:void 0}}function n(e,r){return r===!1?!1:void 0===r||r===!0?l(e):r?c(e)<=r:void 0}function l(e){var r;if(Array.isArray(e)){for(var t=0;e.length>t;t++)if(r=e[t],"object"==typeof r&&!l(r))return!1}else for(var a in e){if("$ref"==a)return!1;if(r=e[a],"object"==typeof r&&!l(r))return!1}return!0}function c(e){var r,t=0;if(Array.isArray(e)){for(var a=0;e.length>a;a++)if(r=e[a],"object"==typeof r&&(t+=c(r)),t==1/0)return 1/0}else for(var s in e){if("$ref"==s)return 1/0;if(E[s])t++;else if(r=e[s],"object"==typeof r&&(t+=c(r)+1),t==1/0)return 1/0}return t}function h(e,r){r!==!1&&(e=f(e));var t=m.parse(e,!1,!0);return u(t)}function u(e){return(e.protocol||"")+(e.protocol?"//":"")+(e.host||"")+(e.path||"")+"#"}function f(e){return e?e.replace(b,""):""}function d(e,r){return r=f(r),m.resolve(e,r)}function p(e){function r(e,t,s){if(Array.isArray(e))for(var o=0;e.length>o;o++)r.call(this,e[o],t+"/"+o,s);else if(e&&"object"==typeof e){if("string"==typeof e.id){var i=s=s?m.resolve(s,e.id):e.id;i=f(i);var n=this._refs[i];if("string"==typeof n&&(n=this._refs[n]),n&&n.schema){if(!v(e,n.schema))throw new Error('id "'+i+'" resolves to more than one schema')}else if(i!=f(t))if("#"==i[0]){if(a[i]&&!v(e,a[i]))throw new Error('id "'+i+'" resolves to more than one schema');a[i]=e}else this._refs[i]=t}for(var l in e)r.call(this,e[l],t+"/"+y.escapeFragment(l),s)}}var t=f(e.id),a={};return r.call(this,e,h(t,!1),t),a}var m=e("url"),v=e("./equal"),y=e("./util"),g=e("./schema_obj");r.exports=a,a.normalizeId=f,a.fullPath=h,a.url=d,a.ids=p,a.inlineRef=n;var P=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]),E=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]),b=/#\/?$/},{"./equal":4,"./schema_obj":9,"./util":10,url:48}],8:[function(e,r,t){"use strict";var a=e("./_rules"),s=e("./util");r.exports=function(){var e=[{type:"number",rules:["maximum","minimum","multipleOf"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","properties"]},{rules:["$ref","enum","not","anyOf","oneOf","allOf"]}];return e.all=["type","additionalProperties","patternProperties"],e.keywords=["additionalItems","$schema","id","title","description","default"],e.types=["number","integer","string","array","object","boolean","null"],e.forEach(function(r){r.rules=r.rules.map(function(r){return e.all.push(r),{keyword:r,code:a[r]}})}),e.keywords=s.toHash(e.all.concat(e.keywords)),e.all=s.toHash(e.all),e.types=s.toHash(e.types),e}},{"./_rules":3,"./util":10}],9:[function(e,r,t){"use strict";function a(e){s.copy(e,this)}var s=e("./util");r.exports=a},{"./util":10}],10:[function(e,r,t){"use strict";function a(e,r){r=r||{};for(var t in e)r[t]=e[t];return r}function s(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1))";default:return"typeof "+r+a+'"'+e+'"'}}function o(e,r){switch(e.length){case 1:return s(e[0],r,!0);default:var t="",a=n(e);a.array&&a.object&&(t=a["null"]?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a["null"],delete a.array,delete a.object),a.number&&delete a.integer;for(var o in a)t+=(t?" && ":"")+s(o,r,!0);return t}}function i(e){if(Array.isArray(e)){for(var r=[],t=0;e.length>t;t++){var a=e[t];x[a]&&(r[r.length]=a)}if(r.length)return r}else if(x[e])return[e]}function n(e){for(var r={},t=0;e.length>t;t++)r[e[t]]=!0;return r}function l(e){return"number"==typeof e?"["+e+"]":S.test(e)?"."+e:"['"+e.replace(_,"\\$&")+"']"}function c(e){return e.replace(_,"\\$&")}function h(e){for(var r,t=0,a=e.length,s=0;a>s;)t++,r=e.charCodeAt(s++),r>=55296&&56319>=r&&a>s&&(r=e.charCodeAt(s),56320==(64512&r)&&s++);return t}function u(e,r){r+="[^0-9]";var t=e.match(new RegExp(r,"g"));return t?t.length:0}function f(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")}function d(e){return e.replace(R,"").replace(O,"").replace(I,"if (!($1))")}function p(e,r){var t=e.match(k);return t&&2===t.length?r?e.replace(q,"").replace(D,V):e.replace(A,"").replace(L,C):e}function m(e,r){for(var t in e)if(r[t])return!0}function v(e){return"'"+c(e)+"'"}function y(e,r,t,a){var s=t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'";return E(e,s)}function g(e,r,t){var a=v(t?"/"+j(r):l(r));return E(e,a)}function P(e,r,t){var a=e.match(U);if(!a)throw new Error("Invalid relative JSON-pointer: "+e);var s=+a[1],o=a[2];if("#"==o){if(s>=r)throw new Error("Cannot access property/index "+s+" levels up, current level is "+r);return t[r-s]}if(s>r)throw new Error("Cannot access data "+s+" levels up, current level is "+r);var i="data"+(r-s||"");if(!o)return i;for(var n=i,c=o.split("/"),h=0;c.length>h;h++){var u=c[h];u&&(i+=l($(u)),n+=" && "+i)}return n}function E(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function b(e){return $(decodeURIComponent(e))}function w(e){return encodeURIComponent(j(e))}function j(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function $(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}r.exports={copy:a,checkDataType:s,checkDataTypes:o,coerceToTypes:i,toHash:n,getProperty:l,escapeQuotes:c,ucs2length:h,varOccurences:u,varReplace:f,cleanUpCode:d,cleanUpVarErrors:p,schemaHasRules:m,stableStringify:e("json-stable-stringify"),toQuotedString:v,getPathExpr:y,getPath:g,getData:P,unescapeFragment:b,escapeFragment:w,escapeJsonPointer:j};var x=n(["string","number","integer","boolean","null"]),S=/^[a-z$_][a-z$_0-9]*$/i,_=/'|\\/g,R=/else\s*{\s*}/g,O=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,I=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g,k=/[^v\.]errors/g,A=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,q=/var errors = 0;|var vErrors = null;/g,L="return errors === 0;",C="validate.errors = null; return true;",D=/if \(errors === 0\) return true;\s*else throw new ValidationError\(vErrors\);/,V="return true;",U=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/},{"json-stable-stringify":40}],11:[function(e,r,t){"use strict";function a(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}r.exports=a,a.prototype=Object.create(Error.prototype),a.prototype.constructor=a},{}],12:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s;if(a+="var "+u+" = undefined;",e.opts.format===!1)return a+=" "+u+" = true; ";var f=e.schema.format,d=e.opts.v5&&f.$data,p="";if(d){var m=e.util.getData(f.$data,o,e.dataPathArr),v="format"+s,y="compare"+s;a+=" var "+v+" = formats["+m+"] , "+y+" = "+v+" && "+v+".compare;"}else{var v=e.formats[f];if(!v||!v.compare)return a+="  "+u+" = true; ";var y="formats"+e.util.getProperty(f)+".compare"}var g="formatMaximum"==r,P="formatExclusive"+(g?"Maximum":"Minimum"),E=e.schema[P],b=e.opts.v5&&E&&E.$data,w=g?"<":">",j="result"+s,$=e.opts.v5&&i.$data,x=$?e.util.getData(i.$data,o,e.dataPathArr):i;if($&&(a+=" var schema"+s+" = "+x+"; ",x="schema"+s),b){var S=e.util.getData(E.$data,o,e.dataPathArr),_="exclusive"+s,R="op"+s,O="' + "+R+" + '";a+=" var schemaExcl"+s+" = "+S+"; ",S="schemaExcl"+s,a+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+u+" = false; ";var t=P,I=I||[];I.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_formatExclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: '"+P+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var k=a;a=I.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+k+"]); ":" validate.errors = ["+k+"]; return false; ":" var err = "+k+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }  ",c&&(p+="}",a+=" else { "),$&&(a+=" if ("+x+" === undefined) "+u+" = true; else if (typeof "+x+" != 'string') "+u+" = false; else { ",p+="}"),d&&(a+=" if (!"+y+") "+u+" = true; else { ",p+="}"),a+=" var "+j+" = "+y+"("+h+",  ",a+=$?""+x:""+e.util.toQuotedString(i),a+=" ); if ("+j+" === undefined) "+u+" = false; var "+_+" = "+S+" === true; if ("+u+" === undefined) { "+u+" = "+_+" ? "+j+" "+w+" 0 : "+j+" "+w+"= 0; } if (!"+u+") var op"+s+" = "+_+" ? '"+w+"' : '"+w+"=';"}else{var _=E===!0,O=w;_||(O+="=");var R="'"+O+"'";$&&(a+=" if ("+x+" === undefined) "+u+" = true; else if (typeof "+x+" != 'string') "+u+" = false; else { ",p+="}"),d&&(a+=" if (!"+y+") "+u+" = true; else { ",p+="}"),a+=" var "+j+" = "+y+"("+h+",  ",a+=$?""+x:""+e.util.toQuotedString(i),a+=" ); if ("+j+" === undefined) "+u+" = false; if ("+u+" === undefined) "+u+" = "+j+" "+w,_||(a+="="),a+=" 0;"}a+=""+p+"if (!"+u+") { ";var t=r,I=I||[];I.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+R+", limit:  ",a+=$?""+x:""+e.util.toQuotedString(i),a+=" , exclusive: "+_+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be "+O+' "',a+=$?"' + "+x+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema:  ",a+=$?"validate.schema"+n:""+e.util.toQuotedString(i),a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var k=a;return a=I.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+k+"]); ":" validate.errors = ["+k+"]; return false; ":" var err = "+k+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="}"}},{}],13:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s);var d="maximum"==r,p=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],v=e.opts.v5&&m&&m.$data,y=d?"<":">",g=d?">":"<";if(v){var P=e.util.getData(m.$data,o,e.dataPathArr),E="exclusive"+s,b="op"+s,w="' + "+b+" + '";a+=" var schemaExcl"+s+" = "+P+"; ",P="schemaExcl"+s,a+=" var exclusive"+s+"; if (typeof "+P+" != 'boolean' && typeof "+P+" != 'undefined') { ";var t=p,j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var $=a;a=j.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if( ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),a+=" ((exclusive"+s+" = "+P+" === true) ? "+h+" "+g+"= "+f+" : "+h+" "+g+" "+f+")) { var op"+s+" = exclusive"+s+" ? '"+y+"' : '"+y+"=';"}else{var E=m===!0,w=y;E||(w+="=");var b="'"+w+"'";a+=" if ( ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),a+=" "+h+" "+g,E&&(a+="="),a+=" "+f+") {"}var t=r,j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+b+", limit: "+f+", exclusive: "+E+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be "+w+" ",a+=u?"' + "+f:""+i+"'"),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+i,a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var $=a;return a=j.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s);var d="maxItems"==r?">":"<";a+="if ( ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),a+=" "+h+".length "+d+" "+f+") { ";var t=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+f+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have ",a+="maxItems"==r?"more":"less",a+=" than ",a+=u?"' + "+f+" + '":""+i,a+=" items' "),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+i,a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;return a=p.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s);var d="maxLength"==r?">":"<";a+="if ( ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),a+=e.opts.unicode===!1?" "+h+".length ":" ucs2length("+h+") ",a+=" "+d+" "+f+") { ";var t=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+f+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be ",a+="maxLength"==r?"longer":"shorter",a+=" than ",a+=u?"' + "+f+" + '":""+i,a+=" characters' "),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+i,a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;return a=p.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;
-u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s);var d="maxProperties"==r?">":"<";a+="if ( ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),a+=" Object.keys("+h+").length "+d+" "+f+") { ";var t=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+f+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have ",a+="maxProperties"==r?"more":"less",a+=" than ",a+=u?"' + "+f+" + '":""+i,a+=" properties' "),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+i,a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;return a=p.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+"."+r,o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c=n.baseId,h=a;if(h)for(var u,f=-1,d=h.length-1;d>f;)u=h[f+=1],e.util.schemaHasRules(u,e.RULES.all)&&(n.schema=u,n.schemaPath=s+"["+f+"]",n.errSchemaPath=o+"/"+f,t+="  "+e.validate(n)+" ",n.baseId=c,i&&(t+=" if (valid"+n.level+") { ",l+="}"));return i&&(t+=" "+l.slice(0,-1)),t=e.util.cleanUpCode(t)}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++;var m=i.every(function(r){return e.util.schemaHasRules(r,e.RULES.all)});if(m){var v=d.baseId;a+=" var "+f+" = errors; var "+u+" = false;  ";var y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;b>E;)P=g[E+=1],d.schema=P,d.schemaPath=n+"["+E+"]",d.errSchemaPath=l+"/"+E,a+="  "+e.validate(d)+" ",d.baseId=v,a+=" "+u+" = "+u+" || valid"+d.level+"; if (!"+u+") { ",p+="}";e.compositeRule=d.compositeRule=y,a+=" "+p+" if (!"+u+") {  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"anyOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else {  errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}else c&&(a+=" if (true) { ");return a}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f=e.opts.v5&&i.$data,d=f?e.util.getData(i.$data,o,e.dataPathArr):i;f&&(a+=" var schema"+s+" = "+d+"; ",d="schema"+s),f||(a+=" var schema"+s+" = validate.schema"+n+";"),a+="var "+u+" = equal("+h+", schema"+s+"); if (!"+u+") {   ";var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"constant")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;return a=p.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }"}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="errs__"+s,f=e.util.copy(e),d="";f.level++;var p={},m={};for(P in i){var v=i[P],y=Array.isArray(v)?m:p;y[P]=v}a+="var "+u+" = errors;";var g=e.errorPath;a+="var missing"+s+";";for(var P in m){if(y=m[P],a+=" if ("+h+e.util.getProperty(P)+" !== undefined ",c){a+=" && ( ";var E=y;if(E)for(var b,w=-1,j=E.length-1;j>w;){b=E[w+=1],w&&(a+=" || ");var $=e.util.getProperty(b);a+=" ( "+h+$+" === undefined && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?b:$)+") ) "}a+=")) {  ";var x="missing"+s,S="' + "+x+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(g,x,!0):g+" + "+x);var _=_||[];_.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(P)+"', missingProperty: '"+S+"', depsCount: "+y.length+", deps: '"+e.util.escapeQuotes(1==y.length?y[0]:y.join(", "))+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should have ",a+=1==y.length?"property "+e.util.escapeQuotes(y[0]):"properties "+e.util.escapeQuotes(y.join(", ")),a+=" when property "+e.util.escapeQuotes(P)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var R=a;a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+R+"]); ":" validate.errors = ["+R+"]; return false; ":" var err = "+R+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{a+=" ) { ";var O=y;if(O)for(var I,k=-1,A=O.length-1;A>k;){I=O[k+=1];var $=e.util.getProperty(I),S=e.util.escapeQuotes(I);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(g,I,e.opts.jsonPointers)),a+=" if ("+h+$+" === undefined) {  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(P)+"', missingProperty: '"+S+"', depsCount: "+y.length+", deps: '"+e.util.escapeQuotes(1==y.length?y[0]:y.join(", "))+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should have ",a+=1==y.length?"property "+e.util.escapeQuotes(y[0]):"properties "+e.util.escapeQuotes(y.join(", ")),a+=" when property "+e.util.escapeQuotes(P)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}a+=" }   ",c&&(d+="}",a+=" else { ")}e.errorPath=g;var q=f.baseId;for(var P in p){var v=p[P];e.util.schemaHasRules(v,e.RULES.all)&&(a+=" valid"+f.level+" = true; if ("+h+"['"+P+"'] !== undefined) { ",f.schema=v,f.schemaPath=n+e.util.getProperty(P),f.errSchemaPath=l+"/"+e.util.escapeFragment(P),a+="  "+e.validate(f)+" ",f.baseId=q,a+=" }  ",c&&(a+=" if (valid"+f.level+") { ",d+="}"))}return c&&(a+="   "+d+" if ("+u+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f=e.opts.v5&&i.$data,d=f?e.util.getData(i.$data,o,e.dataPathArr):i;f&&(a+=" var schema"+s+" = "+d+"; ",d="schema"+s);var p="i"+s;f||(a+=" var schema"+s+" = validate.schema"+n+";"),a+="var "+u+";",f&&(a+=" if (schema"+s+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+s+")) "+u+" = false; else {"),a+=""+u+" = false;for (var "+p+"=0; "+p+"<schema"+s+".length; "+p+"++) if (equal("+h+", schema"+s+"["+p+"])) { "+u+" = true; break; }",f&&(a+="  }  "),a+=" if (!"+u+") {   ";var m=m||[];m.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"enum")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var v=a;return a=m.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",c&&(a+=" else { "),a}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||"");if(e.opts.format===!1)return c&&(a+=" if (true) { "),a;var u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;if(u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s),u){var d="format"+s;a+=" var "+d+" = formats["+f+"]; var isObject"+s+" = typeof "+d+" == 'object' && !("+d+" instanceof RegExp) && "+d+".validate; if (isObject"+s+") { var async"+s+" = "+d+".async; "+d+" = "+d+".validate; } if (  ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'string') || "),a+=" ("+d+" && !(typeof "+d+" == 'function' ? ",a+=e.async?" (async"+s+" ? "+e.yieldAwait+" "+d+"("+h+") : "+d+"("+h+")) ":" "+d+"("+h+") ",a+=" : "+d+".test("+h+")))) {"}else{var d=e.formats[i];if(!d)return c&&(a+=" if (true) { "),a;var p="object"==typeof d&&!(d instanceof RegExp)&&d.validate;if(p){var m=d.async===!0;d=d.validate}if(m){if(!e.async)throw new Error("async format in sync schema");var v="formats"+e.util.getProperty(i)+".validate";a+=" if (!("+e.yieldAwait+" "+v+"("+h+"))) { "}else{a+=" if (! ";var v="formats"+e.util.getProperty(i);p&&(v+=".validate"),a+="function"==typeof d?" "+v+"("+h+") ":" "+v+".test("+h+") ",a+=") { "}}var y=y||[];y.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"format")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { format:  ',a+=u?""+f:""+e.util.toQuotedString(i),a+="  } ",e.opts.messages!==!1&&(a+=" , message: 'should match format \"",a+=u?"' + "+f+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+e.util.toQuotedString(i),a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var g=a;return a=y.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++;var m=d.dataLevel=e.dataLevel+1,v="data"+m,y=e.baseId;if(a+="var "+f+" = errors;var "+u+";",Array.isArray(i)){var g=e.schema.additionalItems;if(g===!1){a+=" "+u+" = "+h+".length <= "+i.length+"; ";var P=l;l=e.errSchemaPath+"/additionalItems",a+="  if (!"+u+") {   ";var E=E||[];E.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"additionalItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+i.length+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var b=a;a=E.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=P,c&&(p+="}",a+=" else { ")}var w=i;if(w)for(var j,$=-1,x=w.length-1;x>$;)if(j=w[$+=1],e.util.schemaHasRules(j,e.RULES.all)){a+=" valid"+d.level+" = true; if ("+h+".length > "+$+") { ";var S=h+"["+$+"]";d.schema=j,d.schemaPath=n+"["+$+"]",d.errSchemaPath=l+"/"+$,d.errorPath=e.util.getPathExpr(e.errorPath,$,e.opts.jsonPointers,!0),d.dataPathArr[m]=$;var _=e.validate(d);d.baseId=y,a+=e.util.varOccurences(_,v)<2?" "+e.util.varReplace(_,v,S)+" ":" var "+v+" = "+S+"; "+_+" ",a+=" }  ",c&&(a+=" if (valid"+d.level+") { ",p+="}")}if("object"==typeof g&&e.util.schemaHasRules(g,e.RULES.all)){d.schema=g,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" valid"+d.level+" = true; if ("+h+".length > "+i.length+") {  for (var i"+s+" = "+i.length+"; i"+s+" < "+h+".length; i"+s+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,"i"+s,e.opts.jsonPointers,!0);var S=h+"[i"+s+"]";d.dataPathArr[m]="i"+s;var _=e.validate(d);d.baseId=y,a+=e.util.varOccurences(_,v)<2?" "+e.util.varReplace(_,v,S)+" ":" var "+v+" = "+S+"; "+_+" ",c&&(a+=" if (!valid"+d.level+") break; "),a+=" } }  ",c&&(a+=" if (valid"+d.level+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+="  for (var i"+s+" = 0; i"+s+" < "+h+".length; i"+s+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,"i"+s,e.opts.jsonPointers,!0);var S=h+"[i"+s+"]";d.dataPathArr[m]="i"+s;var _=e.validate(d);d.baseId=y,a+=e.util.varOccurences(_,v)<2?" "+e.util.varReplace(_,v,S)+" ":" var "+v+" = "+S+"; "+_+" ",c&&(a+=" if (!valid"+d.level+") break; "),a+=" }  ",c&&(a+=" if (valid"+d.level+") { ",p+="}")}return c&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s),a+="var division"+s+";if (",u&&(a+=" "+f+" !== undefined && ( typeof "+f+" != 'number' || "),a+=" (division"+s+" = "+h+" / "+f+", ",a+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+s+") - division"+s+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",u&&(a+="  )  "),a+=" ) {   ";var d=d||[];d.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { multipleOf: '+f+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be multiple of ",a+=u?"' + "+f:""+i+"'"),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+i,a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var p=a;return a=d.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="errs__"+s,f=e.util.copy(e);if(f.level++,e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+u+" = errors;  ";var d=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.createErrors=!1;var p;f.opts.allErrors&&(p=f.opts.allErrors,f.opts.allErrors=!1),a+=" "+e.validate(f)+" ",f.createErrors=!0,p&&(f.opts.allErrors=p),e.compositeRule=f.compositeRule=d,a+=" if (valid"+f.level+") {   ";var m=m||[];m.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var v=a;a=m.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else {  errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+="  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(a+=" if (false) { ");return a}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++,a+="var "+f+" = errors;var prevValid"+s+" = false;var "+u+" = false;";var m=d.baseId,v=e.compositeRule;e.compositeRule=d.compositeRule=!0;var y=i;if(y)for(var g,P=-1,E=y.length-1;E>P;)g=y[P+=1],e.util.schemaHasRules(g,e.RULES.all)?(d.schema=g,d.schemaPath=n+"["+P+"]",d.errSchemaPath=l+"/"+P,a+="  "+e.validate(d)+" ",d.baseId=m):a+=" var valid"+d.level+" = true; ",P&&(a+=" if (valid"+d.level+" && prevValid"+s+") "+u+" = false; else { ",p+="}"),a+=" if (valid"+d.level+") "+u+" = prevValid"+s+" = true;";e.compositeRule=d.compositeRule=v,a+=""+p+"if (!"+u+") {   ";var b=b||[];b.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"oneOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var w=a;return a=b.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+w+"]); ":" validate.errors = ["+w+"]; return false; ":" var err = "+w+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} else {  errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},{}],27:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u=e.opts.v5&&i.$data,f=u?e.util.getData(i.$data,o,e.dataPathArr):i;u&&(a+=" var schema"+s+" = "+f+"; ",f="schema"+s);var d=u?"(new RegExp("+f+"))":e.usePattern(i);a+="if ( ",u&&(a+=" ("+f+" !== undefined && typeof "+f+" != 'string') || "),a+=" !"+d+".test("+h+") ) {   ";var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"pattern")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { pattern:  ',a+=u?""+f:""+e.util.toQuotedString(i),a+="  } ",e.opts.messages!==!1&&(a+=" , message: 'should match pattern \"",a+=u?"' + "+f+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema:  ",a+=u?"validate.schema"+n:""+e.util.toQuotedString(i),a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;return a=p.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="key"+s,d="patternMatched"+s,p="";a+="var "+u+" = true;";var m=i;if(m)for(var v,y=-1,g=m.length-1;g>y;){v=m[y+=1],a+=" var "+d+" = false; for (var "+f+" in "+h+") { "+d+" = "+e.usePattern(v)+".test("+f+"); if ("+d+") break; } ";var P=e.util.escapeQuotes(v);a+=" if (!"+d+") { "+u+" = false;  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternRequired")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingPattern: '"+P+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should have property matching pattern \\'"+P+"\\'' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; }   ",c&&(p+="}",a+=" else { ")}return a+=""+p}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++;var m=d.dataLevel=e.dataLevel+1,v="data"+m,y=Object.keys(i||{}),g=e.schema.patternProperties||{},P=Object.keys(g),E=e.schema.additionalProperties,b=y.length||P.length,w=E===!1,j="object"==typeof E&&Object.keys(E).length,$=e.opts.removeAdditional,x=w||j||$,S=e.baseId,_=e.schema.required;if(_&&(!e.opts.v5||!_.$data)&&e.opts.loopRequired>_.length)var R=e.util.toHash(_);if(e.opts.v5)var O=e.schema.patternGroups||{},I=Object.keys(O);if(a+="var "+f+" = errors;var valid"+d.level+" = true;",x){if(a+=" for (var key"+s+" in "+h+") { ",b){if(a+=" var isAdditional"+s+" = !(false ",y.length)if(y.length>5)a+=" || validate.schema"+n+"[key"+s+"] ";else{var k=y;if(k)for(var A,q=-1,L=k.length-1;L>q;)A=k[q+=1],a+=" || key"+s+" == "+e.util.toQuotedString(A)+" "}if(P.length){var C=P;if(C)for(var D,V=-1,U=C.length-1;U>V;)D=C[V+=1],a+=" || "+e.usePattern(D)+".test(key"+s+") "}if(e.opts.v5&&I&&I.length){var z=I;if(z)for(var T,V=-1,M=z.length-1;M>V;)T=z[V+=1],a+=" || "+e.usePattern(T)+".test(key"+s+") "}a+=" ); if (isAdditional"+s+") { "}if("all"==$)a+=" delete "+h+"[key"+s+"]; ";else{var Q=e.errorPath,N="' + key"+s+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,"key"+s,e.opts.jsonPointers)),w)if($)a+=" delete "+h+"[key"+s+"]; ";else{a+=" valid"+d.level+" = false; ";var H=l;l=e.errSchemaPath+"/additionalProperties";var F=F||[];F.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"additionalProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { additionalProperty: '"+N+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var G=a;a=F.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+G+"]); ":" validate.errors = ["+G+"]; return false; ":" var err = "+G+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=H,c&&(a+=" break; ")}else if(j)if("failing"==$){a+=" var "+f+" = errors;  ";var J=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=E,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+s,e.opts.jsonPointers);var K=h+"[key"+s+"]";d.dataPathArr[m]="key"+s;var B=e.validate(d);d.baseId=S,a+=e.util.varOccurences(B,v)<2?" "+e.util.varReplace(B,v,K)+" ":" var "+v+" = "+K+"; "+B+" ",a+=" if (!valid"+d.level+") { errors = "+f+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+h+"[key"+s+"]; }  ",e.compositeRule=d.compositeRule=J}else{d.schema=E,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+s,e.opts.jsonPointers);var K=h+"[key"+s+"]";d.dataPathArr[m]="key"+s;var B=e.validate(d);d.baseId=S,a+=e.util.varOccurences(B,v)<2?" "+e.util.varReplace(B,v,K)+" ":" var "+v+" = "+K+"; "+B+" ",c&&(a+=" if (!valid"+d.level+") break; ")}e.errorPath=Q}b&&(a+=" } "),a+=" }  ",c&&(a+=" if (valid"+d.level+") { ",p+="}")}var Y=e.opts.useDefaults&&!e.compositeRule;if(y.length){var Z=y;if(Z)for(var A,W=-1,X=Z.length-1;X>W;){A=Z[W+=1];var ee=i[A];if(e.util.schemaHasRules(ee,e.RULES.all)){var re=e.util.getProperty(A),K=h+re,te=Y&&void 0!==ee["default"];d.schema=ee,d.schemaPath=n+re,d.errSchemaPath=l+"/"+e.util.escapeFragment(A),d.errorPath=e.util.getPath(e.errorPath,A,e.opts.jsonPointers),d.dataPathArr[m]=e.util.toQuotedString(A);var B=e.validate(d);if(d.baseId=S,e.util.varOccurences(B,v)<2){B=e.util.varReplace(B,v,K);var ae=K}else{var ae=v;a+=" var "+v+" = "+K+"; "}if(te)a+=" "+B+" ";else{if(R&&R[A]){a+=" if ("+ae+" === undefined) { valid"+d.level+" = false; ";var Q=e.errorPath,H=l,se=e.util.escapeQuotes(A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(Q,A,e.opts.jsonPointers)),l=e.errSchemaPath+"/required";var F=F||[];F.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+se+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+se+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var G=a;a=F.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+G+"]); ":" validate.errors = ["+G+"]; return false; ":" var err = "+G+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=H,e.errorPath=Q,a+=" } else { "}else a+=c?" if ("+ae+" === undefined) { valid"+d.level+" = true; } else { ":" if ("+ae+" !== undefined) { ";a+=" "+B+" } "}}c&&(a+=" if (valid"+d.level+") { ",p+="}")}}var oe=P;if(oe)for(var D,ie=-1,ne=oe.length-1;ne>ie;){D=oe[ie+=1];var ee=g[D];if(e.util.schemaHasRules(ee,e.RULES.all)){d.schema=ee,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(D),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(D),a+=" for (var key"+s+" in "+h+") { if ("+e.usePattern(D)+".test(key"+s+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,"key"+s,e.opts.jsonPointers);var K=h+"[key"+s+"]";d.dataPathArr[m]="key"+s;var B=e.validate(d);d.baseId=S,a+=e.util.varOccurences(B,v)<2?" "+e.util.varReplace(B,v,K)+" ":" var "+v+" = "+K+"; "+B+" ",c&&(a+=" if (!valid"+d.level+") break; "),a+=" } ",c&&(a+=" else valid"+d.level+" = true; "),a+=" }  ",c&&(a+=" if (valid"+d.level+") { ",p+="}")}}if(e.opts.v5){var le=I;if(le)for(var T,ce=-1,he=le.length-1;he>ce;){T=le[ce+=1];var ue=O[T],ee=ue.schema;if(e.util.schemaHasRules(ee,e.RULES.all)){d.schema=ee,d.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(T)+".schema",d.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(T)+"/schema",a+=" var pgPropCount"+s+" = 0; for (var key"+s+" in "+h+") { if ("+e.usePattern(T)+".test(key"+s+")) { pgPropCount"+s+"++; ",d.errorPath=e.util.getPathExpr(e.errorPath,"key"+s,e.opts.jsonPointers);var K=h+"[key"+s+"]";d.dataPathArr[m]="key"+s;var B=e.validate(d);d.baseId=S,a+=e.util.varOccurences(B,v)<2?" "+e.util.varReplace(B,v,K)+" ":" var "+v+" = "+K+"; "+B+" ",c&&(a+=" if (!valid"+d.level+") break; "),a+=" } ",c&&(a+=" else valid"+d.level+" = true; "),a+=" }  ",c&&(a+=" if (valid"+d.level+") { ",p+="}");var fe=ue.minimum,de=ue.maximum;if(void 0!==fe||void 0!==de){a+=" var "+u+" = true; ";var H=l;if(void 0!==fe){var pe=fe,me="minimum",ve="less";a+=" "+u+" = pgPropCount"+s+" >= "+fe+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+="  if (!"+u+") {   ";var F=F||[];F.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+me+"', limit: "+pe+", pattern: '"+e.util.escapeQuotes(T)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have "+ve+" than "+pe+' properties matching pattern "'+e.util.escapeQuotes(T)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var G=a;a=F.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+G+"]); ":" validate.errors = ["+G+"]; return false; ":" var err = "+G+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==de&&(a+=" else ")}if(void 0!==de){var pe=de,me="maximum",ve="more";a+=" "+u+" = pgPropCount"+s+" <= "+de+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+="  if (!"+u+") {   ";var F=F||[];F.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+me+"', limit: "+pe+", pattern: '"+e.util.escapeQuotes(T)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have "+ve+" than "+pe+' properties matching pattern "'+e.util.escapeQuotes(T)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var G=a;a=F.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+G+"]); ":" validate.errors = ["+G+"]; return false; ":" var err = "+G+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=H,c&&(a+=" if ("+u+") { ",p+="}")}}}}return c&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(n||""),f="valid"+i;if("#"==l||"#/"==l)e.isRoot?(a=e.async,s="validate"):(a=e.root.schema.$async===!0,s="root.refVal[0]");else{var d=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===d){var p="can't resolve reference "+l+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(p);var m=m||[];m.push(o),o="",e.createErrors!==!1?(o+=" { keyword: '"+(t||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+c+"\" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",e.opts.messages!==!1&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),o+=" } "):o+=" {} ";var v=o;o=m.pop(),o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var y=new Error(p);throw y.missingRef=e.resolve.url(e.baseId,l),y.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(y.missingRef)),y}console.log(p),h&&(o+=" if (true) { ")}}else if(d.inline){var g=e.util.copy(e);g.level++,g.schema=d.schema,g.schemaPath="",g.errSchemaPath=l;var P=e.validate(g).replace(/validate\.schema/g,d.code);o+=" "+P+" ",h&&(o+=" if (valid"+g.level+") { ")}else a=d.$async===!0,s=d.code}if(s){var m=m||[];m.push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+u+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath),o+=n?" , data"+(n-1||"")+" , "+e.dataPathArr[n]+" ":" , parentData , parentDataProperty ",o+=")  ";var E=o;if(o=m.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");o+=" try { ",h&&(o+="var "+f+" ="),o+=" "+e.yieldAwait+" "+E+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",h&&(o+=" if ("+f+") { ")}else o+=" if (!"+E+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",h&&(o+=" else { ")}return o}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f=e.opts.v5&&i.$data,d=f?e.util.getData(i.$data,o,e.dataPathArr):i;
-if(f&&(a+=" var schema"+s+" = "+d+"; ",d="schema"+s),!f)if(e.opts.loopRequired>i.length&&e.schema.properties&&Object.keys(e.schema.properties).length){var p=[],m=i;if(m)for(var v,y=-1,g=m.length-1;g>y;){v=m[y+=1];var P=e.schema.properties[v];P&&e.util.schemaHasRules(P,e.RULES.all)||(p[p.length]=v)}}else var p=i;if(f||p.length){var E=e.errorPath,b=f||p.length>=e.opts.loopRequired;if(c)if(a+=" var missing"+s+"; ",b){f||(a+=" var schema"+s+" = validate.schema"+n+"; ");var w="i"+s,j="schema"+s+"["+w+"]",$="' + "+j+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,j,e.opts.jsonPointers)),a+=" var "+u+" = true; ",f&&(a+=" if (schema"+s+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+s+")) "+u+" = false; else {"),a+=" for (var "+w+" = 0; "+w+" < schema"+s+".length; "+w+"++) { "+u+" = "+h+"[schema"+s+"["+w+"]] !== undefined; if (!"+u+") break; } ",f&&(a+="  }  "),a+="  if (!"+u+") {   ";var x=x||[];x.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+$+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+$+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var S=a;a=x.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var _=p;if(_)for(var R,w=-1,O=_.length-1;O>w;){R=_[w+=1],w&&(a+=" || ");var I=e.util.getProperty(R);a+=" ( "+h+I+" === undefined && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?R:I)+") ) "}a+=") {  ";var j="missing"+s,$="' + "+j+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,j,!0):E+" + "+j);var x=x||[];x.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+$+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+$+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var S=a;a=x.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else if(b){f||(a+=" var schema"+s+" = validate.schema"+n+"; ");var w="i"+s,j="schema"+s+"["+w+"]",$="' + "+j+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,j,e.opts.jsonPointers)),f&&(a+=" if (schema"+s+" && !Array.isArray(schema"+s+")) {  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+$+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+$+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema"+s+" !== undefined) { "),a+=" for (var "+w+" = 0; "+w+" < schema"+s+".length; "+w+"++) { if ("+h+"[schema"+s+"["+w+"]] === undefined) {  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+$+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+$+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",f&&(a+="  }  ")}else{var k=p;if(k)for(var A,q=-1,L=k.length-1;L>q;){A=k[q+=1];var I=e.util.getProperty(A),$=e.util.escapeQuotes(A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,A,e.opts.jsonPointers)),a+=" if ("+h+I+" === undefined) {  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+$+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+$+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=E}else c&&(a+=" if (true) {");return a}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++;var m,v="ifPassed"+e.level,y=d.baseId;a+="var "+v+";";var g=i;if(g)for(var P,E=-1,b=g.length-1;b>E;){if(P=g[E+=1],E&&!m&&(a+=" if (!"+v+") { ",p+="}"),P["if"]&&e.util.schemaHasRules(P["if"],e.RULES.all)){a+=" var "+f+" = errors;   ";var w=e.compositeRule;if(e.compositeRule=d.compositeRule=!0,d.createErrors=!1,d.schema=P["if"],d.schemaPath=n+"["+E+"].if",d.errSchemaPath=l+"/"+E+"/if",a+="  "+e.validate(d)+" ",d.baseId=y,d.createErrors=!0,e.compositeRule=d.compositeRule=w,a+=" "+v+" = valid"+d.level+"; if ("+v+") {  ","boolean"==typeof P.then){if(P.then===!1){var j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+E+" } ",e.opts.messages!==!1&&(a+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var $=a;a=j.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}a+=" var valid"+d.level+" = "+P.then+"; "}else d.schema=P.then,d.schemaPath=n+"["+E+"].then",d.errSchemaPath=l+"/"+E+"/then",a+="  "+e.validate(d)+" ",d.baseId=y;a+="  } else {  errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } } "}else if(a+=" "+v+" = true;  ","boolean"==typeof P.then){if(P.then===!1){var j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+E+" } ",e.opts.messages!==!1&&(a+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var $=a;a=j.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}a+=" var valid"+d.level+" = "+P.then+"; "}else d.schema=P.then,d.schemaPath=n+"["+E+"].then",d.errSchemaPath=l+"/"+E+"/then",a+="  "+e.validate(d)+" ",d.baseId=y;m=P["continue"]}return a+=""+p+"var "+u+" = valid"+d.level+"; ",a=e.util.cleanUpCode(a)}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+"."+r,l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f=e.opts.v5&&i.$data,d=f?e.util.getData(i.$data,o,e.dataPathArr):i;if(f&&(a+=" var schema"+s+" = "+d+"; ",d="schema"+s),(i||f)&&e.opts.uniqueItems!==!1){f&&(a+=" var "+u+"; if ("+d+" === false || "+d+" === undefined) "+u+" = true; else if (typeof "+d+" != 'boolean') "+u+" = false; else { "),a+=" var "+u+" = true; if ("+h+".length > 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+u+" = false; break outer; } } } } ",f&&(a+="  }  "),a+=" if (!"+u+") {   ";var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { i: i, j: j } ',e.opts.messages!==!1&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema:  ",a+=f?"validate.schema"+n:""+i,a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;a=p.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { ")}else c&&(a+=" if (true) { ");return a}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r){function t(e){for(var r=0;e.rules.length>r;r++)if(a(e.rules[r]))return!0}function a(r){return void 0!==e.schema[r.keyword]||"properties"==r.keyword&&(e.schema.additionalProperties===!1||"object"==typeof e.schema.additionalProperties||e.schema.patternProperties&&Object.keys(e.schema.patternProperties).length||e.opts.v5&&e.schema.patternGroups&&Object.keys(e.schema.patternGroups).length)}var s="",o=e.schema.$async===!0;if(e.isTop){var i=e.isTop,n=e.level=0,l=e.dataLevel=0,c="data";if(e.rootId=e.resolve.fullPath(e.root.schema.id),e.baseId=e.baseId||e.rootId,o){e.async=!0;var h="es7"==e.opts.async;e.yieldAwait=h?"await":"yield"}delete e.isTop,e.dataPathArr=[void 0],s+=" validate = ",o?h?s+=" (async function ":("co*"==e.opts.async&&(s+="co.wrap"),s+="(function* "):s+=" (function ",s+=" (data, dataPath, parentData, parentDataProperty) { 'use strict'; var vErrors = null; ",s+=" var errors = 0;     "}else{var n=e.level,l=e.dataLevel,c="data"+(l||"");if(e.schema.id&&(e.baseId=e.resolve.url(e.baseId,e.schema.id)),o&&!e.async)throw new Error("async schema in sync schema");s+=" var errs_"+n+" = errors;"}var u,f="valid"+n,d=!e.opts.allErrors,p="",m="",v=e.schema.type,y=Array.isArray(v);if(v&&e.opts.coerceTypes){var g=e.util.coerceToTypes(v);if(g){var P=e.schemaPath+".type",E=e.errSchemaPath+"/type",b=y?"checkDataTypes":"checkDataType";s+=" if ("+e.util[b](v,c,!0)+") {  ";var w="dataType"+n,j="coerced"+n;s+=" var "+w+" = typeof "+c+"; var "+j+" = undefined; ";var $="",x=g;if(x)for(var S,_=-1,R=x.length-1;R>_;)S=x[_+=1],_&&(s+=" if ("+j+" === undefined) { ",$+="}"),"string"==S?s+=" if ("+w+" == 'number' || "+w+" == 'boolean') "+j+" = '' + "+c+"; else if ("+c+" === null) "+j+" = ''; ":"number"==S||"integer"==S?(s+=" if ("+w+" == 'boolean' || "+c+" === null || ("+w+" == 'string' && "+c+" && "+c+" == +"+c+" ","integer"==S&&(s+=" && !("+c+" % 1)"),s+=")) "+j+" = +"+c+"; "):"boolean"==S?s+=" if ("+c+" === 'false' || "+c+" === 0 || "+c+" === null) "+j+" = false; else if ("+c+" === 'true' || "+c+" === 1) "+j+" = true; ":"null"==S&&(s+=" if ("+c+" === '' || "+c+" === 0 || "+c+" === false) "+j+" = null; ");s+=" "+$+" if ("+j+" === undefined) {   ";var O=O||[];O.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(u||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+E+"\" , params: { type: '",s+=y?""+v.join(","):""+v,s+="' } ",e.opts.messages!==!1&&(s+=" , message: 'should be ",s+=y?""+v.join(","):""+v,s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+P+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var I=s;if(s=O.pop(),s+=!e.compositeRule&&d?e.async?" throw new ValidationError(["+I+"]); ":" validate.errors = ["+I+"]; return false; ":" var err = "+I+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { ",l){var k="data"+(l-1||""),A=e.dataPathArr[l];s+=" "+c+" = "+k+"["+A+"] = "+j+"; "}else s+=" data = "+j+"; if (parentData !== undefined) parentData[parentDataProperty] = "+j+"; ";s+=" } } "}}var q=e.RULES;if(q)for(var L,C=-1,D=q.length-1;D>C;)if(L=q[C+=1],t(L)){if(L.type&&(s+=" if ("+e.util.checkDataType(L.type,c)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==L.type&&e.schema.properties){var V=e.schema.properties,U=Object.keys(V),z=U;if(z)for(var T,M=-1,Q=z.length-1;Q>M;){T=z[M+=1];var N=V[T];if(void 0!==N["default"]){var H=c+e.util.getProperty(T);s+="  if ("+H+" === undefined) "+H+" = ",s+="shared"==e.opts.useDefaults?" "+e.useDefault(N["default"])+" ":" "+JSON.stringify(N["default"])+" ",s+="; "}}}else if("array"==L.type&&Array.isArray(e.schema.items)){var F=e.schema.items;if(F)for(var N,_=-1,G=F.length-1;G>_;)if(N=F[_+=1],void 0!==N["default"]){var H=c+"["+_+"]";s+="  if ("+H+" === undefined) "+H+" = ",s+="shared"==e.opts.useDefaults?" "+e.useDefault(N["default"])+" ":" "+JSON.stringify(N["default"])+" ",s+="; "}}var J=L.rules;if(J)for(var K,B=-1,Y=J.length-1;Y>B;)if(K=J[B+=1],a(K)){if(K.custom){var V=e.schema[K.keyword],Z=e.useCustomRule(K,V,e.schema,e),W=Z.code+".errors",P=e.schemaPath+"."+K.keyword,E=e.errSchemaPath+"/"+K.keyword,X="errs"+n,_="i"+n,ee="ruleErr"+n,re=K.definition,te=re.async,ae=re.inline,se=re.macro;if(te&&!e.async)throw new Error("async keyword in sync schema");if(ae||se||(s+=""+W+" = null;"),s+="var "+X+" = errors;var valid"+n+";",ae&&re.statements)s+=" "+Z.validate;else if(se){var oe=e.util.copy(e);oe.level++,oe.schema=Z.validate,oe.schemaPath="";var ie=e.compositeRule;e.compositeRule=oe.compositeRule=!0;var ne=e.validate(oe).replace(/validate\.schema/g,Z.code);e.compositeRule=oe.compositeRule=ie,s+=" "+ne}else if(re.compile||re.validate){var O=O||[];O.push(s),s="",s+="  "+Z.code+".call( ",s+=e.opts.passContext?"this":"self",s+=re.compile||re.schema===!1?" , "+c+" ":" , validate.schema"+P+" , "+c+" , validate.schema"+e.schemaPath+" ",s+=" , (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath),s+=l?" , data"+(l-1||"")+" , "+e.dataPathArr[l]+" ":" , parentData , parentDataProperty ",s+=" )  ";var le=s;s=O.pop(),re.errors!==!1&&(te?(W="customErrors"+n,s+=" var "+W+" = null; try { valid"+n+" = "+e.yieldAwait+le+"; } catch (e) { valid"+n+" = false; if (e instanceof ValidationError) "+W+" = e.errors; else throw e; } "):s+=" "+Z.code+".errors = null; ")}s+="if (! ",s+=ae?re.statements?" valid"+n+" ":" ("+Z.validate+") ":se?" valid"+oe.level+" ":te?re.errors===!1?" ("+e.yieldAwait+le+") ":" valid"+n+" ":" "+le+" ",s+=") { ",u=K.keyword;var O=O||[];O.push(s),s="";var O=O||[];O.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(u||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+E+"\" , params: { keyword: '"+K.keyword+"' } ",e.opts.messages!==!1&&(s+=" , message: 'should pass \""+K.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+P+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var I=s;s=O.pop(),s+=!e.compositeRule&&d?e.async?" throw new ValidationError(["+I+"]); ":" validate.errors = ["+I+"]; return false; ":" var err = "+I+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var ce=s;s=O.pop(),ae?re.errors?"full"!=re.errors&&(s+="  for (var "+_+"="+X+"; "+_+"<errors; "+_+"++) { var "+ee+" = vErrors["+_+"]; if ("+ee+".dataPath === undefined) { "+ee+".dataPath = (dataPath || '') + "+e.errorPath+"; } if ("+ee+".schemaPath === undefined) { "+ee+'.schemaPath = "'+E+'"; } ',e.opts.verbose&&(s+=" "+ee+".schema = validate.schema"+P+"; "+ee+".data = "+c+"; "),s+=" } "):re.errors===!1?s+=" "+ce+" ":(s+=" if ("+X+" == errors) { "+ce+" } else {  for (var "+_+"="+X+"; "+_+"<errors; "+_+"++) { var "+ee+" = vErrors["+_+"]; if ("+ee+".dataPath === undefined) { "+ee+".dataPath = (dataPath || '') + "+e.errorPath+"; } if ("+ee+".schemaPath === undefined) { "+ee+'.schemaPath = "'+E+'"; } ',e.opts.verbose&&(s+=" "+ee+".schema = validate.schema"+P+"; "+ee+".data = "+c+"; "),s+=" } } "):se?(s+="   var err =   ",e.createErrors!==!1?(s+=" { keyword: '"+(u||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+E+"\" , params: { keyword: '"+K.keyword+"' } ",e.opts.messages!==!1&&(s+=" , message: 'should pass \""+K.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+P+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ",s+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(s+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false ")):re.errors===!1?s+=" "+ce+" ":(s+=" if (Array.isArray("+W+")) { if (vErrors === null) vErrors = "+W+"; else vErrors.concat("+W+"); errors = vErrors.length;  for (var "+_+"="+X+"; "+_+"<errors; "+_+"++) { var "+ee+" = vErrors["+_+"];  "+ee+".dataPath = (dataPath || '') + "+e.errorPath+";   "+ee+'.schemaPath = "'+E+'";  ',e.opts.verbose&&(s+=" "+ee+".schema = validate.schema"+P+"; "+ee+".data = "+c+"; "),s+=" } } else { "+ce+" } "),u=void 0,s+=" } ",d&&(s+=" else { ")}else s+=" "+K.code(e,K.keyword)+" ";d&&(p+="}")}if(d&&(s+=" "+p+" ",p=""),L.type&&(s+=" } ",v&&v===L.type)){var he=!0;s+=" else { ";var P=e.schemaPath+".type",E=e.errSchemaPath+"/type",O=O||[];O.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(u||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+E+"\" , params: { type: '",s+=y?""+v.join(","):""+v,s+="' } ",e.opts.messages!==!1&&(s+=" , message: 'should be ",s+=y?""+v.join(","):""+v,s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+P+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var I=s;s=O.pop(),s+=!e.compositeRule&&d?e.async?" throw new ValidationError(["+I+"]); ":" validate.errors = ["+I+"]; return false; ":" var err = "+I+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } "}d&&(s+=" if (errors === ",s+=i?"0":"errs_"+n,s+=") { ",m+="}")}if(v&&!he&&(!e.opts.coerceTypes||!g)){var P=e.schemaPath+".type",E=e.errSchemaPath+"/type",b=y?"checkDataTypes":"checkDataType";s+=" if ("+e.util[b](v,c,!0)+") {   ";var O=O||[];O.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(u||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+E+"\" , params: { type: '",s+=y?""+v.join(","):""+v,s+="' } ",e.opts.messages!==!1&&(s+=" , message: 'should be ",s+=y?""+v.join(","):""+v,s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+P+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var I=s;s=O.pop(),s+=!e.compositeRule&&d?e.async?" throw new ValidationError(["+I+"]); ":" validate.errors = ["+I+"]; return false; ":" var err = "+I+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" }"}return d&&(s+=" "+m+" "),i?(o?(s+=" if (errors === 0) return true;           ",s+=" else throw new ValidationError(vErrors); "):(s+=" validate.errors = vErrors; ",s+=" return errors === 0;       "),s+=" });"):s+=" var "+f+" = errors === errs_"+n+";",s=e.util.cleanUpCode(s),i&&d&&(s=e.util.cleanUpVarErrors(s,o)),s}},{}],35:[function(e,r,t){"use strict";var a=/^[a-z_$][a-z0-9_$]*$/i;r.exports=function(e,r){function t(e,r,t){for(var a,s=0;o.RULES.length>s;s++){var i=o.RULES[s];if(i.type==r){a=i;break}}a||(a={type:r,rules:[]},o.RULES.push(a));var n={keyword:e,definition:t,custom:!0};a.rules.push(n)}function s(e){if(!o.RULES.types[e])throw new Error("Unknown type "+e)}var o=this;if(this.RULES.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!a.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){var i=r.type;if(Array.isArray(i)){var n,l=i.length;for(n=0;l>n;n++)s(i[n]);for(n=0;l>n;n++)t(e,i[n],r)}else i&&s(i),t(e,i,r)}this.RULES.keywords[e]=!0,this.RULES.all[e]=!0}},{}],36:[function(e,r,t){r.exports={id:"http://json-schema.org/draft-04/schema#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean","default":!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean","default":!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean","default":!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},"default":{}}},{}],37:[function(e,r,t){r.exports={id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema (v5 proposals)",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0},$data:{type:"object",required:["$data"],properties:{$data:{type:"string",format:"relative-json-pointer"}},additionalProperties:!1}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{anyOf:[{type:"number",minimum:0,exclusiveMinimum:!0},{$ref:"#/definitions/$data"}]},maximum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxLength:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minLength:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},pattern:{anyOf:[{type:"string",format:"regex"},{$ref:"#/definitions/$data"}]},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minItems:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},uniqueItems:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxProperties:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minProperties:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},required:{anyOf:[{$ref:"#/definitions/stringArray"},{$ref:"#/definitions/$data"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{anyOf:[{type:"array",minItems:1,uniqueItems:!0},{$ref:"#/definitions/$data"}]},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"},format:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMaximum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMinimum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatExclusiveMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},formatExclusiveMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},constant:{anyOf:[{},{$ref:"#/definitions/$data"}]},contains:{$ref:"#"},patternGroups:{type:"object",additionalProperties:{type:"object",required:["schema"],properties:{maximum:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},schema:{$ref:"#"}},additionalProperties:!1},"default":{}},"switch":{type:"array",items:{required:["then"],properties:{"if":{$ref:"#"},then:{anyOf:[{type:"boolean"},{$ref:"#"}]},"continue":{type:"boolean"}},additionalProperties:!1,dependencies:{"continue":["if"]}}}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"],formatMaximum:["format"],formatMinimum:["format"],formatExclusiveMaximum:["formatMaximum"],formatExclusiveMinimum:["formatMinimum"]},"default":{}}},{}],38:[function(e,r,t){"use strict";function a(r){function t(e,t,s){var o={inline:s||a[e],statements:!0,errors:"full"};t&&(o.type=t),r.addKeyword(e,o)}var a={"switch":e("./dotjs/switch"),constant:e("./dotjs/constant"),_formatLimit:e("./dotjs/_formatLimit"),patternRequired:e("./dotjs/patternRequired")};if(r._opts.meta!==!1){var i=e("./refs/json-schema-v5.json");r.addMetaSchema(i,o)}t("constant"),r.addKeyword("contains",{type:"array",macro:s}),t("formatMaximum","string",a._formatLimit),t("formatMinimum","string",a._formatLimit),r.addKeyword("formatExclusiveMaximum"),r.addKeyword("formatExclusiveMinimum"),r.addKeyword("patternGroups"),t("patternRequired","object"),t("switch")}function s(e){return{not:{items:{not:e}}}}var o="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";r.exports={enable:a,META_SCHEMA_ID:o}},{"./dotjs/_formatLimit":12,"./dotjs/constant":19,"./dotjs/patternRequired":28,"./dotjs/switch":32,"./refs/json-schema-v5.json":37}],39:[function(e,r,t){function a(e){var r=this,t=f.call(arguments,1);return new Promise(function(a,o){function i(r){var t;try{t=e.next(r)}catch(a){return o(a)}c(t)}function n(r){var t;try{t=e["throw"](r)}catch(a){return o(a)}c(t)}function c(e){if(e.done)return a(e.value);var t=s.call(r,e.value);return t&&l(t)?t.then(i,n):n(new TypeError('You may only yield a function, promise, generator, array, or object, but the following object was passed: "'+String(e.value)+'"'))}return"function"==typeof e&&(e=e.apply(r,t)),e&&"function"==typeof e.next?void i():a(e)})}function s(e){return e?l(e)?e:h(e)||c(e)?a.call(this,e):"function"==typeof e?o.call(this,e):Array.isArray(e)?i.call(this,e):u(e)?n.call(this,e):e:e}function o(e){var r=this;return new Promise(function(t,a){e.call(r,function(e,r){return e?a(e):(arguments.length>2&&(r=f.call(arguments,1)),void t(r))})})}function i(e){return Promise.all(e.map(s,this))}function n(e){function r(e,r){t[r]=void 0,o.push(e.then(function(e){t[r]=e}))}for(var t=new e.constructor,a=Object.keys(e),o=[],i=0;a.length>i;i++){var n=a[i],c=s.call(this,e[n]);c&&l(c)?r(c,n):t[n]=e[n]}return Promise.all(o).then(function(){return t})}function l(e){return"function"==typeof e.then}function c(e){return"function"==typeof e.next&&"function"==typeof e["throw"]}function h(e){var r=e.constructor;return r?"GeneratorFunction"===r.name||"GeneratorFunction"===r.displayName?!0:c(r.prototype):!1}function u(e){return Object==e.constructor}var f=Array.prototype.slice;r.exports=a["default"]=a.co=a,a.wrap=function(e){function r(){return a.call(this,e.apply(this,arguments))}return r.__generatorFunction__=e,r}},{}],40:[function(e,r,t){var a="undefined"!=typeof JSON?JSON:e("jsonify");r.exports=function(e,r){r||(r={}),"function"==typeof r&&(r={cmp:r});var t=r.space||"";"number"==typeof t&&(t=Array(t+1).join(" "));var i="boolean"==typeof r.cycles?r.cycles:!1,n=r.replacer||function(e,r){return r},l=r.cmp&&function(e){return function(r){return function(t,a){var s={key:t,value:r[t]},o={key:a,value:r[a]};return e(s,o)}}}(r.cmp),c=[];return function h(e,r,u,f){var d=t?"\n"+new Array(f+1).join(t):"",p=t?": ":":";if(u&&u.toJSON&&"function"==typeof u.toJSON&&(u=u.toJSON()),u=n.call(e,r,u),void 0!==u){if("object"!=typeof u||null===u)return a.stringify(u);if(s(u)){for(var m=[],v=0;u.length>v;v++){var y=h(u,v,u[v],f+1)||a.stringify(null);m.push(d+t+y)}return"["+m.join(",")+d+"]"}if(-1!==c.indexOf(u)){if(i)return a.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}c.push(u);for(var g=o(u).sort(l&&l(u)),m=[],v=0;g.length>v;v++){var r=g[v],P=h(u,r,u[r],f+1);if(P){var E=a.stringify(r)+p+P;m.push(d+t+E)}}return c.splice(c.indexOf(u),1),"{"+m.join(",")+d+"}"}}({"":e},"",e,0)};var s=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},o=Object.keys||function(e){var r=Object.prototype.hasOwnProperty||function(){return!0},t=[];for(var a in e)r.call(e,a)&&t.push(a);return t}},{jsonify:41}],41:[function(e,r,t){t.parse=e("./lib/parse"),t.stringify=e("./lib/stringify")},{"./lib/parse":42,"./lib/stringify":43}],42:[function(e,r,t){var a,s,o,i,n={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"	"},l=function(e){throw{name:"SyntaxError",message:e,at:a,text:o}},c=function(e){return e&&e!==s&&l("Expected '"+e+"' instead of '"+s+"'"),s=o.charAt(a),a+=1,s},h=function(){var e,r="";for("-"===s&&(r="-",c("-"));s>="0"&&"9">=s;)r+=s,c();if("."===s)for(r+=".";c()&&s>="0"&&"9">=s;)r+=s;if("e"===s||"E"===s)for(r+=s,c(),"-"!==s&&"+"!==s||(r+=s,c());s>="0"&&"9">=s;)r+=s,c();return e=+r,isFinite(e)?e:void l("Bad number")},u=function(){var e,r,t,a="";if('"'===s)for(;c();){if('"'===s)return c(),a;if("\\"===s)if(c(),"u"===s){for(t=0,r=0;4>r&&(e=parseInt(c(),16),isFinite(e));r+=1)t=16*t+e;a+=String.fromCharCode(t)}else{if("string"!=typeof n[s])break;a+=n[s]}else a+=s}l("Bad string")},f=function(){for(;s&&" ">=s;)c()},d=function(){switch(s){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+s+"'")},p=function(){var e=[];if("["===s){if(c("["),f(),"]"===s)return c("]"),e;for(;s;){if(e.push(i()),f(),"]"===s)return c("]"),e;c(","),f()}}l("Bad array")},m=function(){var e,r={};
-if("{"===s){if(c("{"),f(),"}"===s)return c("}"),r;for(;s;){if(e=u(),f(),c(":"),Object.hasOwnProperty.call(r,e)&&l('Duplicate key "'+e+'"'),r[e]=i(),f(),"}"===s)return c("}"),r;c(","),f()}}l("Bad object")};i=function(){switch(f(),s){case"{":return m();case"[":return p();case'"':return u();case"-":return h();default:return s>="0"&&"9">=s?h():d()}},r.exports=function(e,r){var t;return o=e,a=0,s=" ",t=i(),f(),s&&l("Syntax error"),"function"==typeof r?function n(e,t){var a,s,o=e[t];if(o&&"object"==typeof o)for(a in o)Object.prototype.hasOwnProperty.call(o,a)&&(s=n(o,a),void 0!==s?o[a]=s:delete o[a]);return r.call(e,t,o)}({"":t},""):t}},{}],43:[function(e,r,t){function a(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var r=c[e];return"string"==typeof r?r:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function s(e,r){var t,l,c,h,u,f=o,d=r[e];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(e)),"function"==typeof n&&(d=n.call(r,e,d)),typeof d){case"string":return a(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(o+=i,u=[],"[object Array]"===Object.prototype.toString.apply(d)){for(h=d.length,t=0;h>t;t+=1)u[t]=s(t,d)||"null";return c=0===u.length?"[]":o?"[\n"+o+u.join(",\n"+o)+"\n"+f+"]":"["+u.join(",")+"]",o=f,c}if(n&&"object"==typeof n)for(h=n.length,t=0;h>t;t+=1)l=n[t],"string"==typeof l&&(c=s(l,d),c&&u.push(a(l)+(o?": ":":")+c));else for(l in d)Object.prototype.hasOwnProperty.call(d,l)&&(c=s(l,d),c&&u.push(a(l)+(o?": ":":")+c));return c=0===u.length?"{}":o?"{\n"+o+u.join(",\n"+o)+"\n"+f+"}":"{"+u.join(",")+"}",o=f,c}}var o,i,n,l=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,c={"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};r.exports=function(e,r,t){var a;if(o="",i="","number"==typeof t)for(a=0;t>a;a+=1)i+=" ";else"string"==typeof t&&(i=t);if(n=r,r&&"function"!=typeof r&&("object"!=typeof r||"number"!=typeof r.length))throw new Error("JSON.stringify");return s("",{"":e})}},{}],44:[function(e,r,t){(function(e){!function(a){function s(e){throw new RangeError(q[e])}function o(e,r){for(var t=e.length,a=[];t--;)a[t]=r(e[t]);return a}function i(e,r){var t=e.split("@"),a="";t.length>1&&(a=t[0]+"@",e=t[1]),e=e.replace(A,".");var s=e.split("."),i=o(s,r).join(".");return a+i}function n(e){for(var r,t,a=[],s=0,o=e.length;o>s;)r=e.charCodeAt(s++),r>=55296&&56319>=r&&o>s?(t=e.charCodeAt(s++),56320==(64512&t)?a.push(((1023&r)<<10)+(1023&t)+65536):(a.push(r),s--)):a.push(r);return a}function l(e){return o(e,function(e){var r="";return e>65535&&(e-=65536,r+=D(e>>>10&1023|55296),e=56320|1023&e),r+=D(e)}).join("")}function c(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:w}function h(e,r){return e+22+75*(26>e)-((0!=r)<<5)}function u(e,r,t){var a=0;for(e=t?C(e/S):e>>1,e+=C(e/r);e>L*$>>1;a+=w)e=C(e/L);return C(a+(L+1)*e/(e+x))}function f(e){var r,t,a,o,i,n,h,f,d,p,m=[],v=e.length,y=0,g=R,P=_;for(t=e.lastIndexOf(O),0>t&&(t=0),a=0;t>a;++a)e.charCodeAt(a)>=128&&s("not-basic"),m.push(e.charCodeAt(a));for(o=t>0?t+1:0;v>o;){for(i=y,n=1,h=w;o>=v&&s("invalid-input"),f=c(e.charCodeAt(o++)),(f>=w||f>C((b-y)/n))&&s("overflow"),y+=f*n,d=P>=h?j:h>=P+$?$:h-P,!(d>f);h+=w)p=w-d,n>C(b/p)&&s("overflow"),n*=p;r=m.length+1,P=u(y-i,r,0==i),C(y/r)>b-g&&s("overflow"),g+=C(y/r),y%=r,m.splice(y++,0,g)}return l(m)}function d(e){var r,t,a,o,i,l,c,f,d,p,m,v,y,g,P,E=[];for(e=n(e),v=e.length,r=R,t=0,i=_,l=0;v>l;++l)m=e[l],128>m&&E.push(D(m));for(a=o=E.length,o&&E.push(O);v>a;){for(c=b,l=0;v>l;++l)m=e[l],m>=r&&c>m&&(c=m);for(y=a+1,c-r>C((b-t)/y)&&s("overflow"),t+=(c-r)*y,r=c,l=0;v>l;++l)if(m=e[l],r>m&&++t>b&&s("overflow"),m==r){for(f=t,d=w;p=i>=d?j:d>=i+$?$:d-i,!(p>f);d+=w)P=f-p,g=w-p,E.push(D(h(p+P%g,0))),f=C(P/g);E.push(D(h(f,0))),i=u(t,y,a==o),t=0,++a}++t,++r}return E.join("")}function p(e){return i(e,function(e){return I.test(e)?f(e.slice(4).toLowerCase()):e})}function m(e){return i(e,function(e){return k.test(e)?"xn--"+d(e):e})}var v="object"==typeof t&&t&&!t.nodeType&&t,y="object"==typeof r&&r&&!r.nodeType&&r,g="object"==typeof e&&e;g.global!==g&&g.window!==g&&g.self!==g||(a=g);var P,E,b=2147483647,w=36,j=1,$=26,x=38,S=700,_=72,R=128,O="-",I=/^xn--/,k=/[^\x20-\x7E]/,A=/[\x2E\u3002\uFF0E\uFF61]/g,q={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},L=w-j,C=Math.floor,D=String.fromCharCode;if(P={version:"1.4.1",ucs2:{decode:n,encode:l},decode:f,encode:d,toASCII:m,toUnicode:p},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return P});else if(v&&y)if(r.exports==v)y.exports=P;else for(E in P)P.hasOwnProperty(E)&&(v[E]=P[E]);else a.punycode=P}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],45:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var h=0;c>h;++h){var u,f,d,p,m=e[h].replace(n,"%20"),v=m.indexOf(t);v>=0?(u=m.substr(0,v),f=m.substr(v+1)):(u=m,f=""),d=decodeURIComponent(u),p=decodeURIComponent(f),a(i,d)?s(i[d])?i[d].push(p):i[d]=[i[d],p]:i[d]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],46:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;e.length>a;a++)t.push(r(e[a],a));return t}var s=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};r.exports=function(e,r,t,n){return r=r||"&",t=t||"=",null===e&&(e=void 0),"object"==typeof e?a(i(e),function(i){var n=encodeURIComponent(s(i))+t;return o(e[i])?a(e[i],function(e){return n+encodeURIComponent(s(e))}).join(r):n+encodeURIComponent(s(e[i]))}).join(r):n?encodeURIComponent(s(n))+t+encodeURIComponent(s(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=Object.keys||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.push(t);return r}},{}],47:[function(e,r,t){"use strict";t.decode=t.parse=e("./decode"),t.encode=t.stringify=e("./encode")},{"./decode":45,"./encode":46}],48:[function(e,r,t){"use strict";function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function s(e,r,t){if(e&&c.isObject(e)&&e instanceof a)return e;var s=new a;return s.parse(e,r,t),s}function o(e){return c.isString(e)&&(e=s(e)),e instanceof a?e.format():a.prototype.format.call(e)}function i(e,r){return s(e,!1,!0).resolve(r)}function n(e,r){return e?s(e,!1,!0).resolveObject(r):r}var l=e("punycode"),c=e("./util");t.parse=s,t.resolve=i,t.resolveObject=n,t.format=o,t.Url=a;var h=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,d=["<",">",'"',"`"," ","\r","\n","	"],p=["{","}","|","\\","^","`"].concat(d),m=["'"].concat(p),v=["%","/","?",";","#"].concat(m),y=["/","?","#"],g=255,P=/^[+a-z0-9A-Z_-]{0,63}$/,E=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},w={javascript:!0,"javascript:":!0},j={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},$=e("querystring");a.prototype.parse=function(e,r,t){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",o=e.split(s),i=/\\/g;o[0]=o[0].replace(i,"/"),e=o.join(s);var n=e;if(n=n.trim(),!t&&1===e.split("#").length){var u=f.exec(n);if(u)return this.path=n,this.href=n,this.pathname=u[1],u[2]?(this.search=u[2],this.query=r?$.parse(this.search.substr(1)):this.search.substr(1)):r&&(this.search="",this.query={}),this}var d=h.exec(n);if(d){d=d[0];var p=d.toLowerCase();this.protocol=p,n=n.substr(d.length)}if(t||d||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var x="//"===n.substr(0,2);!x||d&&w[d]||(n=n.substr(2),this.slashes=!0)}if(!w[d]&&(x||d&&!j[d])){for(var S=-1,_=0;y.length>_;_++){var R=n.indexOf(y[_]);-1!==R&&(-1===S||S>R)&&(S=R)}var O,I;I=-1===S?n.lastIndexOf("@"):n.lastIndexOf("@",S),-1!==I&&(O=n.slice(0,I),n=n.slice(I+1),this.auth=decodeURIComponent(O)),S=-1;for(var _=0;v.length>_;_++){var R=n.indexOf(v[_]);-1!==R&&(-1===S||S>R)&&(S=R)}-1===S&&(S=n.length),this.host=n.slice(0,S),n=n.slice(S),this.parseHost(),this.hostname=this.hostname||"";var k="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!k)for(var A=this.hostname.split(/\./),_=0,q=A.length;q>_;_++){var L=A[_];if(L&&!L.match(P)){for(var C="",D=0,V=L.length;V>D;D++)C+=L.charCodeAt(D)>127?"x":L[D];if(!C.match(P)){var U=A.slice(0,_),z=A.slice(_+1),T=L.match(E);T&&(U.push(T[1]),z.unshift(T[2])),z.length&&(n="/"+z.join(".")+n),this.hostname=U.join(".");break}}}this.hostname=this.hostname.length>g?"":this.hostname.toLowerCase(),k||(this.hostname=l.toASCII(this.hostname));var M=this.port?":"+this.port:"",Q=this.hostname||"";this.host=Q+M,this.href+=this.host,k&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==n[0]&&(n="/"+n))}if(!b[p])for(var _=0,q=m.length;q>_;_++){var N=m[_];if(-1!==n.indexOf(N)){var H=encodeURIComponent(N);H===N&&(H=escape(N)),n=n.split(N).join(H)}}var F=n.indexOf("#");-1!==F&&(this.hash=n.substr(F),n=n.slice(0,F));var G=n.indexOf("?");if(-1!==G?(this.search=n.substr(G),this.query=n.substr(G+1),r&&(this.query=$.parse(this.query)),n=n.slice(0,G)):r&&(this.search="",this.query={}),n&&(this.pathname=n),j[p]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var M=this.pathname||"",J=this.search||"";this.path=M+J}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var r=this.protocol||"",t=this.pathname||"",a=this.hash||"",s=!1,o="";this.host?s=e+this.host:this.hostname&&(s=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(s+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(o=$.stringify(this.query));var i=this.search||o&&"?"+o||"";return r&&":"!==r.substr(-1)&&(r+=":"),this.slashes||(!r||j[r])&&s!==!1?(s="//"+(s||""),t&&"/"!==t.charAt(0)&&(t="/"+t)):s||(s=""),a&&"#"!==a.charAt(0)&&(a="#"+a),i&&"?"!==i.charAt(0)&&(i="?"+i),t=t.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),i=i.replace("#","%23"),r+s+t+i+a},a.prototype.resolve=function(e){return this.resolveObject(s(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(c.isString(e)){var r=new a;r.parse(e,!1,!0),e=r}for(var t=new a,s=Object.keys(this),o=0;s.length>o;o++){var i=s[o];t[i]=this[i]}if(t.hash=e.hash,""===e.href)return t.href=t.format(),t;if(e.slashes&&!e.protocol){for(var n=Object.keys(e),l=0;n.length>l;l++){var h=n[l];"protocol"!==h&&(t[h]=e[h])}return j[t.protocol]&&t.hostname&&!t.pathname&&(t.path=t.pathname="/"),t.href=t.format(),t}if(e.protocol&&e.protocol!==t.protocol){if(!j[e.protocol]){for(var u=Object.keys(e),f=0;u.length>f;f++){var d=u[f];t[d]=e[d]}return t.href=t.format(),t}if(t.protocol=e.protocol,e.host||w[e.protocol])t.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),2>p.length&&p.unshift(""),t.pathname=p.join("/")}if(t.search=e.search,t.query=e.query,t.host=e.host||"",t.auth=e.auth,t.hostname=e.hostname||e.host,t.port=e.port,t.pathname||t.search){var m=t.pathname||"",v=t.search||"";t.path=m+v}return t.slashes=t.slashes||e.slashes,t.href=t.format(),t}var y=t.pathname&&"/"===t.pathname.charAt(0),g=e.host||e.pathname&&"/"===e.pathname.charAt(0),P=g||y||t.host&&e.pathname,E=P,b=t.pathname&&t.pathname.split("/")||[],p=e.pathname&&e.pathname.split("/")||[],$=t.protocol&&!j[t.protocol];if($&&(t.hostname="",t.port=null,t.host&&(""===b[0]?b[0]=t.host:b.unshift(t.host)),t.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),P=P&&(""===p[0]||""===b[0])),g)t.host=e.host||""===e.host?e.host:t.host,t.hostname=e.hostname||""===e.hostname?e.hostname:t.hostname,t.search=e.search,t.query=e.query,b=p;else if(p.length)b||(b=[]),b.pop(),b=b.concat(p),t.search=e.search,t.query=e.query;else if(!c.isNullOrUndefined(e.search)){if($){t.hostname=t.host=b.shift();var x=t.host&&t.host.indexOf("@")>0?t.host.split("@"):!1;x&&(t.auth=x.shift(),t.host=t.hostname=x.shift())}return t.search=e.search,t.query=e.query,c.isNull(t.pathname)&&c.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!b.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var S=b.slice(-1)[0],_=(t.host||e.host||b.length>1)&&("."===S||".."===S)||""===S,R=0,O=b.length;O>=0;O--)S=b[O],"."===S?b.splice(O,1):".."===S?(b.splice(O,1),R++):R&&(b.splice(O,1),R--);if(!P&&!E)for(;R--;R)b.unshift("..");!P||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),_&&"/"!==b.join("/").substr(-1)&&b.push("");var I=""===b[0]||b[0]&&"/"===b[0].charAt(0);if($){t.hostname=t.host=I?"":b.length?b.shift():"";var x=t.host&&t.host.indexOf("@")>0?t.host.split("@"):!1;x&&(t.auth=x.shift(),t.host=t.hostname=x.shift())}return P=P||t.host&&b.length,P&&!I&&b.unshift(""),b.length?t.pathname=b.join("/"):(t.pathname=null,t.path=null),c.isNull(t.pathname)&&c.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=u.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":49,punycode:44,querystring:47}],49:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,r,t){"use strict";function a(e){return v.test(e)}function Ajv(r){function t(e,r){var t;if("string"==typeof e){if(t=j(e),!t)throw new Error('no schema with key or ref "'+e+'"')}else{var a=_(e);t=a.validate||R(a)}var s=t(r);return t.$async===!0?"*"==C._opts.async?p(s):s:(C.errors=t.errors,s)}function g(e){var r=_(e);return r.validate||R(r)}function P(e,r,t,a){if(Array.isArray(e))for(var s=0;e.length>s;s++)P(e[s],void 0,t,a);else{r=o.normalizeId(r||e.id),q(r);var i=C._schemas[r]=_(e,t,!0);i.meta=a}}function E(e,r,t){P(e,r,t,!0)}function b(e,r){var s=e.$schema||C._opts.defaultMeta||w(),o=C._formats.uri;C._formats.uri="function"==typeof o?a:v;var i=t(s,e);if(C._formats.uri=o,!i&&r){var n="schema is invalid:"+O();if("log"!=C._opts.validateSchema)throw new Error(n);console.error(n)}return i}function w(){var e=C._opts.meta;return C._opts.defaultMeta="object"==typeof e?e.id||e:C._opts.v5?u.META_SCHEMA_ID:m}function j(e){var r=$(e);switch(typeof r){case"object":return r.validate||R(r);case"string":return j(r)}}function $(e){return e=o.normalizeId(e),C._schemas[e]||C._refs[e]}function x(e){if(e instanceof RegExp)return S(C._schemas,e),void S(C._refs,e);switch(typeof e){case"undefined":return S(C._schemas),S(C._refs),void C._cache.clear();case"string":var r=$(e);return r&&C._cache.del(r.jsonStr),delete C._schemas[e],void delete C._refs[e];case"object":var t=l(e);C._cache.del(t);var a=e.id;a&&(a=o.normalizeId(a),delete C._schemas[a],delete C._refs[a])}}function S(e,r){for(var t in e){var a=e[t];a.meta||r&&!r.test(t)||(C._cache.del(a.jsonStr),delete e[t])}}function _(e,r,t){if("object"!=typeof e)throw new Error("schema should be object");var a=l(e),s=C._cache.get(a);if(s)return s;t=t||C._opts.addUsedSchema!==!1;var i=o.normalizeId(e.id);i&&t&&q(i),C._opts.validateSchema===!1||r||b(e,!0);var c=o.ids.call(C,e),h=new n({id:i,schema:e,localRefs:c,jsonStr:a});return"#"!=i[0]&&t&&(C._refs[i]=h),C._cache.put(a,h),h}function R(e,r){function t(){var r=e.validate,a=r.apply(null,arguments);return t.errors=r.errors,a}if(e.compiling)return e.validate=t,t.schema=e.schema,t.errors=null,t.root=r?r:t,e.schema.$async===!0&&(t.$async=!0),t;e.compiling=!0;var a;e.meta&&(a=C._opts,C._opts=C._metaOpts);var o;try{o=s.call(C,e.schema,r,e.localRefs)}finally{e.compiling=!1,e.meta&&(C._opts=a)}return e.validate=o,e.refs=o.refs,e.refVal=o.refVal,e.root=o.root,o}function O(e,r){if(e=e||C.errors,!e)return"No errors";r=r||{};for(var t=void 0===r.separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;e.length>o;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)}function I(e,r){"string"==typeof r&&(r=new RegExp(r)),C._formats[e]=r}function k(){if(C._opts.meta!==!1){var r=e("./refs/json-schema-draft-04.json");E(r,m,!0),C._refs["http://json-schema.org/schema"]=m}var t=C._opts.schemas;if(t)if(Array.isArray(t))P(t);else for(var a in t)P(t[a],a)}function A(){for(var e in C._opts.formats){var r=C._opts.formats[e];I(e,r)}}function q(e){if(C._schemas[e]||C._refs[e])throw new Error('schema with key or id "'+e+'" already exists')}function L(){for(var e=f.copy(C._opts),r=0;y.length>r;r++)delete e[y[r]];return e}if(!(this instanceof Ajv))return new Ajv(r);var C=this;r=this._opts=f.copy(r)||{},this._schemas={},this._refs={},this._formats=c(r.format),this._cache=r.cache||new i,this._loadingSchemas={},this.RULES=h(),this.validate=t,this.compile=g,this.addSchema=P,this.addMetaSchema=E,this.validateSchema=b,this.getSchema=j,this.removeSchema=x,this.addFormat=I,this.errorsText=O,this._addSchema=_,this._compile=R,r.loopRequired=r.loopRequired||1/0,(r.async||r.transpile)&&d.setup(r),r.beautify===!0&&(r.beautify={indent_size:2}),"property"==r.errorDataPath&&(r._errorDataPathProperty=!0),this._metaOpts=L(),k(),r.formats&&A(),r.v5&&u.enable(this),"object"==typeof r.meta&&E(r.meta)}var s=e("./compile"),o=e("./compile/resolve"),i=e("./cache"),n=e("./compile/schema_obj"),l=e("json-stable-stringify"),c=e("./compile/formats"),h=e("./compile/rules"),u=e("./v5"),f=e("./compile/util"),d=e("./async"),p=e("co");r.exports=Ajv,Ajv.prototype.compileAsync=d.compile,Ajv.prototype.addKeyword=e("./keyword"),Ajv.ValidationError=e("./compile/validation_error");var m="http://json-schema.org/draft-04/schema",v=/^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i,y=["removeAdditional","useDefaults","coerceTypes"]},{"./async":1,"./cache":2,"./compile":6,"./compile/formats":5,"./compile/resolve":7,"./compile/rules":8,"./compile/schema_obj":9,"./compile/util":10,"./compile/validation_error":11,"./keyword":35,"./refs/json-schema-draft-04.json":36,"./v5":38,co:39,"json-stable-stringify":40}]},{},[])("ajv")});
-//# sourceMappingURL=dist/ajv.min.js.map
\ No newline at end of file
deleted file mode 100644
--- a/testing/web-platform/tests/annotation-model/scripts/ajv.min.js.map
+++ /dev/null
@@ -1,1 +0,0 @@
-{"version":3,"sources":["dist/ajv.bundle.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Ajv","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","setupAsync","opts","required","check","async","transpile","get","TRANSPILE","_transpileFunc","ASYNC","MODES","_opts","util","copy","checkGenerators","eval","checkAsyncFunction","getRegenerator","regenerator","runtime","regeneratorTranspile","compile","getNodent","nodent","log","dontInstallRequireHook","console","warn","nodentTranspile","promises","sourcemap","compileAsync","schema","callback","_compileAsync","firstCall","loadMissingSchema","schemaLoaded","err","sch","_refs","ref","_schemas","addSchema","missingSchema","missingRef","_callbacks","_loadingSchemas","loadSchema","deferCallback","validate","setTimeout","schemaObj","_addSchema","setup","*","co*","es7","./compile/util","2","Cache","_cache","prototype","put","key","value","del","clear","3","$ref","allOf","anyOf","dependencies","enum","format","items","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","properties","uniqueItems","../dotjs/_limit","../dotjs/_limitItems","../dotjs/_limitLength","../dotjs/_limitProperties","../dotjs/allOf","../dotjs/anyOf","../dotjs/dependencies","../dotjs/enum","../dotjs/format","../dotjs/items","../dotjs/multipleOf","../dotjs/not","../dotjs/oneOf","../dotjs/pattern","../dotjs/properties","../dotjs/ref","../dotjs/required","../dotjs/uniqueItems","../dotjs/validate","4","equal","b","arrA","Array","isArray","arrB","keys","Object","undefined","5","formats","mode","formatDefs","fName","compare","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","split","DATE_TIME_SEPARATOR","hostname","HOSTNAME","test","uri","NOT_URI_FRAGMENT","URI","regex","RegExp","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","res","UUID","JSON_POINTER","RELATIVE_JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","./util","6","root","localRefs","baseId","localCompile","_schema","_root","isRoot","$async","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","RULES","resolve","resolveRef","usePattern","useDefault","useCustomRule","vars","refVal","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","beautify","error","validateCode","errors","refs","url","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","v","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","stableStringify","defaultsHash","rule","parentSchema","it","definition","macro","validateSchema","keyword","_formats","arr","statement","js_beautify","co","ucs2length","ValidationError","../async","./equal","./resolve","./validation_error","json-stable-stringify","7","SchemaObject","_compile","_resolve","p","parse","refPath","_getFullPath","getFullPath","id","normalizeId","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","slice","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","count","Infinity","SIMPLE_INLINED","normalize","protocol","host","path","replace","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","escapeFragment","ids","toHash","./schema_obj","8","ruleModules","type","rules","all","keywords","types","forEach","group","map","push","concat","./_rules","9","obj","10","to","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","object","number","integer","coerceToTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","SINGLE_QUOTE","escapeQuotes","len","pos","charCodeAt","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_TRUE_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","11","message","ajv","validation","create","constructor","12","$keyword","$errorKeyword","$lvl","level","$dataLvl","dataLevel","$schema","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$valid","$schemaFormat","$isDataFormat","v5","$closingBraces","$schemaValueFormat","dataPathArr","$format","$compare","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$result","$isData","$schemaValue","$schemaValueExcl","$exclusive","$opExpr","$opStr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","13","$notOp","14","15","unicode","16","17","$it","$currentBaseId","arr1","$sch","$i","l1","18","$errs","$noEmptySchema","every","$wasComposite","19","20","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","join","arr2","$reqProperty","i2","l2","21","22","$isObject","$formatRef","23","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$passData","$code","24","multipleOfPrecision","25","$allErrorsOption","26","27","$regexp","28","$key","$matched","$pProperty","i1","$missingPattern","29","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","$pgProperties","patternGroups","$pgPropertyKeys","$propertyKey","arr3","$pgProperty","l3","$additionalProperty","$useDefaults","useDefaults","arr4","i4","l4","$hasDefault","$useData","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","30","$refCode","$refVal","$message","missingRefs","$error","passContext","__callValidate","31","$propertySch","$loopRequired","i3","32","$shouldContinue","$ifPassed","$caseIndex","then","33","34","$shouldUseGroup","$rulesGroup","$shouldUseRule","$rule","$top","rootId","$es7","yieldAwait","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$method","$dataType","$coerced","$bracesCoercion","$type","$parentData","$dataProperty","JSON","stringify","custom","$ruleValidate","$ruleErrs","$ruleErr","$rDef","$asyncKeyword","$inline","$macro","statements","def_callRuleValidate","def_customError","$typeChecked","35","_addRule","ruleGroup","rg","36","description","definitions","schemaArray","positiveInteger","positiveIntegerDefault0","default","simpleTypes","stringArray","title","exclusiveMinimum","exclusiveMaximum","37","formatMaximum","formatMinimum","formatExclusiveMaximum","formatExclusiveMinimum","constant","contains","switch","if","continue","38","enableV5","_addKeyword","inlineFunc","inlineFunctions","addKeyword","_formatLimit","patternRequired","meta","metaSchema","addMetaSchema","META_SCHEMA_ID","containsMacro","enable","./dotjs/_formatLimit","./dotjs/constant","./dotjs/patternRequired","./dotjs/switch","./refs/json-schema-v5.json","39","gen","ctx","args","arguments","Promise","reject","onFulfilled","ret","next","onRejected","done","toPromise","isPromise","TypeError","String","apply","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","isObject","objectToPromise","fn","defer","promise","results","name","displayName","val","wrap","createPromise","__generatorFunction__","40","json","cmp","space","cycles","replacer","node","aobj","bobj","seen","parent","indent","colonSeparator","toJSON","indexOf","objectKeys","sort","keyValue","splice","","x","toString","has","hasOwnProperty","jsonify","41","./lib/parse","./lib/stringify","42","at","ch","text","escapee","\"","\\","/","m","c","charAt","string","isFinite","hex","uffff","parseInt","fromCharCode","white","word","source","reviver","result","walk","holder","k","43","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","44","RangeError","mapDomain","regexSeparators","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","basic","j","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toLowerCase","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","punycode","overflow","not-basic","invalid-input","Math","version","ucs2","45","qs","sep","eq","options","regexp","maxKeys","kstr","vstr","idx","substr","xs","46","stringifyPrimitive","ks","47","./decode","./encode","48","Url","slashes","auth","port","search","query","pathname","href","urlParse","parseQueryString","slashesDenoteHost","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","slashRegex","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","isAbsolute","49","arg","SCHEMA_URI_FORMAT_FUNC","SCHEMA_URI_FORMAT","schemaKeyRef","getSchema","valid","_skipValidation","_meta","checkUnique","skipValidation","throwOrLogError","defaultMeta","currentUriFormat","errorsText","keyRef","_getSchemaObj","removeSchema","_removeAllSchemas","jsonStr","schemas","shouldAddSchema","cached","addUsedSchema","callValidate","_validate","compiling","currentOpts","_metaOpts","compileSchema","separator","dataPath","addFormat","addInitialSchemas","optsSchemas","addInitialFormats","getMetaSchemaOptions","metaOpts","META_IGNORE_OPTIONS","cache","indent_size","errorDataPath","./async","./cache","./compile","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/validation_error","./keyword","./refs/json-schema-draft-04.json","./v5"],"mappings":"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