diff options
author | Asher Gomez <ashersaupingomez@gmail.com> | 2024-03-05 11:41:16 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-05 00:41:16 +0000 |
commit | 0022c35a237773b50a771b0fef48cac734f7a9d6 (patch) | |
tree | a7a2f9472d432c6ae9b329e6a62a9dbe0f69de75 /tests/wpt | |
parent | c559e813e172bc67225391d3c5cb5d85c14c6279 (diff) |
chore: move `tools/wpt` to `tests/wpt/runner` (#22545)
Towards #22525
---------
Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com>
Co-authored-by: Matt Mastracci <matthew@mastracci.com>
Diffstat (limited to 'tests/wpt')
-rw-r--r-- | tests/wpt/runner/certs/README.md | 30 | ||||
-rw-r--r-- | tests/wpt/runner/certs/cacert.key | 30 | ||||
-rw-r--r-- | tests/wpt/runner/certs/cacert.pem | 71 | ||||
-rw-r--r-- | tests/wpt/runner/certs/web-platform.test.key | 28 | ||||
-rw-r--r-- | tests/wpt/runner/certs/web-platform.test.pem | 133 | ||||
-rw-r--r-- | tests/wpt/runner/config.json | 11 | ||||
-rw-r--r-- | tests/wpt/runner/expectation.json | 10998 | ||||
-rw-r--r-- | tests/wpt/runner/runner.ts | 241 | ||||
-rw-r--r-- | tests/wpt/runner/testharnessreport.js | 29 | ||||
-rw-r--r-- | tests/wpt/runner/utils.ts | 214 | ||||
-rwxr-xr-x | tests/wpt/wpt.ts | 816 |
11 files changed, 12601 insertions, 0 deletions
diff --git a/tests/wpt/runner/certs/README.md b/tests/wpt/runner/certs/README.md new file mode 100644 index 000000000..f3ebfc652 --- /dev/null +++ b/tests/wpt/runner/certs/README.md @@ -0,0 +1,30 @@ +## To regenerate certificates + +1. Apply: + +``` +diff --git a/tools/wptserve/wptserve/sslutils/openssl.py b/tools/wptserve/wptserve/sslutils/openssl.py +index 87a8cc9cc7..bbf500d8ca 100644 +--- a/tools/wptserve/wptserve/sslutils/openssl.py ++++ b/tools/wptserve/wptserve/sslutils/openssl.py +@@ -216,7 +216,7 @@ basicConstraints = CA:true + subjectKeyIdentifier=hash + authorityKeyIdentifier=keyid:always,issuer:always + keyUsage = keyCertSign +-%(constraints_line)s ++#%(constraints_line)s + """ % {"root_dir": root_dir, + "san_line": san_line, + "duration": duration, +``` + +2. `cd tests/wpt/suite/` +3. `./wpt serve --config tools/certs/config.json` +4. Run: + +``` +cp tests/wpt/suite/tools/certs/cacert.key tests/wpt/runner/certs/cacert.key +cp tests/wpt/suite/tools/certs/cacert.pem tests/wpt/runner/certs/cacert.pem +cp tests/wpt/suite/tools/certs/web-platform.test.key tests/wpt/runner/certs/web-platform.test.key +cp tests/wpt/suite/tools/certs/web-platform.test.pem tests/wpt/runner/certs/web-platform.test.pem +``` diff --git a/tests/wpt/runner/certs/cacert.key b/tests/wpt/runner/certs/cacert.key new file mode 100644 index 000000000..372ccca44 --- /dev/null +++ b/tests/wpt/runner/certs/cacert.key @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIQ+W03vdK1q8CAggA +MB0GCWCGSAFlAwQBKgQQvAinKAExkO2ZesObnF6FMgSCBNCclHCzJ7wkLCCLn6oU +GGNpNORoeiteSIr+2OHluK9in3YFoS9sXGDQrsb56wVbQIisxWFFGRES9ds+KW3n +Ll38AutYQ5yArIFqWO83f80zybnrtynTluCtV6s3JZGhgSpYXUJ0v+sNwRuGILvb +BxJYB4RFkSCyne629JScEthMoaVvjNbOvcpRmIcO1WdRCsf3EEuZPHExhNnQxUAU +Yw8eNN17kc/e9Wjl4W65gfehcwKJRsWs+tD4zmYUKFTyETtbuNyntR5n8Lil3abV +lgENx1/XOTan/AvYRv3DqoLyt6p/lp4F4FtQQlylCjg+rZaovP7NC4s22bBnoQPx +QbbdOx+v1WeCquezG3VzgMiw6//wSfqOCy1TWmOWghcORolYSzQ7KUY0jHhiIo0y +IkxBgMd4XefYXaCCPdtY8O2pJKQzaqY9p8cIzBe41X/PuACUNSTh1Kt1oBGCBQbA +Ox1mT8wUBM7ETU96TX87g+AtbTW8LB9fxf0PW3cieEc4QPxciN1RZQQOKw/qU9wx +MQj9nlyGn3c6LK11mZ8piz6wD6/dCZAocGndmRA5qELDrGihAGBvHmpLM08vgH2B +BKtv3Is9/v54ATUvGBtXKkYOmK4fONUyMJoyIbZPbifZBs1PUVm0qcHF2VnamdCr +EB4Ea/p49G1SuOZN7WtmrJR7fedoappa7+vlUU4cCTw5XIsFInLJ4xQe+BhCnQKs +Gm3ewR3ferrC8TeiExiYShVVPb3n0Qr5Mm/9SHCutux4a4/Q8a09MNB1+Inh+tH7 +sKyFQS6IettSMZ2FtO+23nd1BM1VbGkxaLVVah3Lcho4byYAhdLo3wRqFLq+QI5G +AYZHrK+WlL1vcXh1Ba+H5aeNUV/fJHy4jMe78VzYb1Enuj8RhhbqlvRlnySfMt+N +SYaVrWIioWzAkUDAZsTZqywn+TWP12zMb1bA3S8zX02PY1/YFfhfYDn0ME+tAVPv +JxdwS6z6x2KHN5WEabKYlFGc+F9bAgW/KtWXBSzPiUENB5oq7fRKiZSjIHXqaSBO +kJ5FcqTwj2b6hgD4KYAAs1qOflmvkq5Yxc9zOYWB+avPE0FUFP/QV+65RHtau8G5 +OdWGWs/tzcEG3GAsIWBCoSCe4YKJsUGoi19Aa/i/k+z1OKvl41LXwIEyS79S6snG +vrCm3BpQMtvE2tMJ1f2n230v7PyG/JF/UuW41F7jUg40E2ULwzCBTCmiaWKD4iYp +nGIorbt9bHo7P1OJAryVGvI6tRyPeShPhjzb9DSWqWOCsfJ7HapiOQb0e+83N1Uv +H7lWz9WMEzp/ewnd6qQTpIFZBmQ3oKxSQ6agvHBmMrpvW/kpH+Oa40dE+QP5L0zU +n7Mv5j1q03lA6dO5Fa/2BR0AiTnYE+Yn5c/llDYpbFZam6s+3e9/64nFTOApDW5l +XfgXOy2KlQOziuz+8rjOmMFmVYRkfBKtjzuhRIERGFKZntsXQbAGM3EKGdusA1mz +AcXbp17gMpEBI24AYjo0Hu6XYUTGeXsbqJBOnIAg0JslbbLlRMzKdRVINKKLXLdX +TUunm9tmOSwL4o22WX/D3iUx0IiSOdFfq8FMTEmAPStfoBTCxyEPfVPYz9w0+trW +JvvPmdH0mTZp8G3UmkgBSPk1dw== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/tests/wpt/runner/certs/cacert.pem b/tests/wpt/runner/certs/cacert.pem new file mode 100644 index 000000000..9bc42cc1b --- /dev/null +++ b/tests/wpt/runner/certs/cacert.pem @@ -0,0 +1,71 @@ +-----BEGIN CERTIFICATE----- +MIIM3jCCC8agAwIBAgIDDdH2MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl +Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMzA2MDIwMjQ1MTdaFw0yNDA2MDEwMjQ1MTda +MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAKvZZxnQbYFxul9QFZvEzyaUpOy/maaeSbsEKTXcmMV+ +Op1pBFEIsVKfW09a2V0yIPNeNJt9ezGR12klitPi6HbtENWRIHwH7pEl99QElYSt +yVNcN2dy8bn8p94xUshjMV3sPzBCjMUaAu1FQtYiSeCw+XG4vh74uOYGV6EiIATQ +Xj6J10aLNBGMrOlbqYLbB5KIHIIX3HIlxOS1VyVUJANhv8+m89ykyy/eWjmexbeK +tXhqc98iopV/2Okl2K6AAjjPMwV+5HKzDBGKS5MOmnzqCSEjkQbCSwQgAy758DeN +KuWWd2OwfaudYt3wprnIcT8AJW8Sp1aGSQmeJYmywbkCAwEAAaOCCiUwggohMAwG +A1UdEwQFMAMBAf8wHQYDVR0OBBYEFGbZlmcsD7pGcpPSrjXntECqiONKMEcGA1Ud +IwRAMD6AFGbZlmcsD7pGcpPSrjXntECqiONKoSGkHzAdMRswGQYDVQQDDBJ3ZWIt +cGxhdGZvcm0tdGVzdHOCAw3R9jALBgNVHQ8EBAMCAgQwEwYDVR0lBAwwCgYIKwYB +BQUHAwEwggmFBgNVHREEggl8MIIJeIIRd2ViLXBsYXRmb3JtLnRlc3SCFW5vdC13 +ZWItcGxhdGZvcm0udGVzdIIVd3d3LndlYi1wbGF0Zm9ybS50ZXN0ghZ3d3cxLndl +Yi1wbGF0Zm9ybS50ZXN0ghZ3d3cyLndlYi1wbGF0Zm9ybS50ZXN0ghl3d3cubm90 +LXdlYi1wbGF0Zm9ybS50ZXN0ghl3d3cud3d3LndlYi1wbGF0Zm9ybS50ZXN0ghp3 +d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIad3d3MS5ub3Qtd2ViLXBsYXRmb3Jt +LnRlc3SCGnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0ghp3d3cxLnd3dy53ZWIt +cGxhdGZvcm0udGVzdIIad3d3Mi53d3cud2ViLXBsYXRmb3JtLnRlc3SCGnd3dy53 +d3cyLndlYi1wbGF0Zm9ybS50ZXN0ght3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRl +c3SCG3d3dzIud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cxLndlYi1w +bGF0Zm9ybS50ZXN0ght3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCHXd3dy53 +d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0gh53d3cud3d3Mi5ub3Qtd2ViLXBsYXRm +b3JtLnRlc3SCHnd3dy53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIeeG4tLWx2 +ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gh53d3cxLnd3dy5ub3Qtd2ViLXBsYXRm +b3JtLnRlc3SCHnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIfd3d3Mi53 +d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIfd3d3MS53d3cyLm5vdC13ZWItcGxh +dGZvcm0udGVzdIIfd3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIfd3d3 +Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIid3d3LnhuLS1sdmUtNmxhZC53 +ZWItcGxhdGZvcm0udGVzdIIieG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0u +dGVzdIIieG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdIIjeG4tLWx2 +ZS02bGFkLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCI3huLS1sdmUtNmxhZC53d3cx +LndlYi1wbGF0Zm9ybS50ZXN0giN3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZv +cm0udGVzdIIjd3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCJnd3 +dy54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0giZ4bi0tbHZlLTZs +YWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIneG4tLWx2ZS02bGFkLnd3dzIu +bm90LXdlYi1wbGF0Zm9ybS50ZXN0gid4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2Vi +LXBsYXRmb3JtLnRlc3SCJ3d3dzEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZv +cm0udGVzdIInd3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0 +gil4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIreG4t +LWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIItd3d3Lnhu +LS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gi14bi0tbjhq +NmRzNTNsd3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3SCLXhuLS1uOGo2 +ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdIIud3d3Mi54bi0t +bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIud3d3MS54bi0t +bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIueG4tLW44ajZk +czUzbHd3a3JxaHYyOGEud3d3MS53ZWItcGxhdGZvcm0udGVzdIIueG4tLW44ajZk +czUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIveG4tLWx2ZS02 +bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMXd3dy54bi0t +bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMXhuLS1u +OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMnd3 +dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0 +gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0u +dGVzdIIyd3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRm +b3JtLnRlc3SCMnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIubm90LXdlYi1w +bGF0Zm9ybS50ZXN0gjZ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZs +YWQud2ViLXBsYXRmb3JtLnRlc3SCNnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNs +d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdII6eG4tLWx2ZS02bGFkLnhuLS1u +OGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdII6eG4tLW44 +ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u +dGVzdIJBeG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3Jx +aHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCRXhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh +LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdDAN +BgkqhkiG9w0BAQsFAAOCAQEApKeUP4UaaT1TxI3DMdNMRIAHRt3v5/CiPKWrntfW +gfBTXPvM+WcYl1n+x4dZ2UL2r4PFmUT1MSaotx4TC4Tu80NoHyFZYDpWtBrkjd35 +M8niW02Fq0j4vjWL3mJFjUQPfQq5GFw5jZXSuTT6FHfXG5YNT1nVTMVwKu0sX7y/ +2eNddJIr2LbEOLRgyYPr2PtmYPSe60rSiRXRWCgd9xYnRTnkt/6bjOy9qzWT9owj +JZAUou5L5q2hUxXbpi5eV5x907KHTkH7SumQVKBY61Mhz6ULxS08KWOeFWC6y4FX +HmUM54620yFqretTloDEw1XS0tgyGHgR4RqouL2vnFsmJg== +-----END CERTIFICATE----- diff --git a/tests/wpt/runner/certs/web-platform.test.key b/tests/wpt/runner/certs/web-platform.test.key new file mode 100644 index 000000000..661a9ba87 --- /dev/null +++ b/tests/wpt/runner/certs/web-platform.test.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDbQdpYdpYNdw21 +21aAjI/AbN8jRxLjD3KaahP7xCvMdu0gBSbVkr4OYUMckzf+xWPU6w3YZ8CUsIc/ +NQD6j3dC1Iz3x5+0HpFfqoWx22bkzeIM7/X98njsmlv47TBEmvMKD9rz3yHGMdi9 +MmzdQohQBnFoidCV/AWqeKEOlxPYhzdTghbv7FMhD4I7Hz3OOvfmsrwEWTcvP03/ +1V46J4h2oILYELglzS5dCQFEjAbd8SIJlT+YMjWMZXzHgxI+UNJFgcbNUEkR/3v5 +8YGrdVmneI5UjVs1ok8uo/ey9OaJSwWOCrWXasglMDkU9J8JWoce/Q8PIlOGdJCs ++bR92pEvAgMBAAECggEAZrwwhwrpvF1weynPGmTCZrOcynbfDq2KUXgq7Ok6bI+9 +BCflzmT30N0aCSWiMypiYL3SuvfCcOlWNfOsBbt7ckEN3HwZBNjd3SmVg4T+bW9a +4Bz/8oHOz250cesRltPT1X8gZOzEco2gtOYPxI0MOhMKyKTqq5xvOzVSofeAQRAb +7bpNucHS3TP6I50jpav1K1w+PIAbMkRyC/hgITp1sGvx/N/OVLRQ22Jd7jCn9umy +f4UYTpvgHChOm5JDFRqH4zRwntKxbcZhYs/WpUxtyKCW8us9IYVp1tebOtnlY918 +boX2Aq+4CohLgI0x67rt2kDG+actL9slrJI3jqVCAQKBgQD+sGV02GT8MidTFTU3 +mMTeL7SaBC1u1JQV4YyAIKY0Bk8S1Oux+wGIXVYl4VINgn63vtkEbKpSEjLIYIzM +E6KOmwguza1mvZ+vJSoglKnh0dC/I/USJLndAigYYiOSl/mGkK9IKMB1zrGmR03R +v0bZAX2I9Zbvynvccztt0MycwQKBgQDcYsSi/eOakVjEV9b0z9u3alna93s/4Y7O +NPCh3NwkGIlweOi1B/5BVCNbTLIz+9Q93UvBW7b7/JQvt9HWdjJf1EFXAz5PM5ip +pAyxtggIYdtu2zW/Gxc8e+chWrZQugoZWZK+oBH5BH4wjtI7SpHqj/RK48WwTjnR +Eo/sbv157wKBgFFZfH6O4+qeBmuGOaJRfIhPiosrTGu7ILXAfkUqqIuzfCxSsBoA +R6QL1AlzZ+cCyIDeR6kfIGPohin0lORWXTTZlgqFDZ7kcI3b/BG+CmkjwF5dGNk7 +u9Y46x+msSAQxNXTfvk4cwjuBVZMLjIRu4py7GsDrrtW3Ks0b0YLTF/BAoGAa/jH +tcMFe3iyMJ+IZLBhSN8F3s1YyNdNC6HMMsDt6ZFL5JqYB/k+i+sY12Yf+G/sb9K3 +hqfUYmhAgZBhcdy+mUx4JpUkNdFlfdctkPNJxDGNPCaRkmtHWw6pEiJLKAm9YOYN +iu8JXyLgYBHY1cuW6YBVg0tMUzBACzo44PEPpmkCgYEAhAroOZaSByBkVKtHKX8D +/j+MUbNyY3GZN81byLpJQ+whFLtNCfkC6YL7zchhnX1S5nX0kZTGzNP2rEI5y2+a +5sK5t3lXrY+aLRPI+gTXe3jxJBDfLp58HhZMGVlLBxx3tTqFzw0KyPPU6IGUgo68 +tgkF4hAUb2u0WO/Vvmc2xfo= +-----END PRIVATE KEY----- diff --git a/tests/wpt/runner/certs/web-platform.test.pem b/tests/wpt/runner/certs/web-platform.test.pem new file mode 100644 index 000000000..0e48d23e2 --- /dev/null +++ b/tests/wpt/runner/certs/web-platform.test.pem @@ -0,0 +1,133 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 905719 (0xdd1f7) + Signature Algorithm: sha256WithRSAEncryption + Issuer: CN=web-platform-tests + Validity + Not Before: Jun 2 02:45:17 2023 GMT + Not After : Jun 1 02:45:17 2024 GMT + Subject: CN=web-platform.test + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:db:41:da:58:76:96:0d:77:0d:b5:db:56:80:8c: + 8f:c0:6c:df:23:47:12:e3:0f:72:9a:6a:13:fb:c4: + 2b:cc:76:ed:20:05:26:d5:92:be:0e:61:43:1c:93: + 37:fe:c5:63:d4:eb:0d:d8:67:c0:94:b0:87:3f:35: + 00:fa:8f:77:42:d4:8c:f7:c7:9f:b4:1e:91:5f:aa: + 85:b1:db:66:e4:cd:e2:0c:ef:f5:fd:f2:78:ec:9a: + 5b:f8:ed:30:44:9a:f3:0a:0f:da:f3:df:21:c6:31: + d8:bd:32:6c:dd:42:88:50:06:71:68:89:d0:95:fc: + 05:aa:78:a1:0e:97:13:d8:87:37:53:82:16:ef:ec: + 53:21:0f:82:3b:1f:3d:ce:3a:f7:e6:b2:bc:04:59: + 37:2f:3f:4d:ff:d5:5e:3a:27:88:76:a0:82:d8:10: + b8:25:cd:2e:5d:09:01:44:8c:06:dd:f1:22:09:95: + 3f:98:32:35:8c:65:7c:c7:83:12:3e:50:d2:45:81: + c6:cd:50:49:11:ff:7b:f9:f1:81:ab:75:59:a7:78: + 8e:54:8d:5b:35:a2:4f:2e:a3:f7:b2:f4:e6:89:4b: + 05:8e:0a:b5:97:6a:c8:25:30:39:14:f4:9f:09:5a: + 87:1e:fd:0f:0f:22:53:86:74:90:ac:f9:b4:7d:da: + 91:2f + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Subject Key Identifier: + AF:6B:74:D4:D8:85:48:A2:50:B9:E3:9C:2D:1A:91:A9:94:75:60:A5 + X509v3 Authority Key Identifier: + keyid:66:D9:96:67:2C:0F:BA:46:72:93:D2:AE:35:E7:B4:40:AA:88:E3:4A + + X509v3 Key Usage: + Digital Signature, Non Repudiation, Key Encipherment + X509v3 Extended Key Usage: + TLS Web Server Authentication + X509v3 Subject Alternative Name: + DNS:web-platform.test, DNS:not-web-platform.test, DNS:www.web-platform.test, DNS:www1.web-platform.test, DNS:www2.web-platform.test, DNS:www.not-web-platform.test, DNS:www.www.web-platform.test, DNS:www2.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:www.www1.web-platform.test, DNS:www1.www.web-platform.test, DNS:www2.www.web-platform.test, DNS:www.www2.web-platform.test, DNS:www2.www1.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www1.www2.web-platform.test, DNS:www.www.not-web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www.www1.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www1.www.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test + Signature Algorithm: sha256WithRSAEncryption + 20:b8:e5:97:9b:08:4c:bf:34:a6:4c:4b:7c:97:b6:93:5d:29: + 1a:f0:65:66:19:8b:77:5e:7b:e5:33:96:68:31:2e:40:5d:47: + 47:56:ba:75:18:3a:e8:8a:12:8b:2f:a7:30:f0:91:82:6c:88: + c3:31:7d:07:aa:9b:78:98:4c:c7:fd:e9:28:89:c0:57:2c:ed: + 28:2a:79:b7:6d:bf:7a:6f:15:e4:ae:4e:1c:56:1e:27:78:5a: + a5:7f:78:b6:e8:d8:38:79:cc:32:53:9c:0e:8f:fe:a2:c2:82: + 27:b1:d3:f9:ee:10:9b:5a:42:26:3d:ee:05:b3:15:9f:40:ce: + 8d:6a:4f:97:3b:20:37:6e:ff:65:ca:18:85:d3:77:0e:4e:fe: + b0:71:61:91:22:28:9e:d5:17:13:8b:85:1a:8b:9b:17:ff:bd: + b5:fd:81:c5:2d:de:40:cd:47:c3:a5:9e:eb:70:b3:e2:57:8a: + 46:02:22:41:a5:5f:71:30:3e:65:30:46:70:4d:67:49:3a:11: + f0:03:5c:6b:a5:ae:ca:73:b0:35:91:89:63:9a:65:c9:65:ff: + 43:59:5b:af:b6:b9:2e:35:d6:47:26:d1:d4:7b:22:c1:79:28: + cb:8c:a3:d2:d3:1d:b6:dc:39:de:f1:ba:b0:10:91:bd:16:e9: + 53:cd:77:e4 +-----BEGIN CERTIFICATE----- +MIIMsjCCC5qgAwIBAgIDDdH3MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl +Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMzA2MDIwMjQ1MTdaFw0yNDA2MDEwMjQ1MTda +MBwxGjAYBgNVBAMMEXdlYi1wbGF0Zm9ybS50ZXN0MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA20HaWHaWDXcNtdtWgIyPwGzfI0cS4w9ymmoT+8QrzHbt +IAUm1ZK+DmFDHJM3/sVj1OsN2GfAlLCHPzUA+o93QtSM98eftB6RX6qFsdtm5M3i +DO/1/fJ47Jpb+O0wRJrzCg/a898hxjHYvTJs3UKIUAZxaInQlfwFqnihDpcT2Ic3 +U4IW7+xTIQ+COx89zjr35rK8BFk3Lz9N/9VeOieIdqCC2BC4Jc0uXQkBRIwG3fEi +CZU/mDI1jGV8x4MSPlDSRYHGzVBJEf97+fGBq3VZp3iOVI1bNaJPLqP3svTmiUsF +jgq1l2rIJTA5FPSfCVqHHv0PDyJThnSQrPm0fdqRLwIDAQABo4IJ+jCCCfYwCQYD +VR0TBAIwADAdBgNVHQ4EFgQUr2t01NiFSKJQueOcLRqRqZR1YKUwHwYDVR0jBBgw +FoAUZtmWZywPukZyk9KuNee0QKqI40owCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG +CCsGAQUFBwMBMIIJhQYDVR0RBIIJfDCCCXiCEXdlYi1wbGF0Zm9ybS50ZXN0ghVu +b3Qtd2ViLXBsYXRmb3JtLnRlc3SCFXd3dy53ZWItcGxhdGZvcm0udGVzdIIWd3d3 +MS53ZWItcGxhdGZvcm0udGVzdIIWd3d3Mi53ZWItcGxhdGZvcm0udGVzdIIZd3d3 +Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZd3d3Lnd3dy53ZWItcGxhdGZvcm0udGVz +dIIad3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEubm90LXdlYi1wbGF0 +Zm9ybS50ZXN0ghp3d3cud3d3MS53ZWItcGxhdGZvcm0udGVzdIIad3d3MS53d3cu +d2ViLXBsYXRmb3JtLnRlc3SCGnd3dzIud3d3LndlYi1wbGF0Zm9ybS50ZXN0ghp3 +d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIbd3d3Mi53d3cxLndlYi1wbGF0Zm9y +bS50ZXN0ght3d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCG3d3dzEud3d3MS53 +ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0gh13 +d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIed3d3Lnd3dzIubm90LXdlYi1w +bGF0Zm9ybS50ZXN0gh53d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCHnhu +LS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIIed3d3MS53d3cubm90LXdlYi1w +bGF0Zm9ybS50ZXN0gh53d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3 +dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3Mi5ub3Qtd2Vi +LXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +H3d3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCInd3dy54bi0tbHZlLTZs +YWQud2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRm +b3JtLnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCI3hu +LS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0giN4bi0tbHZlLTZsYWQu +d3d3MS53ZWItcGxhdGZvcm0udGVzdIIjd3d3Mi54bi0tbHZlLTZsYWQud2ViLXBs +YXRmb3JtLnRlc3SCI3d3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0 +giZ3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdIImeG4tLWx2 +ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53 +d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIneG4tLWx2ZS02bGFkLnd3dzEubm90 +LXdlYi1wbGF0Zm9ybS50ZXN0gid3d3cxLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCJ3d3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u +dGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SC +K3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCLXd3 +dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIteG4t +LW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0gi14bi0t +bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCLnd3dzIu +eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzEu +eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u +OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u +OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCL3huLS1s +dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF3d3cu +eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF4 +bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0 +gjJ3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0u +dGVzdIIyeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm +b3JtLnRlc3SCMnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w +bGF0Zm9ybS50ZXN0gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13 +ZWItcGxhdGZvcm0udGVzdII2eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2 +ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gjZ4bi0tbHZlLTZsYWQueG4tLW44ajZk +czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1sdmUtNmxhZC54 +bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCOnhu +LS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRm +b3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3 +d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gkV4bi0tbjhqNmRzNTNsd3drcnFo +djI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl +c3QwDQYJKoZIhvcNAQELBQADggEBACC45ZebCEy/NKZMS3yXtpNdKRrwZWYZi3de +e+UzlmgxLkBdR0dWunUYOuiKEosvpzDwkYJsiMMxfQeqm3iYTMf96SiJwFcs7Sgq +ebdtv3pvFeSuThxWHid4WqV/eLbo2Dh5zDJTnA6P/qLCgiex0/nuEJtaQiY97gWz +FZ9Azo1qT5c7IDdu/2XKGIXTdw5O/rBxYZEiKJ7VFxOLhRqLmxf/vbX9gcUt3kDN +R8Olnutws+JXikYCIkGlX3EwPmUwRnBNZ0k6EfADXGulrspzsDWRiWOaZcll/0NZ +W6+2uS411kcm0dR7IsF5KMuMo9LTHbbcOd7xurAQkb0W6VPNd+Q= +-----END CERTIFICATE----- diff --git a/tests/wpt/runner/config.json b/tests/wpt/runner/config.json new file mode 100644 index 000000000..92472371f --- /dev/null +++ b/tests/wpt/runner/config.json @@ -0,0 +1,11 @@ +{ + "check_subdomains": false, + "ssl": { + "type": "pregenerated", + "pregenerated": { + "ca_cert_path": "../../../tests/wpt/runner/certs/cacert.pem", + "host_cert_path": "../../../tests/wpt/runner/certs/web-platform.test.pem", + "host_key_path": "../../../tests/wpt/runner/certs/web-platform.test.key" + } + } +} diff --git a/tests/wpt/runner/expectation.json b/tests/wpt/runner/expectation.json new file mode 100644 index 000000000..29eeea08c --- /dev/null +++ b/tests/wpt/runner/expectation.json @@ -0,0 +1,10998 @@ +{ + "WebCryptoAPI": { + "getRandomValues.any.html": true, + "getRandomValues.any.worker.html": true, + "derive_bits_keys": { + "ecdh_bits.https.any.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 with null length", + "P-521 short result", + "P-521 non-multiple of 8 bits", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveBits usage for base key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key", + "P-521 asking for too many bits" + ], + "ecdh_bits.https.any.worker.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 with null length", + "P-521 short result", + "P-521 non-multiple of 8 bits", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveBits usage for base key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key", + "P-521 asking for too many bits" + ], + "ecdh_keys.https.any.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveKey usage for base key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key" + ], + "ecdh_keys.https.any.worker.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveKey usage for base key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key" + ], + "hkdf.https.any.html?1-1000": true, + "hkdf.https.any.html?1001-2000": true, + "hkdf.https.any.html?2001-3000": true, + "hkdf.https.any.html?3001-last": true, + "hkdf.https.any.worker.html?1-1000": true, + "hkdf.https.any.worker.html?1001-2000": true, + "hkdf.https.any.worker.html?2001-3000": true, + "hkdf.https.any.worker.html?3001-last": true, + "pbkdf2.https.any.html?1-1000": true, + "pbkdf2.https.any.html?1001-2000": true, + "pbkdf2.https.any.html?2001-3000": true, + "pbkdf2.https.any.html?3001-4000": true, + "pbkdf2.https.any.html?4001-5000": true, + "pbkdf2.https.any.html?5001-6000": true, + "pbkdf2.https.any.html?6001-7000": true, + "pbkdf2.https.any.html?7001-8000": true, + "pbkdf2.https.any.html?8001-last": true, + "pbkdf2.https.any.worker.html?1-1000": true, + "pbkdf2.https.any.worker.html?1001-2000": true, + "pbkdf2.https.any.worker.html?2001-3000": true, + "pbkdf2.https.any.worker.html?3001-4000": true, + "pbkdf2.https.any.worker.html?4001-5000": true, + "pbkdf2.https.any.worker.html?5001-6000": true, + "pbkdf2.https.any.worker.html?6001-7000": true, + "pbkdf2.https.any.worker.html?7001-8000": true, + "pbkdf2.https.any.worker.html?8001-last": true, + "cfrg_curves_bits.https.any.html": [ + "X25519 key derivation checks for all-zero value result with a key of order 0", + "X25519 key derivation checks for all-zero value result with a key of order 1", + "X25519 key derivation checks for all-zero value result with a key of order 8", + "X25519 key derivation checks for all-zero value result with a key of order p-1 (order 2)", + "X25519 key derivation checks for all-zero value result with a key of order p (=0, order 4)", + "X25519 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)", + "X448 key derivation checks for all-zero value result with a key of order 0", + "X448 key derivation checks for all-zero value result with a key of order 1", + "X448 key derivation checks for all-zero value result with a key of order p-1 (order 2)", + "X448 key derivation checks for all-zero value result with a key of order p (=0, order 4)", + "X448 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)", + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 with null length", + "X25519 short result", + "X25519 non-multiple of 8 bits", + "X25519 mismatched algorithms", + "X25519 no deriveBits usage for base key", + "X448 good parameters", + "X448 mixed case parameters", + "X448 with null length", + "X448 short result", + "X448 non-multiple of 8 bits", + "X448 mismatched algorithms", + "X448 no deriveBits usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key", + "X448 asking for too many bits" + ], + "cfrg_curves_bits.https.any.worker.html": [ + "X25519 key derivation checks for all-zero value result with a key of order 0", + "X25519 key derivation checks for all-zero value result with a key of order 1", + "X25519 key derivation checks for all-zero value result with a key of order 8", + "X25519 key derivation checks for all-zero value result with a key of order p-1 (order 2)", + "X25519 key derivation checks for all-zero value result with a key of order p (=0, order 4)", + "X25519 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)", + "X448 key derivation checks for all-zero value result with a key of order 0", + "X448 key derivation checks for all-zero value result with a key of order 1", + "X448 key derivation checks for all-zero value result with a key of order p-1 (order 2)", + "X448 key derivation checks for all-zero value result with a key of order p (=0, order 4)", + "X448 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)", + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 with null length", + "X25519 short result", + "X25519 non-multiple of 8 bits", + "X25519 mismatched algorithms", + "X25519 no deriveBits usage for base key", + "X448 good parameters", + "X448 mixed case parameters", + "X448 with null length", + "X448 short result", + "X448 non-multiple of 8 bits", + "X448 mismatched algorithms", + "X448 no deriveBits usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key", + "X448 asking for too many bits" + ], + "cfrg_curves_keys.https.any.html": [ + "X25519 deriveBits checks for all-zero value result with a key of order 0", + "X25519 deriveBits checks for all-zero value result with a key of order 1", + "X25519 deriveBits checks for all-zero value result with a key of order 8", + "X25519 deriveBits checks for all-zero value result with a key of order p-1 (order 2)", + "X25519 deriveBits checks for all-zero value result with a key of order p (=0, order 4)", + "X25519 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)", + "X448 deriveBits checks for all-zero value result with a key of order 0", + "X448 deriveBits checks for all-zero value result with a key of order 1", + "X448 deriveBits checks for all-zero value result with a key of order p-1 (order 2)", + "X448 deriveBits checks for all-zero value result with a key of order p (=0, order 4)", + "X448 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)", + "Key derivation using a X25519 generated keys.", + "Key derivation using a X448 generated keys.", + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 mismatched algorithms", + "X448 good parameters", + "X448 mixed case parameters", + "X448 mismatched algorithms", + "X448 no deriveKey usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key" + ], + "cfrg_curves_keys.https.any.worker.html": [ + "X25519 deriveBits checks for all-zero value result with a key of order 0", + "X25519 deriveBits checks for all-zero value result with a key of order 1", + "X25519 deriveBits checks for all-zero value result with a key of order 8", + "X25519 deriveBits checks for all-zero value result with a key of order p-1 (order 2)", + "X25519 deriveBits checks for all-zero value result with a key of order p (=0, order 4)", + "X25519 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)", + "X448 deriveBits checks for all-zero value result with a key of order 0", + "X448 deriveBits checks for all-zero value result with a key of order 1", + "X448 deriveBits checks for all-zero value result with a key of order p-1 (order 2)", + "X448 deriveBits checks for all-zero value result with a key of order p (=0, order 4)", + "X448 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)", + "Key derivation using a X25519 generated keys.", + "Key derivation using a X448 generated keys.", + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 mismatched algorithms", + "X448 good parameters", + "X448 mixed case parameters", + "X448 mismatched algorithms", + "X448 no deriveKey usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key" + ] + }, + "digest": { + "digest.https.any.html": true, + "digest.https.any.worker.html": true + }, + "encrypt_decrypt": { + "aes_cbc.https.any.html": true, + "aes_cbc.https.any.worker.html": true, + "aes_ctr.https.any.html": true, + "aes_ctr.https.any.worker.html": true, + "aes_gcm.https.any.html": [ + "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext" + ], + "aes_gcm.https.any.worker.html": [ + "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption", + "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext" + ], + "rsa_oaep.https.any.html": true, + "rsa_oaep.https.any.worker.html": true, + "aes_gcm_256_iv.https.any.html": [ + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext" + ], + "aes_gcm_256_iv.https.any.worker.html": [ + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv", + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext", + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption", + "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext", + "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext" + ] + }, + "generateKey": { + "failures_AES-CBC.https.any.html": true, + "failures_AES-CBC.https.any.worker.html": true, + "failures_AES-CTR.https.any.html": true, + "failures_AES-CTR.https.any.worker.html": true, + "failures_AES-GCM.https.any.html": true, + "failures_AES-GCM.https.any.worker.html": true, + "failures_AES-KW.https.any.html": true, + "failures_AES-KW.https.any.worker.html": true, + "failures_ECDH.https.any.html": true, + "failures_ECDH.https.any.worker.html": true, + "failures_ECDSA.https.any.html": true, + "failures_ECDSA.https.any.worker.html": true, + "failures_HMAC.https.any.html": true, + "failures_HMAC.https.any.worker.html": true, + "failures_RSA-OAEP.https.any.html": true, + "failures_RSA-OAEP.https.any.worker.html": true, + "failures_RSA-PSS.https.any.html": true, + "failures_RSA-PSS.https.any.worker.html": true, + "failures_RSASSA-PKCS1-v1_5.https.any.html": true, + "failures_RSASSA-PKCS1-v1_5.https.any.worker.html": true, + "successes_AES-CBC.https.any.html": true, + "successes_AES-CBC.https.any.worker.html": true, + "successes_AES-CTR.https.any.html": true, + "successes_AES-CTR.https.any.worker.html": true, + "successes_AES-GCM.https.any.html": true, + "successes_AES-GCM.https.any.worker.html": true, + "successes_AES-KW.https.any.html": true, + "successes_AES-KW.https.any.worker.html": true, + "successes_HMAC.https.any.html": true, + "successes_HMAC.https.any.worker.html": true, + "successes_ECDH.https.any.html": true, + "successes_ECDH.https.any.worker.html": true, + "successes_ECDSA.https.any.html": true, + "successes_ECDSA.https.any.worker.html": true, + "successes_RSA-OAEP.https.any.html?1-10": true, + "successes_RSA-OAEP.https.any.html?101-110": true, + "successes_RSA-OAEP.https.any.html?11-20": true, + "successes_RSA-OAEP.https.any.html?111-120": true, + "successes_RSA-OAEP.https.any.html?121-130": true, + "successes_RSA-OAEP.https.any.html?131-140": true, + "successes_RSA-OAEP.https.any.html?141-150": true, + "successes_RSA-OAEP.https.any.html?151-last": true, + "successes_RSA-OAEP.https.any.html?21-30": true, + "successes_RSA-OAEP.https.any.html?31-40": true, + "successes_RSA-OAEP.https.any.html?41-50": true, + "successes_RSA-OAEP.https.any.html?51-60": true, + "successes_RSA-OAEP.https.any.html?61-70": true, + "successes_RSA-OAEP.https.any.html?71-80": true, + "successes_RSA-OAEP.https.any.html?81-90": true, + "successes_RSA-OAEP.https.any.html?91-100": true, + "successes_RSA-OAEP.https.any.worker.html?1-10": true, + "successes_RSA-OAEP.https.any.worker.html?101-110": true, + "successes_RSA-OAEP.https.any.worker.html?11-20": true, + "successes_RSA-OAEP.https.any.worker.html?111-120": true, + "successes_RSA-OAEP.https.any.worker.html?121-130": true, + "successes_RSA-OAEP.https.any.worker.html?131-140": true, + "successes_RSA-OAEP.https.any.worker.html?141-150": true, + "successes_RSA-OAEP.https.any.worker.html?151-last": true, + "successes_RSA-OAEP.https.any.worker.html?21-30": true, + "successes_RSA-OAEP.https.any.worker.html?31-40": true, + "successes_RSA-OAEP.https.any.worker.html?41-50": true, + "successes_RSA-OAEP.https.any.worker.html?51-60": true, + "successes_RSA-OAEP.https.any.worker.html?61-70": true, + "successes_RSA-OAEP.https.any.worker.html?71-80": true, + "successes_RSA-OAEP.https.any.worker.html?81-90": true, + "successes_RSA-OAEP.https.any.worker.html?91-100": true, + "successes_RSA-PSS.https.any.html?1-10": true, + "successes_RSA-PSS.https.any.html?11-20": true, + "successes_RSA-PSS.https.any.html?21-30": true, + "successes_RSA-PSS.https.any.html?31-last": true, + "successes_RSA-PSS.https.any.worker.html?1-10": true, + "successes_RSA-PSS.https.any.worker.html?11-20": true, + "successes_RSA-PSS.https.any.worker.html?21-30": true, + "successes_RSA-PSS.https.any.worker.html?31-last": true, + "successes_RSASSA-PKCS1-v1_5.https.any.html?1-10": true, + "successes_RSASSA-PKCS1-v1_5.https.any.html?11-20": true, + "successes_RSASSA-PKCS1-v1_5.https.any.html?21-30": true, + "successes_RSASSA-PKCS1-v1_5.https.any.html?31-last": true, + "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?1-10": true, + "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?11-20": true, + "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?21-30": true, + "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?31-last": true, + "failures_Ed25519.https.any.html": true, + "failures_Ed25519.https.any.worker.html": true, + "failures_Ed448.https.any.html": [ + "Bad usages: generateKey({name: Ed448}, true, [encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [deriveBits])", + "Bad usages: generateKey({name: Ed448}, true, [sign, deriveBits])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveBits])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveBits])", + "Empty usages: generateKey({name: Ed448}, false, [])", + "Empty usages: generateKey({name: Ed448}, true, [])" + ], + "failures_Ed448.https.any.worker.html": [ + "Bad usages: generateKey({name: Ed448}, true, [encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, encrypt])", + "Bad usages: generateKey({name: Ed448}, true, [decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, decrypt])", + "Bad usages: generateKey({name: Ed448}, true, [wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, wrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, unwrapKey])", + "Bad usages: generateKey({name: Ed448}, true, [deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveKey])", + "Bad usages: generateKey({name: Ed448}, true, [deriveBits])", + "Bad usages: generateKey({name: Ed448}, true, [sign, deriveBits])", + "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveBits])", + "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveBits])", + "Empty usages: generateKey({name: Ed448}, false, [])", + "Empty usages: generateKey({name: Ed448}, true, [])" + ], + "failures_X25519.https.any.html": true, + "failures_X25519.https.any.worker.html": true, + "failures_X448.https.any.html": [ + "Bad usages: generateKey({name: X448}, true, [encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt])", + "Bad usages: generateKey({name: X448}, true, [decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt])", + "Bad usages: generateKey({name: X448}, true, [sign])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, sign])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, sign])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, sign])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign])", + "Bad usages: generateKey({name: X448}, true, [verify])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, verify])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, verify])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, verify])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify])", + "Bad usages: generateKey({name: X448}, true, [wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])", + "Empty usages: generateKey({name: X448}, false, [])", + "Empty usages: generateKey({name: X448}, true, [])" + ], + "failures_X448.https.any.worker.html": [ + "Bad usages: generateKey({name: X448}, true, [encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, encrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt])", + "Bad usages: generateKey({name: X448}, true, [decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, decrypt])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt])", + "Bad usages: generateKey({name: X448}, true, [sign])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, sign])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, sign])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, sign])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign])", + "Bad usages: generateKey({name: X448}, true, [verify])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, verify])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, verify])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, verify])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify])", + "Bad usages: generateKey({name: X448}, true, [wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])", + "Bad usages: generateKey({name: X448}, true, [unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveBits, unwrapKey])", + "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])", + "Empty usages: generateKey({name: X448}, false, [])", + "Empty usages: generateKey({name: X448}, true, [])" + ], + "successes_Ed25519.https.any.html": true, + "successes_Ed25519.https.any.worker.html": true, + "successes_Ed448.https.any.html": false, + "successes_Ed448.https.any.worker.html": false, + "successes_X25519.https.any.html": true, + "successes_X25519.https.any.worker.html": true, + "successes_X448.https.any.html": false, + "successes_X448.https.any.worker.html": false + }, + "historical.any.html": false, + "historical.any.worker.html": false, + "idlharness.https.any.html": [ + "Window interface: attribute crypto" + ], + "idlharness.https.any.worker.html": [ + "WorkerGlobalScope interface: attribute crypto" + ], + "import_export": { + "ec_importKey.https.any.html": [ + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDH, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDH, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])" + ], + "ec_importKey.https.any.worker.html": [ + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [])", + "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [])", + "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDH, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDH, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [])", + "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [])", + "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [])", + "Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits])", + "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits])", + "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits])", + "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])" + ], + "rsa_importKey.https.any.html": [ + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])" + ], + "rsa_importKey.https.any.worker.html": [ + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])", + "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])", + "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])" + ], + "symmetric_importKey.https.any.html": [ + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])" + ], + "symmetric_importKey.https.any.worker.html": [ + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])", + "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])", + "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])", + "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])", + "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])", + "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])", + "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])" + ], + "okp_importKey.https.any.html": [ + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify, verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify, verify])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign, sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [verify, verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify, verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify, verify])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign, sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign, sign])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (spki, buffer(68), {name: X448}, true, [])", + "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, true, [])", + "Good parameters with ignored JWK alg: X448 (jwk, object(kty, crv, x), {name: X448}, true, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, true, [])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (spki, buffer(68), {name: X448}, false, [])", + "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, false, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, false, [])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits, deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits, deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])" + ], + "okp_importKey.https.any.worker.html": [ + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify, verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify, verify])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign, sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])", + "Good parameters with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [verify, verify])", + "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify, verify])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify, verify])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign])", + "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign, sign])", + "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign, sign])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])", + "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (spki, buffer(68), {name: X448}, true, [])", + "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, true, [])", + "Good parameters with ignored JWK alg: X448 (jwk, object(kty, crv, x), {name: X448}, true, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, true, [])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (spki, buffer(68), {name: X448}, false, [])", + "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, false, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, false, [])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits, deriveKey])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits, deriveKey])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits])", + "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])" + ], + "okp_importKey_failures_Ed25519.https.any.html": [ + "Empty usages: importKey(pkcs8, {name: Ed25519}, true, [])", + "Empty usages: importKey(pkcs8, {name: Ed25519}, false, [])", + "Empty usages: importKey(jwk(private), {name: Ed25519}, true, [])", + "Empty usages: importKey(jwk(private), {name: Ed25519}, false, [])", + "Bad key length: importKey(raw, {name: Ed25519}, true, [verify])", + "Bad key length: importKey(raw, {name: Ed25519}, false, [verify])", + "Bad key length: importKey(raw, {name: Ed25519}, true, [verify, verify])", + "Bad key length: importKey(raw, {name: Ed25519}, false, [verify, verify])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])", + "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign])", + "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])" + ], + "okp_importKey_failures_Ed25519.https.any.worker.html": [ + "Empty usages: importKey(pkcs8, {name: Ed25519}, true, [])", + "Empty usages: importKey(pkcs8, {name: Ed25519}, false, [])", + "Empty usages: importKey(jwk(private), {name: Ed25519}, true, [])", + "Empty usages: importKey(jwk(private), {name: Ed25519}, false, [])", + "Bad key length: importKey(raw, {name: Ed25519}, true, [verify])", + "Bad key length: importKey(raw, {name: Ed25519}, false, [verify])", + "Bad key length: importKey(raw, {name: Ed25519}, true, [verify, verify])", + "Bad key length: importKey(raw, {name: Ed25519}, false, [verify, verify])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])", + "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign])", + "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])" + ], + "okp_importKey_failures_Ed448.https.any.html": false, + "okp_importKey_failures_Ed448.https.any.worker.html": false, + "okp_importKey_failures_X25519.https.any.html": [ + "Empty usages: importKey(pkcs8, {name: X25519}, true, [])", + "Empty usages: importKey(pkcs8, {name: X25519}, false, [])", + "Empty usages: importKey(jwk(private), {name: X25519}, true, [])", + "Empty usages: importKey(jwk(private), {name: X25519}, false, [])", + "Bad key length: importKey(raw, {name: X25519}, true, [])", + "Bad key length: importKey(raw, {name: X25519}, false, [])", + "Bad key length: importKey(jwk (public) , {name: X25519}, true, [])", + "Bad key length: importKey(jwk (public) , {name: X25519}, false, [])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])" + ], + "okp_importKey_failures_X25519.https.any.worker.html": [ + "Empty usages: importKey(pkcs8, {name: X25519}, true, [])", + "Empty usages: importKey(pkcs8, {name: X25519}, false, [])", + "Empty usages: importKey(jwk(private), {name: X25519}, true, [])", + "Empty usages: importKey(jwk(private), {name: X25519}, false, [])", + "Bad key length: importKey(raw, {name: X25519}, true, [])", + "Bad key length: importKey(raw, {name: X25519}, false, [])", + "Bad key length: importKey(jwk (public) , {name: X25519}, true, [])", + "Bad key length: importKey(jwk (public) , {name: X25519}, false, [])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits])", + "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits])", + "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])" + ], + "okp_importKey_failures_X448.https.any.html": false, + "okp_importKey_failures_X448.https.any.worker.html": false + }, + "randomUUID.https.any.html": true, + "randomUUID.https.any.worker.html": true, + "sign_verify": { + "ecdsa.https.any.html": [ + "ECDSA P-256 with SHA-1 verification", + "ECDSA P-256 with SHA-384 verification", + "ECDSA P-256 with SHA-512 verification", + "ECDSA P-384 with SHA-1 verification", + "ECDSA P-384 with SHA-256 verification", + "ECDSA P-384 with SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification", + "ECDSA P-256 with SHA-1 verification with altered signature after call", + "ECDSA P-256 with SHA-384 verification with altered signature after call", + "ECDSA P-256 with SHA-512 verification with altered signature after call", + "ECDSA P-384 with SHA-1 verification with altered signature after call", + "ECDSA P-384 with SHA-256 verification with altered signature after call", + "ECDSA P-384 with SHA-512 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification with altered signature after call", + "ECDSA P-256 with SHA-1 with altered plaintext after call", + "ECDSA P-256 with SHA-384 with altered plaintext after call", + "ECDSA P-256 with SHA-512 with altered plaintext after call", + "ECDSA P-384 with SHA-1 with altered plaintext after call", + "ECDSA P-384 with SHA-256 with altered plaintext after call", + "ECDSA P-384 with SHA-512 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-1 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-256 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-384 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-512 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-1 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-256 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-384 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-512 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-1 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-256 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-384 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-512 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-1 no verify usage", + "importVectorKeys step: ECDSA P-521 with SHA-256 no verify usage", + "importVectorKeys step: ECDSA P-521 with SHA-384 no verify usage", + "importVectorKeys step: ECDSA P-521 with SHA-512 no verify usage", + "ECDSA P-256 with SHA-1 round trip", + "ECDSA P-256 with SHA-384 round trip", + "ECDSA P-256 with SHA-512 round trip", + "ECDSA P-384 with SHA-1 round trip", + "ECDSA P-384 with SHA-256 round trip", + "ECDSA P-384 with SHA-512 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-1 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-256 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-384 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-512 round trip", + "ECDSA P-256 with SHA-1 verification failure due to altered signature", + "ECDSA P-256 with SHA-384 verification failure due to altered signature", + "ECDSA P-256 with SHA-512 verification failure due to altered signature", + "ECDSA P-384 with SHA-1 verification failure due to altered signature", + "ECDSA P-384 with SHA-256 verification failure due to altered signature", + "ECDSA P-384 with SHA-512 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered signature", + "ECDSA P-256 with SHA-256 verification failure due to wrong hash", + "ECDSA P-256 with SHA-384 verification failure due to wrong hash", + "ECDSA P-256 with SHA-512 verification failure due to wrong hash", + "ECDSA P-384 with SHA-1 verification failure due to wrong hash", + "ECDSA P-384 with SHA-256 verification failure due to wrong hash", + "ECDSA P-384 with SHA-384 verification failure due to wrong hash", + "ECDSA P-384 with SHA-512 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to bad hash name", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to bad hash name", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to bad hash name", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to bad hash name", + "ECDSA P-256 with SHA-1 verification failure due to shortened signature", + "ECDSA P-256 with SHA-384 verification failure due to shortened signature", + "ECDSA P-256 with SHA-512 verification failure due to shortened signature", + "ECDSA P-384 with SHA-1 verification failure due to shortened signature", + "ECDSA P-384 with SHA-256 verification failure due to shortened signature", + "ECDSA P-384 with SHA-512 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to shortened signature", + "ECDSA P-256 with SHA-1 verification failure due to altered plaintext", + "ECDSA P-256 with SHA-384 verification failure due to altered plaintext", + "ECDSA P-256 with SHA-512 verification failure due to altered plaintext", + "ECDSA P-384 with SHA-1 verification failure due to altered plaintext", + "ECDSA P-384 with SHA-256 verification failure due to altered plaintext", + "ECDSA P-384 with SHA-512 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered plaintext", + "ECDSA P-256 with SHA-1 - The signature was truncated by 1 byte verification", + "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification", + "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification", + "ECDSA P-256 with SHA-1 - Signature has excess padding verification", + "ECDSA P-256 with SHA-1 - The signature is empty verification", + "ECDSA P-256 with SHA-1 - The signature is all zeroes verification", + "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification", + "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification", + "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification", + "ECDSA P-256 with SHA-384 - The signature was truncated by 1 byte verification", + "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification", + "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification", + "ECDSA P-256 with SHA-384 - Signature has excess padding verification", + "ECDSA P-256 with SHA-384 - The signature is empty verification", + "ECDSA P-256 with SHA-384 - The signature is all zeroes verification", + "ECDSA P-256 with SHA-512 - The signature was truncated by 1 byte verification", + "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification", + "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification", + "ECDSA P-256 with SHA-512 - Signature has excess padding verification", + "ECDSA P-256 with SHA-512 - The signature is empty verification", + "ECDSA P-256 with SHA-512 - The signature is all zeroes verification", + "ECDSA P-384 with SHA-1 - The signature was truncated by 1 byte verification", + "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification", + "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification", + "ECDSA P-384 with SHA-1 - Signature has excess padding verification", + "ECDSA P-384 with SHA-1 - The signature is empty verification", + "ECDSA P-384 with SHA-1 - The signature is all zeroes verification", + "ECDSA P-384 with SHA-256 - The signature was truncated by 1 byte verification", + "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification", + "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification", + "ECDSA P-384 with SHA-256 - Signature has excess padding verification", + "ECDSA P-384 with SHA-256 - The signature is empty verification", + "ECDSA P-384 with SHA-256 - The signature is all zeroes verification", + "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification", + "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification", + "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification", + "ECDSA P-384 with SHA-512 - The signature was truncated by 1 byte verification", + "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification", + "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification", + "ECDSA P-384 with SHA-512 - Signature has excess padding verification", + "ECDSA P-384 with SHA-512 - The signature is empty verification", + "ECDSA P-384 with SHA-512 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-256 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-384 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-512 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-1 verifying with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-256 verifying with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-384 verifying with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-512 verifying with wrong algorithm name" + ], + "ecdsa.https.any.worker.html": [ + "ECDSA P-256 with SHA-1 verification", + "ECDSA P-256 with SHA-384 verification", + "ECDSA P-256 with SHA-512 verification", + "ECDSA P-384 with SHA-1 verification", + "ECDSA P-384 with SHA-256 verification", + "ECDSA P-384 with SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification", + "ECDSA P-256 with SHA-1 verification with altered signature after call", + "ECDSA P-256 with SHA-384 verification with altered signature after call", + "ECDSA P-256 with SHA-512 verification with altered signature after call", + "ECDSA P-384 with SHA-1 verification with altered signature after call", + "ECDSA P-384 with SHA-256 verification with altered signature after call", + "ECDSA P-384 with SHA-512 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification with altered signature after call", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification with altered signature after call", + "ECDSA P-256 with SHA-1 with altered plaintext after call", + "ECDSA P-256 with SHA-384 with altered plaintext after call", + "ECDSA P-256 with SHA-512 with altered plaintext after call", + "ECDSA P-384 with SHA-1 with altered plaintext after call", + "ECDSA P-384 with SHA-256 with altered plaintext after call", + "ECDSA P-384 with SHA-512 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-1 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-256 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-384 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-512 with altered plaintext after call", + "importVectorKeys step: ECDSA P-521 with SHA-1 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-256 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-384 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-512 using privateKey to verify", + "importVectorKeys step: ECDSA P-521 with SHA-1 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-256 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-384 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-512 using publicKey to sign", + "importVectorKeys step: ECDSA P-521 with SHA-1 no verify usage", + "importVectorKeys step: ECDSA P-521 with SHA-256 no verify usage", + "importVectorKeys step: ECDSA P-521 with SHA-384 no verify usage", + "importVectorKeys step: ECDSA P-521 with SHA-512 no verify usage", + "ECDSA P-256 with SHA-1 round trip", + "ECDSA P-256 with SHA-384 round trip", + "ECDSA P-256 with SHA-512 round trip", + "ECDSA P-384 with SHA-1 round trip", + "ECDSA P-384 with SHA-256 round trip", + "ECDSA P-384 with SHA-512 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-1 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-256 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-384 round trip", + "importVectorKeys step: ECDSA P-521 with SHA-512 round trip", + "ECDSA P-256 with SHA-1 verification failure due to altered signature", + "ECDSA P-256 with SHA-384 verification failure due to altered signature", + "ECDSA P-256 with SHA-512 verification failure due to altered signature", + "ECDSA P-384 with SHA-1 verification failure due to altered signature", + "ECDSA P-384 with SHA-256 verification failure due to altered signature", + "ECDSA P-384 with SHA-512 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered signature", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered signature", + "ECDSA P-256 with SHA-256 verification failure due to wrong hash", + "ECDSA P-256 with SHA-384 verification failure due to wrong hash", + "ECDSA P-256 with SHA-512 verification failure due to wrong hash", + "ECDSA P-384 with SHA-1 verification failure due to wrong hash", + "ECDSA P-384 with SHA-256 verification failure due to wrong hash", + "ECDSA P-384 with SHA-384 verification failure due to wrong hash", + "ECDSA P-384 with SHA-512 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to wrong hash", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to bad hash name", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to bad hash name", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to bad hash name", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to bad hash name", + "ECDSA P-256 with SHA-1 verification failure due to shortened signature", + "ECDSA P-256 with SHA-384 verification failure due to shortened signature", + "ECDSA P-256 with SHA-512 verification failure due to shortened signature", + "ECDSA P-384 with SHA-1 verification failure due to shortened signature", + "ECDSA P-384 with SHA-256 verification failure due to shortened signature", + "ECDSA P-384 with SHA-512 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to shortened signature", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to shortened signature", + "ECDSA P-256 with SHA-1 verification failure due to altered plaintext", + "ECDSA P-256 with SHA-384 verification failure due to altered plaintext", + "ECDSA P-256 with SHA-512 verification failure due to altered plaintext", + "ECDSA P-384 with SHA-1 verification failure due to altered plaintext", + "ECDSA P-384 with SHA-256 verification failure due to altered plaintext", + "ECDSA P-384 with SHA-512 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered plaintext", + "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered plaintext", + "ECDSA P-256 with SHA-1 - The signature was truncated by 1 byte verification", + "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification", + "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification", + "ECDSA P-256 with SHA-1 - Signature has excess padding verification", + "ECDSA P-256 with SHA-1 - The signature is empty verification", + "ECDSA P-256 with SHA-1 - The signature is all zeroes verification", + "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification", + "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification", + "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification", + "ECDSA P-256 with SHA-384 - The signature was truncated by 1 byte verification", + "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification", + "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification", + "ECDSA P-256 with SHA-384 - Signature has excess padding verification", + "ECDSA P-256 with SHA-384 - The signature is empty verification", + "ECDSA P-256 with SHA-384 - The signature is all zeroes verification", + "ECDSA P-256 with SHA-512 - The signature was truncated by 1 byte verification", + "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification", + "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification", + "ECDSA P-256 with SHA-512 - Signature has excess padding verification", + "ECDSA P-256 with SHA-512 - The signature is empty verification", + "ECDSA P-256 with SHA-512 - The signature is all zeroes verification", + "ECDSA P-384 with SHA-1 - The signature was truncated by 1 byte verification", + "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification", + "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification", + "ECDSA P-384 with SHA-1 - Signature has excess padding verification", + "ECDSA P-384 with SHA-1 - The signature is empty verification", + "ECDSA P-384 with SHA-1 - The signature is all zeroes verification", + "ECDSA P-384 with SHA-256 - The signature was truncated by 1 byte verification", + "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification", + "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification", + "ECDSA P-384 with SHA-256 - Signature has excess padding verification", + "ECDSA P-384 with SHA-256 - The signature is empty verification", + "ECDSA P-384 with SHA-256 - The signature is all zeroes verification", + "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification", + "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification", + "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification", + "ECDSA P-384 with SHA-512 - The signature was truncated by 1 byte verification", + "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification", + "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification", + "ECDSA P-384 with SHA-512 - Signature has excess padding verification", + "ECDSA P-384 with SHA-512 - The signature is empty verification", + "ECDSA P-384 with SHA-512 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was truncated by 1 byte verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - Signature has excess padding verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is empty verification", + "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is all zeroes verification", + "importVectorKeys step: ECDSA P-521 with SHA-1 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-256 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-384 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-512 signing with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-1 verifying with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-256 verifying with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-384 verifying with wrong algorithm name", + "importVectorKeys step: ECDSA P-521 with SHA-512 verifying with wrong algorithm name" + ], + "hmac.https.any.html": true, + "hmac.https.any.worker.html": true, + "rsa_pkcs.https.any.html": true, + "rsa_pkcs.https.any.worker.html": true, + "rsa_pss.https.any.html": true, + "rsa_pss.https.any.worker.html": true, + "eddsa.https.any.html": [ + "Sign and verify using generated Ed448 keys.", + "importVectorKeys step: EdDSA Ed448 verification", + "importVectorKeys step: EdDSA Ed448 verification with altered signature after call", + "importVectorKeys step: EdDSA Ed448 with altered data after call", + "importVectorKeys step: EdDSA Ed448 using privateKey to verify", + "importVectorKeys step: EdDSA Ed448 using publicKey to sign", + "importVectorKeys step: EdDSA Ed448 no verify usage", + "importVectorKeys step: EdDSA Ed448 round trip", + "importVectorKeys step: EdDSA Ed448 verification failure due to altered signature", + "importVectorKeys step: EdDSA Ed448 verification failure due to shortened signature", + "importVectorKeys step: EdDSA Ed448 verification failure due to altered data", + "importVectorKeys step: EdDSA Ed448 signing with wrong algorithm name", + "importVectorKeys step: EdDSA Ed448 verifying with wrong algorithm name" + ], + "eddsa.https.any.worker.html": [ + "Sign and verify using generated Ed448 keys.", + "importVectorKeys step: EdDSA Ed448 verification", + "importVectorKeys step: EdDSA Ed448 verification with altered signature after call", + "importVectorKeys step: EdDSA Ed448 with altered data after call", + "importVectorKeys step: EdDSA Ed448 using privateKey to verify", + "importVectorKeys step: EdDSA Ed448 using publicKey to sign", + "importVectorKeys step: EdDSA Ed448 no verify usage", + "importVectorKeys step: EdDSA Ed448 round trip", + "importVectorKeys step: EdDSA Ed448 verification failure due to altered signature", + "importVectorKeys step: EdDSA Ed448 verification failure due to shortened signature", + "importVectorKeys step: EdDSA Ed448 verification failure due to altered data", + "importVectorKeys step: EdDSA Ed448 signing with wrong algorithm name", + "importVectorKeys step: EdDSA Ed448 verifying with wrong algorithm name" + ] + }, + "algorithm-discards-context.https.window.html": false + }, + "console": { + "console-is-a-namespace.any.html": true, + "console-is-a-namespace.any.worker.html": true, + "console-label-conversion.any.html": true, + "console-label-conversion.any.worker.html": true, + "console-namespace-object-class-string.any.html": true, + "console-namespace-object-class-string.any.worker.html": true, + "console-tests-historical.any.html": true, + "console-tests-historical.any.worker.html": true, + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "idlharness-shadowrealm.window.html": false + }, + "dom": { + "abort": { + "AbortSignal.any.html": true, + "AbortSignal.any.worker.html": true, + "event.any.html": true, + "event.any.worker.html": true, + "abort-signal-any.any.html": true, + "abort-signal-any.any.worker.html": true + }, + "events": { + "AddEventListenerOptions-once.any.html": true, + "AddEventListenerOptions-once.any.worker.html": true, + "AddEventListenerOptions-passive.any.html": [ + "returnValue should be ignored if-and-only-if the passive option is true" + ], + "AddEventListenerOptions-passive.any.worker.html": [ + "returnValue should be ignored if-and-only-if the passive option is true" + ], + "AddEventListenerOptions-signal.any.html": true, + "AddEventListenerOptions-signal.any.worker.html": true, + "Event-isTrusted.any.html": false, + "Event-isTrusted.any.worker.html": false, + "EventTarget-add-remove-listener.any.html": true, + "EventTarget-add-remove-listener.any.worker.html": true, + "EventTarget-addEventListener.any.html": true, + "EventTarget-addEventListener.any.worker.html": true, + "EventTarget-removeEventListener.any.html": true, + "EventTarget-removeEventListener.any.worker.html": true, + "EventTarget-constructible.any.html": true, + "EventTarget-constructible.any.worker.html": true, + "Event-constructors.any.html": [ + "Event constructors 3", + "Event constructors 4" + ], + "Event-constructors.any.worker.html": [ + "Event constructors 3", + "Event constructors 4" + ], + "event-global.worker.html": true, + "Event-dispatch-listener-order.window.html": false, + "EventListener-addEventListener.sub.window.html": false, + "event-global-extra.window.html": false, + "event-global-set-before-handleEvent-lookup.window.html": false, + "legacy-pre-activation-behavior.window.html": false, + "relatedTarget.window.html": false + }, + "idlharness-shadowrealm.window.html": false, + "idlharness.window.html?exclude=Node": [ + "Event interface: attribute srcElement", + "Event interface: operation composedPath()", + "Event interface: constant NONE on interface object", + "Event interface: constant NONE on interface prototype object", + "Event interface: constant CAPTURING_PHASE on interface object", + "Event interface: constant CAPTURING_PHASE on interface prototype object", + "Event interface: constant AT_TARGET on interface object", + "Event interface: constant AT_TARGET on interface prototype object", + "Event interface: constant BUBBLING_PHASE on interface object", + "Event interface: constant BUBBLING_PHASE on interface prototype object", + "Event interface: operation stopPropagation()", + "Event interface: attribute cancelBubble", + "Event interface: operation stopImmediatePropagation()", + "Event interface: attribute returnValue", + "Event interface: operation preventDefault()", + "Event interface: attribute defaultPrevented", + "Event interface: operation initEvent(DOMString, optional boolean, optional boolean)", + "CustomEvent interface: operation initCustomEvent(DOMString, optional boolean, optional boolean, optional any)", + "EventTarget interface: operation addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean))", + "EventTarget interface: operation removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean))", + "AbortController interface: operation abort(optional any)", + "AbortSignal interface: attribute onabort", + "NodeList interface: existence and properties of interface object", + "NodeList interface object length", + "NodeList interface object name", + "NodeList interface: existence and properties of interface prototype object", + "NodeList interface: existence and properties of interface prototype object's \"constructor\" property", + "NodeList interface: existence and properties of interface prototype object's @@unscopables property", + "NodeList interface: operation item(unsigned long)", + "NodeList interface: attribute length", + "NodeList interface: iterable<Node>", + "HTMLCollection interface: existence and properties of interface object", + "HTMLCollection interface object length", + "HTMLCollection interface object name", + "HTMLCollection interface: existence and properties of interface prototype object", + "HTMLCollection interface: existence and properties of interface prototype object's \"constructor\" property", + "HTMLCollection interface: existence and properties of interface prototype object's @@unscopables property", + "HTMLCollection interface: attribute length", + "HTMLCollection interface: operation item(unsigned long)", + "HTMLCollection interface: operation namedItem(DOMString)", + "MutationObserver interface: existence and properties of interface object", + "MutationObserver interface object length", + "MutationObserver interface object name", + "MutationObserver interface: existence and properties of interface prototype object", + "MutationObserver interface: existence and properties of interface prototype object's \"constructor\" property", + "MutationObserver interface: existence and properties of interface prototype object's @@unscopables property", + "MutationObserver interface: operation observe(Node, optional MutationObserverInit)", + "MutationObserver interface: operation disconnect()", + "MutationObserver interface: operation takeRecords()", + "MutationRecord interface: existence and properties of interface object", + "MutationRecord interface object length", + "MutationRecord interface object name", + "MutationRecord interface: existence and properties of interface prototype object", + "MutationRecord interface: existence and properties of interface prototype object's \"constructor\" property", + "MutationRecord interface: existence and properties of interface prototype object's @@unscopables property", + "MutationRecord interface: attribute type", + "MutationRecord interface: attribute target", + "MutationRecord interface: attribute addedNodes", + "MutationRecord interface: attribute removedNodes", + "MutationRecord interface: attribute previousSibling", + "MutationRecord interface: attribute nextSibling", + "MutationRecord interface: attribute attributeName", + "MutationRecord interface: attribute attributeNamespace", + "MutationRecord interface: attribute oldValue", + "Document interface: existence and properties of interface object", + "Document interface object length", + "Document interface object name", + "Document interface: existence and properties of interface prototype object", + "Document interface: existence and properties of interface prototype object's \"constructor\" property", + "Document interface: existence and properties of interface prototype object's @@unscopables property", + "Document interface: attribute implementation", + "Document interface: attribute URL", + "Document interface: attribute documentURI", + "Document interface: attribute compatMode", + "Document interface: attribute characterSet", + "Document interface: attribute charset", + "Document interface: attribute inputEncoding", + "Document interface: attribute contentType", + "Document interface: attribute doctype", + "Document interface: attribute documentElement", + "Document interface: operation getElementsByTagName(DOMString)", + "Document interface: operation getElementsByTagNameNS(DOMString?, DOMString)", + "Document interface: operation getElementsByClassName(DOMString)", + "Document interface: operation createElement(DOMString, optional (DOMString or ElementCreationOptions))", + "Document interface: operation createElementNS(DOMString?, DOMString, optional (DOMString or ElementCreationOptions))", + "Document interface: operation createDocumentFragment()", + "Document interface: operation createTextNode(DOMString)", + "Document interface: operation createCDATASection(DOMString)", + "Document interface: operation createComment(DOMString)", + "Document interface: operation createProcessingInstruction(DOMString, DOMString)", + "Document interface: operation importNode(Node, optional boolean)", + "Document interface: operation adoptNode(Node)", + "Document interface: operation createAttribute(DOMString)", + "Document interface: operation createAttributeNS(DOMString?, DOMString)", + "Document interface: operation createEvent(DOMString)", + "Document interface: operation createRange()", + "Document interface: operation createNodeIterator(Node, optional unsigned long, optional NodeFilter?)", + "Document interface: operation createTreeWalker(Node, optional unsigned long, optional NodeFilter?)", + "Document interface: attribute fullscreenEnabled", + "Document interface: attribute fullscreen", + "Document interface: operation exitFullscreen()", + "Document interface: attribute onfullscreenchange", + "Document interface: attribute onfullscreenerror", + "Document interface: operation getElementById(DOMString)", + "Document interface: attribute fullscreenElement", + "Document interface: attribute children", + "Document interface: attribute firstElementChild", + "Document interface: attribute lastElementChild", + "Document interface: attribute childElementCount", + "Document interface: operation prepend((Node or DOMString)...)", + "Document interface: operation append((Node or DOMString)...)", + "Document interface: operation replaceChildren((Node or DOMString)...)", + "Document interface: operation querySelector(DOMString)", + "Document interface: operation querySelectorAll(DOMString)", + "Document interface: operation createExpression(DOMString, optional XPathNSResolver?)", + "Document interface: operation createNSResolver(Node)", + "Document interface: operation evaluate(DOMString, Node, optional XPathNSResolver?, optional unsigned short, optional XPathResult?)", + "XMLDocument interface: existence and properties of interface object", + "XMLDocument interface object length", + "XMLDocument interface object name", + "XMLDocument interface: existence and properties of interface prototype object", + "XMLDocument interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLDocument interface: existence and properties of interface prototype object's @@unscopables property", + "DOMImplementation interface: existence and properties of interface object", + "DOMImplementation interface object length", + "DOMImplementation interface object name", + "DOMImplementation interface: existence and properties of interface prototype object", + "DOMImplementation interface: existence and properties of interface prototype object's \"constructor\" property", + "DOMImplementation interface: existence and properties of interface prototype object's @@unscopables property", + "DOMImplementation interface: operation createDocumentType(DOMString, DOMString, DOMString)", + "DOMImplementation interface: operation createDocument(DOMString?, DOMString, optional DocumentType?)", + "DOMImplementation interface: operation createHTMLDocument(optional DOMString)", + "DOMImplementation interface: operation hasFeature()", + "DocumentType interface: existence and properties of interface object", + "DocumentType interface object length", + "DocumentType interface object name", + "DocumentType interface: existence and properties of interface prototype object", + "DocumentType interface: existence and properties of interface prototype object's \"constructor\" property", + "DocumentType interface: existence and properties of interface prototype object's @@unscopables property", + "DocumentType interface: attribute name", + "DocumentType interface: attribute publicId", + "DocumentType interface: attribute systemId", + "DocumentType interface: operation before((Node or DOMString)...)", + "DocumentType interface: operation after((Node or DOMString)...)", + "DocumentType interface: operation replaceWith((Node or DOMString)...)", + "DocumentType interface: operation remove()", + "DocumentFragment interface: existence and properties of interface object", + "DocumentFragment interface object length", + "DocumentFragment interface object name", + "DocumentFragment interface: existence and properties of interface prototype object", + "DocumentFragment interface: existence and properties of interface prototype object's \"constructor\" property", + "DocumentFragment interface: existence and properties of interface prototype object's @@unscopables property", + "DocumentFragment interface: operation getElementById(DOMString)", + "DocumentFragment interface: attribute children", + "DocumentFragment interface: attribute firstElementChild", + "DocumentFragment interface: attribute lastElementChild", + "DocumentFragment interface: attribute childElementCount", + "DocumentFragment interface: operation prepend((Node or DOMString)...)", + "DocumentFragment interface: operation append((Node or DOMString)...)", + "DocumentFragment interface: operation replaceChildren((Node or DOMString)...)", + "DocumentFragment interface: operation querySelector(DOMString)", + "DocumentFragment interface: operation querySelectorAll(DOMString)", + "ShadowRoot interface: existence and properties of interface object", + "ShadowRoot interface object length", + "ShadowRoot interface object name", + "ShadowRoot interface: existence and properties of interface prototype object", + "ShadowRoot interface: existence and properties of interface prototype object's \"constructor\" property", + "ShadowRoot interface: existence and properties of interface prototype object's @@unscopables property", + "ShadowRoot interface: attribute mode", + "ShadowRoot interface: attribute delegatesFocus", + "ShadowRoot interface: attribute slotAssignment", + "ShadowRoot interface: attribute host", + "ShadowRoot interface: attribute onslotchange", + "ShadowRoot interface: attribute fullscreenElement", + "Element interface: existence and properties of interface object", + "Element interface object length", + "Element interface object name", + "Element interface: existence and properties of interface prototype object", + "Element interface: existence and properties of interface prototype object's \"constructor\" property", + "Element interface: existence and properties of interface prototype object's @@unscopables property", + "Element interface: attribute namespaceURI", + "Element interface: attribute prefix", + "Element interface: attribute localName", + "Element interface: attribute tagName", + "Element interface: attribute id", + "Element interface: attribute className", + "Element interface: attribute classList", + "Element interface: attribute slot", + "Element interface: operation hasAttributes()", + "Element interface: attribute attributes", + "Element interface: operation getAttributeNames()", + "Element interface: operation getAttribute(DOMString)", + "Element interface: operation getAttributeNS(DOMString?, DOMString)", + "Element interface: operation setAttribute(DOMString, DOMString)", + "Element interface: operation setAttributeNS(DOMString?, DOMString, DOMString)", + "Element interface: operation removeAttribute(DOMString)", + "Element interface: operation removeAttributeNS(DOMString?, DOMString)", + "Element interface: operation toggleAttribute(DOMString, optional boolean)", + "Element interface: operation hasAttribute(DOMString)", + "Element interface: operation hasAttributeNS(DOMString?, DOMString)", + "Element interface: operation getAttributeNode(DOMString)", + "Element interface: operation getAttributeNodeNS(DOMString?, DOMString)", + "Element interface: operation setAttributeNode(Attr)", + "Element interface: operation setAttributeNodeNS(Attr)", + "Element interface: operation removeAttributeNode(Attr)", + "Element interface: operation attachShadow(ShadowRootInit)", + "Element interface: attribute shadowRoot", + "Element interface: operation closest(DOMString)", + "Element interface: operation matches(DOMString)", + "Element interface: operation webkitMatchesSelector(DOMString)", + "Element interface: operation getElementsByTagName(DOMString)", + "Element interface: operation getElementsByTagNameNS(DOMString?, DOMString)", + "Element interface: operation getElementsByClassName(DOMString)", + "Element interface: operation insertAdjacentElement(DOMString, Element)", + "Element interface: operation insertAdjacentText(DOMString, DOMString)", + "Element interface: operation requestFullscreen(optional FullscreenOptions)", + "Element interface: attribute onfullscreenchange", + "Element interface: attribute onfullscreenerror", + "Element interface: attribute children", + "Element interface: attribute firstElementChild", + "Element interface: attribute lastElementChild", + "Element interface: attribute childElementCount", + "Element interface: operation prepend((Node or DOMString)...)", + "Element interface: operation append((Node or DOMString)...)", + "Element interface: operation replaceChildren((Node or DOMString)...)", + "Element interface: operation querySelector(DOMString)", + "Element interface: operation querySelectorAll(DOMString)", + "Element interface: attribute previousElementSibling", + "Element interface: attribute nextElementSibling", + "Element interface: operation before((Node or DOMString)...)", + "Element interface: operation after((Node or DOMString)...)", + "Element interface: operation replaceWith((Node or DOMString)...)", + "Element interface: operation remove()", + "Element interface: attribute assignedSlot", + "NamedNodeMap interface: existence and properties of interface object", + "NamedNodeMap interface object length", + "NamedNodeMap interface object name", + "NamedNodeMap interface: existence and properties of interface prototype object", + "NamedNodeMap interface: existence and properties of interface prototype object's \"constructor\" property", + "NamedNodeMap interface: existence and properties of interface prototype object's @@unscopables property", + "NamedNodeMap interface: attribute length", + "NamedNodeMap interface: operation item(unsigned long)", + "NamedNodeMap interface: operation getNamedItem(DOMString)", + "NamedNodeMap interface: operation getNamedItemNS(DOMString?, DOMString)", + "NamedNodeMap interface: operation setNamedItem(Attr)", + "NamedNodeMap interface: operation setNamedItemNS(Attr)", + "NamedNodeMap interface: operation removeNamedItem(DOMString)", + "NamedNodeMap interface: operation removeNamedItemNS(DOMString?, DOMString)", + "Attr interface: existence and properties of interface object", + "Attr interface object length", + "Attr interface object name", + "Attr interface: existence and properties of interface prototype object", + "Attr interface: existence and properties of interface prototype object's \"constructor\" property", + "Attr interface: existence and properties of interface prototype object's @@unscopables property", + "Attr interface: attribute namespaceURI", + "Attr interface: attribute prefix", + "Attr interface: attribute localName", + "Attr interface: attribute name", + "Attr interface: attribute value", + "Attr interface: attribute ownerElement", + "Attr interface: attribute specified", + "CharacterData interface: existence and properties of interface object", + "CharacterData interface object length", + "CharacterData interface object name", + "CharacterData interface: existence and properties of interface prototype object", + "CharacterData interface: existence and properties of interface prototype object's \"constructor\" property", + "CharacterData interface: existence and properties of interface prototype object's @@unscopables property", + "CharacterData interface: attribute data", + "CharacterData interface: attribute length", + "CharacterData interface: operation substringData(unsigned long, unsigned long)", + "CharacterData interface: operation appendData(DOMString)", + "CharacterData interface: operation insertData(unsigned long, DOMString)", + "CharacterData interface: operation deleteData(unsigned long, unsigned long)", + "CharacterData interface: operation replaceData(unsigned long, unsigned long, DOMString)", + "CharacterData interface: attribute previousElementSibling", + "CharacterData interface: attribute nextElementSibling", + "CharacterData interface: operation before((Node or DOMString)...)", + "CharacterData interface: operation after((Node or DOMString)...)", + "CharacterData interface: operation replaceWith((Node or DOMString)...)", + "CharacterData interface: operation remove()", + "Text interface: existence and properties of interface object", + "Text interface object length", + "Text interface object name", + "Text interface: existence and properties of interface prototype object", + "Text interface: existence and properties of interface prototype object's \"constructor\" property", + "Text interface: existence and properties of interface prototype object's @@unscopables property", + "Text interface: operation splitText(unsigned long)", + "Text interface: attribute wholeText", + "Text interface: attribute assignedSlot", + "CDATASection interface: existence and properties of interface object", + "CDATASection interface object length", + "CDATASection interface object name", + "CDATASection interface: existence and properties of interface prototype object", + "CDATASection interface: existence and properties of interface prototype object's \"constructor\" property", + "CDATASection interface: existence and properties of interface prototype object's @@unscopables property", + "ProcessingInstruction interface: existence and properties of interface object", + "ProcessingInstruction interface object length", + "ProcessingInstruction interface object name", + "ProcessingInstruction interface: existence and properties of interface prototype object", + "ProcessingInstruction interface: existence and properties of interface prototype object's \"constructor\" property", + "ProcessingInstruction interface: existence and properties of interface prototype object's @@unscopables property", + "ProcessingInstruction interface: attribute target", + "Comment interface: existence and properties of interface object", + "Comment interface object length", + "Comment interface object name", + "Comment interface: existence and properties of interface prototype object", + "Comment interface: existence and properties of interface prototype object's \"constructor\" property", + "Comment interface: existence and properties of interface prototype object's @@unscopables property", + "AbstractRange interface: existence and properties of interface object", + "AbstractRange interface object length", + "AbstractRange interface object name", + "AbstractRange interface: existence and properties of interface prototype object", + "AbstractRange interface: existence and properties of interface prototype object's \"constructor\" property", + "AbstractRange interface: existence and properties of interface prototype object's @@unscopables property", + "AbstractRange interface: attribute startContainer", + "AbstractRange interface: attribute startOffset", + "AbstractRange interface: attribute endContainer", + "AbstractRange interface: attribute endOffset", + "AbstractRange interface: attribute collapsed", + "StaticRange interface: existence and properties of interface object", + "StaticRange interface object length", + "StaticRange interface object name", + "StaticRange interface: existence and properties of interface prototype object", + "StaticRange interface: existence and properties of interface prototype object's \"constructor\" property", + "StaticRange interface: existence and properties of interface prototype object's @@unscopables property", + "Range interface: existence and properties of interface object", + "Range interface object length", + "Range interface object name", + "Range interface: existence and properties of interface prototype object", + "Range interface: existence and properties of interface prototype object's \"constructor\" property", + "Range interface: existence and properties of interface prototype object's @@unscopables property", + "Range interface: attribute commonAncestorContainer", + "Range interface: operation setStart(Node, unsigned long)", + "Range interface: operation setEnd(Node, unsigned long)", + "Range interface: operation setStartBefore(Node)", + "Range interface: operation setStartAfter(Node)", + "Range interface: operation setEndBefore(Node)", + "Range interface: operation setEndAfter(Node)", + "Range interface: operation collapse(optional boolean)", + "Range interface: operation selectNode(Node)", + "Range interface: operation selectNodeContents(Node)", + "Range interface: constant START_TO_START on interface object", + "Range interface: constant START_TO_START on interface prototype object", + "Range interface: constant START_TO_END on interface object", + "Range interface: constant START_TO_END on interface prototype object", + "Range interface: constant END_TO_END on interface object", + "Range interface: constant END_TO_END on interface prototype object", + "Range interface: constant END_TO_START on interface object", + "Range interface: constant END_TO_START on interface prototype object", + "Range interface: operation compareBoundaryPoints(unsigned short, Range)", + "Range interface: operation deleteContents()", + "Range interface: operation extractContents()", + "Range interface: operation cloneContents()", + "Range interface: operation insertNode(Node)", + "Range interface: operation surroundContents(Node)", + "Range interface: operation cloneRange()", + "Range interface: operation detach()", + "Range interface: operation isPointInRange(Node, unsigned long)", + "Range interface: operation comparePoint(Node, unsigned long)", + "Range interface: operation intersectsNode(Node)", + "Range interface: stringifier", + "NodeIterator interface: existence and properties of interface object", + "NodeIterator interface object length", + "NodeIterator interface object name", + "NodeIterator interface: existence and properties of interface prototype object", + "NodeIterator interface: existence and properties of interface prototype object's \"constructor\" property", + "NodeIterator interface: existence and properties of interface prototype object's @@unscopables property", + "NodeIterator interface: attribute root", + "NodeIterator interface: attribute referenceNode", + "NodeIterator interface: attribute pointerBeforeReferenceNode", + "NodeIterator interface: attribute whatToShow", + "NodeIterator interface: attribute filter", + "NodeIterator interface: operation nextNode()", + "NodeIterator interface: operation previousNode()", + "NodeIterator interface: operation detach()", + "TreeWalker interface: existence and properties of interface object", + "TreeWalker interface object length", + "TreeWalker interface object name", + "TreeWalker interface: existence and properties of interface prototype object", + "TreeWalker interface: existence and properties of interface prototype object's \"constructor\" property", + "TreeWalker interface: existence and properties of interface prototype object's @@unscopables property", + "TreeWalker interface: attribute root", + "TreeWalker interface: attribute whatToShow", + "TreeWalker interface: attribute filter", + "TreeWalker interface: attribute currentNode", + "TreeWalker interface: operation parentNode()", + "TreeWalker interface: operation firstChild()", + "TreeWalker interface: operation lastChild()", + "TreeWalker interface: operation previousSibling()", + "TreeWalker interface: operation nextSibling()", + "TreeWalker interface: operation previousNode()", + "TreeWalker interface: operation nextNode()", + "NodeFilter interface: existence and properties of interface object", + "NodeFilter interface object name", + "NodeFilter interface: existence and properties of interface prototype object", + "NodeFilter interface: existence and properties of interface prototype object's \"constructor\" property", + "NodeFilter interface: existence and properties of interface prototype object's @@unscopables property", + "NodeFilter interface: constant FILTER_ACCEPT on interface object", + "NodeFilter interface: constant FILTER_ACCEPT on interface prototype object", + "NodeFilter interface: constant FILTER_REJECT on interface object", + "NodeFilter interface: constant FILTER_REJECT on interface prototype object", + "NodeFilter interface: constant FILTER_SKIP on interface object", + "NodeFilter interface: constant FILTER_SKIP on interface prototype object", + "NodeFilter interface: constant SHOW_ALL on interface object", + "NodeFilter interface: constant SHOW_ALL on interface prototype object", + "NodeFilter interface: constant SHOW_ELEMENT on interface object", + "NodeFilter interface: constant SHOW_ELEMENT on interface prototype object", + "NodeFilter interface: constant SHOW_ATTRIBUTE on interface object", + "NodeFilter interface: constant SHOW_ATTRIBUTE on interface prototype object", + "NodeFilter interface: constant SHOW_TEXT on interface object", + "NodeFilter interface: constant SHOW_TEXT on interface prototype object", + "NodeFilter interface: constant SHOW_CDATA_SECTION on interface object", + "NodeFilter interface: constant SHOW_CDATA_SECTION on interface prototype object", + "NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface object", + "NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface prototype object", + "NodeFilter interface: constant SHOW_ENTITY on interface object", + "NodeFilter interface: constant SHOW_ENTITY on interface prototype object", + "NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface object", + "NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface prototype object", + "NodeFilter interface: constant SHOW_COMMENT on interface object", + "NodeFilter interface: constant SHOW_COMMENT on interface prototype object", + "NodeFilter interface: constant SHOW_DOCUMENT on interface object", + "NodeFilter interface: constant SHOW_DOCUMENT on interface prototype object", + "NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface object", + "NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface prototype object", + "NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface object", + "NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface prototype object", + "NodeFilter interface: constant SHOW_NOTATION on interface object", + "NodeFilter interface: constant SHOW_NOTATION on interface prototype object", + "NodeFilter interface: operation acceptNode(Node)", + "DOMTokenList interface: existence and properties of interface object", + "DOMTokenList interface object length", + "DOMTokenList interface object name", + "DOMTokenList interface: existence and properties of interface prototype object", + "DOMTokenList interface: existence and properties of interface prototype object's \"constructor\" property", + "DOMTokenList interface: existence and properties of interface prototype object's @@unscopables property", + "DOMTokenList interface: attribute length", + "DOMTokenList interface: operation item(unsigned long)", + "DOMTokenList interface: operation contains(DOMString)", + "DOMTokenList interface: operation add(DOMString...)", + "DOMTokenList interface: operation remove(DOMString...)", + "DOMTokenList interface: operation toggle(DOMString, optional boolean)", + "DOMTokenList interface: operation replace(DOMString, DOMString)", + "DOMTokenList interface: operation supports(DOMString)", + "DOMTokenList interface: attribute value", + "DOMTokenList interface: stringifier", + "DOMTokenList interface: iterable<DOMString>", + "XPathResult interface: existence and properties of interface object", + "XPathResult interface object length", + "XPathResult interface object name", + "XPathResult interface: existence and properties of interface prototype object", + "XPathResult interface: existence and properties of interface prototype object's \"constructor\" property", + "XPathResult interface: existence and properties of interface prototype object's @@unscopables property", + "XPathResult interface: constant ANY_TYPE on interface object", + "XPathResult interface: constant ANY_TYPE on interface prototype object", + "XPathResult interface: constant NUMBER_TYPE on interface object", + "XPathResult interface: constant NUMBER_TYPE on interface prototype object", + "XPathResult interface: constant STRING_TYPE on interface object", + "XPathResult interface: constant STRING_TYPE on interface prototype object", + "XPathResult interface: constant BOOLEAN_TYPE on interface object", + "XPathResult interface: constant BOOLEAN_TYPE on interface prototype object", + "XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface object", + "XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface prototype object", + "XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface object", + "XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface prototype object", + "XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface object", + "XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface prototype object", + "XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface object", + "XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface prototype object", + "XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface object", + "XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface prototype object", + "XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface object", + "XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface prototype object", + "XPathResult interface: attribute resultType", + "XPathResult interface: attribute numberValue", + "XPathResult interface: attribute stringValue", + "XPathResult interface: attribute booleanValue", + "XPathResult interface: attribute singleNodeValue", + "XPathResult interface: attribute invalidIteratorState", + "XPathResult interface: attribute snapshotLength", + "XPathResult interface: operation iterateNext()", + "XPathResult interface: operation snapshotItem(unsigned long)", + "XPathExpression interface: existence and properties of interface object", + "XPathExpression interface object length", + "XPathExpression interface object name", + "XPathExpression interface: existence and properties of interface prototype object", + "XPathExpression interface: existence and properties of interface prototype object's \"constructor\" property", + "XPathExpression interface: existence and properties of interface prototype object's @@unscopables property", + "XPathExpression interface: operation evaluate(Node, optional unsigned short, optional XPathResult?)", + "XPathEvaluator interface: existence and properties of interface object", + "XPathEvaluator interface object length", + "XPathEvaluator interface object name", + "XPathEvaluator interface: existence and properties of interface prototype object", + "XPathEvaluator interface: existence and properties of interface prototype object's \"constructor\" property", + "XPathEvaluator interface: existence and properties of interface prototype object's @@unscopables property", + "XPathEvaluator interface: operation createExpression(DOMString, optional XPathNSResolver?)", + "XPathEvaluator interface: operation createNSResolver(Node)", + "XPathEvaluator interface: operation evaluate(DOMString, Node, optional XPathNSResolver?, optional unsigned short, optional XPathResult?)", + "XSLTProcessor interface: existence and properties of interface object", + "XSLTProcessor interface object length", + "XSLTProcessor interface object name", + "XSLTProcessor interface: existence and properties of interface prototype object", + "XSLTProcessor interface: existence and properties of interface prototype object's \"constructor\" property", + "XSLTProcessor interface: existence and properties of interface prototype object's @@unscopables property", + "XSLTProcessor interface: operation importStylesheet(Node)", + "XSLTProcessor interface: operation transformToFragment(Node, Document)", + "XSLTProcessor interface: operation transformToDocument(Node)", + "XSLTProcessor interface: operation setParameter(DOMString, DOMString, any)", + "XSLTProcessor interface: operation getParameter(DOMString, DOMString)", + "XSLTProcessor interface: operation removeParameter(DOMString, DOMString)", + "XSLTProcessor interface: operation clearParameters()", + "XSLTProcessor interface: operation reset()", + "Window interface: attribute event", + "idl_test setup", + "ShadowRoot interface: attribute clonable" + ], + "idlharness.window.html?include=Node": [ + "Node interface: existence and properties of interface object", + "Node interface object length", + "Node interface object name", + "Node interface: existence and properties of interface prototype object", + "Node interface: existence and properties of interface prototype object's \"constructor\" property", + "Node interface: existence and properties of interface prototype object's @@unscopables property", + "Node interface: constant ELEMENT_NODE on interface object", + "Node interface: constant ELEMENT_NODE on interface prototype object", + "Node interface: constant ATTRIBUTE_NODE on interface object", + "Node interface: constant ATTRIBUTE_NODE on interface prototype object", + "Node interface: constant TEXT_NODE on interface object", + "Node interface: constant TEXT_NODE on interface prototype object", + "Node interface: constant CDATA_SECTION_NODE on interface object", + "Node interface: constant CDATA_SECTION_NODE on interface prototype object", + "Node interface: constant ENTITY_REFERENCE_NODE on interface object", + "Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object", + "Node interface: constant ENTITY_NODE on interface object", + "Node interface: constant ENTITY_NODE on interface prototype object", + "Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object", + "Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object", + "Node interface: constant COMMENT_NODE on interface object", + "Node interface: constant COMMENT_NODE on interface prototype object", + "Node interface: constant DOCUMENT_NODE on interface object", + "Node interface: constant DOCUMENT_NODE on interface prototype object", + "Node interface: constant DOCUMENT_TYPE_NODE on interface object", + "Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object", + "Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object", + "Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object", + "Node interface: constant NOTATION_NODE on interface object", + "Node interface: constant NOTATION_NODE on interface prototype object", + "Node interface: attribute nodeType", + "Node interface: attribute nodeName", + "Node interface: attribute baseURI", + "Node interface: attribute isConnected", + "Node interface: attribute ownerDocument", + "Node interface: operation getRootNode(optional GetRootNodeOptions)", + "Node interface: attribute parentNode", + "Node interface: attribute parentElement", + "Node interface: operation hasChildNodes()", + "Node interface: attribute childNodes", + "Node interface: attribute firstChild", + "Node interface: attribute lastChild", + "Node interface: attribute previousSibling", + "Node interface: attribute nextSibling", + "Node interface: attribute nodeValue", + "Node interface: attribute textContent", + "Node interface: operation normalize()", + "Node interface: operation cloneNode(optional boolean)", + "Node interface: operation isEqualNode(Node?)", + "Node interface: operation isSameNode(Node?)", + "Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object", + "Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object", + "Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object", + "Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object", + "Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object", + "Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object", + "Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object", + "Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object", + "Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object", + "Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object", + "Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object", + "Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object", + "Node interface: operation compareDocumentPosition(Node)", + "Node interface: operation contains(Node?)", + "Node interface: operation lookupPrefix(DOMString?)", + "Node interface: operation lookupNamespaceURI(DOMString?)", + "Node interface: operation isDefaultNamespace(DOMString?)", + "Node interface: operation insertBefore(Node, Node?)", + "Node interface: operation appendChild(Node)", + "Node interface: operation replaceChild(Node, Node)", + "Node interface: operation removeChild(Node)", + "idl_test setup" + ] + }, + "encoding": { + "api-basics.any.html": true, + "api-basics.any.worker.html": true, + "api-invalid-label.any.html?1-1000": true, + "api-invalid-label.any.html?1001-2000": true, + "api-invalid-label.any.html?2001-3000": true, + "api-invalid-label.any.html?3001-last": true, + "api-invalid-label.any.worker.html?1-1000": true, + "api-invalid-label.any.worker.html?1001-2000": true, + "api-invalid-label.any.worker.html?2001-3000": true, + "api-invalid-label.any.worker.html?3001-last": true, + "api-replacement-encodings.any.html": true, + "api-replacement-encodings.any.worker.html": true, + "api-surrogates-utf8.any.html": true, + "api-surrogates-utf8.any.worker.html": true, + "encodeInto.any.html": true, + "encodeInto.any.worker.html": true, + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "iso-2022-jp-decoder.any.html": true, + "iso-2022-jp-decoder.any.worker.html": true, + "legacy-mb-schinese": { + "gb18030": { + "gb18030-decoder.any.html": [ + "gb18030 decoder: GB18030-2022 1", + "gb18030 decoder: GB18030-2022 2", + "gb18030 decoder: GB18030-2022 3", + "gb18030 decoder: GB18030-2022 4", + "gb18030 decoder: GB18030-2022 5", + "gb18030 decoder: GB18030-2022 6", + "gb18030 decoder: GB18030-2022 7", + "gb18030 decoder: GB18030-2022 8", + "gb18030 decoder: GB18030-2022 9", + "gb18030 decoder: GB18030-2022 10", + "gb18030 decoder: GB18030-2022 11", + "gb18030 decoder: GB18030-2022 12", + "gb18030 decoder: GB18030-2022 13", + "gb18030 decoder: GB18030-2022 14", + "gb18030 decoder: GB18030-2022 15", + "gb18030 decoder: GB18030-2022 16", + "gb18030 decoder: GB18030-2022 17", + "gb18030 decoder: GB18030-2022 18", + "gb18030 decoder: GB18030-2022 19", + "gb18030 decoder: GB18030-2022 20", + "gb18030 decoder: GB18030-2022 21", + "gb18030 decoder: GB18030-2022 22", + "gb18030 decoder: GB18030-2022 23", + "gb18030 decoder: GB18030-2022 24", + "gb18030 decoder: GB18030-2022 25", + "gb18030 decoder: GB18030-2022 26", + "gb18030 decoder: GB18030-2022 27", + "gb18030 decoder: GB18030-2022 28", + "gb18030 decoder: GB18030-2022 29", + "gb18030 decoder: GB18030-2022 30", + "gb18030 decoder: GB18030-2022 31", + "gb18030 decoder: GB18030-2022 32", + "gb18030 decoder: GB18030-2022 33", + "gb18030 decoder: GB18030-2022 34", + "gb18030 decoder: GB18030-2022 35", + "gb18030 decoder: GB18030-2022 36" + ], + "gb18030-decoder.any.worker.html": [ + "gb18030 decoder: GB18030-2022 1", + "gb18030 decoder: GB18030-2022 2", + "gb18030 decoder: GB18030-2022 3", + "gb18030 decoder: GB18030-2022 4", + "gb18030 decoder: GB18030-2022 5", + "gb18030 decoder: GB18030-2022 6", + "gb18030 decoder: GB18030-2022 7", + "gb18030 decoder: GB18030-2022 8", + "gb18030 decoder: GB18030-2022 9", + "gb18030 decoder: GB18030-2022 10", + "gb18030 decoder: GB18030-2022 11", + "gb18030 decoder: GB18030-2022 12", + "gb18030 decoder: GB18030-2022 13", + "gb18030 decoder: GB18030-2022 14", + "gb18030 decoder: GB18030-2022 15", + "gb18030 decoder: GB18030-2022 16", + "gb18030 decoder: GB18030-2022 17", + "gb18030 decoder: GB18030-2022 18", + "gb18030 decoder: GB18030-2022 19", + "gb18030 decoder: GB18030-2022 20", + "gb18030 decoder: GB18030-2022 21", + "gb18030 decoder: GB18030-2022 22", + "gb18030 decoder: GB18030-2022 23", + "gb18030 decoder: GB18030-2022 24", + "gb18030 decoder: GB18030-2022 25", + "gb18030 decoder: GB18030-2022 26", + "gb18030 decoder: GB18030-2022 27", + "gb18030 decoder: GB18030-2022 28", + "gb18030 decoder: GB18030-2022 29", + "gb18030 decoder: GB18030-2022 30", + "gb18030 decoder: GB18030-2022 31", + "gb18030 decoder: GB18030-2022 32", + "gb18030 decoder: GB18030-2022 33", + "gb18030 decoder: GB18030-2022 34", + "gb18030 decoder: GB18030-2022 35", + "gb18030 decoder: GB18030-2022 36" + ] + }, + "gbk": { + "gbk-decoder.any.html": true, + "gbk-decoder.any.worker.html": true + } + }, + "replacement-encodings.any.html": false, + "replacement-encodings.any.worker.html": false, + "streams": { + "backpressure.any.html": true, + "backpressure.any.worker.html": true, + "decode-attributes.any.html": true, + "decode-attributes.any.worker.html": true, + "decode-bad-chunks.any.html": true, + "decode-bad-chunks.any.worker.html": true, + "decode-ignore-bom.any.html": true, + "decode-ignore-bom.any.worker.html": true, + "decode-incomplete-input.any.html": true, + "decode-incomplete-input.any.worker.html": true, + "decode-non-utf8.any.html": true, + "decode-non-utf8.any.worker.html": true, + "decode-split-character.any.html": true, + "decode-split-character.any.worker.html": true, + "decode-utf8.any.html": true, + "decode-utf8.any.worker.html": true, + "encode-bad-chunks.any.html": true, + "encode-bad-chunks.any.worker.html": true, + "encode-utf8.any.html": true, + "encode-utf8.any.worker.html": true, + "readable-writable-properties.any.html": true, + "readable-writable-properties.any.worker.html": true, + "realms.window.html": false, + "invalid-realm.window.html": false + }, + "textdecoder-arguments.any.html": true, + "textdecoder-arguments.any.worker.html": true, + "textdecoder-byte-order-marks.any.html": true, + "textdecoder-byte-order-marks.any.worker.html": true, + "textdecoder-copy.any.html": true, + "textdecoder-copy.any.worker.html": true, + "textdecoder-fatal-single-byte.any.html?1-1000": true, + "textdecoder-fatal-single-byte.any.html?1001-2000": true, + "textdecoder-fatal-single-byte.any.html?2001-3000": true, + "textdecoder-fatal-single-byte.any.html?3001-4000": true, + "textdecoder-fatal-single-byte.any.html?4001-5000": true, + "textdecoder-fatal-single-byte.any.html?5001-6000": true, + "textdecoder-fatal-single-byte.any.html?6001-7000": true, + "textdecoder-fatal-single-byte.any.html?7001-last": true, + "textdecoder-fatal-single-byte.any.worker.html?1-1000": true, + "textdecoder-fatal-single-byte.any.worker.html?1001-2000": true, + "textdecoder-fatal-single-byte.any.worker.html?2001-3000": true, + "textdecoder-fatal-single-byte.any.worker.html?3001-4000": true, + "textdecoder-fatal-single-byte.any.worker.html?4001-5000": true, + "textdecoder-fatal-single-byte.any.worker.html?5001-6000": true, + "textdecoder-fatal-single-byte.any.worker.html?6001-7000": true, + "textdecoder-fatal-single-byte.any.worker.html?7001-last": true, + "textdecoder-fatal-streaming.any.html": true, + "textdecoder-fatal-streaming.any.worker.html": true, + "textdecoder-fatal.any.html": true, + "textdecoder-fatal.any.worker.html": true, + "textdecoder-ignorebom.any.html": true, + "textdecoder-ignorebom.any.worker.html": true, + "textdecoder-labels.any.html": true, + "textdecoder-labels.any.worker.html": true, + "textdecoder-streaming.any.html": true, + "textdecoder-streaming.any.worker.html": true, + "textdecoder-utf16-surrogates.any.html": true, + "textdecoder-utf16-surrogates.any.worker.html": true, + "textencoder-constructor-non-utf.any.html": true, + "textencoder-constructor-non-utf.any.worker.html": true, + "textencoder-utf16-surrogates.any.html": true, + "textencoder-utf16-surrogates.any.worker.html": true, + "unsupported-encodings.any.html": false, + "unsupported-encodings.any.worker.html": false, + "single-byte-decoder.window.html?TextDecoder": true, + "textdecoder-eof.any.html": true, + "textdecoder-eof.any.worker.html": true, + "idlharness-shadowrealm.window.html": false, + "single-byte-decoder.window.html?XMLHttpRequest": false, + "single-byte-decoder.window.html?document": false, + "unsupported-labels.window.html": false + }, + "hr-time": { + "monotonic-clock.any.html": true, + "monotonic-clock.any.worker.html": true, + "basic.any.html": true, + "basic.any.worker.html": true, + "idlharness.any.html": [ + "Window interface: attribute performance" + ], + "idlharness.any.worker.html": [ + "WorkerGlobalScope interface: attribute performance", + "WorkerGlobalScope interface: self must inherit property \"performance\" with the proper type" + ], + "window-worker-timeOrigin.window.html": true, + "idlharness-shadowrealm.window.html": false + }, + "streams": { + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "piping": { + "abort.any.html": true, + "abort.any.worker.html": true, + "close-propagation-backward.any.html": true, + "close-propagation-backward.any.worker.html": true, + "close-propagation-forward.any.html": true, + "close-propagation-forward.any.worker.html": true, + "error-propagation-backward.any.html": true, + "error-propagation-backward.any.worker.html": true, + "error-propagation-forward.any.html": true, + "error-propagation-forward.any.worker.html": true, + "flow-control.any.html": true, + "flow-control.any.worker.html": true, + "general.any.html": true, + "general.any.worker.html": true, + "multiple-propagation.any.html": true, + "multiple-propagation.any.worker.html": true, + "pipe-through.any.html": true, + "pipe-through.any.worker.html": true, + "then-interception.any.html": true, + "then-interception.any.worker.html": true, + "throwing-options.any.html": true, + "throwing-options.any.worker.html": true, + "transform-streams.any.html": true, + "transform-streams.any.worker.html": true + }, + "queuing-strategies.any.html": true, + "queuing-strategies.any.worker.html": true, + "readable-byte-streams": { + "bad-buffers-and-views.any.html": true, + "bad-buffers-and-views.any.worker.html": true, + "construct-byob-request.any.html": true, + "construct-byob-request.any.worker.html": true, + "general.any.html": true, + "general.any.worker.html": true, + "non-transferable-buffers.any.html": true, + "non-transferable-buffers.any.worker.html": true, + "tee.any.html": true, + "tee.any.worker.html": true, + "respond-after-enqueue.any.html": true, + "respond-after-enqueue.any.worker.html": true, + "enqueue-with-detached-buffer.any.html": true, + "enqueue-with-detached-buffer.any.worker.html": true, + "read-min.any.html": true, + "read-min.any.worker.html": true + }, + "readable-streams": { + "async-iterator.any.html": true, + "bad-strategies.any.html": true, + "bad-strategies.any.worker.html": true, + "bad-underlying-sources.any.html": true, + "bad-underlying-sources.any.worker.html": true, + "cancel.any.html": true, + "cancel.any.worker.html": true, + "constructor.any.html": true, + "constructor.any.worker.html": true, + "count-queuing-strategy-integration.any.html": true, + "count-queuing-strategy-integration.any.worker.html": true, + "default-reader.any.html": true, + "default-reader.any.worker.html": true, + "floating-point-total-queue-size.any.html": true, + "floating-point-total-queue-size.any.worker.html": true, + "garbage-collection.any.html": true, + "garbage-collection.any.worker.html": true, + "general.any.html": true, + "general.any.worker.html": true, + "patched-global.any.html": true, + "patched-global.any.worker.html": true, + "reentrant-strategies.any.html": true, + "reentrant-strategies.any.worker.html": true, + "tee.any.html": true, + "tee.any.worker.html": true, + "templated.any.html": true, + "templated.any.worker.html": true, + "async-iterator.any.worker.html": true, + "cross-realm-crash.window.html": false, + "owning-type-message-port.any.html": false, + "owning-type-message-port.any.worker.html": false, + "owning-type.any.html": false, + "owning-type.any.worker.html": false, + "from.any.html": true, + "from.any.worker.html": true + }, + "transform-streams": { + "backpressure.any.html": true, + "backpressure.any.worker.html": true, + "errors.any.html": true, + "errors.any.worker.html": true, + "flush.any.html": true, + "flush.any.worker.html": true, + "general.any.html": true, + "general.any.worker.html": true, + "lipfuzz.any.html": true, + "lipfuzz.any.worker.html": true, + "patched-global.any.html": true, + "patched-global.any.worker.html": true, + "properties.any.html": true, + "properties.any.worker.html": true, + "reentrant-strategies.any.html": true, + "reentrant-strategies.any.worker.html": true, + "strategies.any.html": true, + "strategies.any.worker.html": true, + "terminate.any.html": true, + "terminate.any.worker.html": true + }, + "writable-streams": { + "aborting.any.html": true, + "aborting.any.worker.html": true, + "bad-strategies.any.html": true, + "bad-strategies.any.worker.html": true, + "bad-underlying-sinks.any.html": true, + "bad-underlying-sinks.any.worker.html": true, + "byte-length-queuing-strategy.any.html": true, + "byte-length-queuing-strategy.any.worker.html": true, + "close.any.html": true, + "close.any.worker.html": true, + "constructor.any.html": true, + "constructor.any.worker.html": true, + "count-queuing-strategy.any.html": true, + "count-queuing-strategy.any.worker.html": true, + "error.any.html": true, + "error.any.worker.html": true, + "floating-point-total-queue-size.any.html": true, + "floating-point-total-queue-size.any.worker.html": true, + "general.any.html": true, + "general.any.worker.html": true, + "properties.any.html": true, + "properties.any.worker.html": true, + "reentrant-strategy.any.html": true, + "reentrant-strategy.any.worker.html": true, + "start.any.html": true, + "start.any.worker.html": true, + "write.any.html": true, + "write.any.worker.html": true + }, + "queuing-strategies-size-function-per-global.window.html": false, + "transferable": { + "deserialize-error.window.html": false, + "transfer-with-messageport.window.html": false + }, + "idlharness-shadowrealm.window.html": false + }, + "user-timing": { + "buffered-flag.any.html": false, + "buffered-flag.any.worker.html": false, + "case-sensitivity.any.html": false, + "case-sensitivity.any.worker.html": false, + "clear_all_marks.any.html": true, + "clear_all_marks.any.worker.html": true, + "clear_all_measures.any.html": true, + "clear_all_measures.any.worker.html": true, + "clear_non_existent_mark.any.html": true, + "clear_non_existent_mark.any.worker.html": true, + "clear_non_existent_measure.any.html": true, + "clear_non_existent_measure.any.worker.html": true, + "clear_one_mark.any.html": true, + "clear_one_mark.any.worker.html": true, + "clear_one_measure.any.html": true, + "clear_one_measure.any.worker.html": true, + "entry_type.any.html": true, + "entry_type.any.worker.html": true, + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "mark-entry-constructor.any.html": true, + "mark-entry-constructor.any.worker.html": true, + "mark-errors.any.html": true, + "mark-errors.any.worker.html": true, + "mark-l3.any.html": false, + "mark-l3.any.worker.html": false, + "mark-measure-return-objects.any.html": true, + "mark-measure-return-objects.any.worker.html": true, + "mark.any.html": true, + "mark.any.worker.html": true, + "measure-l3.any.html": true, + "measure-l3.any.worker.html": true, + "measure-with-dict.any.html": [ + "measure entries' detail and start/end are customizable" + ], + "measure-with-dict.any.worker.html": [ + "measure entries' detail and start/end are customizable" + ], + "measure_syntax_err.any.html": true, + "measure_syntax_err.any.worker.html": true, + "structured-serialize-detail.any.html": true, + "structured-serialize-detail.any.worker.html": true, + "supported-usertiming-types.any.html": false, + "supported-usertiming-types.any.worker.html": false, + "user_timing_exists.any.html": true, + "user_timing_exists.any.worker.html": true, + "invoke_with_timing_attributes.worker.html": true, + "performance-measure-invalid.worker.html": false, + "idlharness-shadowrealm.window.html": false + }, + "wasm": { + "jsapi": { + "constructor": { + "compile.any.html": true, + "compile.any.worker.html": true, + "instantiate-bad-imports.any.html": true, + "instantiate-bad-imports.any.worker.html": true, + "instantiate.any.html": [ + "Synchronous options handling: Buffer argument" + ], + "instantiate.any.worker.html": [ + "Synchronous options handling: Buffer argument" + ], + "multi-value.any.html": true, + "multi-value.any.worker.html": true, + "toStringTag.any.html": true, + "toStringTag.any.worker.html": true, + "validate.any.html": true, + "validate.any.worker.html": true + }, + "global": { + "constructor.any.html": true, + "constructor.any.worker.html": true, + "toString.any.html": true, + "toString.any.worker.html": true, + "type.tentative.any.html": false, + "type.tentative.any.worker.html": false, + "value-get-set.any.html": true, + "value-get-set.any.worker.html": true, + "valueOf.any.html": true, + "valueOf.any.worker.html": true + }, + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "instance": { + "constructor-bad-imports.any.html": true, + "constructor-bad-imports.any.worker.html": true, + "constructor-caching.any.html": true, + "constructor-caching.any.worker.html": true, + "constructor.any.html": true, + "constructor.any.worker.html": true, + "exports.any.html": true, + "exports.any.worker.html": true, + "toString.any.html": true, + "toString.any.worker.html": true + }, + "interface.any.html": true, + "interface.any.worker.html": true, + "memory": { + "buffer.any.html": true, + "buffer.any.worker.html": true, + "constructor.any.html": true, + "constructor.any.worker.html": true, + "grow.any.html": true, + "grow.any.worker.html": true, + "toString.any.html": true, + "toString.any.worker.html": true, + "type.tentative.any.html": false, + "type.tentative.any.worker.html": false, + "constructor-shared.tentative.any.html": true, + "constructor-shared.tentative.any.worker.html": true, + "constructor-types.tentative.any.html": false, + "constructor-types.tentative.any.worker.html": false + }, + "module": { + "constructor.any.html": true, + "constructor.any.worker.html": true, + "customSections.any.html": true, + "customSections.any.worker.html": true, + "exports.any.html": true, + "exports.any.worker.html": true, + "imports.any.html": true, + "imports.any.worker.html": true, + "toString.any.html": true, + "toString.any.worker.html": true + }, + "prototypes.any.html": true, + "prototypes.any.worker.html": true, + "table": { + "constructor.any.html": true, + "constructor.any.worker.html": true, + "get-set.any.html": true, + "get-set.any.worker.html": true, + "grow.any.html": true, + "grow.any.worker.html": true, + "length.any.html": true, + "length.any.worker.html": true, + "toString.any.html": true, + "toString.any.worker.html": true, + "constructor-types.tentative.any.html": false, + "constructor-types.tentative.any.worker.html": false, + "type.tentative.any.html": false, + "type.tentative.any.worker.html": false + }, + "exception": { + "basic.tentative.any.html": true, + "basic.tentative.any.worker.html": true, + "constructor.tentative.any.html": true, + "constructor.tentative.any.worker.html": true, + "getArg.tentative.any.html": [ + "Getting out-of-range argument" + ], + "getArg.tentative.any.worker.html": [ + "Getting out-of-range argument" + ], + "is.tentative.any.html": true, + "is.tentative.any.worker.html": true, + "toString.tentative.any.html": true, + "toString.tentative.any.worker.html": true, + "identity.tentative.any.html": true, + "identity.tentative.any.worker.html": true + }, + "tag": { + "constructor.tentative.any.html": true, + "constructor.tentative.any.worker.html": true, + "toString.tentative.any.html": true, + "toString.tentative.any.worker.html": true, + "type.tentative.any.html": false, + "type.tentative.any.worker.html": false + }, + "function": { + "call.tentative.any.html": false, + "call.tentative.any.worker.html": false, + "constructor.tentative.any.html": false, + "constructor.tentative.any.worker.html": false, + "table.tentative.any.html": false, + "table.tentative.any.worker.html": false, + "type.tentative.any.html": false, + "type.tentative.any.worker.html": false + } + }, + "serialization": { + "module": { + "serialization-via-idb.any.html": false, + "serialization-via-idb.any.worker.html": false, + "serialization-via-notifications-api.any.html": false, + "serialization-via-notifications-api.any.worker.html": false, + "nested-worker-success.any.worker.html": true + }, + "arraybuffer": { + "transfer.window.html": false + } + }, + "webapi": { + "abort.any.html": true, + "abort.any.worker.html": true, + "body.any.html": true, + "body.any.worker.html": true, + "contenttype.any.html": true, + "contenttype.any.worker.html": true, + "empty-body.any.html": true, + "empty-body.any.worker.html": true, + "historical.any.html": false, + "historical.any.worker.html": false, + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "instantiateStreaming-bad-imports.any.html": true, + "instantiateStreaming-bad-imports.any.worker.html": true, + "instantiateStreaming.any.html": true, + "instantiateStreaming.any.worker.html": true, + "invalid-args.any.html": true, + "invalid-args.any.worker.html": true, + "invalid-code.any.html": true, + "invalid-code.any.worker.html": true, + "modified-contenttype.any.html": true, + "modified-contenttype.any.worker.html": true, + "origin.sub.any.html": [ + "Opaque response: compileStreaming", + "Opaque response: instantiateStreaming" + ], + "origin.sub.any.worker.html": [ + "Opaque response: compileStreaming", + "Opaque response: instantiateStreaming" + ], + "rejected-arg.any.html": true, + "rejected-arg.any.worker.html": true, + "status.any.html": true, + "status.any.worker.html": true + }, + "create_multiple_memory.worker.html": true + }, + "webidl": { + "ecmascript-binding": { + "es-exceptions": { + "DOMException-constants.any.html": true, + "DOMException-constants.any.worker.html": true, + "DOMException-constructor-and-prototype.any.html": true, + "DOMException-constructor-and-prototype.any.worker.html": true, + "DOMException-constructor-behavior.any.html": true, + "DOMException-constructor-behavior.any.worker.html": true, + "DOMException-custom-bindings.any.html": true, + "DOMException-custom-bindings.any.worker.html": true + }, + "class-string-interface.any.html": true, + "class-string-interface.any.worker.html": true, + "class-string-iterator-prototype-object.any.html": [ + "Object.prototype.toString applied after deleting @@toStringTag" + ], + "class-string-iterator-prototype-object.any.worker.html": [ + "Object.prototype.toString applied after deleting @@toStringTag" + ], + "class-string-named-properties-object.window.html": false, + "global-immutable-prototype.any.html": [ + "Setting to a different prototype" + ], + "global-object-implicit-this-value.any.html": [ + "Global object's getter throws when called on incompatible object", + "Global object's setter throws when called on incompatible object", + "Global object's operation throws when called on incompatible object", + "Global object's getter works when called on null / undefined", + "Global object's setter works when called on null / undefined" + ], + "global-object-implicit-this-value.any.worker.html": [ + "Global object's getter throws when called on incompatible object", + "Global object's setter throws when called on incompatible object", + "Global object's operation throws when called on incompatible object", + "Global object's getter works when called on null / undefined", + "Global object's setter works when called on null / undefined" + ], + "legacy-factor-function-subclass.window.html": false, + "no-regexp-special-casing.any.html": [ + "Conversion to a sequence works" + ], + "no-regexp-special-casing.any.worker.html": [ + "Conversion to a sequence works" + ], + "builtin-function-properties.any.html": true, + "builtin-function-properties.any.worker.html": true, + "observable-array-no-leak-of-internals.window.html": false, + "observable-array-ownkeys.window.html": false + }, + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "idlharness-shadowrealm.window.html": false + }, + "url": { + "historical.any.html": [ + "<a> and <area>.searchParams should be undefined", + "URL: no structured serialize/deserialize support", + "URLSearchParams: no structured serialize/deserialize support" + ], + "historical.any.worker.html": [ + "URL: no structured serialize/deserialize support", + "URLSearchParams: no structured serialize/deserialize support" + ], + "idlharness.any.html": true, + "idlharness.any.worker.html": true, + "toascii.window.html": [ + "aa-- (using <a>.host)", + "aa-- (using <a>.hostname)", + "aa-- (using <area>.host)", + "aa-- (using <area>.hostname)", + "a†-- (using <a>.host)", + "a†-- (using <a>.hostname)", + "a†-- (using <area>.host)", + "a†-- (using <area>.hostname)", + "ab--c (using <a>.host)", + "ab--c (using <a>.hostname)", + "ab--c (using <area>.host)", + "ab--c (using <area>.hostname)", + "-x (using <a>.host)", + "-x (using <a>.hostname)", + "-x (using <area>.host)", + "-x (using <area>.hostname)", + "-† (using <a>.host)", + "-† (using <a>.hostname)", + "-† (using <area>.host)", + "-† (using <area>.hostname)", + "-x.xn--zca (using <a>.host)", + "-x.xn--zca (using <a>.hostname)", + "-x.xn--zca (using <area>.host)", + "-x.xn--zca (using <area>.hostname)", + "-x.ß (using <a>.host)", + "-x.ß (using <a>.hostname)", + "-x.ß (using <area>.host)", + "-x.ß (using <area>.hostname)", + "x-.xn--zca (using <a>.host)", + "x-.xn--zca (using <a>.hostname)", + "x-.xn--zca (using <area>.host)", + "x-.xn--zca (using <area>.hostname)", + "x-.ß (using <a>.host)", + "x-.ß (using <a>.hostname)", + "x-.ß (using <area>.host)", + "x-.ß (using <area>.hostname)", + "x..xn--zca (using <a>.host)", + "x..xn--zca (using <a>.hostname)", + "x..xn--zca (using <area>.host)", + "x..xn--zca (using <area>.hostname)", + "x..ß (using <a>.host)", + "x..ß (using <a>.hostname)", + "x..ß (using <area>.host)", + "x..ß (using <area>.hostname)", + "xn--a (using <a>)", + "xn--a (using <a>.host)", + "xn--a (using <a>.hostname)", + "xn--a (using <area>)", + "xn--a (using <area>.host)", + "xn--a (using <area>.hostname)", + "xn--a.xn--zca (using <a>)", + "xn--a.xn--zca (using <a>.host)", + "xn--a.xn--zca (using <a>.hostname)", + "xn--a.xn--zca (using <area>)", + "xn--a.xn--zca (using <area>.host)", + "xn--a.xn--zca (using <area>.hostname)", + "xn--a.ß (using <a>)", + "xn--a.ß (using <a>.host)", + "xn--a.ß (using <a>.hostname)", + "xn--a.ß (using <area>)", + "xn--a.ß (using <area>.host)", + "xn--a.ß (using <area>.hostname)", + "xn--ls8h= (using <a>)", + "xn--ls8h= (using <a>.host)", + "xn--ls8h= (using <a>.hostname)", + "xn--ls8h= (using <area>)", + "xn--ls8h= (using <area>.host)", + "xn--ls8h= (using <area>.hostname)", + "xn--tešla (using <a>)", + "xn--tešla (using <a>.host)", + "xn--tešla (using <a>.hostname)", + "xn--tešla (using <area>)", + "xn--tešla (using <area>.host)", + "xn--tešla (using <area>.hostname)", + "xn--zca.xn--zca (using <a>.host)", + "xn--zca.xn--zca (using <a>.hostname)", + "xn--zca.xn--zca (using <area>.host)", + "xn--zca.xn--zca (using <area>.hostname)", + "xn--zca.ß (using <a>.host)", + "xn--zca.ß (using <a>.hostname)", + "xn--zca.ß (using <area>.host)", + "xn--zca.ß (using <area>.hostname)", + "ab--c.xn--zca (using <a>.host)", + "ab--c.xn--zca (using <a>.hostname)", + "ab--c.xn--zca (using <area>.host)", + "ab--c.xn--zca (using <area>.hostname)", + "ab--c.ß (using <a>.host)", + "ab--c.ß (using <a>.hostname)", + "ab--c.ß (using <area>.host)", + "ab--c.ß (using <area>.hostname)", + ".example (using URL)", + ".example (using URL.host)", + ".example (using URL.hostname)", + ".example (using <a>)", + ".example (using <a>.host)", + ".example (using <a>.hostname)", + ".example (using <area>)", + ".example (using <area>.host)", + ".example (using <area>.hostname)", + "xn--1ug.example (using URL)", + "xn--1ug.example (using URL.host)", + "xn--1ug.example (using URL.hostname)", + "xn--1ug.example (using <a>)", + "xn--1ug.example (using <a>.host)", + "xn--1ug.example (using <a>.hostname)", + "xn--1ug.example (using <area>)", + "xn--1ug.example (using <area>.host)", + "xn--1ug.example (using <area>.hostname)", + "يa (using <a>)", + "يa (using <a>.host)", + "يa (using <a>.hostname)", + "يa (using <area>)", + "يa (using <area>.host)", + "يa (using <area>.hostname)", + "xn--a-yoc (using <a>)", + "xn--a-yoc (using <a>.host)", + "xn--a-yoc (using <a>.hostname)", + "xn--a-yoc (using <area>)", + "xn--a-yoc (using <area>.host)", + "xn--a-yoc (using <area>.hostname)", + "ශ්රී (using <a>.host)", + "ශ්රී (using <a>.hostname)", + "ශ්රී (using <area>.host)", + "ශ්රී (using <area>.hostname)", + "نامهای (using <a>.host)", + "نامهای (using <a>.hostname)", + "نامهای (using <area>.host)", + "نامهای (using <area>.hostname)", + "�.com (using <a>)", + "�.com (using <a>.host)", + "�.com (using <a>.hostname)", + "�.com (using <area>)", + "�.com (using <area>.host)", + "�.com (using <area>.hostname)", + "xn--zn7c.com (using <a>)", + "xn--zn7c.com (using <a>.host)", + "xn--zn7c.com (using <a>.hostname)", + "xn--zn7c.com (using <area>)", + "xn--zn7c.com (using <area>.host)", + "xn--zn7c.com (using <area>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901x (using <a>.host)", + "x01234567890123456789012345678901234567890123456789012345678901x (using <a>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901x (using <area>.host)", + "x01234567890123456789012345678901234567890123456789012345678901x (using <area>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901† (using <a>.host)", + "x01234567890123456789012345678901234567890123456789012345678901† (using <a>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901† (using <area>.host)", + "x01234567890123456789012345678901234567890123456789012345678901† (using <area>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <a>.host)", + "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <a>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <area>.host)", + "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <area>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <a>.host)", + "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <a>.hostname)", + "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <area>.host)", + "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <area>.hostname)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <a>.host)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <a>.hostname)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <area>.host)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <area>.hostname)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <a>.host)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <a>.hostname)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <area>.host)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <area>.hostname)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <a>.host)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <a>.hostname)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <area>.host)", + "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <area>.hostname)", + "ab (using <a>.host)", + "ab (using <a>.hostname)", + "ab (using <area>.host)", + "ab (using <area>.hostname)", + "≠ (using <a>.host)", + "≠ (using <a>.hostname)", + "≠ (using <area>.host)", + "≠ (using <area>.hostname)", + "≮ (using <a>.host)", + "≮ (using <a>.hostname)", + "≮ (using <area>.host)", + "≮ (using <area>.hostname)", + "≯ (using <a>.host)", + "≯ (using <a>.hostname)", + "≯ (using <area>.host)", + "≯ (using <area>.hostname)" + ], + "url-origin.any.html": [ + "Origin parsing: <blob:blob:https://example.org/> without base", + "Origin parsing: <blob:ftp://host/path> without base", + "Origin parsing: <blob:ws://example.org/> without base", + "Origin parsing: <blob:wss://example.org/> without base" + ], + "url-origin.any.worker.html": [ + "Origin parsing: <blob:blob:https://example.org/> without base", + "Origin parsing: <blob:ftp://host/path> without base", + "Origin parsing: <blob:ws://example.org/> without base", + "Origin parsing: <blob:wss://example.org/> without base" + ], + "url-searchparams.any.html": true, + "url-searchparams.any.worker.html": true, + "url-setters-stripping.any.html": [ + "Setting port with leading U+0000 (https:)", + "Setting port with leading U+001F (https:)", + "Setting port with leading U+0000 (wpt++:)", + "Setting port with leading U+001F (wpt++:)" + ], + "url-setters-stripping.any.worker.html": [ + "Setting port with leading U+0000 (https:)", + "Setting port with leading U+001F (https:)", + "Setting port with leading U+0000 (wpt++:)", + "Setting port with leading U+001F (wpt++:)" + ], + "url-tojson.any.html": true, + "url-tojson.any.worker.html": true, + "urlencoded-parser.any.html": true, + "urlencoded-parser.any.worker.html": true, + "urlsearchparams-append.any.html": true, + "urlsearchparams-append.any.worker.html": true, + "urlsearchparams-constructor.any.html": true, + "urlsearchparams-constructor.any.worker.html": true, + "urlsearchparams-delete.any.html": [ + "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment" + ], + "urlsearchparams-delete.any.worker.html": [ + "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment" + ], + "urlsearchparams-foreach.any.html": true, + "urlsearchparams-foreach.any.worker.html": true, + "urlsearchparams-get.any.html": true, + "urlsearchparams-get.any.worker.html": true, + "urlsearchparams-getall.any.html": true, + "urlsearchparams-getall.any.worker.html": true, + "urlsearchparams-has.any.html": true, + "urlsearchparams-has.any.worker.html": true, + "urlsearchparams-set.any.html": true, + "urlsearchparams-set.any.worker.html": true, + "urlsearchparams-size.any.html": true, + "urlsearchparams-sort.any.html": true, + "urlsearchparams-sort.any.worker.html": true, + "urlsearchparams-stringifier.any.html": true, + "urlsearchparams-stringifier.any.worker.html": true, + "idlharness-shadowrealm.window.html": false, + "percent-encoding.window.html": [ + "Input † with encoding big5", + "Input † with encoding euc-kr", + "Input † with encoding utf-8", + "Input † with encoding windows-1252", + "Input \u000eA with encoding big5", + "Input \u000eA with encoding iso-2022-jp", + "Input \u000eA with encoding utf-8", + "Input ‾\\ with encoding iso-2022-jp", + "Input ‾\\ with encoding utf-8", + "Input with encoding gb18030", + "Input with encoding utf-8", + "Input − with encoding shift_jis", + "Input − with encoding utf-8", + "Input á| with encoding utf-8" + ], + "IdnaTestV2.window.html": [ + "ToASCII(\"ab\") C1", + "ToASCII(\"AB\") C1", + "ToASCII(\"Ab\") C1", + "ToASCII(\"xn--ab-j1t\") C1", + "ToASCII(\"ab\") C2", + "ToASCII(\"AB\") C2", + "ToASCII(\"Ab\") C2", + "ToASCII(\"xn--ab-m1t\") C2", + "ToASCII(\"1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.Aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc\") C1; C2; A4_2 (ignored)", + "ToASCII(\"xn--bß\") C1; C2", + "ToASCII(\"XN--BSS\") C1; C2", + "ToASCII(\"xn--bss\") C1; C2", + "ToASCII(\"Xn--Bss\") C1; C2", + "ToASCII(\"xn--xn--bss-7z6ccid\") C1; C2", + "ToASCII(\"Xn--Bß\") C1; C2", + "ToASCII(\"xn--xn--b-pqa5796ccahd\") C1; C2", + "ToASCII(\"ஹ\") C2", + "ToASCII(\"xn--dmc225h\") C2", + "ToASCII(\"\") C2", + "ToASCII(\"xn--1ug\") C2", + "ToASCII(\"ஹ\") C1", + "ToASCII(\"xn--dmc025h\") C1", + "ToASCII(\"\") C1", + "ToASCII(\"xn--0ug\") C1", + "ToASCII(\"ۯۯ\") C1", + "ToASCII(\"xn--cmba004q\") C1", + "ToASCII(\"ß۫。\") C2", + "ToASCII(\"SS۫。\") C2", + "ToASCII(\"ss۫。\") C2", + "ToASCII(\"Ss۫。\") C2", + "ToASCII(\"xn--ss-59d.xn--1ug\") C2", + "ToASCII(\"xn--zca012a.xn--1ug\") C2", + "ToASCII(\"긃.榶-\") C1; V3 (ignored)", + "ToASCII(\"긃.榶-\") C1; V3 (ignored)", + "ToASCII(\"xn--0ug3307c.xn----d87b\") C1; V3 (ignored)", + "ToASCII(\"Å둄-.\") C1; V3 (ignored)", + "ToASCII(\"Å둄-.\") C1; V3 (ignored)", + "ToASCII(\"Å둄-.\") C1; V3 (ignored)", + "ToASCII(\"Å둄-.\") C1; V3 (ignored)", + "ToASCII(\"å둄-.\") C1; V3 (ignored)", + "ToASCII(\"å둄-.\") C1; V3 (ignored)", + "ToASCII(\"xn----1fa1788k.xn--0ug\") C1; V3 (ignored)", + "ToASCII(\"å둄-.\") C1; V3 (ignored)", + "ToASCII(\"å둄-.\") C1; V3 (ignored)", + "ToASCII(\"ꡦᡑ1.。𐋣-\") C2; V3 (ignored); A4_2 (ignored)", + "ToASCII(\"xn--1-o7j663bdl7m..xn----381i\") C2; V3 (ignored); A4_2 (ignored)", + "ToASCII(\"1.䰹-。웈\") C2; V3 (ignored)", + "ToASCII(\"1.䰹-。웈\") C2; V3 (ignored)", + "ToASCII(\"1.xn----tgnz80r.xn--kp5b\") C2; V3 (ignored)", + "ToASCII(\"-3.ヌᢕ\") C2; V3 (ignored)", + "ToASCII(\"-3.xn--fbf739aq5o\") C2; V3 (ignored)", + "ToASCII(\"ς-。𝟭-\") C1; V3 (ignored)", + "ToASCII(\"ς-。1-\") C1; V3 (ignored)", + "ToASCII(\"Σ-。1-\") C1; V3 (ignored)", + "ToASCII(\"σ-。1-\") C1; V3 (ignored)", + "ToASCII(\"xn----zmb.xn--1--i1t\") C1; V3 (ignored)", + "ToASCII(\"xn----xmb.xn--1--i1t\") C1; V3 (ignored)", + "ToASCII(\"Σ-。𝟭-\") C1; V3 (ignored)", + "ToASCII(\"σ-。𝟭-\") C1; V3 (ignored)", + "ToASCII(\"ᡯ⚉姶🄉.۷🎪\") C2; P1; V6", + "ToASCII(\"𝟵隁⯮.᠍\") C1", + "ToASCII(\"9隁⯮.᠍\") C1", + "ToASCII(\"xn--9-mfs8024b.xn--0ug\") C1", + "ToASCII(\"ß꫶ᢥ.⊶ⴡⴖ\") C1", + "ToASCII(\"ss꫶ᢥ.⊶ⴡⴖ\") C1", + "ToASCII(\"xn--ss-4ep585bkm5p.xn--ifh802b6a\") C1", + "ToASCII(\"xn--zca682johfi89m.xn--ifh802b6a\") C1", + "ToASCII(\"ß꫶ᢥ.⊶ⴡⴖ\") C1", + "ToASCII(\"ss꫶ᢥ.⊶ⴡⴖ\") C1", + "ToASCII(\"-。\") C2; V3 (ignored)", + "ToASCII(\"-。\") C2; V3 (ignored)", + "ToASCII(\"-.xn--1ug\") C2; V3 (ignored)", + "ToASCII(\"ς-.ⴣ𦟙\") C2; V3 (ignored)", + "ToASCII(\"σ-.ⴣ𦟙\") C2; V3 (ignored)", + "ToASCII(\"xn----zmb048s.xn--rlj2573p\") C2; V3 (ignored)", + "ToASCII(\"xn----xmb348s.xn--rlj2573p\") C2; V3 (ignored)", + "ToASCII(\"鱊。\") C1", + "ToASCII(\"xn--rt6a.xn--0ug\") C1", + "ToASCII(\"ⴚ。ς\") C1", + "ToASCII(\"ⴚ。σ\") C1", + "ToASCII(\"xn--0ug262c.xn--4xa\") C1", + "ToASCII(\"xn--0ug262c.xn--3xa\") C1", + "ToASCII(\"ⴚ。ς\") C1", + "ToASCII(\"ⴚ。σ\") C1", + "ToASCII(\"⾕。꥓̐ꡎ\") C1; C2", + "ToASCII(\"⾕。꥓̐ꡎ\") C1; C2", + "ToASCII(\"谷。꥓̐ꡎ\") C1; C2", + "ToASCII(\"xn--1ug0273b.xn--0sa359l6n7g13a\") C1; C2", + "ToASCII(\"。\") C1; C2", + "ToASCII(\"xn--1ug.xn--0ug\") C1; C2", + "ToASCII(\"。。\") C1; A4_2 (ignored)", + "ToASCII(\"xn--0ug..\") C1; A4_2 (ignored)", + "ToASCII(\"ᡲ-𝟹.ß--\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-3.ß--\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-3.SS--\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-3.ss--\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-3.Ss--\") C1; V3 (ignored)", + "ToASCII(\"xn---3-p9o.xn--ss---276a\") C1; V3 (ignored)", + "ToASCII(\"xn---3-p9o.xn-----fia9303a\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-𝟹.SS--\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-𝟹.ss--\") C1; V3 (ignored)", + "ToASCII(\"ᡲ-𝟹.Ss--\") C1; V3 (ignored)", + "ToASCII(\"𝟙。𝟸⁷\") C2", + "ToASCII(\"1。27\") C2", + "ToASCII(\"1.xn--27-l1tb\") C2", + "ToASCII(\".ßⴉ-\") C1; V3 (ignored)", + "ToASCII(\".ssⴉ-\") C1; V3 (ignored)", + "ToASCII(\".Ssⴉ-\") C1; V3 (ignored)", + "ToASCII(\"xn--0ug.xn--ss--bi1b\") C1; V3 (ignored)", + "ToASCII(\"xn--0ug.xn----pfa2305a\") C1; V3 (ignored)", + "ToASCII(\"ⴏ󠅋-.ⴉ\") C2; V3 (ignored)", + "ToASCII(\"xn----3vs.xn--1ug532c\") C2; V3 (ignored)", + "ToASCII(\"ⴏ󠅋-.ⴉ\") C2; V3 (ignored)", + "ToASCII(\"。ⴖͦ.\") C1; A4_2 (ignored)", + "ToASCII(\".xn--hva754s.xn--0ug\") C1; A4_2 (ignored)", + "ToASCII(\"攌꯭。ᢖ-ⴘ\") C2", + "ToASCII(\"xn--1ug592ykp6b.xn----mck373i\") C2", + "ToASCII(\"ꖨ.16.3툒۳\") C1", + "ToASCII(\"ꖨ.16.3툒۳\") C1", + "ToASCII(\"xn--0ug2473c.16.xn--3-nyc0117m\") C1", + "ToASCII(\"𝟏𝨙⸖.\") C2", + "ToASCII(\"1𝨙⸖.\") C2", + "ToASCII(\"xn--1-5bt6845n.xn--1ug\") C2", + "ToASCII(\"-.ⴞ𐋷\") C2; V3 (ignored)", + "ToASCII(\"xn----ugn.xn--mlj8559d\") C2; V3 (ignored)", + "ToASCII(\"嬃𝍌.ୄ\") C2", + "ToASCII(\"嬃𝍌.ୄ\") C2", + "ToASCII(\"xn--b6s0078f.xn--0ic557h\") C2", + "ToASCII(\".F\") C2", + "ToASCII(\".f\") C2", + "ToASCII(\"xn--1ug.f\") C2", + "ToASCII(\"㨲。ß\") C2", + "ToASCII(\"㨲。ß\") C2", + "ToASCII(\"㨲。SS\") C2", + "ToASCII(\"㨲。ss\") C2", + "ToASCII(\"㨲。Ss\") C2", + "ToASCII(\"xn--1ug914h.ss\") C2", + "ToASCII(\"xn--1ug914h.xn--zca\") C2", + "ToASCII(\"㨲。SS\") C2", + "ToASCII(\"㨲。ss\") C2", + "ToASCII(\"㨲。Ss\") C2", + "ToASCII(\"璼𝨭。󠇟\") C1", + "ToASCII(\"璼𝨭。󠇟\") C1", + "ToASCII(\"xn--gky8837e.xn--0ug\") C1", + "ToASCII(\".\") C1", + "ToASCII(\"xn--0ug.xn--0ug\") C1", + "ToASCII(\"𝟠4󠇗𝈻.𐋵⛧\") C2", + "ToASCII(\"84󠇗𝈻.𐋵⛧\") C2", + "ToASCII(\"xn--84-s850a.xn--1uga573cfq1w\") C2", + "ToASCII(\"󠆪。ß𑓃\") C1; C2", + "ToASCII(\"󠆪。ß𑓃\") C1; C2", + "ToASCII(\"󠆪。SS𑓃\") C1; C2", + "ToASCII(\"󠆪。ss𑓃\") C1; C2", + "ToASCII(\"󠆪。Ss𑓃\") C1; C2", + "ToASCII(\"xn--0ugb.xn--ss-bh7o\") C1; C2", + "ToASCII(\"xn--0ugb.xn--zca0732l\") C1; C2", + "ToASCII(\"󠆪。SS𑓃\") C1; C2", + "ToASCII(\"󠆪。ss𑓃\") C1; C2", + "ToASCII(\"󠆪。Ss𑓃\") C1; C2", + "ToASCII(\"。ヶ䒩.ꡪ\") C1; A4_2 (ignored)", + "ToASCII(\".xn--0ug287dj0o.xn--gd9a\") C1; A4_2 (ignored)", + "ToASCII(\"梉。\") C1", + "ToASCII(\"xn--7zv.xn--0ug\") C1", + "ToASCII(\"𐋷。\") C2", + "ToASCII(\"xn--r97c.xn--1ug\") C2" + ], + "javascript-urls.window.html": false, + "url-constructor.any.html?exclude=(file|javascript|mailto)": [ + "Parsing: <non-spec:/.//> without base", + "Parsing: <non-spec:/..//> without base", + "Parsing: <non-spec:/a/..//> without base", + "Parsing: <non-spec:/.//path> without base", + "Parsing: <non-spec:/..//path> without base", + "Parsing: <non-spec:/a/..//path> without base", + "Parsing: </.//path> against <non-spec:/p>", + "Parsing: </..//path> against <non-spec:/p>", + "Parsing: <..//path> against <non-spec:/p>", + "Parsing: <a/..//path> against <non-spec:/p>", + "Parsing: <> against <non-spec:/..//p>", + "Parsing: <path> against <non-spec:/..//p>", + "Parsing: <///test> against <http://example.org/>", + "Parsing: <///\\//\\//test> against <http://example.org/>", + "Parsing: <///example.org/path> against <http://example.org/>", + "Parsing: <///example.org/../path> against <http://example.org/>", + "Parsing: <///example.org/../../> against <http://example.org/>", + "Parsing: <///example.org/../path/../../> against <http://example.org/>", + "Parsing: <///example.org/../path/../../path> against <http://example.org/>", + "Parsing: </\\//\\/a/../> against <file:///>" + ], + "url-constructor.any.html?include=file": [ + "Parsing: </> against <file://h/C:/a/b>", + "Parsing: <file:\\\\//> without base", + "Parsing: <file:\\\\\\\\> without base", + "Parsing: <file:\\\\\\\\?fox> without base", + "Parsing: <file:\\\\\\\\#guppy> without base", + "Parsing: <file://spider///> without base", + "Parsing: <file:\\\\localhost//> without base", + "Parsing: <file://\\/localhost//cat> without base", + "Parsing: <file://localhost//a//../..//> without base", + "Parsing: </////mouse> against <file:///elephant>", + "Parsing: <\\/localhost//pig> against <file://lion/>", + "Parsing: <//localhost//pig> against <file://lion/>", + "Parsing: </..//localhost//pig> against <file://lion/>", + "Parsing: <C|> against <file://host/dir/file>", + "Parsing: <C|> against <file://host/D:/dir1/dir2/file>", + "Parsing: <C|#> against <file://host/dir/file>", + "Parsing: <C|?> against <file://host/dir/file>", + "Parsing: <C|/> against <file://host/dir/file>", + "Parsing: <C|\n/> against <file://host/dir/file>", + "Parsing: <C|\\> against <file://host/dir/file>", + "Parsing: </c:/foo/bar> against <file://host/path>", + "Parsing: <file://example.net/C:/> without base", + "Parsing: <file://1.2.3.4/C:/> without base", + "Parsing: <file://[1::8]/C:/> without base", + "Parsing: <C|/> against <file://host/>", + "Parsing: </C:/> against <file://host/>", + "Parsing: <file:C:/> against <file://host/>", + "Parsing: <file:/C:/> against <file://host/>", + "Parsing: <file://localhost//a//../..//foo> without base", + "Parsing: <file://localhost////foo> without base", + "Parsing: <file:////foo> without base", + "Parsing: <file:////one/two> against <file:///>", + "Parsing: <////one/two> against <file:///>", + "Parsing: <file:///.//> against <file:////>", + "Parsing: <file:.//p> without base", + "Parsing: <file:/.//p> without base", + "Parsing: </\\//\\/a/../> against <file:///>" + ], + "url-constructor.any.html?include=javascript": true, + "url-constructor.any.html?include=mailto": true, + "url-constructor.any.worker.html?exclude=(file|javascript|mailto)": [ + "Parsing: <non-spec:/.//> without base", + "Parsing: <non-spec:/..//> without base", + "Parsing: <non-spec:/a/..//> without base", + "Parsing: <non-spec:/.//path> without base", + "Parsing: <non-spec:/..//path> without base", + "Parsing: <non-spec:/a/..//path> without base", + "Parsing: </.//path> against <non-spec:/p>", + "Parsing: </..//path> against <non-spec:/p>", + "Parsing: <..//path> against <non-spec:/p>", + "Parsing: <a/..//path> against <non-spec:/p>", + "Parsing: <> against <non-spec:/..//p>", + "Parsing: <path> against <non-spec:/..//p>", + "Parsing: <///test> against <http://example.org/>", + "Parsing: <///\\//\\//test> against <http://example.org/>", + "Parsing: <///example.org/path> against <http://example.org/>", + "Parsing: <///example.org/../path> against <http://example.org/>", + "Parsing: <///example.org/../../> against <http://example.org/>", + "Parsing: <///example.org/../path/../../> against <http://example.org/>", + "Parsing: <///example.org/../path/../../path> against <http://example.org/>", + "Parsing: </\\//\\/a/../> against <file:///>" + ], + "url-constructor.any.worker.html?include=file": [ + "Parsing: </> against <file://h/C:/a/b>", + "Parsing: <file:\\\\//> without base", + "Parsing: <file:\\\\\\\\> without base", + "Parsing: <file:\\\\\\\\?fox> without base", + "Parsing: <file:\\\\\\\\#guppy> without base", + "Parsing: <file://spider///> without base", + "Parsing: <file:\\\\localhost//> without base", + "Parsing: <file://\\/localhost//cat> without base", + "Parsing: <file://localhost//a//../..//> without base", + "Parsing: </////mouse> against <file:///elephant>", + "Parsing: <\\/localhost//pig> against <file://lion/>", + "Parsing: <//localhost//pig> against <file://lion/>", + "Parsing: </..//localhost//pig> against <file://lion/>", + "Parsing: <C|> against <file://host/dir/file>", + "Parsing: <C|> against <file://host/D:/dir1/dir2/file>", + "Parsing: <C|#> against <file://host/dir/file>", + "Parsing: <C|?> against <file://host/dir/file>", + "Parsing: <C|/> against <file://host/dir/file>", + "Parsing: <C|\n/> against <file://host/dir/file>", + "Parsing: <C|\\> against <file://host/dir/file>", + "Parsing: </c:/foo/bar> against <file://host/path>", + "Parsing: <file://example.net/C:/> without base", + "Parsing: <file://1.2.3.4/C:/> without base", + "Parsing: <file://[1::8]/C:/> without base", + "Parsing: <C|/> against <file://host/>", + "Parsing: </C:/> against <file://host/>", + "Parsing: <file:C:/> against <file://host/>", + "Parsing: <file:/C:/> against <file://host/>", + "Parsing: <file://localhost//a//../..//foo> without base", + "Parsing: <file://localhost////foo> without base", + "Parsing: <file:////foo> without base", + "Parsing: <file:////one/two> against <file:///>", + "Parsing: <////one/two> against <file:///>", + "Parsing: <file:///.//> against <file:////>", + "Parsing: <file:.//p> without base", + "Parsing: <file:/.//p> without base", + "Parsing: </\\//\\/a/../> against <file:///>" + ], + "url-constructor.any.worker.html?include=javascript": true, + "url-constructor.any.worker.html?include=mailto": true, + "url-setters-a-area.window.html?exclude=(file|javascript|mailto)": [ + "<a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.", + "<area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.", + "<a>: Setting <a://example.net>.protocol = 'b'", + "<area>: Setting <a://example.net>.protocol = 'b'", + "<a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased", + "<area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased", + "<a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected", + "<area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected", + "<a>: Setting <a://example.net>.protocol = '0b' No leading digit", + "<area>: Setting <a://example.net>.protocol = '0b' No leading digit", + "<a>: Setting <a://example.net>.protocol = '+b' No leading punctuation", + "<area>: Setting <a://example.net>.protocol = '+b' No leading punctuation", + "<a>: Setting <a://example.net>.protocol = 'bC0+-.'", + "<area>: Setting <a://example.net>.protocol = 'bC0+-.'", + "<a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable", + "<area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable", + "<a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected", + "<area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected", + "<a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file", + "<area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file", + "<a>: Setting <https://example.net:1234>.protocol = 'file'", + "<area>: Setting <https://example.net:1234>.protocol = 'file'", + "<a>: Setting <wss://x:x@example.net:1234>.protocol = 'file'", + "<area>: Setting <wss://x:x@example.net:1234>.protocol = 'file'", + "<a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special", + "<area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special", + "<a>: Setting <https://example.net>.protocol = 's'", + "<area>: Setting <https://example.net>.protocol = 's'", + "<a>: Setting <ftp://example.net>.protocol = 'test'", + "<area>: Setting <ftp://example.net>.protocol = 'test'", + "<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special", + "<area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special", + "<a>: Setting <ssh://me@example.net>.protocol = 'https'", + "<area>: Setting <ssh://me@example.net>.protocol = 'https'", + "<a>: Setting <ssh://me@example.net>.protocol = 'file'", + "<area>: Setting <ssh://me@example.net>.protocol = 'file'", + "<a>: Setting <ssh://example.net>.protocol = 'file'", + "<area>: Setting <ssh://example.net>.protocol = 'file'", + "<a>: Setting <nonsense:///test>.protocol = 'https'", + "<area>: Setting <nonsense:///test>.protocol = 'https'", + "<a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored", + "<area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored", + "<a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored", + "<area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored", + "<a>: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.", + "<area>: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.", + "<a>: Setting <http://test/>.protocol = 'h\r\ntt\tps' Tab and newline are stripped", + "<area>: Setting <http://test/>.protocol = 'h\r\ntt\tps' Tab and newline are stripped", + "<a>: Setting <http://test/>.protocol = 'https\r'", + "<area>: Setting <http://test/>.protocol = 'https\r'", + "<a>: Setting <http://test/>.protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op", + "<area>: Setting <http://test/>.protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op", + "<a>: Setting <http://test/>.protocol = 'https\f'", + "<area>: Setting <http://test/>.protocol = 'https\f'", + "<a>: Setting <http://test/>.protocol = 'https\u000e'", + "<area>: Setting <http://test/>.protocol = 'https\u000e'", + "<a>: Setting <http://test/>.protocol = 'https '", + "<area>: Setting <http://test/>.protocol = 'https '", + "<a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username", + "<area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username", + "<a>: Setting <http://example.net>.username = 'me'", + "<area>: Setting <http://example.net>.username = 'me'", + "<a>: Setting <http://:secret@example.net>.username = 'me'", + "<area>: Setting <http://:secret@example.net>.username = 'me'", + "<a>: Setting <http://me@example.net>.username = ''", + "<area>: Setting <http://me@example.net>.username = ''", + "<a>: Setting <http://me:secret@example.net>.username = ''", + "<area>: Setting <http://me:secret@example.net>.username = ''", + "<a>: Setting <http://example.net>.username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.", + "<area>: Setting <http://example.net>.username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.", + "<a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.", + "<area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.", + "<a>: Setting <sc:///>.username = 'x'", + "<area>: Setting <sc:///>.username = 'x'", + "<a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password", + "<area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password", + "<a>: Setting <http://example.net>.password = 'secret'", + "<area>: Setting <http://example.net>.password = 'secret'", + "<a>: Setting <http://me@example.net>.password = 'secret'", + "<area>: Setting <http://me@example.net>.password = 'secret'", + "<a>: Setting <http://:secret@example.net>.password = ''", + "<area>: Setting <http://:secret@example.net>.password = ''", + "<a>: Setting <http://me:secret@example.net>.password = ''", + "<area>: Setting <http://me:secret@example.net>.password = ''", + "<a>: Setting <http://example.net>.password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.", + "<area>: Setting <http://example.net>.password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.", + "<a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.", + "<area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.", + "<a>: Setting <sc:///>.password = 'x'", + "<area>: Setting <sc:///>.password = 'x'", + "<a>: Setting <sc://x/>.host = '\u0000' Non-special scheme", + "<area>: Setting <sc://x/>.host = '\u0000' Non-special scheme", + "<a>: Setting <sc://x/>.host = '\t'", + "<area>: Setting <sc://x/>.host = '\t'", + "<a>: Setting <sc://x/>.host = '\n'", + "<area>: Setting <sc://x/>.host = '\n'", + "<a>: Setting <sc://x/>.host = '\r'", + "<area>: Setting <sc://x/>.host = '\r'", + "<a>: Setting <sc://x/>.host = ' '", + "<area>: Setting <sc://x/>.host = ' '", + "<a>: Setting <sc://x/>.host = '#'", + "<area>: Setting <sc://x/>.host = '#'", + "<a>: Setting <sc://x/>.host = '/'", + "<area>: Setting <sc://x/>.host = '/'", + "<a>: Setting <sc://x/>.host = '?'", + "<area>: Setting <sc://x/>.host = '?'", + "<a>: Setting <sc://x/>.host = '@'", + "<area>: Setting <sc://x/>.host = '@'", + "<a>: Setting <sc://x/>.host = 'ß'", + "<area>: Setting <sc://x/>.host = 'ß'", + "<a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing", + "<area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing", + "<a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no host", + "<area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no host", + "<a>: Setting <http://example.net>.host = 'example.com:8080'", + "<area>: Setting <http://example.net>.host = 'example.com:8080'", + "<a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value", + "<area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value", + "<a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified", + "<area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified", + "<a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes", + "<area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes", + "<a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes", + "<area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes", + "<a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host", + "<area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host", + "<a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized", + "<area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized", + "<a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized", + "<area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized", + "<a>: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416", + "<area>: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416", + "<a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed", + "<area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed", + "<a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed", + "<area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed", + "<a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme", + "<area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme", + "<a>: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port", + "<area>: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port", + "<a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored", + "<area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored", + "<a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored", + "<area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored", + "<a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored", + "<area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored", + "<a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored", + "<area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored", + "<a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored", + "<area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored", + "<a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored", + "<area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored", + "<a>: Setting <http://example.net/path>.host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<area>: Setting <http://example.net/path>.host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<a>: Setting <http://example.net/path>.host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<area>: Setting <http://example.net/path>.host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<a>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + "<area>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + "<a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers", + "<area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers", + "<a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.", + "<area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.", + "<a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6", + "<area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6", + "<a>: Setting <http://example.net/>.host = '[::1.2.3.4x]'", + "<area>: Setting <http://example.net/>.host = '[::1.2.3.4x]'", + "<a>: Setting <http://example.net/>.host = '[::1.2.3.]'", + "<area>: Setting <http://example.net/>.host = '[::1.2.3.]'", + "<a>: Setting <http://example.net/>.host = '[::1.2.]'", + "<area>: Setting <http://example.net/>.host = '[::1.2.]'", + "<a>: Setting <http://example.net/>.host = '[::1.]'", + "<area>: Setting <http://example.net/>.host = '[::1.]'", + "<a>: Setting <sc://test@test/>.host = ''", + "<area>: Setting <sc://test@test/>.host = ''", + "<a>: Setting <sc://test:12/>.host = ''", + "<area>: Setting <sc://test:12/>.host = ''", + "<a>: Setting <http://example.com/>.host = '///bad.com' Leading / is not stripped", + "<area>: Setting <http://example.com/>.host = '///bad.com' Leading / is not stripped", + "<a>: Setting <sc://example.com/>.host = '///bad.com' Leading / is not stripped", + "<area>: Setting <sc://example.com/>.host = '///bad.com' Leading / is not stripped", + "<a>: Setting <https://example.com/>.host = 'a%C2%ADb'", + "<area>: Setting <https://example.com/>.host = 'a%C2%ADb'", + "<a>: Setting <https://example.com/>.host = ''", + "<area>: Setting <https://example.com/>.host = ''", + "<a>: Setting <https://example.com/>.host = '%C2%AD'", + "<area>: Setting <https://example.com/>.host = '%C2%AD'", + "<a>: Setting <https://example.com/>.host = 'xn--'", + "<area>: Setting <https://example.com/>.host = 'xn--'", + "<a>: Setting <sc://x/>.hostname = '\u0000' Non-special scheme", + "<area>: Setting <sc://x/>.hostname = '\u0000' Non-special scheme", + "<a>: Setting <sc://x/>.hostname = '\t'", + "<area>: Setting <sc://x/>.hostname = '\t'", + "<a>: Setting <sc://x/>.hostname = '\n'", + "<area>: Setting <sc://x/>.hostname = '\n'", + "<a>: Setting <sc://x/>.hostname = '\r'", + "<area>: Setting <sc://x/>.hostname = '\r'", + "<a>: Setting <sc://x/>.hostname = ' '", + "<area>: Setting <sc://x/>.hostname = ' '", + "<a>: Setting <sc://x/>.hostname = '#'", + "<area>: Setting <sc://x/>.hostname = '#'", + "<a>: Setting <sc://x/>.hostname = '/'", + "<area>: Setting <sc://x/>.hostname = '/'", + "<a>: Setting <sc://x/>.hostname = '?'", + "<area>: Setting <sc://x/>.hostname = '?'", + "<a>: Setting <sc://x/>.hostname = '@'", + "<area>: Setting <sc://x/>.hostname = '@'", + "<a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no host", + "<area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no host", + "<a>: Setting <http://example.net:8080>.hostname = 'example.com'", + "<area>: Setting <http://example.net:8080>.hostname = 'example.com'", + "<a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes", + "<area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes", + "<a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes", + "<area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes", + "<a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host", + "<area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host", + "<a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized", + "<area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized", + "<a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized", + "<area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized", + "<a>: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value", + "<area>: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value", + "<a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value", + "<area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value", + "<a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored", + "<area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored", + "<a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored", + "<area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored", + "<a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored", + "<area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored", + "<a>: Setting <http://example.net/path>.hostname = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<area>: Setting <http://example.net/path>.hostname = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + "<area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + "<a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6", + "<area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6", + "<a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'", + "<area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'", + "<a>: Setting <http://example.net/>.hostname = '[::1.2.3.]'", + "<area>: Setting <http://example.net/>.hostname = '[::1.2.3.]'", + "<a>: Setting <http://example.net/>.hostname = '[::1.2.]'", + "<area>: Setting <http://example.net/>.hostname = '[::1.2.]'", + "<a>: Setting <http://example.net/>.hostname = '[::1.]'", + "<area>: Setting <http://example.net/>.hostname = '[::1.]'", + "<a>: Setting <sc://test@test/>.hostname = ''", + "<area>: Setting <sc://test@test/>.hostname = ''", + "<a>: Setting <sc://test:12/>.hostname = ''", + "<area>: Setting <sc://test:12/>.hostname = ''", + "<a>: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path", + "<area>: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path", + "<a>: Setting <non-spec:/.//p>.hostname = ''", + "<area>: Setting <non-spec:/.//p>.hostname = ''", + "<a>: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not stripped", + "<area>: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not stripped", + "<a>: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not stripped", + "<area>: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not stripped", + "<a>: Setting <https://example.com/>.hostname = 'a%C2%ADb'", + "<area>: Setting <https://example.com/>.hostname = 'a%C2%ADb'", + "<a>: Setting <https://example.com/>.hostname = ''", + "<area>: Setting <https://example.com/>.hostname = ''", + "<a>: Setting <https://example.com/>.hostname = '%C2%AD'", + "<area>: Setting <https://example.com/>.hostname = '%C2%AD'", + "<a>: Setting <https://example.com/>.hostname = 'xn--'", + "<area>: Setting <https://example.com/>.hostname = 'xn--'", + "<a>: Setting <http://example.net>.port = '8080'", + "<area>: Setting <http://example.net>.port = '8080'", + "<a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value", + "<area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value", + "<a>: Setting <http://example.net:8080>.port = '80' Default port number is removed", + "<area>: Setting <http://example.net:8080>.port = '80' Default port number is removed", + "<a>: Setting <https://example.net:4433>.port = '443' Default port number is removed", + "<area>: Setting <https://example.net:4433>.port = '443' Default port number is removed", + "<a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme", + "<area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme", + "<a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored", + "<area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored", + "<a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored", + "<area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored", + "<a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored", + "<area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored", + "<a>: Setting <http://example.net/path>.port = '8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<area>: Setting <http://example.net/path>.port = '8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + "<a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers", + "<area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers", + "<a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error", + "<area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error", + "<a>: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number", + "<area>: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number", + "<a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error", + "<area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error", + "<a>: Setting <non-base:value>.port = '12'", + "<area>: Setting <non-base:value>.port = '12'", + "<a>: Setting <sc:///>.port = '12'", + "<area>: Setting <sc:///>.port = '12'", + "<a>: Setting <sc://x/>.port = '12'", + "<area>: Setting <sc://x/>.port = '12'", + "<a>: Setting <https://domain.com:443>.port = '\t8080' Leading u0009 on special scheme", + "<area>: Setting <https://domain.com:443>.port = '\t8080' Leading u0009 on special scheme", + "<a>: Setting <wpt++://domain.com:443>.port = '\t8080' Leading u0009 on non-special scheme", + "<area>: Setting <wpt++://domain.com:443>.port = '\t8080' Leading u0009 on non-special scheme", + "<a>: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as port", + "<area>: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as port", + "<a>: Setting <data:original>.pathname = 'new value'", + "<area>: Setting <data:original>.pathname = 'new value'", + "<a>: Setting <sc:original>.pathname = 'new value'", + "<area>: Setting <sc:original>.pathname = 'new value'", + "<a>: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased", + "<area>: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased", + "<a>: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased", + "<area>: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased", + "<a>: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erased", + "<area>: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erased", + "<a>: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slash", + "<area>: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slash", + "<a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'", + "<area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'", + "<a>: Setting <https://example.net#nav>.pathname = 'home'", + "<area>: Setting <https://example.net#nav>.pathname = 'home'", + "<a>: Setting <https://example.net#nav>.pathname = '../home'", + "<area>: Setting <https://example.net#nav>.pathname = '../home'", + "<a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs", + "<area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs", + "<a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs", + "<area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs", + "<a>: Setting <a:/>.pathname = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.", + "<area>: Setting <a:/>.pathname = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.", + "<a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.", + "<area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.", + "<a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded", + "<area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded", + "<a>: Setting <http://example.net>.pathname = '#' # needs to be encoded", + "<area>: Setting <http://example.net>.pathname = '#' # needs to be encoded", + "<a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme", + "<area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme", + "<a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme", + "<area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme", + "<a>: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encoding", + "<area>: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encoding", + "<a>: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encoding", + "<area>: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encoding", + "<a>: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path", + "<area>: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path", + "<a>: Setting <non-spec:/>.pathname = '/..//p'", + "<area>: Setting <non-spec:/>.pathname = '/..//p'", + "<a>: Setting <non-spec:/>.pathname = '//p'", + "<area>: Setting <non-spec:/>.pathname = '//p'", + "<a>: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", + "<area>: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", + "<a>: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020", + "<area>: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020", + "<a>: Setting <sc:/nospace>.pathname = 'space '", + "<area>: Setting <sc:/nospace>.pathname = 'space '", + "<a>: Setting <http://example.net>.pathname = ' ' Trailing space should be encoded", + "<area>: Setting <http://example.net>.pathname = ' ' Trailing space should be encoded", + "<a>: Setting <http://example.net>.pathname = '\u0000' Trailing C0 control should be encoded", + "<area>: Setting <http://example.net>.pathname = '\u0000' Trailing C0 control should be encoded", + "<a>: Setting <https://example.net#nav>.search = 'lang=fr'", + "<area>: Setting <https://example.net#nav>.search = 'lang=fr'", + "<a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'", + "<area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'", + "<a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'", + "<area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'", + "<a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'", + "<area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'", + "<a>: Setting <https://example.net?lang=en-US#nav>.search = '?'", + "<area>: Setting <https://example.net?lang=en-US#nav>.search = '?'", + "<a>: Setting <https://example.net?lang=en-US#nav>.search = ''", + "<area>: Setting <https://example.net?lang=en-US#nav>.search = ''", + "<a>: Setting <https://example.net?lang=en-US>.search = ''", + "<area>: Setting <https://example.net?lang=en-US>.search = ''", + "<a>: Setting <https://example.net>.search = ''", + "<area>: Setting <https://example.net>.search = ''", + "<a>: Setting <a:/>.search = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.", + "<area>: Setting <a:/>.search = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.", + "<a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is", + "<area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is", + "<a>: Setting <data:space ?query>.search = '' Drop trailing spaces from trailing opaque paths", + "<area>: Setting <data:space ?query>.search = '' Drop trailing spaces from trailing opaque paths", + "<a>: Setting <sc:space ?query>.search = ''", + "<area>: Setting <sc:space ?query>.search = ''", + "<a>: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths", + "<area>: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths", + "<a>: Setting <sc:space ?query#fragment>.search = ''", + "<area>: Setting <sc:space ?query#fragment>.search = ''", + "<a>: Setting <http://example.net>.search = ' ' Trailing space should be encoded", + "<area>: Setting <http://example.net>.search = ' ' Trailing space should be encoded", + "<a>: Setting <http://example.net>.search = '\u0000' Trailing C0 control should be encoded", + "<area>: Setting <http://example.net>.search = '\u0000' Trailing C0 control should be encoded", + "<a>: Setting <https://example.net>.hash = 'main'", + "<area>: Setting <https://example.net>.hash = 'main'", + "<a>: Setting <https://example.net#nav>.hash = 'main'", + "<area>: Setting <https://example.net#nav>.hash = 'main'", + "<a>: Setting <https://example.net?lang=en-US>.hash = '##nav'", + "<area>: Setting <https://example.net?lang=en-US>.hash = '##nav'", + "<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'", + "<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'", + "<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#'", + "<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#'", + "<a>: Setting <https://example.net?lang=en-US#nav>.hash = ''", + "<area>: Setting <https://example.net?lang=en-US#nav>.hash = ''", + "<a>: Setting <http://example.net>.hash = '#foo bar'", + "<area>: Setting <http://example.net>.hash = '#foo bar'", + "<a>: Setting <http://example.net>.hash = '#foo\"bar'", + "<area>: Setting <http://example.net>.hash = '#foo\"bar'", + "<a>: Setting <http://example.net>.hash = '#foo<bar'", + "<area>: Setting <http://example.net>.hash = '#foo<bar'", + "<a>: Setting <http://example.net>.hash = '#foo>bar'", + "<area>: Setting <http://example.net>.hash = '#foo>bar'", + "<a>: Setting <http://example.net>.hash = '#foo`bar'", + "<area>: Setting <http://example.net>.hash = '#foo`bar'", + "<a>: Setting <a:/>.hash = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' Simple percent-encoding; tabs and newlines are removed", + "<area>: Setting <a:/>.hash = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' Simple percent-encoding; tabs and newlines are removed", + "<a>: Setting <http://example.net>.hash = 'a\u0000b' Percent-encode NULLs in fragment", + "<area>: Setting <http://example.net>.hash = 'a\u0000b' Percent-encode NULLs in fragment", + "<a>: Setting <non-spec:/>.hash = 'a\u0000b' Percent-encode NULLs in fragment", + "<area>: Setting <non-spec:/>.hash = 'a\u0000b' Percent-encode NULLs in fragment", + "<a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is", + "<area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is", + "<a>: Setting <data:space #fragment>.hash = '' Drop trailing spaces from trailing opaque paths", + "<area>: Setting <data:space #fragment>.hash = '' Drop trailing spaces from trailing opaque paths", + "<a>: Setting <sc:space #fragment>.hash = ''", + "<area>: Setting <sc:space #fragment>.hash = ''", + "<a>: Setting <data:space ?query#fragment>.hash = '' Do not drop trailing spaces from non-trailing opaque paths", + "<area>: Setting <data:space ?query#fragment>.hash = '' Do not drop trailing spaces from non-trailing opaque paths", + "<a>: Setting <sc:space ?query#fragment>.hash = ''", + "<area>: Setting <sc:space ?query#fragment>.hash = ''", + "<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded", + "<area>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded", + "<a>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded", + "<area>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded" + ], + "url-setters-a-area.window.html?include=file": [ + "<a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host", + "<area>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host", + "<a>: Setting <file:///test>.protocol = 'https'", + "<area>: Setting <file:///test>.protocol = 'https'", + "<a>: Setting <file:>.protocol = 'wss'", + "<area>: Setting <file:>.protocol = 'wss'", + "<a>: Setting <file://hi/path>.protocol = 's'", + "<area>: Setting <file://hi/path>.protocol = 's'", + "<a>: Setting <file:///home/you/index.html>.username = 'me' No host means no username", + "<area>: Setting <file:///home/you/index.html>.username = 'me' No host means no username", + "<a>: Setting <file://test/>.username = 'test'", + "<area>: Setting <file://test/>.username = 'test'", + "<a>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password", + "<area>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password", + "<a>: Setting <file://test/>.password = 'test'", + "<area>: Setting <file://test/>.password = 'test'", + "<a>: Setting <file://y/>.host = 'x:123'", + "<area>: Setting <file://y/>.host = 'x:123'", + "<a>: Setting <file://y/>.host = 'loc%41lhost'", + "<area>: Setting <file://y/>.host = 'loc%41lhost'", + "<a>: Setting <file://hi/x>.host = ''", + "<area>: Setting <file://hi/x>.host = ''", + "<a>: Setting <file://y/>.hostname = 'x:123'", + "<area>: Setting <file://y/>.hostname = 'x:123'", + "<a>: Setting <file://y/>.hostname = 'loc%41lhost'", + "<area>: Setting <file://y/>.hostname = 'loc%41lhost'", + "<a>: Setting <file://hi/x>.hostname = ''", + "<area>: Setting <file://hi/x>.hostname = ''", + "<a>: Setting <file://test/>.port = '12'", + "<area>: Setting <file://test/>.port = '12'", + "<a>: Setting <file://localhost/>.port = '12'", + "<area>: Setting <file://localhost/>.port = '12'", + "<a>: Setting <file:///some/path>.pathname = '' Special URLs cannot have their paths erased", + "<area>: Setting <file:///some/path>.pathname = '' Special URLs cannot have their paths erased", + "<a>: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", + "<area>: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", + "<a>: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes", + "<area>: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes", + "<a>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes", + "<area>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes", + "<a>: Setting <file:///var/log/system.log>.href = 'http://0300.168.0xF0'", + "<area>: Setting <file:///var/log/system.log>.href = 'http://0300.168.0xF0'" + ], + "url-setters-a-area.window.html?include=javascript": [ + "<a>: Setting <javascript:alert(1)>.protocol = 'defuse'", + "<area>: Setting <javascript:alert(1)>.protocol = 'defuse'", + "<a>: Setting <javascript:alert(1)>.username = 'wario'", + "<area>: Setting <javascript:alert(1)>.username = 'wario'", + "<a>: Setting <javascript://x/>.username = 'wario'", + "<area>: Setting <javascript://x/>.username = 'wario'", + "<a>: Setting <javascript://x/>.password = 'bowser'", + "<area>: Setting <javascript://x/>.password = 'bowser'", + "<a>: Setting <javascript://x/>.port = '12'", + "<area>: Setting <javascript://x/>.port = '12'", + "<a>: Setting <javascript:alert(1)>.hash = 'castle'", + "<area>: Setting <javascript:alert(1)>.hash = 'castle'" + ], + "url-setters-a-area.window.html?include=mailto": [ + "<a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.", + "<area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.", + "<a>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username", + "<area>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username", + "<a>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password", + "<area>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password", + "<a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host", + "<area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host", + "<a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host", + "<area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host", + "<a>: Setting <mailto:me@example.net>.pathname = '/foo' Opaque paths cannot be set", + "<area>: Setting <mailto:me@example.net>.pathname = '/foo' Opaque paths cannot be set" + ], + "url-setters.any.html?exclude=(file|javascript|mailto)": [ + "URL: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value", + "URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value", + "URL: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path", + "URL: Setting <non-spec:/.//p>.hostname = ''", + "URL: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number", + "URL: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased", + "URL: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased", + "URL: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path", + "URL: Setting <non-spec:/>.pathname = '/..//p'", + "URL: Setting <non-spec:/>.pathname = '//p'", + "URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", + "URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths", + "URL: Setting <sc:space ?query#fragment>.search = ''" + ], + "url-setters.any.html?include=file": [ + "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", + "URL: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes", + "URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes" + ], + "url-setters.any.html?include=javascript": true, + "url-setters.any.html?include=mailto": true, + "url-setters.any.worker.html?exclude=(file|javascript|mailto)": [ + "URL: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value", + "URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value", + "URL: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path", + "URL: Setting <non-spec:/.//p>.hostname = ''", + "URL: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number", + "URL: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased", + "URL: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased", + "URL: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path", + "URL: Setting <non-spec:/>.pathname = '/..//p'", + "URL: Setting <non-spec:/>.pathname = '//p'", + "URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", + "URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths", + "URL: Setting <sc:space ?query#fragment>.search = ''" + ], + "url-setters.any.worker.html?include=file": [ + "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", + "URL: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes", + "URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes" + ], + "url-setters.any.worker.html?include=javascript": true, + "url-setters.any.worker.html?include=mailto": true, + "url-statics-canparse.any.html": true, + "url-statics-canparse.any.worker.html": true, + "urlsearchparams-size.any.worker.html": true + }, + "fetch": { + "api": { + "request": { + "request-init-002.any.html": true, + "request-init-002.any.worker.html": true, + "request-init-stream.any.html": [ + "It is error to omit .duplex when the body is a ReadableStream.", + "It is error to set .duplex = 'full' when the body is null.", + "It is error to set .duplex = 'full' when the body is a string.", + "It is error to set .duplex = 'full' when the body is a Uint8Array.", + "It is error to set .duplex = 'full' when the body is a Blob.", + "It is error to set .duplex = 'full' when the body is a ReadableStream." + ], + "request-init-stream.any.worker.html": [ + "It is error to omit .duplex when the body is a ReadableStream.", + "It is error to set .duplex = 'full' when the body is null.", + "It is error to set .duplex = 'full' when the body is a string.", + "It is error to set .duplex = 'full' when the body is a Uint8Array.", + "It is error to set .duplex = 'full' when the body is a Blob.", + "It is error to set .duplex = 'full' when the body is a ReadableStream." + ], + "request-consume-empty.any.html": [ + "Consume empty FormData request body as text" + ], + "request-consume-empty.any.worker.html": [ + "Consume empty FormData request body as text" + ], + "request-consume.any.html": true, + "request-consume.any.worker.html": true, + "request-disturbed.any.html": [ + "Input request used for creating new request became disturbed even if body is not used" + ], + "request-disturbed.any.worker.html": [ + "Input request used for creating new request became disturbed even if body is not used" + ], + "request-error.any.html": [ + "RequestInit's window is not null", + "Input URL has credentials", + "RequestInit's mode is navigate", + "RequestInit's referrer is invalid", + "RequestInit's mode is no-cors and method is not simple", + "RequestInit's cache mode is only-if-cached and mode is not same-origin", + "Request with cache mode: only-if-cached and fetch mode cors", + "Request with cache mode: only-if-cached and fetch mode no-cors", + "Bad referrerPolicy init parameter value", + "Bad mode init parameter value", + "Bad credentials init parameter value", + "Bad cache init parameter value" + ], + "request-error.any.worker.html": [ + "RequestInit's window is not null", + "Input URL has credentials", + "RequestInit's mode is navigate", + "RequestInit's referrer is invalid", + "RequestInit's mode is no-cors and method is not simple", + "RequestInit's cache mode is only-if-cached and mode is not same-origin", + "Request with cache mode: only-if-cached and fetch mode cors", + "Request with cache mode: only-if-cached and fetch mode no-cors", + "Bad referrerPolicy init parameter value", + "Bad mode init parameter value", + "Bad credentials init parameter value", + "Bad cache init parameter value" + ], + "request-headers.any.html": [ + "Adding invalid request header \"Accept-Charset: KO\"", + "Adding invalid request header \"accept-charset: KO\"", + "Adding invalid request header \"ACCEPT-ENCODING: KO\"", + "Adding invalid request header \"Accept-Encoding: KO\"", + "Adding invalid request header \"Access-Control-Request-Headers: KO\"", + "Adding invalid request header \"Access-Control-Request-Method: KO\"", + "Adding invalid request header \"Connection: KO\"", + "Adding invalid request header \"Content-Length: KO\"", + "Adding invalid request header \"Cookie: KO\"", + "Adding invalid request header \"Cookie2: KO\"", + "Adding invalid request header \"Date: KO\"", + "Adding invalid request header \"DNT: KO\"", + "Adding invalid request header \"Expect: KO\"", + "Adding invalid request header \"Host: KO\"", + "Adding invalid request header \"Keep-Alive: KO\"", + "Adding invalid request header \"Origin: KO\"", + "Adding invalid request header \"Referer: KO\"", + "Adding invalid request header \"Set-Cookie: KO\"", + "Adding invalid request header \"TE: KO\"", + "Adding invalid request header \"Trailer: KO\"", + "Adding invalid request header \"Transfer-Encoding: KO\"", + "Adding invalid request header \"Upgrade: KO\"", + "Adding invalid request header \"Via: KO\"", + "Adding invalid request header \"Proxy-: KO\"", + "Adding invalid request header \"proxy-a: KO\"", + "Adding invalid request header \"Sec-: KO\"", + "Adding invalid request header \"sec-b: KO\"", + "Adding invalid no-cors request header \"Content-Type: KO\"", + "Adding invalid no-cors request header \"Potato: KO\"", + "Adding invalid no-cors request header \"proxy: KO\"", + "Adding invalid no-cors request header \"proxya: KO\"", + "Adding invalid no-cors request header \"sec: KO\"", + "Adding invalid no-cors request header \"secb: KO\"", + "Adding invalid no-cors request header \"Empty-Value: \"", + "Check that request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as part of request parameter" + ], + "request-headers.any.worker.html": [ + "Adding invalid request header \"Accept-Charset: KO\"", + "Adding invalid request header \"accept-charset: KO\"", + "Adding invalid request header \"ACCEPT-ENCODING: KO\"", + "Adding invalid request header \"Accept-Encoding: KO\"", + "Adding invalid request header \"Access-Control-Request-Headers: KO\"", + "Adding invalid request header \"Access-Control-Request-Method: KO\"", + "Adding invalid request header \"Connection: KO\"", + "Adding invalid request header \"Content-Length: KO\"", + "Adding invalid request header \"Cookie: KO\"", + "Adding invalid request header \"Cookie2: KO\"", + "Adding invalid request header \"Date: KO\"", + "Adding invalid request header \"DNT: KO\"", + "Adding invalid request header \"Expect: KO\"", + "Adding invalid request header \"Host: KO\"", + "Adding invalid request header \"Keep-Alive: KO\"", + "Adding invalid request header \"Origin: KO\"", + "Adding invalid request header \"Referer: KO\"", + "Adding invalid request header \"Set-Cookie: KO\"", + "Adding invalid request header \"TE: KO\"", + "Adding invalid request header \"Trailer: KO\"", + "Adding invalid request header \"Transfer-Encoding: KO\"", + "Adding invalid request header \"Upgrade: KO\"", + "Adding invalid request header \"Via: KO\"", + "Adding invalid request header \"Proxy-: KO\"", + "Adding invalid request header \"proxy-a: KO\"", + "Adding invalid request header \"Sec-: KO\"", + "Adding invalid request header \"sec-b: KO\"", + "Adding invalid no-cors request header \"Content-Type: KO\"", + "Adding invalid no-cors request header \"Potato: KO\"", + "Adding invalid no-cors request header \"proxy: KO\"", + "Adding invalid no-cors request header \"proxya: KO\"", + "Adding invalid no-cors request header \"sec: KO\"", + "Adding invalid no-cors request header \"secb: KO\"", + "Adding invalid no-cors request header \"Empty-Value: \"", + "Check that request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as part of request parameter" + ], + "request-init-contenttype.any.html": true, + "request-init-contenttype.any.worker.html": true, + "request-structure.any.html": [ + "Check destination attribute", + "Check referrer attribute", + "Check referrerPolicy attribute", + "Check mode attribute", + "Check credentials attribute", + "Check cache attribute", + "Check integrity attribute", + "Check isReloadNavigation attribute", + "Check isHistoryNavigation attribute", + "Check duplex attribute" + ], + "request-structure.any.worker.html": [ + "Check destination attribute", + "Check referrer attribute", + "Check referrerPolicy attribute", + "Check mode attribute", + "Check credentials attribute", + "Check cache attribute", + "Check integrity attribute", + "Check isReloadNavigation attribute", + "Check isHistoryNavigation attribute", + "Check duplex attribute" + ], + "forbidden-method.any.html": true, + "forbidden-method.any.worker.html": true, + "request-bad-port.any.html": false, + "request-bad-port.any.worker.html": false, + "request-cache-default-conditional.any.html": true, + "request-cache-default-conditional.any.worker.html": true, + "request-cache-default.any.html": [ + "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Etag and fresh response", + "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response" + ], + "request-cache-default.any.worker.html": [ + "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Etag and fresh response", + "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response" + ], + "request-cache-force-cache.any.html": [ + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response", + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response", + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh response", + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response", + "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Etag and fresh response", + "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response" + ], + "request-cache-force-cache.any.worker.html": [ + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response", + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response", + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh response", + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response", + "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Etag and fresh response", + "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response" + ], + "request-cache-no-cache.any.html": true, + "request-cache-no-cache.any.worker.html": true, + "request-cache-no-store.any.html": true, + "request-cache-no-store.any.worker.html": true, + "request-cache-only-if-cached.any.html": false, + "request-cache-only-if-cached.any.worker.html": false, + "request-cache-reload.any.html": [ + "RequestCache \"reload\" mode does store the response in the cache with Etag and fresh response", + "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response", + "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response", + "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response" + ], + "request-cache-reload.any.worker.html": [ + "RequestCache \"reload\" mode does store the response in the cache with Etag and fresh response", + "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response", + "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response", + "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response" + ], + "request-init-priority.any.html": [ + "new Request() throws a TypeError if any of RequestInit's members' values are invalid", + "fetch() with an invalid priority returns a rejected promise with a TypeError" + ], + "request-init-priority.any.worker.html": [ + "new Request() throws a TypeError if any of RequestInit's members' values are invalid", + "fetch() with an invalid priority returns a rejected promise with a TypeError" + ], + "request-keepalive.any.html": false, + "request-keepalive.any.worker.html": false + }, + "headers": { + "header-values-normalize.any.html": [ + "XMLHttpRequest with value %00", + "XMLHttpRequest with value %01", + "XMLHttpRequest with value %02", + "XMLHttpRequest with value %03", + "XMLHttpRequest with value %04", + "XMLHttpRequest with value %05", + "XMLHttpRequest with value %06", + "XMLHttpRequest with value %07", + "XMLHttpRequest with value %08", + "XMLHttpRequest with value %09", + "XMLHttpRequest with value %0A", + "XMLHttpRequest with value %0D", + "XMLHttpRequest with value %0E", + "XMLHttpRequest with value %0F", + "XMLHttpRequest with value %10", + "XMLHttpRequest with value %11", + "XMLHttpRequest with value %12", + "XMLHttpRequest with value %13", + "XMLHttpRequest with value %14", + "XMLHttpRequest with value %15", + "XMLHttpRequest with value %16", + "XMLHttpRequest with value %17", + "XMLHttpRequest with value %18", + "XMLHttpRequest with value %19", + "XMLHttpRequest with value %1A", + "XMLHttpRequest with value %1B", + "XMLHttpRequest with value %1C", + "XMLHttpRequest with value %1D", + "XMLHttpRequest with value %1E", + "XMLHttpRequest with value %1F", + "XMLHttpRequest with value %20", + "fetch() with value %01", + "fetch() with value %02", + "fetch() with value %03", + "fetch() with value %04", + "fetch() with value %05", + "fetch() with value %06", + "fetch() with value %07", + "fetch() with value %08", + "fetch() with value %0E", + "fetch() with value %0F", + "fetch() with value %10", + "fetch() with value %11", + "fetch() with value %12", + "fetch() with value %13", + "fetch() with value %14", + "fetch() with value %15", + "fetch() with value %16", + "fetch() with value %17", + "fetch() with value %18", + "fetch() with value %19", + "fetch() with value %1A", + "fetch() with value %1B", + "fetch() with value %1C", + "fetch() with value %1D", + "fetch() with value %1E", + "fetch() with value %1F" + ], + "header-values-normalize.any.worker.html": [ + "fetch() with value %01", + "fetch() with value %02", + "fetch() with value %03", + "fetch() with value %04", + "fetch() with value %05", + "fetch() with value %06", + "fetch() with value %07", + "fetch() with value %08", + "fetch() with value %0E", + "fetch() with value %0F", + "fetch() with value %10", + "fetch() with value %11", + "fetch() with value %12", + "fetch() with value %13", + "fetch() with value %14", + "fetch() with value %15", + "fetch() with value %16", + "fetch() with value %17", + "fetch() with value %18", + "fetch() with value %19", + "fetch() with value %1A", + "fetch() with value %1B", + "fetch() with value %1C", + "fetch() with value %1D", + "fetch() with value %1E", + "fetch() with value %1F" + ], + "header-values.any.html": [ + "XMLHttpRequest with value x%00x needs to throw", + "XMLHttpRequest with value x%0Ax needs to throw", + "XMLHttpRequest with value x%0Dx needs to throw", + "XMLHttpRequest with all valid values", + "fetch() with all valid values" + ], + "header-values.any.worker.html": [ + "fetch() with all valid values" + ], + "headers-basic.any.html": true, + "headers-casing.any.html": true, + "headers-combine.any.html": true, + "headers-errors.any.html": true, + "headers-normalize.any.html": true, + "headers-record.any.html": true, + "headers-structure.any.html": true, + "headers-basic.any.worker.html": true, + "headers-casing.any.worker.html": true, + "headers-combine.any.worker.html": true, + "headers-errors.any.worker.html": true, + "headers-no-cors.any.html": [ + "\"no-cors\" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain", + "\"no-cors\" Headers object cannot have accept/\" as header", + "\"no-cors\" Headers object cannot have accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 as header", + "\"no-cors\" Headers object cannot have accept-language/\u0001 as header", + "\"no-cors\" Headers object cannot have accept-language/@ as header", + "\"no-cors\" Headers object cannot have authorization/basics as header", + "\"no-cors\" Headers object cannot have content-language/\u0001 as header", + "\"no-cors\" Headers object cannot have content-language/@ as header", + "\"no-cors\" Headers object cannot have content-type/text/html as header", + "\"no-cors\" Headers object cannot have content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 as header", + "\"no-cors\" Headers object cannot have range/bytes 0- as header", + "\"no-cors\" Headers object cannot have test/hi as header", + "\"no-cors\" Headers object cannot have dpr/2 as header", + "\"no-cors\" Headers object cannot have rtt/1.0 as header", + "\"no-cors\" Headers object cannot have downlink/-1.0 as header", + "\"no-cors\" Headers object cannot have ect/6g as header", + "\"no-cors\" Headers object cannot have save-data/on as header", + "\"no-cors\" Headers object cannot have viewport-width/100 as header", + "\"no-cors\" Headers object cannot have width/100 as header", + "\"no-cors\" Headers object cannot have unknown/doesitmatter as header" + ], + "headers-no-cors.any.worker.html": [ + "\"no-cors\" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", + "\"no-cors\" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain", + "\"no-cors\" Headers object cannot have accept/\" as header", + "\"no-cors\" Headers object cannot have accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 as header", + "\"no-cors\" Headers object cannot have accept-language/\u0001 as header", + "\"no-cors\" Headers object cannot have accept-language/@ as header", + "\"no-cors\" Headers object cannot have authorization/basics as header", + "\"no-cors\" Headers object cannot have content-language/\u0001 as header", + "\"no-cors\" Headers object cannot have content-language/@ as header", + "\"no-cors\" Headers object cannot have content-type/text/html as header", + "\"no-cors\" Headers object cannot have content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 as header", + "\"no-cors\" Headers object cannot have range/bytes 0- as header", + "\"no-cors\" Headers object cannot have test/hi as header", + "\"no-cors\" Headers object cannot have dpr/2 as header", + "\"no-cors\" Headers object cannot have rtt/1.0 as header", + "\"no-cors\" Headers object cannot have downlink/-1.0 as header", + "\"no-cors\" Headers object cannot have ect/6g as header", + "\"no-cors\" Headers object cannot have save-data/on as header", + "\"no-cors\" Headers object cannot have viewport-width/100 as header", + "\"no-cors\" Headers object cannot have width/100 as header", + "\"no-cors\" Headers object cannot have unknown/doesitmatter as header" + ], + "headers-normalize.any.worker.html": true, + "headers-record.any.worker.html": true, + "headers-structure.any.worker.html": true, + "header-setcookie.any.html": [ + "Set-Cookie is a forbidden response header" + ], + "header-setcookie.any.worker.html": [ + "Set-Cookie is a forbidden response header" + ] + }, + "basic": { + "request-head.any.html": true, + "request-head.any.worker.html": true, + "request-headers-case.any.html": false, + "request-headers-case.any.worker.html": false, + "request-headers-nonascii.any.html": true, + "request-headers-nonascii.any.worker.html": true, + "request-headers.any.html": [ + "Fetch with PUT without body", + "Fetch with PUT with body", + "Fetch with POST without body", + "Fetch with POST with text body", + "Fetch with POST with FormData body", + "Fetch with POST with URLSearchParams body", + "Fetch with POST with Blob body", + "Fetch with POST with ArrayBuffer body", + "Fetch with POST with Uint8Array body", + "Fetch with POST with Int8Array body", + "Fetch with POST with Float32Array body", + "Fetch with POST with Float64Array body", + "Fetch with POST with DataView body", + "Fetch with POST with Blob body with mime type", + "Fetch with Chicken", + "Fetch with Chicken with body", + "Fetch with POST and mode \"same-origin\" needs an Origin header", + "Fetch with POST and mode \"no-cors\" needs an Origin header", + "Fetch with PUT and mode \"same-origin\" needs an Origin header", + "Fetch with TacO and mode \"same-origin\" needs an Origin header", + "Fetch with TacO and mode \"cors\" needs an Origin header" + ], + "request-headers.any.worker.html": [ + "Fetch with PUT without body", + "Fetch with PUT with body", + "Fetch with POST without body", + "Fetch with POST with text body", + "Fetch with POST with FormData body", + "Fetch with POST with URLSearchParams body", + "Fetch with POST with Blob body", + "Fetch with POST with ArrayBuffer body", + "Fetch with POST with Uint8Array body", + "Fetch with POST with Int8Array body", + "Fetch with POST with Float32Array body", + "Fetch with POST with Float64Array body", + "Fetch with POST with DataView body", + "Fetch with POST with Blob body with mime type", + "Fetch with Chicken", + "Fetch with Chicken with body", + "Fetch with POST and mode \"same-origin\" needs an Origin header", + "Fetch with POST and mode \"no-cors\" needs an Origin header", + "Fetch with PUT and mode \"same-origin\" needs an Origin header", + "Fetch with TacO and mode \"same-origin\" needs an Origin header", + "Fetch with TacO and mode \"cors\" needs an Origin header" + ], + "text-utf8.any.html": true, + "text-utf8.any.worker.html": true, + "accept-header.any.html": true, + "accept-header.any.worker.html": true, + "conditional-get.any.html": false, + "conditional-get.any.worker.html": false, + "header-value-combining.any.html": false, + "header-value-combining.any.worker.html": false, + "header-value-null-byte.any.html": true, + "header-value-null-byte.any.worker.html": true, + "historical.any.html": true, + "historical.any.worker.html": true, + "http-response-code.any.html": true, + "http-response-code.any.worker.html": true, + "response-url.sub.any.html": true, + "response-url.sub.any.worker.html": true, + "scheme-about.any.html": true, + "scheme-about.any.worker.html": true, + "scheme-blob.sub.any.html": [ + "Fetching URL.createObjectURL(invalid_type_blob) is OK" + ], + "scheme-blob.sub.any.worker.html": [ + "Fetching URL.createObjectURL(invalid_type_blob) is OK" + ], + "scheme-data.any.html": true, + "scheme-data.any.worker.html": true, + "scheme-others.sub.any.html": true, + "scheme-others.sub.any.worker.html": true, + "stream-response.any.html": true, + "stream-response.any.worker.html": true, + "stream-safe-creation.any.html": [ + "throwing Object.prototype.start accessor should not affect stream creation by 'fetch'", + "Object.prototype.start accessor returning invalid value should not affect stream creation by 'fetch'" + ], + "stream-safe-creation.any.worker.html": [ + "throwing Object.prototype.start accessor should not affect stream creation by 'fetch'", + "Object.prototype.start accessor returning invalid value should not affect stream creation by 'fetch'" + ], + "integrity.sub.any.html": [ + "Invalid integrity", + "Multiple integrities: invalid stronger than valid", + "Multiple integrities: both are invalid", + "CORS invalid integrity", + "Empty string integrity for opaque response", + "SHA-* integrity for opaque response" + ], + "integrity.sub.any.worker.html": [ + "Invalid integrity", + "Multiple integrities: invalid stronger than valid", + "Multiple integrities: both are invalid", + "CORS invalid integrity", + "Empty string integrity for opaque response", + "SHA-* integrity for opaque response" + ], + "error-after-response.any.worker.html": false, + "keepalive.any.html": false, + "mediasource.window.html": false, + "mode-same-origin.any.html": [ + "Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode", + "Fetch http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode", + "Fetch /fetch/api/basic/../resources/redirect.py?location=https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode", + "Fetch /fetch/api/basic/../resources/redirect.py?location=http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode" + ], + "mode-same-origin.any.worker.html": [ + "Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode", + "Fetch http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode", + "Fetch /fetch/api/basic/../resources/redirect.py?location=https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode", + "Fetch /fetch/api/basic/../resources/redirect.py?location=http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode" + ], + "referrer.any.html": false, + "referrer.any.worker.html": false, + "request-forbidden-headers.any.html": [ + "Accept-Charset is a forbidden request header", + "Accept-Encoding is a forbidden request header", + "Access-Control-Request-Headers is a forbidden request header", + "Access-Control-Request-Method is a forbidden request header", + "Connection is a forbidden request header", + "Cookie is a forbidden request header", + "Cookie2 is a forbidden request header", + "Date is a forbidden request header", + "DNT is a forbidden request header", + "Expect is a forbidden request header", + "Keep-Alive is a forbidden request header", + "Origin is a forbidden request header", + "Referer is a forbidden request header", + "TE is a forbidden request header", + "Trailer is a forbidden request header", + "Upgrade is a forbidden request header", + "Via is a forbidden request header", + "Proxy- is a forbidden request header", + "Proxy-Test is a forbidden request header", + "Sec- is a forbidden request header", + "Sec-Test is a forbidden request header", + "header x-http-method-override is forbidden to use value TRACE", + "header x-http-method is forbidden to use value TRACE", + "header x-method-override is forbidden to use value TRACE", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE", + "header X-HTTP-METHOD is forbidden to use value TRACE", + "header X-METHOD-OVERRIDE is forbidden to use value TRACE", + "header x-http-method-override is forbidden to use value TRACK", + "header x-http-method is forbidden to use value TRACK", + "header x-method-override is forbidden to use value TRACK", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK", + "header X-HTTP-METHOD is forbidden to use value TRACK", + "header X-METHOD-OVERRIDE is forbidden to use value TRACK", + "header x-http-method-override is forbidden to use value CONNECT", + "header x-http-method is forbidden to use value CONNECT", + "header x-method-override is forbidden to use value CONNECT", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT", + "header X-HTTP-METHOD is forbidden to use value CONNECT", + "header X-METHOD-OVERRIDE is forbidden to use value CONNECT", + "header x-http-method-override is forbidden to use value trace", + "header x-http-method is forbidden to use value trace", + "header x-method-override is forbidden to use value trace", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace", + "header X-HTTP-METHOD is forbidden to use value trace", + "header X-METHOD-OVERRIDE is forbidden to use value trace", + "header x-http-method-override is forbidden to use value track", + "header x-http-method is forbidden to use value track", + "header x-method-override is forbidden to use value track", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value track", + "header X-HTTP-METHOD is forbidden to use value track", + "header X-METHOD-OVERRIDE is forbidden to use value track", + "header x-http-method-override is forbidden to use value connect", + "header x-http-method is forbidden to use value connect", + "header x-method-override is forbidden to use value connect", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect", + "header X-HTTP-METHOD is forbidden to use value connect", + "header X-METHOD-OVERRIDE is forbidden to use value connect", + "header x-http-method-override is forbidden to use value trace,", + "header x-http-method is forbidden to use value trace,", + "header x-method-override is forbidden to use value trace,", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,", + "header X-HTTP-METHOD is forbidden to use value trace,", + "header X-METHOD-OVERRIDE is forbidden to use value trace," + ], + "request-forbidden-headers.any.worker.html": [ + "Accept-Charset is a forbidden request header", + "Accept-Encoding is a forbidden request header", + "Access-Control-Request-Headers is a forbidden request header", + "Access-Control-Request-Method is a forbidden request header", + "Connection is a forbidden request header", + "Cookie is a forbidden request header", + "Cookie2 is a forbidden request header", + "Date is a forbidden request header", + "DNT is a forbidden request header", + "Expect is a forbidden request header", + "Keep-Alive is a forbidden request header", + "Origin is a forbidden request header", + "Referer is a forbidden request header", + "TE is a forbidden request header", + "Trailer is a forbidden request header", + "Upgrade is a forbidden request header", + "Via is a forbidden request header", + "Proxy- is a forbidden request header", + "Proxy-Test is a forbidden request header", + "Sec- is a forbidden request header", + "Sec-Test is a forbidden request header", + "header x-http-method-override is forbidden to use value TRACE", + "header x-http-method is forbidden to use value TRACE", + "header x-method-override is forbidden to use value TRACE", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE", + "header X-HTTP-METHOD is forbidden to use value TRACE", + "header X-METHOD-OVERRIDE is forbidden to use value TRACE", + "header x-http-method-override is forbidden to use value TRACK", + "header x-http-method is forbidden to use value TRACK", + "header x-method-override is forbidden to use value TRACK", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK", + "header X-HTTP-METHOD is forbidden to use value TRACK", + "header X-METHOD-OVERRIDE is forbidden to use value TRACK", + "header x-http-method-override is forbidden to use value CONNECT", + "header x-http-method is forbidden to use value CONNECT", + "header x-method-override is forbidden to use value CONNECT", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT", + "header X-HTTP-METHOD is forbidden to use value CONNECT", + "header X-METHOD-OVERRIDE is forbidden to use value CONNECT", + "header x-http-method-override is forbidden to use value trace", + "header x-http-method is forbidden to use value trace", + "header x-method-override is forbidden to use value trace", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace", + "header X-HTTP-METHOD is forbidden to use value trace", + "header X-METHOD-OVERRIDE is forbidden to use value trace", + "header x-http-method-override is forbidden to use value track", + "header x-http-method is forbidden to use value track", + "header x-method-override is forbidden to use value track", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value track", + "header X-HTTP-METHOD is forbidden to use value track", + "header X-METHOD-OVERRIDE is forbidden to use value track", + "header x-http-method-override is forbidden to use value connect", + "header x-http-method is forbidden to use value connect", + "header x-method-override is forbidden to use value connect", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect", + "header X-HTTP-METHOD is forbidden to use value connect", + "header X-METHOD-OVERRIDE is forbidden to use value connect", + "header x-http-method-override is forbidden to use value trace,", + "header x-http-method is forbidden to use value trace,", + "header x-method-override is forbidden to use value trace,", + "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,", + "header X-HTTP-METHOD is forbidden to use value trace,", + "header X-METHOD-OVERRIDE is forbidden to use value trace," + ], + "request-referrer.any.html": false, + "request-referrer.any.worker.html": false, + "error-after-response.any.html": false, + "mode-no-cors.sub.any.html": { + "ignore": true + }, + "mode-no-cors.sub.any.worker.html": { + "ignore": true + }, + "request-private-network-headers.tentative.any.html": false, + "request-private-network-headers.tentative.any.worker.html": false, + "response-null-body.any.html": { + "ignore": true + }, + "response-null-body.any.worker.html": { + "ignore": true + } + }, + "response": { + "json.any.html": true, + "json.any.worker.html": true, + "response-init-001.any.html": true, + "response-init-001.any.worker.html": true, + "response-init-002.any.html": true, + "response-init-002.any.worker.html": true, + "response-static-error.any.html": true, + "response-static-error.any.worker.html": true, + "response-static-redirect.any.html": true, + "response-static-redirect.any.worker.html": true, + "response-stream-bad-chunk.any.html": true, + "response-stream-bad-chunk.any.worker.html": true, + "response-stream-disturbed-1.any.html": true, + "response-stream-disturbed-1.any.worker.html": true, + "response-stream-disturbed-2.any.html": true, + "response-stream-disturbed-2.any.worker.html": true, + "response-stream-disturbed-3.any.html": true, + "response-stream-disturbed-3.any.worker.html": true, + "response-stream-disturbed-4.any.html": true, + "response-stream-disturbed-4.any.worker.html": true, + "response-stream-disturbed-5.any.html": true, + "response-stream-disturbed-5.any.worker.html": true, + "response-stream-disturbed-6.any.html": true, + "response-stream-disturbed-6.any.worker.html": true, + "response-stream-disturbed-by-pipe.any.html": true, + "response-stream-disturbed-by-pipe.any.worker.html": true, + "response-stream-with-broken-then.any.html": [ + "Attempt to inject {done: false, value: bye} via Object.prototype.then.", + "Attempt to inject value: undefined via Object.prototype.then.", + "Attempt to inject undefined via Object.prototype.then.", + "Attempt to inject 8.2 via Object.prototype.then.", + "intercepting arraybuffer to text conversion via Object.prototype.then should not be possible" + ], + "response-stream-with-broken-then.any.worker.html": [ + "Attempt to inject {done: false, value: bye} via Object.prototype.then.", + "Attempt to inject value: undefined via Object.prototype.then.", + "Attempt to inject undefined via Object.prototype.then.", + "Attempt to inject 8.2 via Object.prototype.then.", + "intercepting arraybuffer to text conversion via Object.prototype.then should not be possible" + ], + "response-error-from-stream.any.html": true, + "response-error-from-stream.any.worker.html": true, + "response-error.any.html": true, + "response-error.any.worker.html": true, + "response-from-stream.any.html": true, + "response-from-stream.any.worker.html": true, + "response-cancel-stream.any.html": true, + "response-cancel-stream.any.worker.html": true, + "response-clone.any.html": true, + "response-clone.any.worker.html": true, + "response-consume-empty.any.html": [ + "Consume empty FormData response body as text" + ], + "response-consume-empty.any.worker.html": [ + "Consume empty FormData response body as text" + ], + "response-consume-stream.any.html": [ + "Read text response's body as readableStream with mode=byob", + "Read URLSearchParams response's body as readableStream with mode=byob", + "Read array buffer response's body as readableStream with mode=byob", + "Reading with offset from Response stream" + ], + "response-consume-stream.any.worker.html": [ + "Read text response's body as readableStream with mode=byob", + "Read URLSearchParams response's body as readableStream with mode=byob", + "Read array buffer response's body as readableStream with mode=byob", + "Reading with offset from Response stream" + ], + "response-init-contenttype.any.html": true, + "response-init-contenttype.any.worker.html": true, + "response-static-json.any.html": true, + "response-static-json.any.worker.html": true, + "response-clone-iframe.window.html": false + }, + "body": { + "formdata.any.html": true, + "formdata.any.worker.html": true, + "mime-type.any.html": [ + "Response: Extract a MIME type with clone" + ], + "mime-type.any.worker.html": [ + "Response: Extract a MIME type with clone" + ] + }, + "redirect": { + "redirect-count.any.html": true, + "redirect-count.any.worker.html": true, + "redirect-empty-location.any.html": [ + "redirect response with empty Location, manual mode" + ], + "redirect-empty-location.any.worker.html": [ + "redirect response with empty Location, manual mode" + ], + "redirect-location-escape.tentative.any.html": [ + "Redirect to unescaped UTF-8", + "Redirect to escaped and unescaped UTF-8", + "Escaping produces double-percent", + "Redirect to invalid UTF-8" + ], + "redirect-location-escape.tentative.any.worker.html": [ + "Redirect to unescaped UTF-8", + "Redirect to escaped and unescaped UTF-8", + "Escaping produces double-percent", + "Redirect to invalid UTF-8" + ], + "redirect-location.any.html": [ + "Redirect 301 in \"manual\" mode without location", + "Redirect 301 in \"manual\" mode with valid location", + "Redirect 301 in \"manual\" mode with invalid location", + "Redirect 301 in \"manual\" mode with data location", + "Redirect 302 in \"manual\" mode without location", + "Redirect 302 in \"manual\" mode with valid location", + "Redirect 302 in \"manual\" mode with invalid location", + "Redirect 302 in \"manual\" mode with data location", + "Redirect 303 in \"manual\" mode without location", + "Redirect 303 in \"manual\" mode with valid location", + "Redirect 303 in \"manual\" mode with invalid location", + "Redirect 303 in \"manual\" mode with data location", + "Redirect 307 in \"manual\" mode without location", + "Redirect 307 in \"manual\" mode with valid location", + "Redirect 307 in \"manual\" mode with invalid location", + "Redirect 307 in \"manual\" mode with data location", + "Redirect 308 in \"manual\" mode without location", + "Redirect 308 in \"manual\" mode with valid location", + "Redirect 308 in \"manual\" mode with invalid location", + "Redirect 308 in \"manual\" mode with data location" + ], + "redirect-location.any.worker.html": [ + "Redirect 301 in \"manual\" mode without location", + "Redirect 301 in \"manual\" mode with valid location", + "Redirect 301 in \"manual\" mode with invalid location", + "Redirect 301 in \"manual\" mode with data location", + "Redirect 302 in \"manual\" mode without location", + "Redirect 302 in \"manual\" mode with valid location", + "Redirect 302 in \"manual\" mode with invalid location", + "Redirect 302 in \"manual\" mode with data location", + "Redirect 303 in \"manual\" mode without location", + "Redirect 303 in \"manual\" mode with valid location", + "Redirect 303 in \"manual\" mode with invalid location", + "Redirect 303 in \"manual\" mode with data location", + "Redirect 307 in \"manual\" mode without location", + "Redirect 307 in \"manual\" mode with valid location", + "Redirect 307 in \"manual\" mode with invalid location", + "Redirect 307 in \"manual\" mode with data location", + "Redirect 308 in \"manual\" mode without location", + "Redirect 308 in \"manual\" mode with valid location", + "Redirect 308 in \"manual\" mode with invalid location", + "Redirect 308 in \"manual\" mode with data location" + ], + "redirect-method.any.html": true, + "redirect-method.any.worker.html": true, + "redirect-schemes.any.html": true, + "redirect-schemes.any.worker.html": true, + "redirect-to-dataurl.any.html": true, + "redirect-to-dataurl.any.worker.html": true, + "redirect-back-to-original-origin.any.html": false, + "redirect-back-to-original-origin.any.worker.html": false, + "redirect-keepalive.any.html": false, + "redirect-mode.any.html": [ + "same-origin redirect 301 in manual redirect and cors mode", + "same-origin redirect 301 in manual redirect and no-cors mode", + "same-origin redirect 302 in manual redirect and cors mode", + "same-origin redirect 302 in manual redirect and no-cors mode", + "same-origin redirect 303 in manual redirect and cors mode", + "same-origin redirect 303 in manual redirect and no-cors mode", + "same-origin redirect 307 in manual redirect and cors mode", + "same-origin redirect 307 in manual redirect and no-cors mode", + "same-origin redirect 308 in manual redirect and cors mode", + "same-origin redirect 308 in manual redirect and no-cors mode", + "cross-origin redirect 301 in manual redirect and cors mode", + "cross-origin redirect 301 in manual redirect and no-cors mode", + "cross-origin redirect 301 in follow redirect and no-cors mode", + "cross-origin redirect 302 in manual redirect and cors mode", + "cross-origin redirect 302 in manual redirect and no-cors mode", + "cross-origin redirect 302 in follow redirect and no-cors mode", + "cross-origin redirect 303 in manual redirect and cors mode", + "cross-origin redirect 303 in manual redirect and no-cors mode", + "cross-origin redirect 303 in follow redirect and no-cors mode", + "cross-origin redirect 307 in manual redirect and cors mode", + "cross-origin redirect 307 in manual redirect and no-cors mode", + "cross-origin redirect 307 in follow redirect and no-cors mode", + "cross-origin redirect 308 in manual redirect and cors mode", + "cross-origin redirect 308 in manual redirect and no-cors mode", + "cross-origin redirect 308 in follow redirect and no-cors mode", + "manual redirect with a CORS error should be rejected" + ], + "redirect-mode.any.worker.html": [ + "same-origin redirect 301 in manual redirect and cors mode", + "same-origin redirect 301 in manual redirect and no-cors mode", + "same-origin redirect 302 in manual redirect and cors mode", + "same-origin redirect 302 in manual redirect and no-cors mode", + "same-origin redirect 303 in manual redirect and cors mode", + "same-origin redirect 303 in manual redirect and no-cors mode", + "same-origin redirect 307 in manual redirect and cors mode", + "same-origin redirect 307 in manual redirect and no-cors mode", + "same-origin redirect 308 in manual redirect and cors mode", + "same-origin redirect 308 in manual redirect and no-cors mode", + "cross-origin redirect 301 in manual redirect and cors mode", + "cross-origin redirect 301 in manual redirect and no-cors mode", + "cross-origin redirect 301 in follow redirect and no-cors mode", + "cross-origin redirect 302 in manual redirect and cors mode", + "cross-origin redirect 302 in manual redirect and no-cors mode", + "cross-origin redirect 302 in follow redirect and no-cors mode", + "cross-origin redirect 303 in manual redirect and cors mode", + "cross-origin redirect 303 in manual redirect and no-cors mode", + "cross-origin redirect 303 in follow redirect and no-cors mode", + "cross-origin redirect 307 in manual redirect and cors mode", + "cross-origin redirect 307 in manual redirect and no-cors mode", + "cross-origin redirect 307 in follow redirect and no-cors mode", + "cross-origin redirect 308 in manual redirect and cors mode", + "cross-origin redirect 308 in manual redirect and no-cors mode", + "cross-origin redirect 308 in follow redirect and no-cors mode", + "manual redirect with a CORS error should be rejected" + ], + "redirect-origin.any.html": [ + "[GET] Redirect 301 Same origin to other origin", + "[GET] Redirect 301 Other origin to other origin", + "[GET] Redirect 301 Other origin to same origin", + "[POST] Redirect 301 Same origin to other origin", + "[POST] Redirect 301 Other origin to other origin", + "[POST] Redirect 301 Other origin to same origin", + "[GET] Redirect 302 Same origin to other origin", + "[GET] Redirect 302 Other origin to other origin", + "[GET] Redirect 302 Other origin to same origin", + "[POST] Redirect 302 Same origin to other origin", + "[POST] Redirect 302 Other origin to other origin", + "[POST] Redirect 302 Other origin to same origin", + "[GET] Redirect 303 Same origin to other origin", + "[GET] Redirect 303 Other origin to other origin", + "[GET] Redirect 303 Other origin to same origin", + "[POST] Redirect 303 Same origin to other origin", + "[POST] Redirect 303 Other origin to other origin", + "[POST] Redirect 303 Other origin to same origin", + "[GET] Redirect 307 Same origin to other origin", + "[GET] Redirect 307 Other origin to other origin", + "[GET] Redirect 307 Other origin to same origin", + "[POST] Redirect 307 Same origin to other origin", + "[POST] Redirect 307 Other origin to other origin", + "[POST] Redirect 307 Other origin to same origin", + "[GET] Redirect 308 Same origin to other origin", + "[GET] Redirect 308 Other origin to other origin", + "[GET] Redirect 308 Other origin to same origin", + "[POST] Redirect 308 Same origin to other origin", + "[POST] Redirect 308 Other origin to other origin", + "[POST] Redirect 308 Other origin to same origin" + ], + "redirect-origin.any.worker.html": [ + "[GET] Redirect 301 Same origin to other origin", + "[GET] Redirect 301 Other origin to other origin", + "[GET] Redirect 301 Other origin to same origin", + "[POST] Redirect 301 Same origin to other origin", + "[POST] Redirect 301 Other origin to other origin", + "[POST] Redirect 301 Other origin to same origin", + "[GET] Redirect 302 Same origin to other origin", + "[GET] Redirect 302 Other origin to other origin", + "[GET] Redirect 302 Other origin to same origin", + "[POST] Redirect 302 Same origin to other origin", + "[POST] Redirect 302 Other origin to other origin", + "[POST] Redirect 302 Other origin to same origin", + "[GET] Redirect 303 Same origin to other origin", + "[GET] Redirect 303 Other origin to other origin", + "[GET] Redirect 303 Other origin to same origin", + "[POST] Redirect 303 Same origin to other origin", + "[POST] Redirect 303 Other origin to other origin", + "[POST] Redirect 303 Other origin to same origin", + "[GET] Redirect 307 Same origin to other origin", + "[GET] Redirect 307 Other origin to other origin", + "[GET] Redirect 307 Other origin to same origin", + "[POST] Redirect 307 Same origin to other origin", + "[POST] Redirect 307 Other origin to other origin", + "[POST] Redirect 307 Other origin to same origin", + "[GET] Redirect 308 Same origin to other origin", + "[GET] Redirect 308 Other origin to other origin", + "[GET] Redirect 308 Other origin to same origin", + "[POST] Redirect 308 Same origin to other origin", + "[POST] Redirect 308 Other origin to other origin", + "[POST] Redirect 308 Other origin to same origin" + ], + "redirect-referrer-override.any.html": [ + "Same origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, same-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ", + "Same origin redirection, origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, origin init, origin redirect header ", + "Cross origin redirection, origin init, origin redirect header ", + "Same origin redirection, origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, origin init, same-origin redirect header ", + "Same origin redirection, origin init, strict-origin redirect header ", + "Cross origin redirection, origin init, strict-origin redirect header ", + "Same origin redirection, origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, origin init, unsafe-url redirect header ", + "Cross origin redirection, origin init, unsafe-url redirect header ", + "Same origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, origin-when-cross-origin init, origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, same-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, strict-origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, strict-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, unsafe-url redirect header ", + "Cross origin redirection, origin-when-cross-origin init, unsafe-url redirect header ", + "Same origin redirection, same-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, same-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, same-origin init, origin redirect header ", + "Cross origin redirection, same-origin init, origin redirect header ", + "Same origin redirection, same-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, same-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, same-origin init, same-origin redirect header ", + "Same origin redirection, same-origin init, strict-origin redirect header ", + "Cross origin redirection, same-origin init, strict-origin redirect header ", + "Same origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, same-origin init, unsafe-url redirect header ", + "Cross origin redirection, same-origin init, unsafe-url redirect header ", + "Same origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, strict-origin init, origin redirect header ", + "Cross origin redirection, strict-origin init, origin redirect header ", + "Same origin redirection, strict-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin init, same-origin redirect header ", + "Same origin redirection, strict-origin init, strict-origin redirect header ", + "Cross origin redirection, strict-origin init, strict-origin redirect header ", + "Same origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin init, unsafe-url redirect header ", + "Cross origin redirection, strict-origin init, unsafe-url redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, same-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ", + "Same origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, unsafe-url init, origin redirect header ", + "Cross origin redirection, unsafe-url init, origin redirect header ", + "Same origin redirection, unsafe-url init, origin-when-cross-origin redirect header ", + "Cross origin redirection, unsafe-url init, origin-when-cross-origin redirect header ", + "Same origin redirection, unsafe-url init, same-origin redirect header ", + "Same origin redirection, unsafe-url init, strict-origin redirect header ", + "Cross origin redirection, unsafe-url init, strict-origin redirect header ", + "Same origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, unsafe-url init, unsafe-url redirect header ", + "Cross origin redirection, unsafe-url init, unsafe-url redirect header " + ], + "redirect-referrer-override.any.worker.html": [ + "Same origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, same-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ", + "Cross origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ", + "Same origin redirection, origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, origin init, origin redirect header ", + "Cross origin redirection, origin init, origin redirect header ", + "Same origin redirection, origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, origin init, same-origin redirect header ", + "Same origin redirection, origin init, strict-origin redirect header ", + "Cross origin redirection, origin init, strict-origin redirect header ", + "Same origin redirection, origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, origin init, unsafe-url redirect header ", + "Cross origin redirection, origin init, unsafe-url redirect header ", + "Same origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, origin-when-cross-origin init, origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, same-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, strict-origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, strict-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, origin-when-cross-origin init, unsafe-url redirect header ", + "Cross origin redirection, origin-when-cross-origin init, unsafe-url redirect header ", + "Same origin redirection, same-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, same-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, same-origin init, origin redirect header ", + "Cross origin redirection, same-origin init, origin redirect header ", + "Same origin redirection, same-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, same-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, same-origin init, same-origin redirect header ", + "Same origin redirection, same-origin init, strict-origin redirect header ", + "Cross origin redirection, same-origin init, strict-origin redirect header ", + "Same origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, same-origin init, unsafe-url redirect header ", + "Cross origin redirection, same-origin init, unsafe-url redirect header ", + "Same origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, strict-origin init, origin redirect header ", + "Cross origin redirection, strict-origin init, origin redirect header ", + "Same origin redirection, strict-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin init, same-origin redirect header ", + "Same origin redirection, strict-origin init, strict-origin redirect header ", + "Cross origin redirection, strict-origin init, strict-origin redirect header ", + "Same origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin init, unsafe-url redirect header ", + "Cross origin redirection, strict-origin init, unsafe-url redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, same-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ", + "Cross origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ", + "Same origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, unsafe-url init, origin redirect header ", + "Cross origin redirection, unsafe-url init, origin redirect header ", + "Same origin redirection, unsafe-url init, origin-when-cross-origin redirect header ", + "Cross origin redirection, unsafe-url init, origin-when-cross-origin redirect header ", + "Same origin redirection, unsafe-url init, same-origin redirect header ", + "Same origin redirection, unsafe-url init, strict-origin redirect header ", + "Cross origin redirection, unsafe-url init, strict-origin redirect header ", + "Same origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, unsafe-url init, unsafe-url redirect header ", + "Cross origin redirection, unsafe-url init, unsafe-url redirect header " + ], + "redirect-referrer.any.html": [ + "Same origin redirection, empty init, unsafe-url redirect header ", + "Same origin redirection, empty init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, empty init, same-origin redirect header ", + "Same origin redirection, empty init, origin redirect header ", + "Same origin redirection, empty init, origin-when-cross-origin redirect header ", + "Same origin redirection, empty init, strict-origin redirect header ", + "Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, empty redirect header, unsafe-url init ", + "Same origin redirection, empty redirect header, no-referrer-when-downgrade init ", + "Same origin redirection, empty redirect header, same-origin init ", + "Same origin redirection, empty redirect header, origin init ", + "Same origin redirection, empty redirect header, origin-when-cross-origin init ", + "Same origin redirection, empty redirect header, strict-origin init ", + "Same origin redirection, empty redirect header, strict-origin-when-cross-origin init ", + "Cross origin redirection, empty init, unsafe-url redirect header ", + "Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, empty init, origin redirect header ", + "Cross origin redirection, empty init, origin-when-cross-origin redirect header ", + "Cross origin redirection, empty init, strict-origin redirect header ", + "Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, empty redirect header, unsafe-url init ", + "Cross origin redirection, empty redirect header, no-referrer-when-downgrade init ", + "Cross origin redirection, empty redirect header, origin init ", + "Cross origin redirection, empty redirect header, origin-when-cross-origin init ", + "Cross origin redirection, empty redirect header, strict-origin init ", + "Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init " + ], + "redirect-referrer.any.worker.html": [ + "Same origin redirection, empty init, unsafe-url redirect header ", + "Same origin redirection, empty init, no-referrer-when-downgrade redirect header ", + "Same origin redirection, empty init, same-origin redirect header ", + "Same origin redirection, empty init, origin redirect header ", + "Same origin redirection, empty init, origin-when-cross-origin redirect header ", + "Same origin redirection, empty init, strict-origin redirect header ", + "Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ", + "Same origin redirection, empty redirect header, unsafe-url init ", + "Same origin redirection, empty redirect header, no-referrer-when-downgrade init ", + "Same origin redirection, empty redirect header, same-origin init ", + "Same origin redirection, empty redirect header, origin init ", + "Same origin redirection, empty redirect header, origin-when-cross-origin init ", + "Same origin redirection, empty redirect header, strict-origin init ", + "Same origin redirection, empty redirect header, strict-origin-when-cross-origin init ", + "Cross origin redirection, empty init, unsafe-url redirect header ", + "Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ", + "Cross origin redirection, empty init, origin redirect header ", + "Cross origin redirection, empty init, origin-when-cross-origin redirect header ", + "Cross origin redirection, empty init, strict-origin redirect header ", + "Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ", + "Cross origin redirection, empty redirect header, unsafe-url init ", + "Cross origin redirection, empty redirect header, no-referrer-when-downgrade init ", + "Cross origin redirection, empty redirect header, origin init ", + "Cross origin redirection, empty redirect header, origin-when-cross-origin init ", + "Cross origin redirection, empty redirect header, strict-origin init ", + "Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init " + ] + }, + "idlharness.any.html": [ + "Request interface: attribute destination", + "Request interface: attribute referrer", + "Request interface: attribute referrerPolicy", + "Request interface: attribute mode", + "Request interface: attribute credentials", + "Request interface: attribute cache", + "Request interface: attribute integrity", + "Request interface: attribute keepalive", + "Request interface: attribute isReloadNavigation", + "Request interface: attribute isHistoryNavigation", + "Request interface: attribute duplex", + "Request interface: attribute body", + "Request interface: attribute bodyUsed", + "Request interface: new Request('about:blank') must inherit property \"destination\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"referrer\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"referrerPolicy\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"mode\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"credentials\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"cache\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"integrity\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"keepalive\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"isReloadNavigation\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"isHistoryNavigation\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"duplex\" with the proper type", + "Response interface: operation json(any, optional ResponseInit)", + "Response interface: attribute body", + "Response interface: attribute bodyUsed", + "Response interface: calling redirect(USVString, optional unsigned short) on new Response() with too few arguments must throw TypeError", + "Window interface: operation fetch(RequestInfo, optional RequestInit)" + ], + "idlharness.any.worker.html": [ + "Request interface: attribute destination", + "Request interface: attribute referrer", + "Request interface: attribute referrerPolicy", + "Request interface: attribute mode", + "Request interface: attribute credentials", + "Request interface: attribute cache", + "Request interface: attribute integrity", + "Request interface: attribute keepalive", + "Request interface: attribute isReloadNavigation", + "Request interface: attribute isHistoryNavigation", + "Request interface: attribute duplex", + "Request interface: attribute body", + "Request interface: attribute bodyUsed", + "Request interface: new Request('about:blank') must inherit property \"destination\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"referrer\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"referrerPolicy\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"mode\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"credentials\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"cache\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"integrity\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"keepalive\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"isReloadNavigation\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"isHistoryNavigation\" with the proper type", + "Request interface: new Request('about:blank') must inherit property \"duplex\" with the proper type", + "Response interface: operation json(any, optional ResponseInit)", + "Response interface: attribute body", + "Response interface: attribute bodyUsed", + "Response interface: calling redirect(USVString, optional unsigned short) on new Response() with too few arguments must throw TypeError", + "WorkerGlobalScope interface: operation fetch(RequestInfo, optional RequestInit)", + "WorkerGlobalScope interface: self must inherit property \"fetch(RequestInfo, optional RequestInit)\" with the proper type", + "WorkerGlobalScope interface: calling fetch(RequestInfo, optional RequestInit) on self with too few arguments must throw TypeError" + ], + "abort": { + "request.any.html": true, + "request.any.worker.html": true, + "general.any.html": true, + "general.any.worker.html": true, + "cache.https.any.html": false, + "cache.https.any.worker.html": false + }, + "cors": { + "cors-basic.any.html": false, + "cors-basic.any.worker.html": false, + "cors-cookies-redirect.any.html": [ + "Testing credentials after cross-origin redirection with CORS and no preflight", + "Testing credentials after cross-origin redirection with CORS and preflight" + ], + "cors-cookies-redirect.any.worker.html": [ + "Testing credentials after cross-origin redirection with CORS and no preflight", + "Testing credentials after cross-origin redirection with CORS and preflight" + ], + "cors-cookies.any.html": [ + "Include mode: 1 cookie" + ], + "cors-cookies.any.worker.html": [ + "Include mode: 1 cookie" + ], + "cors-expose-star.sub.any.html": false, + "cors-expose-star.sub.any.worker.html": false, + "cors-filtering.sub.any.html": false, + "cors-filtering.sub.any.worker.html": false, + "cors-multiple-origins.sub.any.html": false, + "cors-multiple-origins.sub.any.worker.html": false, + "cors-no-preflight.any.html": true, + "cors-no-preflight.any.worker.html": true, + "cors-origin.any.html": [ + "Cross domain different subdomain [origin KO]", + "Same domain different port [origin KO]", + "Cross domain different port [origin KO]", + "Cross domain different protocol [origin KO]", + "Same domain different protocol different port [origin KO]", + "Cross domain [POST] [origin KO]", + "Cross domain [HEAD] [origin KO]", + "CORS preflight [PUT] [origin KO]", + "Allowed origin: \"\" [origin KO]" + ], + "cors-origin.any.worker.html": [ + "Cross domain different subdomain [origin KO]", + "Same domain different port [origin KO]", + "Cross domain different port [origin KO]", + "Cross domain different protocol [origin KO]", + "Same domain different protocol different port [origin KO]", + "Cross domain [POST] [origin KO]", + "Cross domain [HEAD] [origin KO]", + "CORS preflight [PUT] [origin KO]", + "Allowed origin: \"\" [origin KO]" + ], + "cors-preflight-cache.any.html": false, + "cors-preflight-cache.any.worker.html": false, + "cors-preflight-not-cors-safelisted.any.html": [ + "Need CORS-preflight for accept/\" header", + "Need CORS-preflight for accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 header", + "Need CORS-preflight for accept-language/\u0001 header", + "Need CORS-preflight for accept-language/@ header", + "Need CORS-preflight for authorization/basics header", + "Need CORS-preflight for content-language/\u0001 header", + "Need CORS-preflight for content-language/@ header", + "Need CORS-preflight for content-type/text/html header", + "Need CORS-preflight for content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 header", + "Need CORS-preflight for range/bytes 0- header", + "Need CORS-preflight for test/hi header" + ], + "cors-preflight-not-cors-safelisted.any.worker.html": [ + "Need CORS-preflight for accept/\" header", + "Need CORS-preflight for accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 header", + "Need CORS-preflight for accept-language/\u0001 header", + "Need CORS-preflight for accept-language/@ header", + "Need CORS-preflight for authorization/basics header", + "Need CORS-preflight for content-language/\u0001 header", + "Need CORS-preflight for content-language/@ header", + "Need CORS-preflight for content-type/text/html header", + "Need CORS-preflight for content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 header", + "Need CORS-preflight for range/bytes 0- header", + "Need CORS-preflight for test/hi header" + ], + "cors-preflight-redirect.any.html": false, + "cors-preflight-redirect.any.worker.html": false, + "cors-preflight-referrer.any.html": false, + "cors-preflight-referrer.any.worker.html": false, + "cors-preflight-response-validation.any.html": false, + "cors-preflight-response-validation.any.worker.html": false, + "cors-preflight-star.any.html": false, + "cors-preflight-star.any.worker.html": false, + "cors-preflight-status.any.html": false, + "cors-preflight-status.any.worker.html": false, + "cors-preflight.any.html": [ + "CORS [DELETE], server allows", + "CORS [DELETE], server refuses", + "CORS [PUT], server allows", + "CORS [PUT], server allows, check preflight has user agent", + "CORS [PUT], server refuses", + "CORS [PATCH], server allows", + "CORS [PATCH], server refuses", + "CORS [patcH], server allows", + "CORS [patcH], server refuses", + "CORS [NEW], server allows", + "CORS [NEW], server refuses", + "CORS [chicken], server allows", + "CORS [chicken], server refuses", + "CORS [GET] [x-test-header: allowed], server allows", + "CORS [GET] [x-test-header: refused], server refuses", + "CORS [GET] [several headers], server allows", + "CORS [GET] [several headers], server refuses", + "CORS [PUT] [several headers], server allows", + "CORS [PUT] [several headers], server refuses", + "CORS [PUT] [only safe headers], server allows", + "\"authorization\" should not be covered by the wildcard symbol" + ], + "cors-preflight.any.worker.html": [ + "CORS [DELETE], server allows", + "CORS [DELETE], server refuses", + "CORS [PUT], server allows", + "CORS [PUT], server allows, check preflight has user agent", + "CORS [PUT], server refuses", + "CORS [PATCH], server allows", + "CORS [PATCH], server refuses", + "CORS [patcH], server allows", + "CORS [patcH], server refuses", + "CORS [NEW], server allows", + "CORS [NEW], server refuses", + "CORS [chicken], server allows", + "CORS [chicken], server refuses", + "CORS [GET] [x-test-header: allowed], server allows", + "CORS [GET] [x-test-header: refused], server refuses", + "CORS [GET] [several headers], server allows", + "CORS [GET] [several headers], server refuses", + "CORS [PUT] [several headers], server allows", + "CORS [PUT] [several headers], server refuses", + "CORS [PUT] [only safe headers], server allows", + "\"authorization\" should not be covered by the wildcard symbol" + ], + "cors-redirect-credentials.any.html": [ + "Redirect 301 from same origin to remote with user and password", + "Redirect 301 from same origin to remote with user", + "Redirect 301 from same origin to remote with password", + "Redirect 301 from remote to same origin with user and password", + "Redirect 301 from remote to same origin with user", + "Redirect 301 from remote to same origin with password", + "Redirect 301 from remote to same remote with user and password", + "Redirect 301 from remote to same remote with user", + "Redirect 301 from remote to same remote with password", + "Redirect 301 from remote to another remote with user and password", + "Redirect 301 from remote to another remote with user", + "Redirect 301 from remote to another remote with password", + "Redirect 302 from same origin to remote with user and password", + "Redirect 302 from same origin to remote with user", + "Redirect 302 from same origin to remote with password", + "Redirect 302 from remote to same origin with user and password", + "Redirect 302 from remote to same origin with user", + "Redirect 302 from remote to same origin with password", + "Redirect 302 from remote to same remote with user and password", + "Redirect 302 from remote to same remote with user", + "Redirect 302 from remote to same remote with password", + "Redirect 302 from remote to another remote with user and password", + "Redirect 302 from remote to another remote with user", + "Redirect 302 from remote to another remote with password", + "Redirect 303 from same origin to remote with user and password", + "Redirect 303 from same origin to remote with user", + "Redirect 303 from same origin to remote with password", + "Redirect 303 from remote to same origin with user and password", + "Redirect 303 from remote to same origin with user", + "Redirect 303 from remote to same origin with password", + "Redirect 303 from remote to same remote with user and password", + "Redirect 303 from remote to same remote with user", + "Redirect 303 from remote to same remote with password", + "Redirect 303 from remote to another remote with user and password", + "Redirect 303 from remote to another remote with user", + "Redirect 303 from remote to another remote with password", + "Redirect 307 from same origin to remote with user and password", + "Redirect 307 from same origin to remote with user", + "Redirect 307 from same origin to remote with password", + "Redirect 307 from remote to same origin with user and password", + "Redirect 307 from remote to same origin with user", + "Redirect 307 from remote to same origin with password", + "Redirect 307 from remote to same remote with user and password", + "Redirect 307 from remote to same remote with user", + "Redirect 307 from remote to same remote with password", + "Redirect 307 from remote to another remote with user and password", + "Redirect 307 from remote to another remote with user", + "Redirect 307 from remote to another remote with password", + "Redirect 308 from same origin to remote with user and password", + "Redirect 308 from same origin to remote with user", + "Redirect 308 from same origin to remote with password", + "Redirect 308 from remote to same origin with user and password", + "Redirect 308 from remote to same origin with user", + "Redirect 308 from remote to same origin with password", + "Redirect 308 from remote to same remote with user and password", + "Redirect 308 from remote to same remote with user", + "Redirect 308 from remote to same remote with password", + "Redirect 308 from remote to another remote with user and password", + "Redirect 308 from remote to another remote with user", + "Redirect 308 from remote to another remote with password" + ], + "cors-redirect-credentials.any.worker.html": [ + "Redirect 301 from same origin to remote with user and password", + "Redirect 301 from same origin to remote with user", + "Redirect 301 from same origin to remote with password", + "Redirect 301 from remote to same origin with user and password", + "Redirect 301 from remote to same origin with user", + "Redirect 301 from remote to same origin with password", + "Redirect 301 from remote to same remote with user and password", + "Redirect 301 from remote to same remote with user", + "Redirect 301 from remote to same remote with password", + "Redirect 301 from remote to another remote with user and password", + "Redirect 301 from remote to another remote with user", + "Redirect 301 from remote to another remote with password", + "Redirect 302 from same origin to remote with user and password", + "Redirect 302 from same origin to remote with user", + "Redirect 302 from same origin to remote with password", + "Redirect 302 from remote to same origin with user and password", + "Redirect 302 from remote to same origin with user", + "Redirect 302 from remote to same origin with password", + "Redirect 302 from remote to same remote with user and password", + "Redirect 302 from remote to same remote with user", + "Redirect 302 from remote to same remote with password", + "Redirect 302 from remote to another remote with user and password", + "Redirect 302 from remote to another remote with user", + "Redirect 302 from remote to another remote with password", + "Redirect 303 from same origin to remote with user and password", + "Redirect 303 from same origin to remote with user", + "Redirect 303 from same origin to remote with password", + "Redirect 303 from remote to same origin with user and password", + "Redirect 303 from remote to same origin with user", + "Redirect 303 from remote to same origin with password", + "Redirect 303 from remote to same remote with user and password", + "Redirect 303 from remote to same remote with user", + "Redirect 303 from remote to same remote with password", + "Redirect 303 from remote to another remote with user and password", + "Redirect 303 from remote to another remote with user", + "Redirect 303 from remote to another remote with password", + "Redirect 307 from same origin to remote with user and password", + "Redirect 307 from same origin to remote with user", + "Redirect 307 from same origin to remote with password", + "Redirect 307 from remote to same origin with user and password", + "Redirect 307 from remote to same origin with user", + "Redirect 307 from remote to same origin with password", + "Redirect 307 from remote to same remote with user and password", + "Redirect 307 from remote to same remote with user", + "Redirect 307 from remote to same remote with password", + "Redirect 307 from remote to another remote with user and password", + "Redirect 307 from remote to another remote with user", + "Redirect 307 from remote to another remote with password", + "Redirect 308 from same origin to remote with user and password", + "Redirect 308 from same origin to remote with user", + "Redirect 308 from same origin to remote with password", + "Redirect 308 from remote to same origin with user and password", + "Redirect 308 from remote to same origin with user", + "Redirect 308 from remote to same origin with password", + "Redirect 308 from remote to same remote with user and password", + "Redirect 308 from remote to same remote with user", + "Redirect 308 from remote to same remote with password", + "Redirect 308 from remote to another remote with user and password", + "Redirect 308 from remote to another remote with user", + "Redirect 308 from remote to another remote with password" + ], + "cors-redirect-preflight.any.html": false, + "cors-redirect-preflight.any.worker.html": false, + "cors-redirect.any.html": false, + "cors-redirect.any.worker.html": false + }, + "credentials": { + "authentication-basic.any.html": true, + "authentication-basic.any.worker.html": true, + "authentication-redirection.any.html": [ + "getAuthorizationHeaderValue - cross origin redirection" + ], + "authentication-redirection.any.worker.html": [ + "getAuthorizationHeaderValue - cross origin redirection" + ], + "cookies.any.html": [ + "Include mode: 1 cookie", + "Include mode: 2 cookies", + "Same-origin mode: 1 cookie", + "Same-origin mode: 2 cookies" + ], + "cookies.any.worker.html": [ + "Include mode: 1 cookie", + "Include mode: 2 cookies", + "Same-origin mode: 1 cookie", + "Same-origin mode: 2 cookies" + ] + } + }, + "content-length": { + "api-and-duplicate-headers.any.html": false, + "api-and-duplicate-headers.any.worker.html": false, + "too-long.window.html": true, + "parsing.window.html": [ + "Input: \"Content-Length: aaaah\\r\\nContent-Length: aaaah\". Expected: 42.", + "Input: \"Content-Length: aaaah, aaaah\". Expected: 42.", + "Input: \"Content-Length: aaaah\". Expected: 42.", + "Input: \"Content-Length: 42s\". Expected: 42.", + "Input: \"Content-Length: 30s\". Expected: 42.", + "Input: \"Content-Length: -1\". Expected: 42.", + "Input: \"Content-Length: 0x20\". Expected: 42.", + "Input: \"Content-Length: 030\\r\\nContent-Length: 30\". Expected: network error.", + "Input: \"Content-Length: 030, 30\". Expected: network error.", + "Input: \"Content-Length: \\\"30\\\"\". Expected: 42.", + "Input: \"Content-Length: \". Expected: 42." + ] + }, + "content-type": { + "multipart.window.html": true, + "multipart-malformed.any.html": false, + "multipart-malformed.any.worker.html": false, + "response.window.html": [ + "<iframe>: separate response Content-Type: text/plain", + "<iframe>: combined response Content-Type: text/plain", + "<iframe>: separate response Content-Type: text/plain ", + "<iframe>: combined response Content-Type: text/plain ", + "<iframe>: separate response Content-Type: text/html text/plain", + "<iframe>: combined response Content-Type: text/html text/plain", + "<iframe>: separate response Content-Type: text/plain;charset=gbk text/html", + "<iframe>: combined response Content-Type: text/plain;charset=gbk text/html", + "<iframe>: separate response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254", + "<iframe>: combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254", + "<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain", + "<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain", + "<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252", + "<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252", + "<iframe>: separate response Content-Type: text/html;charset=gbk text/html;x=\",text/plain", + "<iframe>: combined response Content-Type: text/html;charset=gbk text/html;x=\",text/plain", + "<iframe>: separate response Content-Type: text/plain;charset=gbk;x=foo text/plain", + "<iframe>: combined response Content-Type: text/plain;charset=gbk;x=foo text/plain", + "<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html", + "<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html", + "<iframe>: separate response Content-Type: text/plain */*", + "<iframe>: combined response Content-Type: text/plain */*", + "<iframe>: separate response Content-Type: text/html */*", + "<iframe>: combined response Content-Type: text/html */*", + "<iframe>: separate response Content-Type: */* text/html", + "<iframe>: combined response Content-Type: */* text/html", + "<iframe>: separate response Content-Type: text/plain */*;charset=gbk", + "<iframe>: combined response Content-Type: text/plain */*;charset=gbk", + "<iframe>: separate response Content-Type: text/html */*;charset=gbk", + "<iframe>: combined response Content-Type: text/html */*;charset=gbk", + "<iframe>: separate response Content-Type: text/html;x=\" text/plain", + "<iframe>: combined response Content-Type: text/html;x=\" text/plain", + "<iframe>: separate response Content-Type: text/html;\" text/plain", + "<iframe>: combined response Content-Type: text/html;\" text/plain", + "<iframe>: separate response Content-Type: text/html;\" \\\" text/plain", + "<iframe>: combined response Content-Type: text/html;\" \\\" text/plain", + "<iframe>: separate response Content-Type: text/html;\" \\\" text/plain \";charset=GBK", + "<iframe>: combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK", + "<iframe>: separate response Content-Type: text/html;\" \" text/plain", + "<iframe>: combined response Content-Type: text/html;\" \" text/plain", + "fetch(): combined response Content-Type: text/html;x=\" text/plain", + "fetch(): separate response Content-Type: text/html;\" \\\" text/plain \";charset=GBK", + "fetch(): combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK", + "Request: combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK", + "Response: combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK" + ], + "script.window.html": [ + "separate text/javascript;charset=windows-1252", + "separate text/javascript;\";charset=windows-1252", + "separate text/javascript\f", + "separate \"text/javascript\"", + "separate text/ javascript", + "separate text /javascript", + "separate x/x text/javascript", + "combined x/x text/javascript", + "separate x/x;charset=windows-1252 text/javascript", + "combined x/x;charset=windows-1252 text/javascript", + "separate text/javascript x/x", + "combined text/javascript x/x", + "separate text/javascript; charset=windows-1252 text/javascript", + "combined text/javascript; charset=windows-1252 text/javascript", + "separate text/javascript;\" x/x", + "combined text/javascript;\" x/x", + "separate text/javascript ", + "combined text/javascript ", + "separate text/javascript error", + "combined text/javascript error", + "separate text/javascript;charset=windows-1252 x/x text/javascript", + "combined text/javascript;charset=windows-1252 x/x text/javascript", + "separate text/javascript;charset=windows-1252 error text/javascript", + "combined text/javascript;charset=windows-1252 error text/javascript", + "separate text/javascript;charset=windows-1252 text/javascript", + "combined text/javascript;charset=windows-1252 text/javascript", + "separate text/javascript;charset=windows-1252;\" \\\" x/x", + "combined text/javascript;charset=windows-1252;\" \\\" x/x", + "separate x/x;\" x/y;\\\" text/javascript;charset=windows-1252;\" text/javascript", + "combined x/x;\" x/y;\\\" text/javascript;charset=windows-1252;\" text/javascript" + ] + }, + "data-urls": { + "base64.any.html": true, + "base64.any.worker.html": true, + "processing.any.html": true, + "processing.any.worker.html": true + }, + "h1-parsing": { + "lone-cr.window.html": [ + "Parsing response with a lone CR before message-body (HTTP/1.1 200 OK\nHeader: Value\r\n\nBody)" + ], + "status-code.window.html": [ + "HTTP/1.1 0 OK ", + "HTTP/1.1 1 OK ", + "HTTP/1.1 99 NOT OK ", + "HTTP/1.1 077 77 ", + "HTTP/1.1 099 HELLO ", + "HTTP/1.1 200 ", + "HTTP/1.1 999 DOES IT MATTER " + ], + "resources-with-0x00-in-header.window.html": false + }, + "range": { + "general.any.html": [ + "Privileged header not allowed for guard type: request-no-cors", + "Cross Origin Fetch with non safe range header" + ], + "general.any.worker.html": [ + "Privileged header not allowed for guard type: request-no-cors", + "Cross Origin Fetch with non safe range header" + ], + "general.window.html": false, + "blob.any.html": false, + "blob.any.worker.html": false, + "data.any.html": true, + "data.any.worker.html": true, + "sw.https.window.html": false + }, + "cross-origin-resource-policy": { + "fetch.any.html": [ + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-scheme (HTTP to HTTPS) no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-origin no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-origin' response header.", + "Valid cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header." + ], + "fetch.any.worker.html": [ + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-scheme (HTTP to HTTPS) no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-origin no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-origin' response header.", + "Valid cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header." + ], + "fetch.https.any.html": [ + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header." + ], + "fetch.https.any.worker.html": [ + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.", + "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header." + ], + "scheme-restriction.any.html": false, + "scheme-restriction.any.worker.html": false, + "scheme-restriction.https.window.html": false, + "syntax.any.html": true, + "syntax.any.worker.html": true + }, + "http-cache": { + "304-update.any.html": false, + "304-update.any.worker.html": false, + "cache-mode.any.html": [ + "Fetch sends Cache-Control: max-age=0 when cache mode is no-cache", + "Fetch sends Cache-Control: no-cache and Pragma: no-cache when cache mode is no-store" + ], + "cache-mode.any.worker.html": [ + "Fetch sends Cache-Control: max-age=0 when cache mode is no-cache", + "Fetch sends Cache-Control: no-cache and Pragma: no-cache when cache mode is no-store" + ], + "cc-request.any.html": [ + "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use", + "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use", + "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached" + ], + "cc-request.any.worker.html": [ + "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use", + "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use", + "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached" + ], + "credentials.tentative.any.html": false, + "credentials.tentative.any.worker.html": false, + "freshness.any.html": [ + "HTTP cache reuses a response with a future Expires", + "HTTP cache reuses a response with positive Cache-Control: max-age", + "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires", + "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires", + "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use", + "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires" + ], + "freshness.any.worker.html": [ + "HTTP cache reuses a response with a future Expires", + "HTTP cache reuses a response with positive Cache-Control: max-age", + "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires", + "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires", + "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use", + "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires" + ], + "heuristic.any.html": [ + "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present", + "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness" + ], + "heuristic.any.worker.html": [ + "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present", + "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness", + "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness" + ], + "invalidate.any.html": [ + "HTTP cache does not invalidate after a failed response from an unsafe request", + "HTTP cache does not invalidate Location URL after a failed response from an unsafe request", + "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request" + ], + "invalidate.any.worker.html": [ + "HTTP cache does not invalidate after a failed response from an unsafe request", + "HTTP cache does not invalidate Location URL after a failed response from an unsafe request", + "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request" + ], + "partial.any.html": false, + "partial.any.worker.html": false, + "post-patch.any.html": false, + "post-patch.any.worker.html": false, + "status.any.html": [ + "HTTP cache avoids going to the network if it has a fresh 200 response", + "HTTP cache avoids going to the network if it has a fresh 203 response", + "HTTP cache avoids going to the network if it has a fresh 204 response", + "HTTP cache avoids going to the network if it has a fresh 299 response", + "HTTP cache avoids going to the network if it has a fresh 400 response", + "HTTP cache avoids going to the network if it has a fresh 404 response", + "HTTP cache avoids going to the network if it has a fresh 410 response", + "HTTP cache avoids going to the network if it has a fresh 499 response", + "HTTP cache avoids going to the network if it has a fresh 500 response", + "HTTP cache avoids going to the network if it has a fresh 502 response", + "HTTP cache avoids going to the network if it has a fresh 503 response", + "HTTP cache avoids going to the network if it has a fresh 504 response", + "HTTP cache avoids going to the network if it has a fresh 599 response" + ], + "status.any.worker.html": [ + "HTTP cache avoids going to the network if it has a fresh 200 response", + "HTTP cache avoids going to the network if it has a fresh 203 response", + "HTTP cache avoids going to the network if it has a fresh 204 response", + "HTTP cache avoids going to the network if it has a fresh 299 response", + "HTTP cache avoids going to the network if it has a fresh 400 response", + "HTTP cache avoids going to the network if it has a fresh 404 response", + "HTTP cache avoids going to the network if it has a fresh 410 response", + "HTTP cache avoids going to the network if it has a fresh 499 response", + "HTTP cache avoids going to the network if it has a fresh 500 response", + "HTTP cache avoids going to the network if it has a fresh 502 response", + "HTTP cache avoids going to the network if it has a fresh 503 response", + "HTTP cache avoids going to the network if it has a fresh 504 response", + "HTTP cache avoids going to the network if it has a fresh 599 response" + ], + "vary.any.html": [ + "HTTP cache reuses Vary response when request matches", + "HTTP cache doesn't invalidate existing Vary response", + "HTTP cache doesn't pay attention to headers not listed in Vary", + "HTTP cache reuses two-way Vary response when request matches", + "HTTP cache reuses three-way Vary response when request matches", + "HTTP cache uses three-way Vary response when both request and the original request omited a variant header" + ], + "vary.any.worker.html": [ + "HTTP cache reuses Vary response when request matches", + "HTTP cache doesn't invalidate existing Vary response", + "HTTP cache doesn't pay attention to headers not listed in Vary", + "HTTP cache reuses two-way Vary response when request matches", + "HTTP cache reuses three-way Vary response when request matches", + "HTTP cache uses three-way Vary response when both request and the original request omited a variant header" + ] + }, + "metadata": { + "fetch-preflight.https.sub.any.html": [ + "Same-site fetch with preflight: sec-fetch-dest", + "Same-site fetch with preflight: sec-fetch-mode", + "Same-site fetch with preflight: sec-fetch-site", + "Cross-site fetch with preflight: sec-fetch-dest", + "Cross-site fetch with preflight: sec-fetch-mode", + "Cross-site fetch with preflight: sec-fetch-site" + ], + "fetch-preflight.https.sub.any.worker.html": [ + "Same-site fetch with preflight: sec-fetch-dest", + "Same-site fetch with preflight: sec-fetch-mode", + "Same-site fetch with preflight: sec-fetch-site", + "Cross-site fetch with preflight: sec-fetch-dest", + "Cross-site fetch with preflight: sec-fetch-mode", + "Cross-site fetch with preflight: sec-fetch-site" + ], + "fetch.https.sub.any.html": [ + "Same-origin fetch: sec-fetch-dest", + "Same-origin fetch: sec-fetch-mode", + "Same-origin fetch: sec-fetch-site", + "Same-site fetch: sec-fetch-dest", + "Same-site fetch: sec-fetch-mode", + "Same-site fetch: sec-fetch-site", + "Cross-site fetch: sec-fetch-dest", + "Cross-site fetch: sec-fetch-mode", + "Cross-site fetch: sec-fetch-site", + "Same-origin mode: sec-fetch-dest", + "Same-origin mode: sec-fetch-mode", + "Same-origin mode: sec-fetch-site", + "CORS mode: sec-fetch-dest", + "CORS mode: sec-fetch-mode", + "CORS mode: sec-fetch-site", + "no-CORS mode: sec-fetch-dest", + "no-CORS mode: sec-fetch-mode", + "no-CORS mode: sec-fetch-site" + ], + "fetch.https.sub.any.worker.html": [ + "Same-origin fetch: sec-fetch-dest", + "Same-origin fetch: sec-fetch-mode", + "Same-origin fetch: sec-fetch-site", + "Same-site fetch: sec-fetch-dest", + "Same-site fetch: sec-fetch-mode", + "Same-site fetch: sec-fetch-site", + "Cross-site fetch: sec-fetch-dest", + "Cross-site fetch: sec-fetch-mode", + "Cross-site fetch: sec-fetch-site", + "Same-origin mode: sec-fetch-dest", + "Same-origin mode: sec-fetch-mode", + "Same-origin mode: sec-fetch-site", + "CORS mode: sec-fetch-dest", + "CORS mode: sec-fetch-mode", + "CORS mode: sec-fetch-site", + "no-CORS mode: sec-fetch-dest", + "no-CORS mode: sec-fetch-mode", + "no-CORS mode: sec-fetch-site" + ], + "trailing-dot.https.sub.any.html": [ + "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-dest", + "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-mode", + "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-site", + "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-dest", + "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-mode", + "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-site", + "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-dest", + "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-mode", + "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-site" + ], + "trailing-dot.https.sub.any.worker.html": [ + "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-dest", + "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-mode", + "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-site", + "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-dest", + "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-mode", + "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-site", + "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-dest", + "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-mode", + "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-site" + ] + }, + "nosniff": { + "parsing-nosniff.window.html": [ + "X-Content-Type-Options%3A%20NOSNIFF", + "x-content-type-OPTIONS%3A%20nosniff", + "X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!", + "X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff", + "X-Content-Type-Options%3A%20nosniff%0D%0AX-Content-Type-Options%3A%20no", + "X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff", + "X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff", + "X-Content-Type-Options%3A%20nosniff%0D%0AX-Content-Type-Options%3A%20nosniff", + "X-Content-Type-Options%3A%20%2Cnosniff", + "X-Content-Type-Options%3A%20nosniff%0C", + "X-Content-Type-Options%3A%20nosniff%0B", + "X-Content-Type-Options%3A%20nosniff%0B%2Cnosniff", + "X-Content-Type-Options%3A%20'NosniFF'", + "X-Content-Type-Options%3A%20%22nosniFF%22", + "Content-Type-Options%3A%20nosniff" + ] + }, + "orb": { + "tentative": { + "content-range.sub.any.html": [ + "ORB should block opaque range of image/png not starting at zero, that isn't subsequent: fetch(..., {mode: \"no-cors\"})" + ], + "content-range.sub.any.worker.html": [ + "ORB should block opaque range of image/png not starting at zero, that isn't subsequent: fetch(..., {mode: \"no-cors\"})" + ], + "known-mime-type.sub.any.html": [ + "ORB should block opaque font/ttf: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque font/ttf: <img src=...>", + "ORB should block opaque font/ttf: <audio src=...>", + "ORB should block opaque font/ttf: <video src=...>", + "ORB should block opaque font/ttf: <script src=...>", + "ORB should block opaque text/plain: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque text/plain: <img src=...>", + "ORB should block opaque text/plain: <audio src=...>", + "ORB should block opaque text/plain: <video src=...>", + "ORB should block opaque text/plain: <script src=...>", + "ORB should block opaque application/json (non-empty): fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque application/json (non-empty): <img src=...>", + "ORB should block opaque application/json (non-empty): <audio src=...>", + "ORB should block opaque application/json (non-empty): <video src=...>", + "ORB should block opaque application/json (non-empty): <script src=...>", + "ORB should block opaque application/json (empty): fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque application/json (empty): <img src=...>", + "ORB should block opaque application/json (empty): <audio src=...>", + "ORB should block opaque application/json (empty): <video src=...>", + "ORB should block opaque application/json (empty): <script src=...>", + "ORB should block opaque application/json which contains non ascii characters: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque application/json which contains non ascii characters: <img src=...>", + "ORB should block opaque application/json which contains non ascii characters: <audio src=...>", + "ORB should block opaque application/json which contains non ascii characters: <video src=...>", + "ORB should block opaque application/json which contains non ascii characters: <script src=...>", + "ORB shouldn't block opaque image/png: <img src=...>", + "ORB shouldn't block opaque text/javascript: <script src=...>", + "ORB shouldn't block opaque text/javascript (utf16 encoded with BOM): <script src=...>", + "ORB shouldn't block opaque text/javascript (utf16 encoded without BOM but charset is provided in content-type): <script src=...>", + "ORB shouldn't block opaque text/javascript (iso-8559-1 encoded): <script src=...>", + "ORB shouldn't block text/javascript with valid asm.js: <script src=...>", + "ORB shouldn't block text/javascript with invalid asm.js: <script src=...>" + ], + "known-mime-type.sub.any.worker.html": [ + "ORB should block opaque font/ttf: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque text/plain: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque application/json (non-empty): fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque application/json (empty): fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque application/json which contains non ascii characters: fetch(..., {mode: \"no-cors\"})" + ], + "nosniff.sub.any.html": [ + "ORB should block opaque text/plain with nosniff: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque text/plain with nosniff: <img src=...>", + "ORB should block opaque text/plain with nosniff: <audio src=...>", + "ORB should block opaque text/plain with nosniff: <video src=...>", + "ORB should block opaque text/plain with nosniff: <script src=...>", + "ORB should block opaque-response-blocklisted MIME type with nosniff: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque-response-blocklisted MIME type with nosniff: <img src=...>", + "ORB should block opaque-response-blocklisted MIME type with nosniff: <audio src=...>", + "ORB should block opaque-response-blocklisted MIME type with nosniff: <video src=...>", + "ORB should block opaque-response-blocklisted MIME type with nosniff: <script src=...>", + "ORB should block opaque response with empty Content-Type and nosniff: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque response with empty Content-Type and nosniff: <img src=...>", + "ORB should block opaque response with empty Content-Type and nosniff: <audio src=...>", + "ORB should block opaque response with empty Content-Type and nosniff: <video src=...>", + "ORB should block opaque response with empty Content-Type and nosniff: <script src=...>", + "ORB shouldn't block opaque image with empty Content-Type and nosniff: <img src=...>" + ], + "nosniff.sub.any.worker.html": [ + "ORB should block opaque text/plain with nosniff: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque-response-blocklisted MIME type with nosniff: fetch(..., {mode: \"no-cors\"})", + "ORB should block opaque response with empty Content-Type and nosniff: fetch(..., {mode: \"no-cors\"})" + ], + "status.sub.any.html": false, + "status.sub.any.worker.html": false, + "unknown-mime-type.sub.any.html": [ + "ORB shouldn't block opaque failed missing MIME type (image/png): <img src=...>", + "ORB shouldn't block opaque failed missing MIME type (text/javascript): <script src=...>" + ], + "unknown-mime-type.sub.any.worker.html": true + } + }, + "origin": { + "assorted.window.html": [ + "Origin header and 308 redirect", + "Origin header and GET navigation", + "Origin header and POST navigation", + "Origin header and POST same-origin navigation with Referrer-Policy no-referrer", + "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy no-referrer", + "Origin header and POST same-origin fetch cors mode with Referrer-Policy no-referrer", + "Origin header and POST cross-origin navigation with Referrer-Policy no-referrer", + "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy no-referrer", + "Origin header and POST cross-origin fetch cors mode with Referrer-Policy no-referrer", + "Origin header and GET cross-origin fetch cors mode with Referrer-Policy no-referrer", + "Origin header and POST same-origin navigation with Referrer-Policy same-origin", + "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy same-origin", + "Origin header and POST same-origin fetch cors mode with Referrer-Policy same-origin", + "Origin header and POST cross-origin navigation with Referrer-Policy same-origin", + "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy same-origin", + "Origin header and POST cross-origin fetch cors mode with Referrer-Policy same-origin", + "Origin header and GET cross-origin fetch cors mode with Referrer-Policy same-origin", + "Origin header and POST same-origin navigation with Referrer-Policy origin-when-cross-origin", + "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy origin-when-cross-origin", + "Origin header and POST same-origin fetch cors mode with Referrer-Policy origin-when-cross-origin", + "Origin header and POST cross-origin navigation with Referrer-Policy origin-when-cross-origin", + "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy origin-when-cross-origin", + "Origin header and POST cross-origin fetch cors mode with Referrer-Policy origin-when-cross-origin", + "Origin header and GET cross-origin fetch cors mode with Referrer-Policy origin-when-cross-origin", + "Origin header and POST same-origin navigation with Referrer-Policy no-referrer-when-downgrade", + "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy no-referrer-when-downgrade", + "Origin header and POST same-origin fetch cors mode with Referrer-Policy no-referrer-when-downgrade", + "Origin header and POST cross-origin navigation with Referrer-Policy no-referrer-when-downgrade", + "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy no-referrer-when-downgrade", + "Origin header and POST cross-origin fetch cors mode with Referrer-Policy no-referrer-when-downgrade", + "Origin header and GET cross-origin fetch cors mode with Referrer-Policy no-referrer-when-downgrade", + "Origin header and POST same-origin navigation with Referrer-Policy unsafe-url", + "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy unsafe-url", + "Origin header and POST same-origin fetch cors mode with Referrer-Policy unsafe-url", + "Origin header and POST cross-origin navigation with Referrer-Policy unsafe-url", + "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy unsafe-url", + "Origin header and POST cross-origin fetch cors mode with Referrer-Policy unsafe-url", + "Origin header and GET cross-origin fetch cors mode with Referrer-Policy unsafe-url" + ] + }, + "redirects": { + "data.window.html": false + }, + "security": { + "1xx-response.any.html": true, + "1xx-response.any.worker.html": true + }, + "stale-while-revalidate": { + "fetch.any.html": false, + "fetch.any.worker.html": false + } + }, + "FileAPI": { + "blob": { + "Blob-array-buffer.any.html": true, + "Blob-array-buffer.any.worker.html": true, + "Blob-constructor.any.html": true, + "Blob-constructor.any.worker.html": true, + "Blob-slice-overflow.any.html": true, + "Blob-slice-overflow.any.worker.html": true, + "Blob-slice.any.html": true, + "Blob-slice.any.worker.html": true, + "Blob-stream.any.html": true, + "Blob-stream.any.worker.html": true, + "Blob-text.any.html": true, + "Blob-text.any.worker.html": true, + "Blob-in-worker.worker.html": true, + "Blob-constructor-dom.window.html": false + }, + "file": { + "File-constructor.any.html": true, + "File-constructor.any.worker.html": true, + "send-file-formdata-controls.any.html": true, + "send-file-formdata-controls.any.worker.html": true, + "send-file-formdata-punctuation.any.html": true, + "send-file-formdata-punctuation.any.worker.html": true, + "send-file-formdata-utf-8.any.html": true, + "send-file-formdata-utf-8.any.worker.html": true, + "send-file-formdata.any.html": true, + "send-file-formdata.any.worker.html": true, + "Worker-read-file-constructor.worker.html": true + }, + "fileReader.any.html": true, + "fileReader.any.worker.html": true, + "url": { + "url-format.any.html": true, + "url-format.any.worker.html": true, + "url-with-fetch.any.html": true, + "url-with-fetch.any.worker.html": true, + "url-charset.window.html": false, + "url-in-tags-revoke.window.html": false, + "url-in-tags.window.html": false, + "url-reload.window.html": false, + "url-with-xhr.any.html": false, + "url-with-xhr.any.worker.html": false + }, + "reading-data-section": { + "Determining-Encoding.any.html": true, + "Determining-Encoding.any.worker.html": true, + "FileReader-event-handler-attributes.any.html": true, + "FileReader-event-handler-attributes.any.worker.html": true, + "FileReader-multiple-reads.any.html": true, + "FileReader-multiple-reads.any.worker.html": true, + "filereader_abort.any.html": true, + "filereader_abort.any.worker.html": true, + "filereader_error.any.html": true, + "filereader_error.any.worker.html": true, + "filereader_events.any.html": false, + "filereader_events.any.worker.html": false, + "filereader_readAsArrayBuffer.any.html": true, + "filereader_readAsArrayBuffer.any.worker.html": true, + "filereader_readAsBinaryString.any.html": true, + "filereader_readAsBinaryString.any.worker.html": true, + "filereader_readAsDataURL.any.html": true, + "filereader_readAsDataURL.any.worker.html": true, + "filereader_readAsText.any.html": true, + "filereader_readAsText.any.worker.html": true, + "filereader_readystate.any.html": true, + "filereader_readystate.any.worker.html": true, + "filereader_result.any.html": true, + "filereader_result.any.worker.html": true + }, + "idlharness.any.html": [ + "FileList interface: existence and properties of interface object", + "FileList interface object length", + "FileList interface object name", + "FileList interface: existence and properties of interface prototype object", + "FileList interface: existence and properties of interface prototype object's \"constructor\" property", + "FileList interface: existence and properties of interface prototype object's @@unscopables property", + "FileList interface: operation item(unsigned long)", + "FileList interface: attribute length" + ], + "idlharness.any.worker.html": [ + "FileList interface: existence and properties of interface object", + "FileList interface object length", + "FileList interface object name", + "FileList interface: existence and properties of interface prototype object", + "FileList interface: existence and properties of interface prototype object's \"constructor\" property", + "FileList interface: existence and properties of interface prototype object's @@unscopables property", + "FileList interface: operation item(unsigned long)", + "FileList interface: attribute length", + "FileReaderSync interface: existence and properties of interface object", + "FileReaderSync interface object length", + "FileReaderSync interface object name", + "FileReaderSync interface: existence and properties of interface prototype object", + "FileReaderSync interface: existence and properties of interface prototype object's \"constructor\" property", + "FileReaderSync interface: existence and properties of interface prototype object's @@unscopables property", + "FileReaderSync interface: operation readAsArrayBuffer(Blob)", + "FileReaderSync interface: operation readAsBinaryString(Blob)", + "FileReaderSync interface: operation readAsText(Blob, optional DOMString)", + "FileReaderSync interface: operation readAsDataURL(Blob)" + ], + "FileReaderSync.worker.html": false, + "idlharness.worker.html": [ + "FileList interface: existence and properties of interface object", + "FileList interface object length", + "FileList interface object name", + "FileList interface: existence and properties of interface prototype object", + "FileList interface: existence and properties of interface prototype object's \"constructor\" property", + "FileList interface: existence and properties of interface prototype object's @@unscopables property", + "FileList interface: operation item(unsigned long)", + "FileList interface: attribute length", + "FileReaderSync interface: existence and properties of interface object", + "FileReaderSync interface object length", + "FileReaderSync interface object name", + "FileReaderSync interface: existence and properties of interface prototype object", + "FileReaderSync interface: existence and properties of interface prototype object's \"constructor\" property", + "FileReaderSync interface: existence and properties of interface prototype object's @@unscopables property", + "FileReaderSync interface: operation readAsArrayBuffer(Blob)", + "FileReaderSync interface: operation readAsBinaryString(Blob)", + "FileReaderSync interface: operation readAsText(Blob, optional DOMString)", + "FileReaderSync interface: operation readAsDataURL(Blob)", + "FileReaderSync must be primary interface of new FileReaderSync()", + "Stringification of new FileReaderSync()", + "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsArrayBuffer(Blob)\" with the proper type", + "FileReaderSync interface: calling readAsArrayBuffer(Blob) on new FileReaderSync() with too few arguments must throw TypeError", + "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsBinaryString(Blob)\" with the proper type", + "FileReaderSync interface: calling readAsBinaryString(Blob) on new FileReaderSync() with too few arguments must throw TypeError", + "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsText(Blob, optional DOMString)\" with the proper type", + "FileReaderSync interface: calling readAsText(Blob, optional DOMString) on new FileReaderSync() with too few arguments must throw TypeError", + "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsDataURL(Blob)\" with the proper type", + "FileReaderSync interface: calling readAsDataURL(Blob) on new FileReaderSync() with too few arguments must throw TypeError" + ] + }, + "html": { + "semantics": { + "scripting-1": { + "the-script-element": { + "import-assertions": { + "dynamic-import-with-assertion-argument.any.html": true, + "dynamic-import-with-assertion-argument.any.worker.html": true + }, + "json-module": { + "charset-bom.any.html": [ + "UTF-16BE BOM should result in parse error in JSON module script", + "UTF-16LE BOM should result in parse error in JSON module script" + ], + "charset-bom.any.worker.html": [ + "UTF-16BE BOM should result in parse error in JSON module script", + "UTF-16LE BOM should result in parse error in JSON module script" + ], + "invalid-content-type.any.html": true, + "invalid-content-type.any.worker.html": true, + "non-object.any.html": true, + "non-object.any.worker.html": true, + "repeated-imports.any.html": [ + "Two modules of different type with the same specifier can load if the server changes its responses" + ], + "repeated-imports.any.worker.html": [ + "Two modules of different type with the same specifier can load if the server changes its responses" + ] + }, + "microtasks": { + "checkpoint-importScripts.any.worker.html": true, + "evaluation-order-1-nothrow-importScripts.any.worker.html": true, + "evaluation-order-1-nothrow-static-import.any.worker-module.html": true, + "evaluation-order-1-throw-importScripts.any.worker.html": false, + "evaluation-order-1-throw-static-import.any.worker-module.html": false, + "evaluation-order-2.any.worker-module.html": false, + "evaluation-order-3.any.worker-module.html": true + }, + "module": { + "dynamic-import": { + "blob-url.any.html": [ + "Revoking a blob URL immediately after calling import will not fail" + ], + "blob-url.any.worker.html": [ + "Revoking a blob URL immediately after calling import will not fail" + ], + "blob-url.any.worker-module.html": [ + "Revoking a blob URL immediately after calling import will not fail" + ], + "blob-url-workers.window.html": [ + "A revoked blob URL will not resolve in a worker even if it's in the window's module graph" + ], + "microtasks": { + "basic.any.html": [ + "import() should not drain the microtask queue if it fails during specifier resolution", + "import() should not drain the microtask queue when loading an already loaded module" + ], + "basic.any.worker.html": [ + "import() should not drain the microtask queue if it fails during specifier resolution", + "import() should not drain the microtask queue when loading an already loaded module" + ], + "css-import-in-worker.any.worker.html": true, + "with-import-assertions.any.html": true, + "with-import-assertions.any.worker.html": true + } + }, + "import-meta": { + "import-meta-url.any.worker-module.html": true, + "import-meta-object.any.worker-module.html": true, + "import-meta-resolve.any.worker-module.html": [ + "import.meta.resolve is a function with the right properties", + "import.meta.resolve is not a constructor" + ] + } + } + } + }, + "document-metadata": { + "the-style-element": { + "mutations.window.html": false + } + }, + "embedded-content": { + "the-canvas-element": { + "imagedata.html": [ + "ImageData(buffer, w, opt h), Uint8ClampedArray argument type check" + ] + }, + "the-iframe-element": { + "cross-origin-to-whom-part-2.window.html": false, + "cross-origin-to-whom.window.html": false, + "sandbox-top-navigation-child-special-cases.tentative.sub.window.html": false, + "sandbox-top-navigation-child.tentative.sub.window.html": false, + "sandbox-top-navigation-escalate-privileges.tentative.sub.window.html": false, + "sandbox-top-navigation-grandchild.tentative.sub.window.html": false + }, + "the-img-element": { + "historical-progress-event.window.html": false + } + }, + "forms": { + "form-control-infrastructure": { + "association.window.html": false + }, + "form-submission-0": { + "FormDataEvent.window.html": false, + "SubmitEvent.window.html": false, + "form-data-set-empty-file.window.html": false, + "historical.window.html": false, + "multipart-formdata.window.html": false, + "submission-checks.window.html": false, + "text-plain.window.html": false, + "urlencoded2.window.html": false + }, + "the-output-element": { + "mutations.window.html": false + }, + "the-progress-element": { + "progress.window.html": false + }, + "the-textarea-element": { + "wrapping-transformation.window.html": false + } + }, + "links": { + "following-hyperlinks": { + "activation-behavior.window.html": false, + "active-document.window.html": false + } + } + }, + "webappapis": { + "atob": { + "base64.any.html": true, + "base64.any.worker.html": true + }, + "timers": { + "clearinterval-from-callback.any.html": true, + "clearinterval-from-callback.any.worker.html": true, + "cleartimeout-clearinterval.any.html": true, + "cleartimeout-clearinterval.any.worker.html": true, + "evil-spec-example.any.html": true, + "evil-spec-example.any.worker.html": true, + "missing-timeout-setinterval.any.html": true, + "missing-timeout-setinterval.any.worker.html": true, + "negative-setinterval.any.html": true, + "negative-setinterval.any.worker.html": true, + "negative-settimeout.any.html": true, + "negative-settimeout.any.worker.html": true, + "type-long-setinterval.any.html": true, + "type-long-setinterval.any.worker.html": true, + "type-long-settimeout.any.html": true, + "type-long-settimeout.any.worker.html": true + }, + "microtask-queuing": { + "queue-microtask-exceptions.any.html": true, + "queue-microtask.any.html": true, + "queue-microtask.any.worker.html": true, + "queue-microtask-exceptions.any.worker.html": true, + "queue-microtask.window.html": false + }, + "scripting": { + "reporterror.any.html": false, + "reporterror.any.worker.html": false, + "event-loops": { + "fully_active_document.window.html": false + }, + "events": { + "event-handler-processing-algorithm-error": { + "synthetic-errorevent-click.worker.html": true, + "workerglobalscope-runtime-error.worker.html": true, + "workerglobalscope-synthetic-errorevent.worker.html": true, + "workerglobalscope-synthetic-event.worker.html": true + }, + "event-handler-removal.window.html": false, + "event-handler-spec-example.window.html": false, + "invalid-uncompiled-raw-handler-compiled-late.window.html": false, + "invalid-uncompiled-raw-handler-compiled-once.window.html": false, + "invalid-uncompiled-raw-handler-keeps-position.window.html": false + }, + "processing-model-2": { + "integration-with-the-javascript-agent-formalism": { + "requires-failure.https.any.html": false, + "requires-success.any.worker.html": true + } + } + }, + "structured-clone": { + "structured-clone.any.html": [ + "Blob basic", + "Blob unpaired high surrogate (invalid utf-8)", + "Blob unpaired low surrogate (invalid utf-8)", + "Blob paired surrogates (invalid utf-8)", + "Blob empty", + "Blob NUL", + "Array Blob object, Blob basic", + "Array Blob object, Blob unpaired high surrogate (invalid utf-8)", + "Array Blob object, Blob unpaired low surrogate (invalid utf-8)", + "Array Blob object, Blob paired surrogates (invalid utf-8)", + "Array Blob object, Blob empty", + "Array Blob object, Blob NUL", + "Array Blob object, two Blobs", + "Object Blob object, Blob basic", + "Object Blob object, Blob unpaired high surrogate (invalid utf-8)", + "Object Blob object, Blob unpaired low surrogate (invalid utf-8)", + "Object Blob object, Blob paired surrogates (invalid utf-8)", + "Object Blob object, Blob empty", + "Object Blob object, Blob NUL", + "File basic", + "Serializing a non-serializable platform object fails", + "An object whose interface is deleted from the global must still deserialize", + "A subclass instance will deserialize as its closest serializable superclass", + "Growable SharedArrayBuffer", + "A subclass instance will be received as its closest transferable superclass", + "Transferring OOB TypedArray throws" + ], + "structured-clone.any.worker.html": [ + "Blob basic", + "Blob unpaired high surrogate (invalid utf-8)", + "Blob unpaired low surrogate (invalid utf-8)", + "Blob paired surrogates (invalid utf-8)", + "Blob empty", + "Blob NUL", + "Array Blob object, Blob basic", + "Array Blob object, Blob unpaired high surrogate (invalid utf-8)", + "Array Blob object, Blob unpaired low surrogate (invalid utf-8)", + "Array Blob object, Blob paired surrogates (invalid utf-8)", + "Array Blob object, Blob empty", + "Array Blob object, Blob NUL", + "Array Blob object, two Blobs", + "Object Blob object, Blob basic", + "Object Blob object, Blob unpaired high surrogate (invalid utf-8)", + "Object Blob object, Blob unpaired low surrogate (invalid utf-8)", + "Object Blob object, Blob paired surrogates (invalid utf-8)", + "Object Blob object, Blob empty", + "Object Blob object, Blob NUL", + "File basic", + "Serializing a non-serializable platform object fails", + "An object whose interface is deleted from the global must still deserialize", + "A subclass instance will deserialize as its closest serializable superclass", + "Growable SharedArrayBuffer", + "A subclass instance will be received as its closest transferable superclass", + "Transferring OOB TypedArray throws" + ] + }, + "dynamic-markup-insertion": { + "closing-the-input-stream": { + "load-event-after-location-set-during-write.window.html": false + }, + "document-write": { + "contentType.window.html": false, + "during-readystatechange.window.html": false + }, + "opening-the-input-stream": { + "abort-refresh-immediate.window.html": false, + "abort-refresh-multisecond-header.window.html": false, + "abort-refresh-multisecond-meta.window.html": false, + "abort-while-navigating.window.html": false, + "abort.sub.window.html": false, + "aborted-parser.window.html": false, + "active.window.html": false, + "bailout-exception-vs-return-origin.sub.window.html": false, + "bailout-exception-vs-return-xml.window.html": false, + "bailout-side-effects-ignore-opens-during-unload.window.html": false, + "bailout-side-effects-same-origin-domain.sub.window.html": false, + "bailout-side-effects-synchronous-script.window.html": false, + "bailout-side-effects-xml.window.html": false, + "beforeunload.window.html": false, + "crbug-583445-regression.window.html": false, + "custom-element.window.html": false, + "encoding.window.html": false, + "event-listeners.window.html": false, + "history-state.window.html": false, + "history.window.html": false, + "ignore-opens-during-unload.window.html": false, + "mutation-events.window.html": false, + "mutation-observer.window.html": false, + "no-new-global.window.html": false, + "quirks.window.html": false, + "readiness.window.html": false, + "reload.window.html": false, + "remove-initial-about-blankness.window.html": false, + "tasks.window.html": false, + "type-argument-plaintext.window.html": false, + "type-argument.window.html": false, + "unload.window.html": false, + "url-entry-document-sync-call.window.html": false, + "url-entry-document.window.html": false, + "url-fragment.window.html": false, + "url.window.html": false + } + }, + "system-state-and-capabilities": { + "the-navigator-object": { + "clientinformation.window.html": [ + "window.clientInformation exists and equals window.navigator" + ], + "historical.https.window.html": [ + "registerProtocolHandler has no third argument" + ], + "navigator.any.html": [ + "appCodeName", + "appName", + "appVersion", + "platform", + "product", + "productSub", + "userAgent value", + "vendor", + "vendorSub", + "taintEnabled", + "oscpu" + ], + "navigator.any.worker.html": [ + "appCodeName", + "appName", + "appVersion", + "platform", + "product", + "userAgent value" + ], + "per-global.window.html": false + } + } + }, + "cross-origin-embedder-policy": { + "credentialless": { + "cache-storage.https.window.html?dedicated_worker": false, + "cache-storage.https.window.html?document": false, + "cache-storage.https.window.html?service_worker": false, + "cache-storage.https.window.html?shared_worker": false, + "cache.window.html": false, + "cross-origin-isolated.window.html": false, + "dedicated-worker.https.window.html": false, + "fetch.https.window.html": false, + "iframe-coep-credentialless.https.window.html?1-4": false, + "iframe-coep-credentialless.https.window.html?5-9": false, + "iframe-coep-credentialless.https.window.html?9-last": false, + "iframe-coep-none.https.window.html?1-4": false, + "iframe-coep-none.https.window.html?5-last": false, + "iframe-coep-require-corp.https.window.html?1-4": false, + "iframe-coep-require-corp.https.window.html?5-9": false, + "iframe-coep-require-corp.https.window.html?9-last": false, + "iframe.window.html": false, + "image.https.window.html": false, + "link.https.window.html": false, + "redirect.window.html": false, + "reporting-navigation.https.window.html": false, + "reporting-subresource-corp.https.window.html": false, + "script.https.window.html": false, + "service-worker-coep-credentialless-proxy.https.window.html": false, + "service-worker-coep-none-proxy.https.window.html": false, + "service-worker.https.window.html": false, + "video.https.window.html": false + }, + "cross-origin-isolated-permission-iframe.https.window.html": false, + "cross-origin-isolated-permission-worker.https.window.html": false, + "reflection-credentialless.tentative.https.any.html": false, + "reflection-credentialless.tentative.https.any.worker.html": false, + "reflection-require-corp.tentative.https.any.html": false, + "reflection-require-corp.tentative.https.any.worker.html": false, + "reflection-unsafe-none.tentative.https.any.html": false, + "reflection-unsafe-none.tentative.https.any.worker.html": false, + "reporting-to-document-reporting-endpoint.https.window.html": false + }, + "dom": { + "elements": { + "global-attributes": { + "dataset-binding.window.html": false + }, + "the-innertext-and-outertext-properties": { + "multiple-text-nodes.window.html": false + } + }, + "idlharness-shadowrealm.window.html": false, + "idlharness.worker.html": false, + "self-origin.any.html": false, + "self-origin.any.worker.html": false + }, + "infrastructure": { + "safe-passing-of-structured-data": { + "messagechannel.any.html": false, + "messagechannel.any.worker.html": false, + "shared-array-buffers": { + "no-coop-coep.https.any.html": false, + "no-coop-coep.https.any.worker.html": false, + "serialization-via-idb.any.html": false, + "serialization-via-idb.any.worker.html": false, + "serialization-via-notifications-api.any.html": false, + "serialization-via-notifications-api.any.worker.html": false + }, + "structured-cloning-error-stack-optional.sub.window.html": [ + "page-created Error (cross-site iframe)", + "page-created Error (same-origin iframe)", + "page-created DOMException (structuredClone())", + "page-created DOMException (cross-site iframe)", + "page-created DOMException (same-origin iframe)", + "JS-engine-created TypeError (cross-site iframe)", + "JS-engine-created TypeError (same-origin iframe)", + "web API-created TypeError (cross-site iframe)", + "web API-created TypeError (same-origin iframe)", + "web API-created DOMException (cross-site iframe)", + "web API-created DOMException (same-origin iframe)", + "page-created DOMException (worker)" + ], + "transfer-errors.window.html": false, + "window-postmessage.window.html": false + }, + "urls": { + "terminology-0": { + "document-base-url-about-srcdoc.https.window.html": false, + "document-base-url-changes-about-srcdoc.https.window.html": false + } + } + }, + "interaction": { + "focus": { + "composed.window.html": false + } + } + }, + "webstorage": { + "defineProperty.window.html": true, + "set.window.html": true, + "storage_enumerate.window.html": true, + "storage_in.window.html": true, + "event_constructor.window.html": false, + "event_initstorageevent.window.html": false, + "missing_arguments.window.html": true, + "storage_builtins.window.html": true, + "storage_clear.window.html": true, + "storage_functions_not_overwritten.window.html": true, + "storage_getitem.window.html": true, + "storage_indexing.window.html": true, + "storage_key.window.html": true, + "storage_key_empty_string.window.html": true, + "storage_length.window.html": true, + "storage_local_setitem_quotaexceedederr.window.html": true, + "storage_removeitem.window.html": true, + "storage_session_setitem_quotaexceedederr.window.html": true, + "storage_set_value_enumerate.window.html": true, + "storage_setitem.window.html": [ + "localStorage[] = \"\ud800\"", + "localStorage[] = \"\udbff\"", + "localStorage[] = \"\udc00\"", + "localStorage[] = \"\udfff\"", + "localStorage[] = \"\ud83ca\"", + "localStorage[] = \"a\udf4d\"", + "sessionStorage[] = \"\ud800\"", + "sessionStorage[] = \"\udbff\"", + "sessionStorage[] = \"\udc00\"", + "sessionStorage[] = \"\udfff\"", + "sessionStorage[] = \"\ud83ca\"", + "sessionStorage[] = \"a\udf4d\"" + ], + "storage_string_conversion.window.html": true, + "storage_supported_property_names.window.html": true, + "symbol-props.window.html": [ + "localStorage: defineProperty not configurable", + "sessionStorage: defineProperty not configurable" + ], + "localstorage-cross-origin-iframe.tentative.https.window.html": false, + "storage_local_window_open.window.html": false, + "storage_session_window_noopener.window.html": false, + "storage_session_window_open.window.html": false, + "storage_session_window_reopen.window.html": false + }, + "webmessaging": { + "broadcastchannel": { + "basics.any.html": [ + "postMessage results in correct event" + ], + "basics.any.worker.html": [ + "postMessage results in correct event" + ], + "interface.any.html": true, + "interface.any.worker.html": true, + "origin.window.html": false + }, + "message-channels": { + "basics.any.html": true, + "basics.any.worker.html": true, + "close.any.html": true, + "close.any.worker.html": true, + "dictionary-transferrable.any.html": true, + "dictionary-transferrable.any.worker.html": true, + "implied-start.any.html": true, + "implied-start.any.worker.html": true, + "no-start.any.html": true, + "no-start.any.worker.html": true, + "user-activation.tentative.any.html": false, + "user-activation.tentative.any.worker.html": false, + "worker-post-after-close.any.html": false, + "worker.any.html": false, + "detached-iframe.window.html": false, + "worker-post-after-close.any.worker.html": false, + "worker.any.worker.html": false + }, + "Channel_postMessage_Blob.any.html": false, + "Channel_postMessage_Blob.any.worker.html": false, + "Channel_postMessage_DataCloneErr.any.html": true, + "Channel_postMessage_DataCloneErr.any.worker.html": true, + "Channel_postMessage_clone_port.any.html": true, + "Channel_postMessage_clone_port.any.worker.html": true, + "Channel_postMessage_clone_port_error.any.html": true, + "Channel_postMessage_clone_port_error.any.worker.html": true, + "Channel_postMessage_event_properties.any.html": true, + "Channel_postMessage_event_properties.any.worker.html": true, + "Channel_postMessage_ports_readonly_array.any.html": false, + "Channel_postMessage_ports_readonly_array.any.worker.html": false, + "Channel_postMessage_target_source.any.html": true, + "Channel_postMessage_target_source.any.worker.html": true, + "Channel_postMessage_transfer_xsite_incoming_messages.window.html": false, + "Channel_postMessage_with_transfer_entangled.any.html": true, + "Channel_postMessage_with_transfer_entangled.any.worker.html": true, + "Channel_postMessage_with_transfer_incoming_messages.any.html": true, + "Channel_postMessage_with_transfer_incoming_messages.any.worker.html": true, + "Channel_postMessage_with_transfer_outgoing_messages.any.html": true, + "Channel_postMessage_with_transfer_outgoing_messages.any.worker.html": true, + "MessageEvent-trusted.any.html": true, + "MessageEvent-trusted.any.worker.html": true, + "MessageEvent-trusted.window.html": false, + "MessageEvent.any.html": true, + "MessageEvent.any.worker.html": true, + "MessagePort_initial_disabled.any.html": true, + "MessagePort_initial_disabled.any.worker.html": true, + "MessagePort_onmessage_start.any.html": true, + "MessagePort_onmessage_start.any.worker.html": true, + "postMessage_MessagePorts_xsite.sub.window.html": false + }, + "xhr": { + "formdata": { + "append.any.html": true, + "append.any.worker.html": true, + "constructor.any.html": true, + "constructor.any.worker.html": true, + "delete.any.html": true, + "delete.any.worker.html": true, + "foreach.any.html": true, + "foreach.any.worker.html": true, + "get.any.html": true, + "get.any.worker.html": true, + "has.any.html": true, + "has.any.worker.html": true, + "set-blob.any.html": true, + "set-blob.any.worker.html": true, + "set.any.html": true, + "set.any.worker.html": true, + "iteration.any.html": true, + "iteration.any.worker.html": true + }, + "XMLHttpRequest-withCredentials.any.html": false, + "XMLHttpRequest-withCredentials.any.worker.html": false, + "abort-after-receive.any.html": false, + "abort-after-receive.any.worker.html": false, + "abort-after-send.any.html": false, + "abort-after-send.any.worker.html": false, + "abort-after-stop.window.html": false, + "abort-after-timeout.any.html": false, + "abort-after-timeout.any.worker.html": false, + "abort-during-done.window.html": false, + "abort-during-headers-received.window.html": false, + "abort-during-loading.window.html": false, + "abort-during-open.any.html": false, + "abort-during-open.any.worker.html": false, + "abort-during-readystatechange.any.html": false, + "abort-during-readystatechange.any.worker.html": false, + "abort-during-unsent.any.html": false, + "abort-during-unsent.any.worker.html": false, + "abort-during-upload.any.html": false, + "abort-during-upload.any.worker.html": false, + "abort-event-abort.any.html": false, + "abort-event-abort.any.worker.html": false, + "abort-event-listeners.any.html": false, + "abort-event-listeners.any.worker.html": false, + "abort-event-loadend.any.html": false, + "abort-event-loadend.any.worker.html": false, + "abort-upload-event-abort.any.html": false, + "abort-upload-event-abort.any.worker.html": false, + "abort-upload-event-loadend.any.html": false, + "abort-upload-event-loadend.any.worker.html": false, + "access-control-and-redirects-async-same-origin.any.html": false, + "access-control-and-redirects-async-same-origin.any.worker.html": false, + "access-control-and-redirects-async.any.html": false, + "access-control-and-redirects-async.any.worker.html": false, + "access-control-and-redirects.any.html": false, + "access-control-and-redirects.any.worker.html": false, + "access-control-basic-allow-access-control-origin-header.any.html": false, + "access-control-basic-allow-access-control-origin-header.any.worker.html": false, + "access-control-basic-allow-async.any.html": false, + "access-control-basic-allow-async.any.worker.html": false, + "access-control-basic-allow-non-cors-safelisted-method-async.any.html": false, + "access-control-basic-allow-non-cors-safelisted-method-async.any.worker.html": false, + "access-control-basic-allow-non-cors-safelisted-method.any.html": false, + "access-control-basic-allow-non-cors-safelisted-method.any.worker.html": false, + "access-control-basic-allow-preflight-cache-invalidation-by-header.any.html": false, + "access-control-basic-allow-preflight-cache-invalidation-by-header.any.worker.html": false, + "access-control-basic-allow-preflight-cache-invalidation-by-method.any.html": false, + "access-control-basic-allow-preflight-cache-invalidation-by-method.any.worker.html": false, + "access-control-basic-allow-preflight-cache-timeout.any.html": false, + "access-control-basic-allow-preflight-cache-timeout.any.worker.html": false, + "access-control-basic-allow-preflight-cache.any.html": false, + "access-control-basic-allow-preflight-cache.any.worker.html": false, + "access-control-basic-allow-star.any.html": false, + "access-control-basic-allow-star.any.worker.html": false, + "access-control-basic-allow.any.html": false, + "access-control-basic-allow.any.worker.html": false, + "access-control-preflight-request-allow-headers-returns-star.any.html": false, + "access-control-preflight-request-allow-headers-returns-star.any.worker.html": false, + "access-control-preflight-request-header-returns-origin.any.html": false, + "access-control-preflight-request-header-returns-origin.any.worker.html": false, + "content-type-unmodified.any.html": false, + "content-type-unmodified.any.worker.html": false, + "cors-expose-star.sub.any.html": false, + "cors-expose-star.sub.any.worker.html": false, + "cors-upload.any.html": false, + "cors-upload.any.worker.html": false, + "event-abort.any.html": false, + "event-abort.any.worker.html": false, + "event-error.sub.any.html": false, + "event-error.sub.any.worker.html": false, + "event-load.any.html": false, + "event-load.any.worker.html": false, + "event-loadend.any.html": false, + "event-loadend.any.worker.html": false, + "event-loadstart-upload.any.html": false, + "event-loadstart-upload.any.worker.html": false, + "event-loadstart.any.html": false, + "event-loadstart.any.worker.html": false, + "event-progress.any.html": false, + "event-progress.any.worker.html": false, + "event-readystate-sync-open.any.html": false, + "event-readystate-sync-open.any.worker.html": false, + "event-readystatechange-loaded.any.html": false, + "event-readystatechange-loaded.any.worker.html": false, + "event-timeout-order.any.html": false, + "event-timeout-order.any.worker.html": false, + "event-timeout.any.html": false, + "event-timeout.any.worker.html": false, + "event-upload-progress-crossorigin.any.html": false, + "event-upload-progress-crossorigin.any.worker.html": false, + "event-upload-progress.any.html": false, + "event-upload-progress.any.worker.html": false, + "getresponseheader.any.html": false, + "getresponseheader.any.worker.html": false, + "idlharness.any.html": [ + "XMLHttpRequestEventTarget interface: existence and properties of interface object", + "XMLHttpRequestEventTarget interface object length", + "XMLHttpRequestEventTarget interface object name", + "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object", + "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's @@unscopables property", + "XMLHttpRequestEventTarget interface: attribute onloadstart", + "XMLHttpRequestEventTarget interface: attribute onprogress", + "XMLHttpRequestEventTarget interface: attribute onabort", + "XMLHttpRequestEventTarget interface: attribute onerror", + "XMLHttpRequestEventTarget interface: attribute onload", + "XMLHttpRequestEventTarget interface: attribute ontimeout", + "XMLHttpRequestEventTarget interface: attribute onloadend", + "XMLHttpRequestUpload interface: existence and properties of interface object", + "XMLHttpRequestUpload interface object length", + "XMLHttpRequestUpload interface object name", + "XMLHttpRequestUpload interface: existence and properties of interface prototype object", + "XMLHttpRequestUpload interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property", + "XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload", + "Stringification of (new XMLHttpRequest()).upload", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadstart\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onprogress\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onabort\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onerror\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onload\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"ontimeout\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadend\" with the proper type", + "XMLHttpRequest interface: existence and properties of interface object", + "XMLHttpRequest interface object length", + "XMLHttpRequest interface object name", + "XMLHttpRequest interface: existence and properties of interface prototype object", + "XMLHttpRequest interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLHttpRequest interface: existence and properties of interface prototype object's @@unscopables property", + "XMLHttpRequest interface: attribute onreadystatechange", + "XMLHttpRequest interface: constant UNSENT on interface object", + "XMLHttpRequest interface: constant UNSENT on interface prototype object", + "XMLHttpRequest interface: constant OPENED on interface object", + "XMLHttpRequest interface: constant OPENED on interface prototype object", + "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface object", + "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface prototype object", + "XMLHttpRequest interface: constant LOADING on interface object", + "XMLHttpRequest interface: constant LOADING on interface prototype object", + "XMLHttpRequest interface: constant DONE on interface object", + "XMLHttpRequest interface: constant DONE on interface prototype object", + "XMLHttpRequest interface: attribute readyState", + "XMLHttpRequest interface: operation open(ByteString, USVString)", + "XMLHttpRequest interface: operation open(ByteString, USVString, boolean, optional USVString?, optional USVString?)", + "XMLHttpRequest interface: operation setRequestHeader(ByteString, ByteString)", + "XMLHttpRequest interface: attribute timeout", + "XMLHttpRequest interface: attribute withCredentials", + "XMLHttpRequest interface: attribute upload", + "XMLHttpRequest interface: operation send(optional (Document or XMLHttpRequestBodyInit)?)", + "XMLHttpRequest interface: operation abort()", + "XMLHttpRequest interface: attribute responseURL", + "XMLHttpRequest interface: attribute status", + "XMLHttpRequest interface: attribute statusText", + "XMLHttpRequest interface: operation getResponseHeader(ByteString)", + "XMLHttpRequest interface: operation getAllResponseHeaders()", + "XMLHttpRequest interface: operation overrideMimeType(DOMString)", + "XMLHttpRequest interface: attribute responseType", + "XMLHttpRequest interface: attribute response", + "XMLHttpRequest interface: attribute responseText", + "XMLHttpRequest interface: attribute responseXML", + "XMLHttpRequest must be primary interface of new XMLHttpRequest()", + "Stringification of new XMLHttpRequest()", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"onreadystatechange\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"UNSENT\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"OPENED\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"HEADERS_RECEIVED\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"LOADING\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"DONE\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"readyState\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString)\" with the proper type", + "XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString, boolean, optional USVString?, optional USVString?)\" with the proper type", + "XMLHttpRequest interface: calling open(ByteString, USVString, boolean, optional USVString?, optional USVString?) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"setRequestHeader(ByteString, ByteString)\" with the proper type", + "XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"timeout\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"withCredentials\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"upload\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"send(optional (Document or XMLHttpRequestBodyInit)?)\" with the proper type", + "XMLHttpRequest interface: calling send(optional (Document or XMLHttpRequestBodyInit)?) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"abort()\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseURL\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"status\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"statusText\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getResponseHeader(ByteString)\" with the proper type", + "XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getAllResponseHeaders()\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"overrideMimeType(DOMString)\" with the proper type", + "XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseType\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"response\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseText\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseXML\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadstart\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onprogress\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onabort\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onerror\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onload\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"ontimeout\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadend\" with the proper type", + "FormData interface object length", + "FormData interface: operation append(USVString, USVString)", + "FormData interface: operation append(USVString, Blob, optional USVString)", + "FormData interface: operation set(USVString, USVString)", + "FormData interface: operation set(USVString, Blob, optional USVString)", + "ProgressEvent interface: attribute lengthComputable", + "ProgressEvent interface: attribute loaded", + "ProgressEvent interface: attribute total", + "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"lengthComputable\" with the proper type", + "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"loaded\" with the proper type", + "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"total\" with the proper type", + "idl_test setup" + ], + "idlharness.any.worker.html": [ + "XMLHttpRequestEventTarget interface: existence and properties of interface object", + "XMLHttpRequestEventTarget interface object length", + "XMLHttpRequestEventTarget interface object name", + "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object", + "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's @@unscopables property", + "XMLHttpRequestEventTarget interface: attribute onloadstart", + "XMLHttpRequestEventTarget interface: attribute onprogress", + "XMLHttpRequestEventTarget interface: attribute onabort", + "XMLHttpRequestEventTarget interface: attribute onerror", + "XMLHttpRequestEventTarget interface: attribute onload", + "XMLHttpRequestEventTarget interface: attribute ontimeout", + "XMLHttpRequestEventTarget interface: attribute onloadend", + "XMLHttpRequestUpload interface: existence and properties of interface object", + "XMLHttpRequestUpload interface object length", + "XMLHttpRequestUpload interface object name", + "XMLHttpRequestUpload interface: existence and properties of interface prototype object", + "XMLHttpRequestUpload interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property", + "XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload", + "Stringification of (new XMLHttpRequest()).upload", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadstart\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onprogress\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onabort\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onerror\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onload\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"ontimeout\" with the proper type", + "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadend\" with the proper type", + "XMLHttpRequest interface: existence and properties of interface object", + "XMLHttpRequest interface object length", + "XMLHttpRequest interface object name", + "XMLHttpRequest interface: existence and properties of interface prototype object", + "XMLHttpRequest interface: existence and properties of interface prototype object's \"constructor\" property", + "XMLHttpRequest interface: existence and properties of interface prototype object's @@unscopables property", + "XMLHttpRequest interface: attribute onreadystatechange", + "XMLHttpRequest interface: constant UNSENT on interface object", + "XMLHttpRequest interface: constant UNSENT on interface prototype object", + "XMLHttpRequest interface: constant OPENED on interface object", + "XMLHttpRequest interface: constant OPENED on interface prototype object", + "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface object", + "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface prototype object", + "XMLHttpRequest interface: constant LOADING on interface object", + "XMLHttpRequest interface: constant LOADING on interface prototype object", + "XMLHttpRequest interface: constant DONE on interface object", + "XMLHttpRequest interface: constant DONE on interface prototype object", + "XMLHttpRequest interface: attribute readyState", + "XMLHttpRequest interface: operation open(ByteString, USVString)", + "XMLHttpRequest interface: operation open(ByteString, USVString, boolean, optional USVString?, optional USVString?)", + "XMLHttpRequest interface: operation setRequestHeader(ByteString, ByteString)", + "XMLHttpRequest interface: attribute timeout", + "XMLHttpRequest interface: attribute withCredentials", + "XMLHttpRequest interface: attribute upload", + "XMLHttpRequest interface: operation send(optional (Document or XMLHttpRequestBodyInit)?)", + "XMLHttpRequest interface: operation abort()", + "XMLHttpRequest interface: attribute responseURL", + "XMLHttpRequest interface: attribute status", + "XMLHttpRequest interface: attribute statusText", + "XMLHttpRequest interface: operation getResponseHeader(ByteString)", + "XMLHttpRequest interface: operation getAllResponseHeaders()", + "XMLHttpRequest interface: operation overrideMimeType(DOMString)", + "XMLHttpRequest interface: attribute responseType", + "XMLHttpRequest interface: attribute response", + "XMLHttpRequest interface: attribute responseText", + "XMLHttpRequest interface: member responseXML", + "XMLHttpRequest must be primary interface of new XMLHttpRequest()", + "Stringification of new XMLHttpRequest()", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"onreadystatechange\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"UNSENT\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"OPENED\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"HEADERS_RECEIVED\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"LOADING\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"DONE\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"readyState\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString)\" with the proper type", + "XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString, boolean, optional USVString?, optional USVString?)\" with the proper type", + "XMLHttpRequest interface: calling open(ByteString, USVString, boolean, optional USVString?, optional USVString?) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"setRequestHeader(ByteString, ByteString)\" with the proper type", + "XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"timeout\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"withCredentials\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"upload\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"send(optional (Document or XMLHttpRequestBodyInit)?)\" with the proper type", + "XMLHttpRequest interface: calling send(optional (Document or XMLHttpRequestBodyInit)?) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"abort()\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseURL\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"status\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"statusText\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getResponseHeader(ByteString)\" with the proper type", + "XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getAllResponseHeaders()\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"overrideMimeType(DOMString)\" with the proper type", + "XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseType\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"response\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseText\" with the proper type", + "XMLHttpRequest interface: new XMLHttpRequest() must not have property \"responseXML\"", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadstart\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onprogress\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onabort\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onerror\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onload\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"ontimeout\" with the proper type", + "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadend\" with the proper type", + "FormData interface object length", + "FormData interface: operation append(USVString, USVString)", + "FormData interface: operation append(USVString, Blob, optional USVString)", + "FormData interface: operation set(USVString, USVString)", + "FormData interface: operation set(USVString, Blob, optional USVString)", + "ProgressEvent interface: attribute lengthComputable", + "ProgressEvent interface: attribute loaded", + "ProgressEvent interface: attribute total", + "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"lengthComputable\" with the proper type", + "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"loaded\" with the proper type", + "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"total\" with the proper type" + ], + "json.any.html": false, + "json.any.worker.html": false, + "open-after-stop.window.html": false, + "over-1-meg.any.html": false, + "over-1-meg.any.worker.html": false, + "overridemimetype-done-state.any.html": false, + "overridemimetype-done-state.any.worker.html": false, + "overridemimetype-edge-cases.window.html": false, + "overridemimetype-unsent-state-force-shiftjis.any.html": false, + "overridemimetype-unsent-state-force-shiftjis.any.worker.html": false, + "request-content-length.any.html": false, + "request-content-length.any.worker.html": false, + "response-body-errors.any.html": false, + "response-body-errors.any.worker.html": false, + "responsetype.any.html": false, + "responsetype.any.worker.html": false, + "send-data-arraybuffer.any.html": false, + "send-data-arraybuffer.any.worker.html": false, + "send-data-arraybufferview.any.html": false, + "send-data-arraybufferview.any.worker.html": false, + "send-data-es-object.any.html": false, + "send-data-es-object.any.worker.html": false, + "send-data-formdata.any.html": false, + "send-data-formdata.any.worker.html": false, + "send-data-sharedarraybuffer.any.html": false, + "send-data-sharedarraybuffer.any.worker.html": false, + "send-data-string-invalid-unicode.any.html": false, + "send-data-string-invalid-unicode.any.worker.html": false, + "send-send.any.html": false, + "send-send.any.worker.html": false, + "send-usp.any.html": false, + "send-usp.any.worker.html": false, + "setrequestheader-combining.window.html": false, + "sync-no-progress.any.html": false, + "sync-no-progress.any.worker.html": false, + "sync-no-timeout.any.html": false, + "sync-no-timeout.any.worker.html": false, + "xhr-authorization-redirect.any.html": false, + "xhr-authorization-redirect.any.worker.html": false, + "xhr-timeout-longtask.any.html": false, + "xhr-timeout-longtask.any.worker.html": false + }, + "websockets": { + "Close-1000-reason.any.html?default": true, + "Close-1000-reason.any.html?wpt_flags=h2": true, + "Close-1000-reason.any.html?wss": true, + "Close-1000-reason.any.worker.html?default": true, + "Close-1000-reason.any.worker.html?wpt_flags=h2": true, + "Close-1000-reason.any.worker.html?wss": true, + "Close-1000-verify-code.any.html?default": true, + "Close-1000-verify-code.any.html?wpt_flags=h2": true, + "Close-1000-verify-code.any.html?wss": true, + "Close-1000-verify-code.any.worker.html?default": true, + "Close-1000-verify-code.any.worker.html?wpt_flags=h2": true, + "Close-1000-verify-code.any.worker.html?wss": true, + "Close-1000.any.html?default": true, + "Close-1000.any.html?wpt_flags=h2": true, + "Close-1000.any.html?wss": true, + "Close-1000.any.worker.html?default": true, + "Close-1000.any.worker.html?wpt_flags=h2": true, + "Close-1000.any.worker.html?wss": true, + "Close-1005-verify-code.any.html?default": true, + "Close-1005-verify-code.any.html?wpt_flags=h2": true, + "Close-1005-verify-code.any.html?wss": true, + "Close-1005-verify-code.any.worker.html?default": true, + "Close-1005-verify-code.any.worker.html?wpt_flags=h2": true, + "Close-1005-verify-code.any.worker.html?wss": true, + "Close-1005.any.html?default": true, + "Close-1005.any.html?wpt_flags=h2": true, + "Close-1005.any.html?wss": true, + "Close-1005.any.worker.html?default": true, + "Close-1005.any.worker.html?wpt_flags=h2": true, + "Close-1005.any.worker.html?wss": true, + "Close-2999-reason.any.html?default": true, + "Close-2999-reason.any.html?wpt_flags=h2": true, + "Close-2999-reason.any.html?wss": true, + "Close-2999-reason.any.worker.html?default": true, + "Close-2999-reason.any.worker.html?wpt_flags=h2": true, + "Close-2999-reason.any.worker.html?wss": true, + "Close-3000-reason.any.html?default": true, + "Close-3000-reason.any.html?wpt_flags=h2": true, + "Close-3000-reason.any.html?wss": true, + "Close-3000-reason.any.worker.html?default": true, + "Close-3000-reason.any.worker.html?wpt_flags=h2": true, + "Close-3000-reason.any.worker.html?wss": true, + "Close-3000-verify-code.any.html?default": true, + "Close-3000-verify-code.any.html?wpt_flags=h2": true, + "Close-3000-verify-code.any.html?wss": true, + "Close-3000-verify-code.any.worker.html?default": true, + "Close-3000-verify-code.any.worker.html?wpt_flags=h2": true, + "Close-3000-verify-code.any.worker.html?wss": true, + "Close-4999-reason.any.html?default": true, + "Close-4999-reason.any.html?wpt_flags=h2": true, + "Close-4999-reason.any.html?wss": true, + "Close-4999-reason.any.worker.html?default": true, + "Close-4999-reason.any.worker.html?wpt_flags=h2": true, + "Close-4999-reason.any.worker.html?wss": true, + "Close-Reason-124Bytes.any.html?default": true, + "Close-Reason-124Bytes.any.html?wpt_flags=h2": true, + "Close-Reason-124Bytes.any.html?wss": true, + "Close-Reason-124Bytes.any.worker.html?default": true, + "Close-Reason-124Bytes.any.worker.html?wpt_flags=h2": true, + "Close-Reason-124Bytes.any.worker.html?wss": true, + "Close-delayed.any.html?default": true, + "Close-delayed.any.html?wpt_flags=h2": true, + "Close-delayed.any.html?wss": true, + "Close-delayed.any.worker.html?default": true, + "Close-delayed.any.worker.html?wpt_flags=h2": true, + "Close-delayed.any.worker.html?wss": true, + "Close-onlyReason.any.html?default": true, + "Close-onlyReason.any.html?wpt_flags=h2": true, + "Close-onlyReason.any.html?wss": true, + "Close-onlyReason.any.worker.html?default": true, + "Close-onlyReason.any.worker.html?wpt_flags=h2": true, + "Close-onlyReason.any.worker.html?wss": true, + "Close-readyState-Closed.any.html?default": true, + "Close-readyState-Closed.any.html?wpt_flags=h2": true, + "Close-readyState-Closed.any.html?wss": true, + "Close-readyState-Closed.any.worker.html?default": true, + "Close-readyState-Closed.any.worker.html?wpt_flags=h2": true, + "Close-readyState-Closed.any.worker.html?wss": true, + "Close-readyState-Closing.any.html?default": true, + "Close-readyState-Closing.any.html?wpt_flags=h2": true, + "Close-readyState-Closing.any.html?wss": true, + "Close-readyState-Closing.any.worker.html?default": true, + "Close-readyState-Closing.any.worker.html?wpt_flags=h2": true, + "Close-readyState-Closing.any.worker.html?wss": true, + "Close-reason-unpaired-surrogates.any.html?default": true, + "Close-reason-unpaired-surrogates.any.html?wpt_flags=h2": true, + "Close-reason-unpaired-surrogates.any.html?wss": true, + "Close-reason-unpaired-surrogates.any.worker.html?default": true, + "Close-reason-unpaired-surrogates.any.worker.html?wpt_flags=h2": true, + "Close-reason-unpaired-surrogates.any.worker.html?wss": true, + "Close-server-initiated-close.any.html?default": true, + "Close-server-initiated-close.any.html?wpt_flags=h2": true, + "Close-server-initiated-close.any.html?wss": true, + "Close-server-initiated-close.any.worker.html?default": true, + "Close-server-initiated-close.any.worker.html?wpt_flags=h2": true, + "Close-server-initiated-close.any.worker.html?wss": true, + "Close-undefined.any.html?default": true, + "Close-undefined.any.html?wpt_flags=h2": true, + "Close-undefined.any.html?wss": true, + "Close-undefined.any.worker.html?default": true, + "Close-undefined.any.worker.html?wpt_flags=h2": true, + "Close-undefined.any.worker.html?wss": true, + "Create-asciiSep-protocol-string.any.html?default": true, + "Create-asciiSep-protocol-string.any.html?wpt_flags=h2": true, + "Create-asciiSep-protocol-string.any.html?wss": true, + "Create-asciiSep-protocol-string.any.worker.html?default": true, + "Create-asciiSep-protocol-string.any.worker.html?wpt_flags=h2": true, + "Create-asciiSep-protocol-string.any.worker.html?wss": true, + "Create-blocked-port.any.html?default": true, + "Create-blocked-port.any.html?wpt_flags=h2": true, + "Create-blocked-port.any.html?wss": true, + "Create-blocked-port.any.worker.html?default": true, + "Create-blocked-port.any.worker.html?wpt_flags=h2": true, + "Create-blocked-port.any.worker.html?wss": true, + "Create-extensions-empty.any.html?default": true, + "Create-extensions-empty.any.html?wpt_flags=h2": true, + "Create-extensions-empty.any.html?wss": true, + "Create-extensions-empty.any.worker.html?default": true, + "Create-extensions-empty.any.worker.html?wpt_flags=h2": true, + "Create-extensions-empty.any.worker.html?wss": true, + "Create-http-urls.any.html": true, + "Create-http-urls.any.worker.html": true, + "Create-invalid-urls.any.html": true, + "Create-invalid-urls.any.worker.html": true, + "Create-non-absolute-url.any.html": true, + "Create-non-absolute-url.any.worker.html": true, + "Create-nonAscii-protocol-string.any.html?default": true, + "Create-nonAscii-protocol-string.any.html?wpt_flags=h2": true, + "Create-nonAscii-protocol-string.any.html?wss": true, + "Create-nonAscii-protocol-string.any.worker.html?default": true, + "Create-nonAscii-protocol-string.any.worker.html?wpt_flags=h2": true, + "Create-nonAscii-protocol-string.any.worker.html?wss": true, + "Create-on-worker-shutdown.any.html": false, + "Create-on-worker-shutdown.any.worker.html": false, + "Create-protocol-with-space.any.html?default": true, + "Create-protocol-with-space.any.html?wpt_flags=h2": true, + "Create-protocol-with-space.any.html?wss": true, + "Create-protocol-with-space.any.worker.html?default": true, + "Create-protocol-with-space.any.worker.html?wpt_flags=h2": true, + "Create-protocol-with-space.any.worker.html?wss": true, + "Create-protocols-repeated-case-insensitive.any.html?default": true, + "Create-protocols-repeated-case-insensitive.any.html?wpt_flags=h2": true, + "Create-protocols-repeated-case-insensitive.any.html?wss": true, + "Create-protocols-repeated-case-insensitive.any.worker.html?default": true, + "Create-protocols-repeated-case-insensitive.any.worker.html?wpt_flags=h2": true, + "Create-protocols-repeated-case-insensitive.any.worker.html?wss": true, + "Create-protocols-repeated.any.html?default": true, + "Create-protocols-repeated.any.html?wpt_flags=h2": true, + "Create-protocols-repeated.any.html?wss": true, + "Create-protocols-repeated.any.worker.html?default": true, + "Create-protocols-repeated.any.worker.html?wpt_flags=h2": true, + "Create-protocols-repeated.any.worker.html?wss": true, + "Create-url-with-space.any.html?default": true, + "Create-url-with-space.any.html?wpt_flags=h2": true, + "Create-url-with-space.any.html?wss": true, + "Create-url-with-space.any.worker.html?default": true, + "Create-url-with-space.any.worker.html?wpt_flags=h2": true, + "Create-url-with-space.any.worker.html?wss": true, + "Create-valid-url-array-protocols.any.html?default": true, + "Create-valid-url-array-protocols.any.html?wpt_flags=h2": true, + "Create-valid-url-array-protocols.any.html?wss": true, + "Create-valid-url-array-protocols.any.worker.html?default": true, + "Create-valid-url-array-protocols.any.worker.html?wpt_flags=h2": true, + "Create-valid-url-array-protocols.any.worker.html?wss": true, + "Create-valid-url-binaryType-blob.any.html?default": true, + "Create-valid-url-binaryType-blob.any.html?wpt_flags=h2": true, + "Create-valid-url-binaryType-blob.any.html?wss": true, + "Create-valid-url-binaryType-blob.any.worker.html?default": true, + "Create-valid-url-binaryType-blob.any.worker.html?wpt_flags=h2": true, + "Create-valid-url-binaryType-blob.any.worker.html?wss": true, + "Create-valid-url-protocol-empty.any.html?default": true, + "Create-valid-url-protocol-empty.any.html?wpt_flags=h2": true, + "Create-valid-url-protocol-empty.any.html?wss": true, + "Create-valid-url-protocol-empty.any.worker.html?default": true, + "Create-valid-url-protocol-empty.any.worker.html?wpt_flags=h2": true, + "Create-valid-url-protocol-empty.any.worker.html?wss": true, + "Create-valid-url-protocol-setCorrectly.any.html?default": true, + "Create-valid-url-protocol-setCorrectly.any.html?wpt_flags=h2": true, + "Create-valid-url-protocol-setCorrectly.any.html?wss": true, + "Create-valid-url-protocol-setCorrectly.any.worker.html?default": true, + "Create-valid-url-protocol-setCorrectly.any.worker.html?wpt_flags=h2": true, + "Create-valid-url-protocol-setCorrectly.any.worker.html?wss": true, + "Create-valid-url-protocol-string.any.html?default": true, + "Create-valid-url-protocol-string.any.html?wpt_flags=h2": true, + "Create-valid-url-protocol-string.any.html?wss": true, + "Create-valid-url-protocol-string.any.worker.html?default": true, + "Create-valid-url-protocol-string.any.worker.html?wpt_flags=h2": true, + "Create-valid-url-protocol-string.any.worker.html?wss": true, + "Create-valid-url-protocol.any.html?default": true, + "Create-valid-url-protocol.any.html?wpt_flags=h2": true, + "Create-valid-url-protocol.any.html?wss": true, + "Create-valid-url-protocol.any.worker.html?default": true, + "Create-valid-url-protocol.any.worker.html?wpt_flags=h2": true, + "Create-valid-url-protocol.any.worker.html?wss": true, + "Create-valid-url.any.html?default": true, + "Create-valid-url.any.html?wpt_flags=h2": true, + "Create-valid-url.any.html?wss": true, + "Create-valid-url.any.worker.html?default": true, + "Create-valid-url.any.worker.html?wpt_flags=h2": true, + "Create-valid-url.any.worker.html?wss": true, + "Send-0byte-data.any.html?default": true, + "Send-0byte-data.any.html?wpt_flags=h2": true, + "Send-0byte-data.any.html?wss": true, + "Send-0byte-data.any.worker.html?default": true, + "Send-0byte-data.any.worker.html?wpt_flags=h2": true, + "Send-0byte-data.any.worker.html?wss": true, + "Send-65K-data.any.html?default": true, + "Send-65K-data.any.html?wpt_flags=h2": true, + "Send-65K-data.any.html?wss": true, + "Send-65K-data.any.worker.html?default": true, + "Send-65K-data.any.worker.html?wpt_flags=h2": true, + "Send-65K-data.any.worker.html?wss": true, + "Send-before-open.any.html?default": true, + "Send-before-open.any.html?wpt_flags=h2": true, + "Send-before-open.any.html?wss": true, + "Send-before-open.any.worker.html?default": true, + "Send-before-open.any.worker.html?wpt_flags=h2": true, + "Send-before-open.any.worker.html?wss": true, + "Send-binary-65K-arraybuffer.any.html?default": true, + "Send-binary-65K-arraybuffer.any.html?wpt_flags=h2": true, + "Send-binary-65K-arraybuffer.any.html?wss": true, + "Send-binary-65K-arraybuffer.any.worker.html?default": true, + "Send-binary-65K-arraybuffer.any.worker.html?wpt_flags=h2": true, + "Send-binary-65K-arraybuffer.any.worker.html?wss": true, + "Send-binary-arraybuffer.any.html?default": true, + "Send-binary-arraybuffer.any.html?wpt_flags=h2": true, + "Send-binary-arraybuffer.any.html?wss": true, + "Send-binary-arraybuffer.any.worker.html?default": true, + "Send-binary-arraybuffer.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybuffer.any.worker.html?wss": true, + "Send-binary-arraybufferview-float32.any.html?default": true, + "Send-binary-arraybufferview-float32.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-float32.any.html?wss": true, + "Send-binary-arraybufferview-float32.any.worker.html?default": true, + "Send-binary-arraybufferview-float32.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-float32.any.worker.html?wss": true, + "Send-binary-arraybufferview-float64.any.html?default": true, + "Send-binary-arraybufferview-float64.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-float64.any.html?wss": true, + "Send-binary-arraybufferview-float64.any.worker.html?default": true, + "Send-binary-arraybufferview-float64.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-float64.any.worker.html?wss": true, + "Send-binary-arraybufferview-int16-offset.any.html?default": true, + "Send-binary-arraybufferview-int16-offset.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-int16-offset.any.html?wss": true, + "Send-binary-arraybufferview-int16-offset.any.worker.html?default": true, + "Send-binary-arraybufferview-int16-offset.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-int16-offset.any.worker.html?wss": true, + "Send-binary-arraybufferview-int32.any.html?default": true, + "Send-binary-arraybufferview-int32.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-int32.any.html?wss": true, + "Send-binary-arraybufferview-int32.any.worker.html?default": true, + "Send-binary-arraybufferview-int32.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-int32.any.worker.html?wss": true, + "Send-binary-arraybufferview-int8.any.html?default": true, + "Send-binary-arraybufferview-int8.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-int8.any.html?wss": true, + "Send-binary-arraybufferview-int8.any.worker.html?default": true, + "Send-binary-arraybufferview-int8.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-int8.any.worker.html?wss": true, + "Send-binary-arraybufferview-uint16-offset-length.any.html?default": true, + "Send-binary-arraybufferview-uint16-offset-length.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint16-offset-length.any.html?wss": true, + "Send-binary-arraybufferview-uint16-offset-length.any.worker.html?default": true, + "Send-binary-arraybufferview-uint16-offset-length.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint16-offset-length.any.worker.html?wss": true, + "Send-binary-arraybufferview-uint32-offset.any.html?default": true, + "Send-binary-arraybufferview-uint32-offset.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint32-offset.any.html?wss": true, + "Send-binary-arraybufferview-uint32-offset.any.worker.html?default": true, + "Send-binary-arraybufferview-uint32-offset.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint32-offset.any.worker.html?wss": true, + "Send-binary-arraybufferview-uint8-offset-length.any.html?default": true, + "Send-binary-arraybufferview-uint8-offset-length.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint8-offset-length.any.html?wss": true, + "Send-binary-arraybufferview-uint8-offset-length.any.worker.html?default": true, + "Send-binary-arraybufferview-uint8-offset-length.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint8-offset-length.any.worker.html?wss": true, + "Send-binary-arraybufferview-uint8-offset.any.html?default": true, + "Send-binary-arraybufferview-uint8-offset.any.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint8-offset.any.html?wss": true, + "Send-binary-arraybufferview-uint8-offset.any.worker.html?default": true, + "Send-binary-arraybufferview-uint8-offset.any.worker.html?wpt_flags=h2": true, + "Send-binary-arraybufferview-uint8-offset.any.worker.html?wss": true, + "Send-binary-blob.any.html?default": true, + "Send-binary-blob.any.html?wpt_flags=h2": true, + "Send-binary-blob.any.html?wss": true, + "Send-binary-blob.any.worker.html?default": true, + "Send-binary-blob.any.worker.html?wpt_flags=h2": true, + "Send-binary-blob.any.worker.html?wss": true, + "Send-data.any.html?default": true, + "Send-data.any.html?wpt_flags=h2": true, + "Send-data.any.html?wss": true, + "Send-data.any.worker.html?default": true, + "Send-data.any.worker.html?wpt_flags=h2": true, + "Send-data.any.worker.html?wss": true, + "Send-data.worker.html?default": true, + "Send-data.worker.html?wpt_flags=h2": true, + "Send-data.worker.html?wss": true, + "Send-null.any.html?default": true, + "Send-null.any.html?wpt_flags=h2": true, + "Send-null.any.html?wss": true, + "Send-null.any.worker.html?default": true, + "Send-null.any.worker.html?wpt_flags=h2": true, + "Send-null.any.worker.html?wss": true, + "Send-paired-surrogates.any.html?default": true, + "Send-paired-surrogates.any.html?wpt_flags=h2": true, + "Send-paired-surrogates.any.html?wss": true, + "Send-paired-surrogates.any.worker.html?default": true, + "Send-paired-surrogates.any.worker.html?wpt_flags=h2": true, + "Send-paired-surrogates.any.worker.html?wss": true, + "Send-unicode-data.any.html?default": true, + "Send-unicode-data.any.html?wpt_flags=h2": true, + "Send-unicode-data.any.html?wss": true, + "Send-unicode-data.any.worker.html?default": true, + "Send-unicode-data.any.worker.html?wpt_flags=h2": true, + "Send-unicode-data.any.worker.html?wss": true, + "Send-unpaired-surrogates.any.html?default": true, + "Send-unpaired-surrogates.any.html?wpt_flags=h2": true, + "Send-unpaired-surrogates.any.html?wss": true, + "Send-unpaired-surrogates.any.worker.html?default": true, + "Send-unpaired-surrogates.any.worker.html?wpt_flags=h2": true, + "Send-unpaired-surrogates.any.worker.html?wss": true, + "back-forward-cache-with-closed-websocket-connection-ccns.tentative.window.html": false, + "back-forward-cache-with-closed-websocket-connection.window.html": false, + "back-forward-cache-with-open-websocket-connection-ccns.tentative.window.html": false, + "back-forward-cache-with-open-websocket-connection.window.html": false, + "basic-auth.any.html?wpt_flags=h2": false, + "basic-auth.any.html?wss": false, + "basic-auth.any.worker.html?wpt_flags=h2": false, + "basic-auth.any.worker.html?wss": false, + "binaryType-wrong-value.any.html?default": true, + "binaryType-wrong-value.any.html?wpt_flags=h2": true, + "binaryType-wrong-value.any.html?wss": true, + "binaryType-wrong-value.any.worker.html?default": true, + "binaryType-wrong-value.any.worker.html?wpt_flags=h2": true, + "binaryType-wrong-value.any.worker.html?wss": true, + "bufferedAmount-unchanged-by-sync-xhr.any.html?default": false, + "bufferedAmount-unchanged-by-sync-xhr.any.html?wpt_flags=h2": false, + "bufferedAmount-unchanged-by-sync-xhr.any.html?wss": false, + "bufferedAmount-unchanged-by-sync-xhr.any.worker.html?default": false, + "bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wpt_flags=h2": false, + "bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wss": false, + "close-invalid.any.html?default": true, + "close-invalid.any.html?wpt_flags=h2": true, + "close-invalid.any.html?wss": true, + "close-invalid.any.worker.html?default": true, + "close-invalid.any.worker.html?wpt_flags=h2": true, + "close-invalid.any.worker.html?wss": true, + "constructor.any.html?default": true, + "constructor.any.html?wpt_flags=h2": true, + "constructor.any.html?wss": true, + "constructor.any.worker.html?default": true, + "constructor.any.worker.html?wpt_flags=h2": true, + "constructor.any.worker.html?wss": true, + "eventhandlers.any.html?default": true, + "eventhandlers.any.html?wpt_flags=h2": true, + "eventhandlers.any.html?wss": true, + "eventhandlers.any.worker.html?default": true, + "eventhandlers.any.worker.html?wpt_flags=h2": true, + "eventhandlers.any.worker.html?wss": true, + "idlharness.any.html": [ + "WebSocket interface: constant CONNECTING on interface object", + "WebSocket interface: constant CONNECTING on interface prototype object", + "WebSocket interface: constant OPEN on interface object", + "WebSocket interface: constant OPEN on interface prototype object", + "WebSocket interface: constant CLOSING on interface object", + "WebSocket interface: constant CLOSING on interface prototype object", + "WebSocket interface: constant CLOSED on interface object", + "WebSocket interface: constant CLOSED on interface prototype object", + "WebSocket interface: attribute onopen", + "WebSocket interface: attribute onerror", + "WebSocket interface: attribute onclose", + "WebSocket interface: attribute onmessage", + "CloseEvent interface: attribute wasClean", + "CloseEvent interface: attribute code", + "CloseEvent interface: attribute reason", + "Stringification of new CloseEvent(\"close\")" + ], + "idlharness.any.worker.html": [ + "WebSocket interface: constant CONNECTING on interface object", + "WebSocket interface: constant CONNECTING on interface prototype object", + "WebSocket interface: constant OPEN on interface object", + "WebSocket interface: constant OPEN on interface prototype object", + "WebSocket interface: constant CLOSING on interface object", + "WebSocket interface: constant CLOSING on interface prototype object", + "WebSocket interface: constant CLOSED on interface object", + "WebSocket interface: constant CLOSED on interface prototype object", + "WebSocket interface: attribute onopen", + "WebSocket interface: attribute onerror", + "WebSocket interface: attribute onclose", + "WebSocket interface: attribute onmessage", + "CloseEvent interface: attribute wasClean", + "CloseEvent interface: attribute code", + "CloseEvent interface: attribute reason", + "Stringification of new CloseEvent(\"close\")" + ], + "mixed-content.https.any.html": false, + "mixed-content.https.any.worker.html": false, + "opening-handshake": { + "003-sets-origin.worker.html": false + }, + "referrer.any.html": true, + "referrer.any.worker.html": true, + "remove-own-iframe-during-onerror.window.html?default": false, + "remove-own-iframe-during-onerror.window.html?wpt_flags=h2": false, + "remove-own-iframe-during-onerror.window.html?wss": false, + "send-many-64K-messages-with-backpressure.any.html?default": true, + "send-many-64K-messages-with-backpressure.any.html?wpt_flags=h2": false, + "send-many-64K-messages-with-backpressure.any.html?wss": true, + "send-many-64K-messages-with-backpressure.any.worker.html?default": true, + "send-many-64K-messages-with-backpressure.any.worker.html?wpt_flags=h2": false, + "send-many-64K-messages-with-backpressure.any.worker.html?wss": true, + "stream": { + "tentative": { + "abort.any.html?wpt_flags=h2": true, + "abort.any.html?wss": true, + "abort.any.worker.html?wpt_flags=h2": true, + "abort.any.worker.html?wss": true, + "backpressure-receive.any.html?wpt_flags=h2": false, + "backpressure-receive.any.html?wss": true, + "backpressure-receive.any.worker.html?wpt_flags=h2": false, + "backpressure-receive.any.worker.html?wss": true, + "backpressure-send.any.html?wpt_flags=h2": false, + "backpressure-send.any.html?wss": true, + "backpressure-send.any.worker.html?wpt_flags=h2": false, + "backpressure-send.any.worker.html?wss": true, + "close.any.html?wpt_flags=h2": true, + "close.any.html?wss": true, + "close.any.worker.html?wpt_flags=h2": true, + "close.any.worker.html?wss": true, + "constructor.any.html?wpt_flags=h2": true, + "constructor.any.html?wss": true, + "constructor.any.worker.html?wpt_flags=h2": true, + "constructor.any.worker.html?wss": true + } + } + }, + "workers": { + "Worker-base64.any.worker.html": true, + "Worker-call.worker.html": true, + "Worker-constructor-proto.any.worker.html": true, + "Worker-custom-event.any.worker.html": true, + "Worker-formdata.any.worker.html": false, + "Worker-location.sub.any.worker.html": false, + "Worker-replace-event-handler.any.worker.html": true, + "Worker-replace-global-constructor.any.worker.html": true, + "Worker-replace-self.any.worker.html": true, + "WorkerGlobalScope_requestAnimationFrame.tentative.worker.html": false, + "WorkerLocation-origin.sub.window.html": false, + "WorkerNavigator-hardware-concurrency.any.worker.html": true, + "WorkerNavigator.any.worker.html": false, + "constructors": { + "Worker": { + "DedicatedWorkerGlobalScope-members.worker.html": [ + "existence of onoffline", + "existence of ononline" + ], + "expected-self-properties.worker.html": [ + "existence of XMLHttpRequest", + "existence of SharedWorker" + ], + "unexpected-self-properties.worker.html": true + } + }, + "dedicated-worker-in-data-url-context.window.html": [ + "Create a dedicated worker in a data url frame", + "Create a dedicated worker in a data url dedicated worker", + "Create a data url dedicated worker in a data url frame" + ], + "examples": { + "general.any.worker.html": true, + "general.worker.html": true + }, + "importscripts_mime.any.worker.html": [ + "importScripts() requires scripty MIME types: text/ecmascript is allowed." + ], + "interfaces": { + "DedicatedWorkerGlobalScope": { + "EventTarget.worker.html": true, + "onmessage.worker.html": true, + "postMessage": { + "return-value.worker.html": true + } + }, + "WorkerGlobalScope": { + "location": { + "returns-same-object.any.worker.html": true + }, + "self.any.worker.html": true + }, + "WorkerUtils": { + "importScripts": { + "001.worker.html": true, + "002.worker.html": true, + "blob-url.worker.html": [ + "A revoked blob URL will fail" + ], + "catch.sub.any.worker.html": [ + "Cross-origin syntax error", + "Cross-origin throw" + ], + "report-error-cross-origin.sub.any.worker.html": false, + "report-error-redirect-to-cross-origin.sub.any.worker.html": false, + "report-error-same-origin.sub.any.worker.html": false, + "report-error-setTimeout-cross-origin.sub.any.worker.html": [ + "WorkerGlobalScope error event: error", + "WorkerGlobalScope error event: filename", + "WorkerGlobalScope error event: lineno" + ], + "report-error-setTimeout-redirect-to-cross-origin.sub.any.worker.html": [ + "WorkerGlobalScope error event: filename", + "WorkerGlobalScope error event: lineno" + ], + "report-error-setTimeout-same-origin.sub.any.worker.html": [ + "WorkerGlobalScope error event: filename", + "WorkerGlobalScope error event: lineno" + ] + } + } + }, + "modules": { + "dedicated-worker-import-blob-url.any.html": true, + "dedicated-worker-import-blob-url.any.worker.html": true, + "dedicated-worker-import-data-url.any.html": true, + "dedicated-worker-import-data-url.any.worker.html": true, + "dedicated-worker-import.any.html": true, + "dedicated-worker-import.any.worker.html": true, + "shared-worker-import-blob-url.window.html": false, + "shared-worker-import-data-url.window.html": false, + "shared-worker-import.window.html": false + }, + "nested_worker.worker.html": true, + "nested_worker_close_self.worker.html": true, + "nested_worker_importScripts.worker.html": true, + "nested_worker_sync_xhr.worker.html": false, + "semantics": { + "encodings": { + "004.worker.html": true + }, + "interface-objects": { + "001.worker.html": [ + "The SharedWorker interface object should be exposed.", + "The CanvasGradient interface object should be exposed.", + "The CanvasPattern interface object should be exposed.", + "The CanvasPath interface object should be exposed.", + "The TextMetrics interface object should be exposed.", + "The Path2D interface object should be exposed.", + "The XMLHttpRequestEventTarget interface object should be exposed.", + "The XMLHttpRequestUpload interface object should be exposed.", + "The XMLHttpRequest interface object should be exposed.", + "The FileList interface object should be exposed.", + "The FileReaderSync interface object should be exposed.", + "The IDBRequest interface object should be exposed.", + "The IDBOpenDBRequest interface object should be exposed.", + "The IDBVersionChangeEvent interface object should be exposed.", + "The IDBFactory interface object should be exposed.", + "The IDBDatabase interface object should be exposed.", + "The IDBObjectStore interface object should be exposed.", + "The IDBIndex interface object should be exposed.", + "The IDBKeyRange interface object should be exposed.", + "The IDBCursor interface object should be exposed.", + "The IDBCursorWithValue interface object should be exposed.", + "The IDBTransaction interface object should be exposed." + ], + "002.worker.html": true + }, + "multiple-workers": { + "exposure.any.html": [ + "SharedWorker exposure" + ], + "exposure.any.worker.html": true + } + }, + "shared-worker-from-blob-url.window.html": false, + "shared-worker-in-data-url-context.window.html": false, + "worker-performance.worker.html": [ + "Resource timing seems to work in workers", + "performance.clearResourceTimings in workers", + "performance.setResourceTimingBufferSize in workers" + ], + "importscripts_mime_local.any.worker.html": [ + "importScripts() requires scripty MIME types for data: URLs: text/ecmascript is allowed.", + "importScripts() requires scripty MIME types for blob: URLs: text/ecmascript is allowed." + ] + }, + "urlpattern": { + "urlpattern-compare.any.html": [ + "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}", + "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}", + "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}", + "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}", + "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}", + "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}", + "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}", + "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}", + "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}", + "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}", + "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}" + ], + "urlpattern-compare.any.worker.html": [ + "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}", + "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}", + "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}", + "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}", + "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}", + "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}", + "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}", + "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}", + "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}", + "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}", + "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}" + ], + "urlpattern-compare.https.any.html": [ + "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}", + "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}", + "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}", + "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}", + "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}", + "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}", + "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}", + "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}", + "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}", + "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}", + "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}" + ], + "urlpattern-compare.https.any.worker.html": [ + "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}", + "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}", + "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}", + "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}", + "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}", + "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}", + "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}", + "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}", + "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}", + "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}", + "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}" + ], + "urlpattern.any.html": [ + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]", + "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]", + "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]", + "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]", + "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]", + "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]", + "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]", + "Pattern: [\"data:\"] Inputs: [\"data:\"]", + "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]", + "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]", + "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]", + "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]", + "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]", + "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]", + "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]", + "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]", + "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]", + "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]", + "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]", + "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]", + "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]", + "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]", + "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]", + "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined", + "Pattern: [] Inputs: [\"https://example.com/\"]", + "Pattern: [] Inputs: [{}]", + "Pattern: [] Inputs: []", + "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]" + ], + "urlpattern.any.worker.html": [ + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]", + "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]", + "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]", + "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]", + "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]", + "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]", + "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]", + "Pattern: [\"data:\"] Inputs: [\"data:\"]", + "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]", + "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]", + "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]", + "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]", + "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]", + "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]", + "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]", + "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]", + "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]", + "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]", + "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]", + "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]", + "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]", + "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]", + "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]", + "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined", + "Pattern: [] Inputs: [\"https://example.com/\"]", + "Pattern: [] Inputs: [{}]", + "Pattern: [] Inputs: []", + "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]" + ], + "urlpattern.https.any.html": [ + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]", + "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]", + "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]", + "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]", + "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]", + "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]", + "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]", + "Pattern: [\"data:\"] Inputs: [\"data:\"]", + "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]", + "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]", + "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]", + "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]", + "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]", + "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]", + "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]", + "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]", + "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]", + "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]", + "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]", + "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]", + "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]", + "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]", + "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]", + "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined", + "Pattern: [] Inputs: [\"https://example.com/\"]", + "Pattern: [] Inputs: [{}]", + "Pattern: [] Inputs: []", + "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]" + ], + "urlpattern.https.any.worker.html": [ + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]", + "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]", + "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]", + "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]", + "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]", + "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]", + "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]", + "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]", + "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]", + "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]", + "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]", + "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]", + "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]", + "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]", + "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]", + "Pattern: [\"data:\"] Inputs: [\"data:\"]", + "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]", + "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]", + "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]", + "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]", + "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]", + "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]", + "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]", + "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]", + "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]", + "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]", + "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]", + "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]", + "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]", + "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]", + "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]", + "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]", + "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]", + "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined", + "Pattern: [] Inputs: [\"https://example.com/\"]", + "Pattern: [] Inputs: [{}]", + "Pattern: [] Inputs: []", + "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", + "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", + "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]", + "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]", + "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]" + ] + }, + "compression": { + "compression-bad-chunks.tentative.any.html": true, + "compression-bad-chunks.tentative.any.worker.html": true, + "compression-including-empty-chunk.tentative.any.html": true, + "compression-including-empty-chunk.tentative.any.worker.html": true, + "compression-multiple-chunks.tentative.any.html": true, + "compression-multiple-chunks.tentative.any.worker.html": true, + "compression-output-length.tentative.any.html": true, + "compression-output-length.tentative.any.worker.html": true, + "compression-stream.tentative.any.html": true, + "compression-stream.tentative.any.worker.html": true, + "compression-with-detach.tentative.window.html": true, + "decompression-bad-chunks.tentative.any.html": true, + "decompression-bad-chunks.tentative.any.worker.html": true, + "decompression-buffersource.tentative.any.html": true, + "decompression-buffersource.tentative.any.worker.html": true, + "decompression-constructor-error.tentative.any.html": true, + "decompression-constructor-error.tentative.any.worker.html": true, + "decompression-correct-input.tentative.any.html": true, + "decompression-correct-input.tentative.any.worker.html": true, + "decompression-corrupt-input.tentative.any.html": [ + "truncating the input for 'deflate' should give an error" + ], + "decompression-corrupt-input.tentative.any.worker.html": [ + "truncating the input for 'deflate' should give an error" + ], + "decompression-empty-input.tentative.any.html": true, + "decompression-empty-input.tentative.any.worker.html": true, + "decompression-split-chunk.tentative.any.html": true, + "decompression-split-chunk.tentative.any.worker.html": true, + "decompression-uint8array-output.tentative.any.html": true, + "decompression-uint8array-output.tentative.any.worker.html": true, + "decompression-with-detach.tentative.window.html": true, + "idlharness.https.any.html": true, + "idlharness.https.any.worker.html": true, + "idlharness-shadowrealm.window.html": false, + "compression-constructor-error.tentative.any.html": true, + "compression-constructor-error.tentative.any.worker.html": true + }, + "service-workers": { + "idlharness.https.any.html": [ + "ServiceWorker interface: existence and properties of interface object", + "ServiceWorker interface object length", + "ServiceWorker interface object name", + "ServiceWorker interface: existence and properties of interface prototype object", + "ServiceWorker interface: existence and properties of interface prototype object's \"constructor\" property", + "ServiceWorker interface: existence and properties of interface prototype object's @@unscopables property", + "ServiceWorker interface: attribute scriptURL", + "ServiceWorker interface: attribute state", + "ServiceWorker interface: operation postMessage(any, sequence<object>)", + "ServiceWorker interface: operation postMessage(any, optional StructuredSerializeOptions)", + "ServiceWorker interface: attribute onstatechange", + "ServiceWorker must be primary interface of registrationInstance.installing", + "Stringification of registrationInstance.installing", + "ServiceWorker interface: registrationInstance.installing must inherit property \"scriptURL\" with the proper type", + "ServiceWorker interface: registrationInstance.installing must inherit property \"state\" with the proper type", + "ServiceWorker interface: registrationInstance.installing must inherit property \"postMessage(any, sequence<object>)\" with the proper type", + "ServiceWorker interface: calling postMessage(any, sequence<object>) on registrationInstance.installing with too few arguments must throw TypeError", + "ServiceWorker interface: registrationInstance.installing must inherit property \"postMessage(any, optional StructuredSerializeOptions)\" with the proper type", + "ServiceWorker interface: calling postMessage(any, optional StructuredSerializeOptions) on registrationInstance.installing with too few arguments must throw TypeError", + "ServiceWorker interface: registrationInstance.installing must inherit property \"onstatechange\" with the proper type", + "ServiceWorkerRegistration interface: existence and properties of interface object", + "ServiceWorkerRegistration interface object length", + "ServiceWorkerRegistration interface object name", + "ServiceWorkerRegistration interface: existence and properties of interface prototype object", + "ServiceWorkerRegistration interface: existence and properties of interface prototype object's \"constructor\" property", + "ServiceWorkerRegistration interface: existence and properties of interface prototype object's @@unscopables property", + "ServiceWorkerRegistration interface: attribute installing", + "ServiceWorkerRegistration interface: attribute waiting", + "ServiceWorkerRegistration interface: attribute active", + "ServiceWorkerRegistration interface: attribute navigationPreload", + "ServiceWorkerRegistration interface: attribute scope", + "ServiceWorkerRegistration interface: attribute updateViaCache", + "ServiceWorkerRegistration interface: operation update()", + "ServiceWorkerRegistration interface: operation unregister()", + "ServiceWorkerRegistration interface: attribute onupdatefound", + "ServiceWorkerRegistration must be primary interface of registrationInstance", + "Stringification of registrationInstance", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"installing\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"waiting\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"active\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"navigationPreload\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"scope\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"updateViaCache\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"update()\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"unregister()\" with the proper type", + "ServiceWorkerRegistration interface: registrationInstance must inherit property \"onupdatefound\" with the proper type", + "ServiceWorkerContainer interface: existence and properties of interface object", + "ServiceWorkerContainer interface object length", + "ServiceWorkerContainer interface object name", + "ServiceWorkerContainer interface: existence and properties of interface prototype object", + "ServiceWorkerContainer interface: existence and properties of interface prototype object's \"constructor\" property", + "ServiceWorkerContainer interface: existence and properties of interface prototype object's @@unscopables property", + "ServiceWorkerContainer interface: attribute controller", + "ServiceWorkerContainer interface: attribute ready", + "ServiceWorkerContainer interface: operation register(USVString, optional RegistrationOptions)", + "ServiceWorkerContainer interface: operation getRegistration(optional USVString)", + "ServiceWorkerContainer interface: operation getRegistrations()", + "ServiceWorkerContainer interface: operation startMessages()", + "ServiceWorkerContainer interface: attribute oncontrollerchange", + "ServiceWorkerContainer interface: attribute onmessage", + "ServiceWorkerContainer interface: attribute onmessageerror", + "ServiceWorkerContainer must be primary interface of navigator.serviceWorker", + "Stringification of navigator.serviceWorker", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"controller\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"ready\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"register(USVString, optional RegistrationOptions)\" with the proper type", + "ServiceWorkerContainer interface: calling register(USVString, optional RegistrationOptions) on navigator.serviceWorker with too few arguments must throw TypeError", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistration(optional USVString)\" with the proper type", + "ServiceWorkerContainer interface: calling getRegistration(optional USVString) on navigator.serviceWorker with too few arguments must throw TypeError", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistrations()\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"startMessages()\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"oncontrollerchange\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessage\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessageerror\" with the proper type", + "NavigationPreloadManager interface: existence and properties of interface object", + "NavigationPreloadManager interface object length", + "NavigationPreloadManager interface object name", + "NavigationPreloadManager interface: existence and properties of interface prototype object", + "NavigationPreloadManager interface: existence and properties of interface prototype object's \"constructor\" property", + "NavigationPreloadManager interface: existence and properties of interface prototype object's @@unscopables property", + "NavigationPreloadManager interface: operation enable()", + "NavigationPreloadManager interface: operation disable()", + "NavigationPreloadManager interface: operation setHeaderValue(ByteString)", + "NavigationPreloadManager interface: operation getState()", + "Cache interface: operation match(RequestInfo, optional CacheQueryOptions)", + "Cache interface: operation matchAll(optional RequestInfo, optional CacheQueryOptions)", + "Cache interface: operation add(RequestInfo)", + "Cache interface: operation addAll(sequence<RequestInfo>)", + "Cache interface: operation delete(RequestInfo, optional CacheQueryOptions)", + "Cache interface: operation keys(optional RequestInfo, optional CacheQueryOptions)", + "Cache interface: self.cacheInstance must inherit property \"matchAll(optional RequestInfo, optional CacheQueryOptions)\" with the proper type", + "Cache interface: calling matchAll(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError", + "Cache interface: self.cacheInstance must inherit property \"add(RequestInfo)\" with the proper type", + "Cache interface: calling add(RequestInfo) on self.cacheInstance with too few arguments must throw TypeError", + "Cache interface: self.cacheInstance must inherit property \"addAll(sequence<RequestInfo>)\" with the proper type", + "Cache interface: calling addAll(sequence<RequestInfo>) on self.cacheInstance with too few arguments must throw TypeError", + "Cache interface: self.cacheInstance must inherit property \"keys(optional RequestInfo, optional CacheQueryOptions)\" with the proper type", + "Cache interface: calling keys(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError", + "CacheStorage interface: operation match(RequestInfo, optional MultiCacheQueryOptions)", + "CacheStorage interface: operation keys()", + "CacheStorage interface: caches must inherit property \"match(RequestInfo, optional MultiCacheQueryOptions)\" with the proper type", + "CacheStorage interface: calling match(RequestInfo, optional MultiCacheQueryOptions) on caches with too few arguments must throw TypeError", + "CacheStorage interface: caches must inherit property \"keys()\" with the proper type", + "Window interface: attribute caches", + "Navigator interface: attribute serviceWorker", + "idl_test setup" + ], + "idlharness.https.any.worker.html": [ + "ServiceWorker interface: existence and properties of interface object", + "ServiceWorker interface object length", + "ServiceWorker interface object name", + "ServiceWorker interface: existence and properties of interface prototype object", + "ServiceWorker interface: existence and properties of interface prototype object's \"constructor\" property", + "ServiceWorker interface: existence and properties of interface prototype object's @@unscopables property", + "ServiceWorker interface: attribute scriptURL", + "ServiceWorker interface: attribute state", + "ServiceWorker interface: operation postMessage(any, sequence<object>)", + "ServiceWorker interface: operation postMessage(any, optional StructuredSerializeOptions)", + "ServiceWorker interface: attribute onstatechange", + "ServiceWorkerRegistration interface: existence and properties of interface object", + "ServiceWorkerRegistration interface object length", + "ServiceWorkerRegistration interface object name", + "ServiceWorkerRegistration interface: existence and properties of interface prototype object", + "ServiceWorkerRegistration interface: existence and properties of interface prototype object's \"constructor\" property", + "ServiceWorkerRegistration interface: existence and properties of interface prototype object's @@unscopables property", + "ServiceWorkerRegistration interface: attribute installing", + "ServiceWorkerRegistration interface: attribute waiting", + "ServiceWorkerRegistration interface: attribute active", + "ServiceWorkerRegistration interface: attribute navigationPreload", + "ServiceWorkerRegistration interface: attribute scope", + "ServiceWorkerRegistration interface: attribute updateViaCache", + "ServiceWorkerRegistration interface: operation update()", + "ServiceWorkerRegistration interface: operation unregister()", + "ServiceWorkerRegistration interface: attribute onupdatefound", + "ServiceWorkerContainer interface: existence and properties of interface object", + "ServiceWorkerContainer interface object length", + "ServiceWorkerContainer interface object name", + "ServiceWorkerContainer interface: existence and properties of interface prototype object", + "ServiceWorkerContainer interface: existence and properties of interface prototype object's \"constructor\" property", + "ServiceWorkerContainer interface: existence and properties of interface prototype object's @@unscopables property", + "ServiceWorkerContainer interface: attribute controller", + "ServiceWorkerContainer interface: attribute ready", + "ServiceWorkerContainer interface: operation register(USVString, optional RegistrationOptions)", + "ServiceWorkerContainer interface: operation getRegistration(optional USVString)", + "ServiceWorkerContainer interface: operation getRegistrations()", + "ServiceWorkerContainer interface: operation startMessages()", + "ServiceWorkerContainer interface: attribute oncontrollerchange", + "ServiceWorkerContainer interface: attribute onmessage", + "ServiceWorkerContainer interface: attribute onmessageerror", + "ServiceWorkerContainer must be primary interface of navigator.serviceWorker", + "Stringification of navigator.serviceWorker", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"controller\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"ready\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"register(USVString, optional RegistrationOptions)\" with the proper type", + "ServiceWorkerContainer interface: calling register(USVString, optional RegistrationOptions) on navigator.serviceWorker with too few arguments must throw TypeError", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistration(optional USVString)\" with the proper type", + "ServiceWorkerContainer interface: calling getRegistration(optional USVString) on navigator.serviceWorker with too few arguments must throw TypeError", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistrations()\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"startMessages()\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"oncontrollerchange\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessage\" with the proper type", + "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessageerror\" with the proper type", + "NavigationPreloadManager interface: existence and properties of interface object", + "NavigationPreloadManager interface object length", + "NavigationPreloadManager interface object name", + "NavigationPreloadManager interface: existence and properties of interface prototype object", + "NavigationPreloadManager interface: existence and properties of interface prototype object's \"constructor\" property", + "NavigationPreloadManager interface: existence and properties of interface prototype object's @@unscopables property", + "NavigationPreloadManager interface: operation enable()", + "NavigationPreloadManager interface: operation disable()", + "NavigationPreloadManager interface: operation setHeaderValue(ByteString)", + "NavigationPreloadManager interface: operation getState()", + "Cache interface: operation match(RequestInfo, optional CacheQueryOptions)", + "Cache interface: operation matchAll(optional RequestInfo, optional CacheQueryOptions)", + "Cache interface: operation add(RequestInfo)", + "Cache interface: operation addAll(sequence<RequestInfo>)", + "Cache interface: operation delete(RequestInfo, optional CacheQueryOptions)", + "Cache interface: operation keys(optional RequestInfo, optional CacheQueryOptions)", + "Cache interface: self.cacheInstance must inherit property \"matchAll(optional RequestInfo, optional CacheQueryOptions)\" with the proper type", + "Cache interface: calling matchAll(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError", + "Cache interface: self.cacheInstance must inherit property \"add(RequestInfo)\" with the proper type", + "Cache interface: calling add(RequestInfo) on self.cacheInstance with too few arguments must throw TypeError", + "Cache interface: self.cacheInstance must inherit property \"addAll(sequence<RequestInfo>)\" with the proper type", + "Cache interface: calling addAll(sequence<RequestInfo>) on self.cacheInstance with too few arguments must throw TypeError", + "Cache interface: self.cacheInstance must inherit property \"keys(optional RequestInfo, optional CacheQueryOptions)\" with the proper type", + "Cache interface: calling keys(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError", + "CacheStorage interface: operation match(RequestInfo, optional MultiCacheQueryOptions)", + "CacheStorage interface: operation keys()", + "CacheStorage interface: caches must inherit property \"match(RequestInfo, optional MultiCacheQueryOptions)\" with the proper type", + "CacheStorage interface: calling match(RequestInfo, optional MultiCacheQueryOptions) on caches with too few arguments must throw TypeError", + "CacheStorage interface: caches must inherit property \"keys()\" with the proper type", + "WorkerGlobalScope interface: attribute caches", + "WorkerNavigator interface: attribute serviceWorker" + ], + "cache-storage": { + "cache-match.https.any.html": [ + "Cache.match supports ignoreMethod", + "Cache.match supports ignoreVary", + "Cache.match with Request and Response objects with different URLs", + "Cache.match with a network error Response", + "cors-exposed header should be stored correctly.", + "MIME type should be set from content-header correctly.", + "Cache.match ignores vary headers on opaque response." + ], + "cache-delete.https.any.html": [ + "Cache.delete called with a HEAD request", + "Cache.delete supports ignoreVary", + "Cache.delete with ignoreSearch option (request with search parameters)", + "Cache.delete with ignoreSearch option (when it is specified as false)" + ], + "cache-abort.https.any.html": false, + "cache-abort.https.any.worker.html": false, + "cache-add.https.any.html": false, + "cache-add.https.any.worker.html": false, + "cache-delete.https.any.worker.html": [ + "Cache.delete called with a HEAD request", + "Cache.delete supports ignoreVary", + "Cache.delete with ignoreSearch option (request with search parameters)", + "Cache.delete with ignoreSearch option (when it is specified as false)" + ], + "cache-keys.https.any.html": false, + "cache-keys.https.any.worker.html": false, + "cache-match.https.any.worker.html": [ + "Cache.match supports ignoreMethod", + "Cache.match supports ignoreVary", + "Cache.match with Request and Response objects with different URLs", + "Cache.match with a network error Response", + "cors-exposed header should be stored correctly.", + "MIME type should be set from content-header correctly.", + "Cache.match ignores vary headers on opaque response." + ], + "cache-matchAll.https.any.html": false, + "cache-matchAll.https.any.worker.html": false, + "cache-put.https.any.html": [ + "Cache.put called with Request and Response from fetch()", + "Cache.put with opaque-filtered HTTP 206 response", + "Cache.put with HTTP 500 response", + "Cache.put called multiple times with request URLs that differ only by a fragment", + "Cache.put with a VARY:* opaque response should not reject" + ], + "cache-put.https.any.worker.html": [ + "Cache.put called with Request and Response from fetch()", + "Cache.put with opaque-filtered HTTP 206 response", + "Cache.put with HTTP 500 response", + "Cache.put called multiple times with request URLs that differ only by a fragment", + "Cache.put with a VARY:* opaque response should not reject" + ], + "cache-storage-keys.https.any.html": false, + "cache-storage-keys.https.any.worker.html": false, + "cache-storage-match.https.any.html": false, + "cache-storage-match.https.any.worker.html": false, + "cache-storage.https.any.html": [ + "CacheStorage.delete dooms, but does not delete immediately", + "CacheStorage.open with existing cache", + "CacheStorage names are DOMStrings not USVStrings" + ], + "cache-storage.https.any.worker.html": [ + "CacheStorage.delete dooms, but does not delete immediately", + "CacheStorage.open with existing cache", + "CacheStorage names are DOMStrings not USVStrings" + ], + "common.https.window.html": true, + "cache-storage-buckets.https.any.html": false, + "cache-storage-buckets.https.any.worker.html": false + }, + "service-worker": { + "fetch-request-xhr-sync-error.https.window.html": false, + "ready.https.window.html": false, + "xhr-content-length.https.window.html": false + } + }, + "mimesniff": { + "mime-types": { + "parsing.any.html": [ + "TEXT/HTML;CHARSET=GBK (Blob/File)", + "text/html;charset=gbk( (Blob/File)", + "text/html;x=(;charset=gbk (Blob/File)", + "text/html;charset=gbk;charset=windows-1255 (Blob/File)", + "text/html;charset=();charset=GBK (Blob/File)", + "text/html;charset =gbk (Blob/File)", + "text/html ;charset=gbk (Blob/File)", + "text/html; charset=gbk (Blob/File)", + "text/html;charset= gbk (Blob/File)", + "text/html;charset= \"gbk\" (Blob/File)", + "text/html;charset=\u000bgbk (Blob/File)", + "text/html;charset=\fgbk (Blob/File)", + "text/html;\u000bcharset=gbk (Blob/File)", + "text/html;\fcharset=gbk (Blob/File)", + "text/html;charset=';charset=GBK (Blob/File)", + "text/html;test;charset=gbk (Blob/File)", + "text/html;test=;charset=gbk (Blob/File)", + "text/html;';charset=gbk (Blob/File)", + "text/html;\";charset=gbk (Blob/File)", + "text/html ; ; charset=gbk (Blob/File)", + "text/html;;;;charset=gbk (Blob/File)", + "text/html;charset= \";charset=GBK (Blob/File)", + "text/html;charset=\";charset=foo\";charset=GBK (Blob/File)", + "text/html;charset=\"gbk\" (Blob/File)", + "text/html;charset=\"gbk (Blob/File)", + "text/html;charset=gbk\" (Blob/File)", + "text/html;charset=\"\\ gbk\" (Blob/File)", + "text/html;charset=\"\\g\\b\\k\" (Blob/File)", + "text/html;charset=\"gbk\"x (Blob/File)", + "text/html;charset=\"\";charset=GBK (Blob/File)", + "text/html;charset=\";charset=GBK (Blob/File)", + "text/html;charset={gbk} (Blob/File)", + "text/html;a]=bar;b[=bar;c=bar (Blob/File)", + "text/html;in]valid=\";asd=foo\";foo=bar (Blob/File)", + "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Blob/File)", + "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Blob/File)", + "x/x;test (Blob/File)", + "x/x;test=\"\\ (Blob/File)", + "x/x;x= (Blob/File)", + "x/x;x=\t (Blob/File)", + "x/x\n\r\t ;x=x (Blob/File)", + "\n\r\t x/x;x=x\n\r\t (Blob/File)", + "x/x;\n\r\t x=x\n\r\t ;x=y (Blob/File)", + "text/html;test=ÿ;charset=gbk (Blob/File)", + "x/x;test=�;x=x (Blob/File)", + "/ (Blob/File)", + "bogus (Blob/File)", + "bogus/ (Blob/File)", + "bogus/ (Blob/File)", + "bogus/bogus/; (Blob/File)", + "</> (Blob/File)", + "(/) (Blob/File)", + "text/html(;doesnot=matter (Blob/File)", + "{/} (Blob/File)", + "text /html (Blob/File)", + "text/ html (Blob/File)", + "\"text/html\" (Blob/File)", + "x/x;\u0000=x;bonus=x (Blob/File)", + "x/x;x=\u0000;bonus=x (Blob/File)", + "x/x;x=\"\u0000\";bonus=x (Blob/File)", + "x/x;\u0001=x;bonus=x (Blob/File)", + "x/x;x=\u0001;bonus=x (Blob/File)", + "x/x;x=\"\u0001\";bonus=x (Blob/File)", + "x/x;\u0002=x;bonus=x (Blob/File)", + "x/x;x=\u0002;bonus=x (Blob/File)", + "x/x;x=\"\u0002\";bonus=x (Blob/File)", + "x/x;\u0003=x;bonus=x (Blob/File)", + "x/x;x=\u0003;bonus=x (Blob/File)", + "x/x;x=\"\u0003\";bonus=x (Blob/File)", + "x/x;\u0004=x;bonus=x (Blob/File)", + "x/x;x=\u0004;bonus=x (Blob/File)", + "x/x;x=\"\u0004\";bonus=x (Blob/File)", + "x/x;\u0005=x;bonus=x (Blob/File)", + "x/x;x=\u0005;bonus=x (Blob/File)", + "x/x;x=\"\u0005\";bonus=x (Blob/File)", + "x/x;\u0006=x;bonus=x (Blob/File)", + "x/x;x=\u0006;bonus=x (Blob/File)", + "x/x;x=\"\u0006\";bonus=x (Blob/File)", + "x/x;\u0007=x;bonus=x (Blob/File)", + "x/x;x=\u0007;bonus=x (Blob/File)", + "x/x;x=\"\u0007\";bonus=x (Blob/File)", + "x/x;\b=x;bonus=x (Blob/File)", + "x/x;x=\b;bonus=x (Blob/File)", + "x/x;x=\"\b\";bonus=x (Blob/File)", + "x/x;\t=x;bonus=x (Blob/File)", + "x/x;\n=x;bonus=x (Blob/File)", + "x/x;x=\n;bonus=x (Blob/File)", + "x/x;x=\"\n\";bonus=x (Blob/File)", + "x/x;\u000b=x;bonus=x (Blob/File)", + "x/x;x=\u000b;bonus=x (Blob/File)", + "x/x;x=\"\u000b\";bonus=x (Blob/File)", + "x/x;\f=x;bonus=x (Blob/File)", + "x/x;x=\f;bonus=x (Blob/File)", + "x/x;x=\"\f\";bonus=x (Blob/File)", + "x/x;\r=x;bonus=x (Blob/File)", + "x/x;x=\r;bonus=x (Blob/File)", + "x/x;x=\"\r\";bonus=x (Blob/File)", + "x/x;\u000e=x;bonus=x (Blob/File)", + "x/x;x=\u000e;bonus=x (Blob/File)", + "x/x;x=\"\u000e\";bonus=x (Blob/File)", + "x/x;\u000f=x;bonus=x (Blob/File)", + "x/x;x=\u000f;bonus=x (Blob/File)", + "x/x;x=\"\u000f\";bonus=x (Blob/File)", + "x/x;\u0010=x;bonus=x (Blob/File)", + "x/x;x=\u0010;bonus=x (Blob/File)", + "x/x;x=\"\u0010\";bonus=x (Blob/File)", + "x/x;\u0011=x;bonus=x (Blob/File)", + "x/x;x=\u0011;bonus=x (Blob/File)", + "x/x;x=\"\u0011\";bonus=x (Blob/File)", + "x/x;\u0012=x;bonus=x (Blob/File)", + "x/x;x=\u0012;bonus=x (Blob/File)", + "x/x;x=\"\u0012\";bonus=x (Blob/File)", + "x/x;\u0013=x;bonus=x (Blob/File)", + "x/x;x=\u0013;bonus=x (Blob/File)", + "x/x;x=\"\u0013\";bonus=x (Blob/File)", + "x/x;\u0014=x;bonus=x (Blob/File)", + "x/x;x=\u0014;bonus=x (Blob/File)", + "x/x;x=\"\u0014\";bonus=x (Blob/File)", + "x/x;\u0015=x;bonus=x (Blob/File)", + "x/x;x=\u0015;bonus=x (Blob/File)", + "x/x;x=\"\u0015\";bonus=x (Blob/File)", + "x/x;\u0016=x;bonus=x (Blob/File)", + "x/x;x=\u0016;bonus=x (Blob/File)", + "x/x;x=\"\u0016\";bonus=x (Blob/File)", + "x/x;\u0017=x;bonus=x (Blob/File)", + "x/x;x=\u0017;bonus=x (Blob/File)", + "x/x;x=\"\u0017\";bonus=x (Blob/File)", + "x/x;\u0018=x;bonus=x (Blob/File)", + "x/x;x=\u0018;bonus=x (Blob/File)", + "x/x;x=\"\u0018\";bonus=x (Blob/File)", + "x/x;\u0019=x;bonus=x (Blob/File)", + "x/x;x=\u0019;bonus=x (Blob/File)", + "x/x;x=\"\u0019\";bonus=x (Blob/File)", + "x/x;\u001a=x;bonus=x (Blob/File)", + "x/x;x=\u001a;bonus=x (Blob/File)", + "x/x;x=\"\u001a\";bonus=x (Blob/File)", + "x/x;\u001b=x;bonus=x (Blob/File)", + "x/x;x=\u001b;bonus=x (Blob/File)", + "x/x;x=\"\u001b\";bonus=x (Blob/File)", + "x/x;\u001c=x;bonus=x (Blob/File)", + "x/x;x=\u001c;bonus=x (Blob/File)", + "x/x;x=\"\u001c\";bonus=x (Blob/File)", + "x/x;\u001d=x;bonus=x (Blob/File)", + "x/x;x=\u001d;bonus=x (Blob/File)", + "x/x;x=\"\u001d\";bonus=x (Blob/File)", + "x/x;\u001e=x;bonus=x (Blob/File)", + "x/x;x=\u001e;bonus=x (Blob/File)", + "x/x;x=\"\u001e\";bonus=x (Blob/File)", + "x/x;\u001f=x;bonus=x (Blob/File)", + "x/x;x=\u001f;bonus=x (Blob/File)", + "x/x;x=\"\u001f\";bonus=x (Blob/File)", + " /x (Blob/File)", + "x/ (Blob/File)", + "x/x; =x;bonus=x (Blob/File)", + "\"/x (Blob/File)", + "x/\" (Blob/File)", + "x/x;\"=x;bonus=x (Blob/File)", + "(/x (Blob/File)", + "x/( (Blob/File)", + "x/x;(=x;bonus=x (Blob/File)", + "x/x;x=(;bonus=x (Blob/File)", + ")/x (Blob/File)", + "x/) (Blob/File)", + "x/x;)=x;bonus=x (Blob/File)", + "x/x;x=);bonus=x (Blob/File)", + ",/x (Blob/File)", + "x/, (Blob/File)", + "x/x;,=x;bonus=x (Blob/File)", + "x/x;x=,;bonus=x (Blob/File)", + "x/x;/=x;bonus=x (Blob/File)", + "x/x;x=/;bonus=x (Blob/File)", + ":/x (Blob/File)", + "x/: (Blob/File)", + "x/x;:=x;bonus=x (Blob/File)", + "x/x;x=:;bonus=x (Blob/File)", + ";/x (Blob/File)", + "x/; (Blob/File)", + "</x (Blob/File)", + "x/< (Blob/File)", + "x/x;<=x;bonus=x (Blob/File)", + "x/x;x=<;bonus=x (Blob/File)", + "=/x (Blob/File)", + "x/= (Blob/File)", + "x/x;x==;bonus=x (Blob/File)", + ">/x (Blob/File)", + "x/> (Blob/File)", + "x/x;>=x;bonus=x (Blob/File)", + "x/x;x=>;bonus=x (Blob/File)", + "?/x (Blob/File)", + "x/? (Blob/File)", + "x/x;?=x;bonus=x (Blob/File)", + "x/x;x=?;bonus=x (Blob/File)", + "@/x (Blob/File)", + "x/@ (Blob/File)", + "x/x;@=x;bonus=x (Blob/File)", + "x/x;x=@;bonus=x (Blob/File)", + "[/x (Blob/File)", + "x/[ (Blob/File)", + "x/x;[=x;bonus=x (Blob/File)", + "x/x;x=[;bonus=x (Blob/File)", + "\\/x (Blob/File)", + "x/\\ (Blob/File)", + "x/x;\\=x;bonus=x (Blob/File)", + "]/x (Blob/File)", + "x/] (Blob/File)", + "x/x;]=x;bonus=x (Blob/File)", + "x/x;x=];bonus=x (Blob/File)", + "{/x (Blob/File)", + "x/{ (Blob/File)", + "x/x;{=x;bonus=x (Blob/File)", + "x/x;x={;bonus=x (Blob/File)", + "}/x (Blob/File)", + "x/} (Blob/File)", + "x/x;}=x;bonus=x (Blob/File)", + "x/x;x=};bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;
=x;bonus=x (Blob/File)", + "x/x;x=
;bonus=x (Blob/File)", + "x/x;x=\"
\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x; =x;bonus=x (Blob/File)", + "x/x;x= ;bonus=x (Blob/File)", + "x/x;x=\" \";bonus=x (Blob/File)", + "x/x;¡=x;bonus=x (Blob/File)", + "x/x;x=¡;bonus=x (Blob/File)", + "x/x;x=\"¡\";bonus=x (Blob/File)", + "x/x;¢=x;bonus=x (Blob/File)", + "x/x;x=¢;bonus=x (Blob/File)", + "x/x;x=\"¢\";bonus=x (Blob/File)", + "x/x;£=x;bonus=x (Blob/File)", + "x/x;x=£;bonus=x (Blob/File)", + "x/x;x=\"£\";bonus=x (Blob/File)", + "x/x;¤=x;bonus=x (Blob/File)", + "x/x;x=¤;bonus=x (Blob/File)", + "x/x;x=\"¤\";bonus=x (Blob/File)", + "x/x;¥=x;bonus=x (Blob/File)", + "x/x;x=¥;bonus=x (Blob/File)", + "x/x;x=\"¥\";bonus=x (Blob/File)", + "x/x;¦=x;bonus=x (Blob/File)", + "x/x;x=¦;bonus=x (Blob/File)", + "x/x;x=\"¦\";bonus=x (Blob/File)", + "x/x;§=x;bonus=x (Blob/File)", + "x/x;x=§;bonus=x (Blob/File)", + "x/x;x=\"§\";bonus=x (Blob/File)", + "x/x;¨=x;bonus=x (Blob/File)", + "x/x;x=¨;bonus=x (Blob/File)", + "x/x;x=\"¨\";bonus=x (Blob/File)", + "x/x;©=x;bonus=x (Blob/File)", + "x/x;x=©;bonus=x (Blob/File)", + "x/x;x=\"©\";bonus=x (Blob/File)", + "x/x;ª=x;bonus=x (Blob/File)", + "x/x;x=ª;bonus=x (Blob/File)", + "x/x;x=\"ª\";bonus=x (Blob/File)", + "x/x;«=x;bonus=x (Blob/File)", + "x/x;x=«;bonus=x (Blob/File)", + "x/x;x=\"«\";bonus=x (Blob/File)", + "x/x;¬=x;bonus=x (Blob/File)", + "x/x;x=¬;bonus=x (Blob/File)", + "x/x;x=\"¬\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;®=x;bonus=x (Blob/File)", + "x/x;x=®;bonus=x (Blob/File)", + "x/x;x=\"®\";bonus=x (Blob/File)", + "x/x;¯=x;bonus=x (Blob/File)", + "x/x;x=¯;bonus=x (Blob/File)", + "x/x;x=\"¯\";bonus=x (Blob/File)", + "x/x;°=x;bonus=x (Blob/File)", + "x/x;x=°;bonus=x (Blob/File)", + "x/x;x=\"°\";bonus=x (Blob/File)", + "x/x;±=x;bonus=x (Blob/File)", + "x/x;x=±;bonus=x (Blob/File)", + "x/x;x=\"±\";bonus=x (Blob/File)", + "x/x;²=x;bonus=x (Blob/File)", + "x/x;x=²;bonus=x (Blob/File)", + "x/x;x=\"²\";bonus=x (Blob/File)", + "x/x;³=x;bonus=x (Blob/File)", + "x/x;x=³;bonus=x (Blob/File)", + "x/x;x=\"³\";bonus=x (Blob/File)", + "x/x;´=x;bonus=x (Blob/File)", + "x/x;x=´;bonus=x (Blob/File)", + "x/x;x=\"´\";bonus=x (Blob/File)", + "x/x;µ=x;bonus=x (Blob/File)", + "x/x;x=µ;bonus=x (Blob/File)", + "x/x;x=\"µ\";bonus=x (Blob/File)", + "x/x;¶=x;bonus=x (Blob/File)", + "x/x;x=¶;bonus=x (Blob/File)", + "x/x;x=\"¶\";bonus=x (Blob/File)", + "x/x;·=x;bonus=x (Blob/File)", + "x/x;x=·;bonus=x (Blob/File)", + "x/x;x=\"·\";bonus=x (Blob/File)", + "x/x;¸=x;bonus=x (Blob/File)", + "x/x;x=¸;bonus=x (Blob/File)", + "x/x;x=\"¸\";bonus=x (Blob/File)", + "x/x;¹=x;bonus=x (Blob/File)", + "x/x;x=¹;bonus=x (Blob/File)", + "x/x;x=\"¹\";bonus=x (Blob/File)", + "x/x;º=x;bonus=x (Blob/File)", + "x/x;x=º;bonus=x (Blob/File)", + "x/x;x=\"º\";bonus=x (Blob/File)", + "x/x;»=x;bonus=x (Blob/File)", + "x/x;x=»;bonus=x (Blob/File)", + "x/x;x=\"»\";bonus=x (Blob/File)", + "x/x;¼=x;bonus=x (Blob/File)", + "x/x;x=¼;bonus=x (Blob/File)", + "x/x;x=\"¼\";bonus=x (Blob/File)", + "x/x;½=x;bonus=x (Blob/File)", + "x/x;x=½;bonus=x (Blob/File)", + "x/x;x=\"½\";bonus=x (Blob/File)", + "x/x;¾=x;bonus=x (Blob/File)", + "x/x;x=¾;bonus=x (Blob/File)", + "x/x;x=\"¾\";bonus=x (Blob/File)", + "x/x;¿=x;bonus=x (Blob/File)", + "x/x;x=¿;bonus=x (Blob/File)", + "x/x;x=\"¿\";bonus=x (Blob/File)", + "x/x;À=x;bonus=x (Blob/File)", + "x/x;x=À;bonus=x (Blob/File)", + "x/x;x=\"À\";bonus=x (Blob/File)", + "x/x;Á=x;bonus=x (Blob/File)", + "x/x;x=Á;bonus=x (Blob/File)", + "x/x;x=\"Á\";bonus=x (Blob/File)", + "x/x;Â=x;bonus=x (Blob/File)", + "x/x;x=Â;bonus=x (Blob/File)", + "x/x;x=\"Â\";bonus=x (Blob/File)", + "x/x;Ã=x;bonus=x (Blob/File)", + "x/x;x=Ã;bonus=x (Blob/File)", + "x/x;x=\"Ã\";bonus=x (Blob/File)", + "x/x;Ä=x;bonus=x (Blob/File)", + "x/x;x=Ä;bonus=x (Blob/File)", + "x/x;x=\"Ä\";bonus=x (Blob/File)", + "x/x;Å=x;bonus=x (Blob/File)", + "x/x;x=Å;bonus=x (Blob/File)", + "x/x;x=\"Å\";bonus=x (Blob/File)", + "x/x;Æ=x;bonus=x (Blob/File)", + "x/x;x=Æ;bonus=x (Blob/File)", + "x/x;x=\"Æ\";bonus=x (Blob/File)", + "x/x;Ç=x;bonus=x (Blob/File)", + "x/x;x=Ç;bonus=x (Blob/File)", + "x/x;x=\"Ç\";bonus=x (Blob/File)", + "x/x;È=x;bonus=x (Blob/File)", + "x/x;x=È;bonus=x (Blob/File)", + "x/x;x=\"È\";bonus=x (Blob/File)", + "x/x;É=x;bonus=x (Blob/File)", + "x/x;x=É;bonus=x (Blob/File)", + "x/x;x=\"É\";bonus=x (Blob/File)", + "x/x;Ê=x;bonus=x (Blob/File)", + "x/x;x=Ê;bonus=x (Blob/File)", + "x/x;x=\"Ê\";bonus=x (Blob/File)", + "x/x;Ë=x;bonus=x (Blob/File)", + "x/x;x=Ë;bonus=x (Blob/File)", + "x/x;x=\"Ë\";bonus=x (Blob/File)", + "x/x;Ì=x;bonus=x (Blob/File)", + "x/x;x=Ì;bonus=x (Blob/File)", + "x/x;x=\"Ì\";bonus=x (Blob/File)", + "x/x;Í=x;bonus=x (Blob/File)", + "x/x;x=Í;bonus=x (Blob/File)", + "x/x;x=\"Í\";bonus=x (Blob/File)", + "x/x;Î=x;bonus=x (Blob/File)", + "x/x;x=Î;bonus=x (Blob/File)", + "x/x;x=\"Î\";bonus=x (Blob/File)", + "x/x;Ï=x;bonus=x (Blob/File)", + "x/x;x=Ï;bonus=x (Blob/File)", + "x/x;x=\"Ï\";bonus=x (Blob/File)", + "x/x;Ð=x;bonus=x (Blob/File)", + "x/x;x=Ð;bonus=x (Blob/File)", + "x/x;x=\"Ð\";bonus=x (Blob/File)", + "x/x;Ñ=x;bonus=x (Blob/File)", + "x/x;x=Ñ;bonus=x (Blob/File)", + "x/x;x=\"Ñ\";bonus=x (Blob/File)", + "x/x;Ò=x;bonus=x (Blob/File)", + "x/x;x=Ò;bonus=x (Blob/File)", + "x/x;x=\"Ò\";bonus=x (Blob/File)", + "x/x;Ó=x;bonus=x (Blob/File)", + "x/x;x=Ó;bonus=x (Blob/File)", + "x/x;x=\"Ó\";bonus=x (Blob/File)", + "x/x;Ô=x;bonus=x (Blob/File)", + "x/x;x=Ô;bonus=x (Blob/File)", + "x/x;x=\"Ô\";bonus=x (Blob/File)", + "x/x;Õ=x;bonus=x (Blob/File)", + "x/x;x=Õ;bonus=x (Blob/File)", + "x/x;x=\"Õ\";bonus=x (Blob/File)", + "x/x;Ö=x;bonus=x (Blob/File)", + "x/x;x=Ö;bonus=x (Blob/File)", + "x/x;x=\"Ö\";bonus=x (Blob/File)", + "x/x;×=x;bonus=x (Blob/File)", + "x/x;x=×;bonus=x (Blob/File)", + "x/x;x=\"×\";bonus=x (Blob/File)", + "x/x;Ø=x;bonus=x (Blob/File)", + "x/x;x=Ø;bonus=x (Blob/File)", + "x/x;x=\"Ø\";bonus=x (Blob/File)", + "x/x;Ù=x;bonus=x (Blob/File)", + "x/x;x=Ù;bonus=x (Blob/File)", + "x/x;x=\"Ù\";bonus=x (Blob/File)", + "x/x;Ú=x;bonus=x (Blob/File)", + "x/x;x=Ú;bonus=x (Blob/File)", + "x/x;x=\"Ú\";bonus=x (Blob/File)", + "x/x;Û=x;bonus=x (Blob/File)", + "x/x;x=Û;bonus=x (Blob/File)", + "x/x;x=\"Û\";bonus=x (Blob/File)", + "x/x;Ü=x;bonus=x (Blob/File)", + "x/x;x=Ü;bonus=x (Blob/File)", + "x/x;x=\"Ü\";bonus=x (Blob/File)", + "x/x;Ý=x;bonus=x (Blob/File)", + "x/x;x=Ý;bonus=x (Blob/File)", + "x/x;x=\"Ý\";bonus=x (Blob/File)", + "x/x;Þ=x;bonus=x (Blob/File)", + "x/x;x=Þ;bonus=x (Blob/File)", + "x/x;x=\"Þ\";bonus=x (Blob/File)", + "x/x;ß=x;bonus=x (Blob/File)", + "x/x;x=ß;bonus=x (Blob/File)", + "x/x;x=\"ß\";bonus=x (Blob/File)", + "x/x;à=x;bonus=x (Blob/File)", + "x/x;x=à;bonus=x (Blob/File)", + "x/x;x=\"à\";bonus=x (Blob/File)", + "x/x;á=x;bonus=x (Blob/File)", + "x/x;x=á;bonus=x (Blob/File)", + "x/x;x=\"á\";bonus=x (Blob/File)", + "x/x;â=x;bonus=x (Blob/File)", + "x/x;x=â;bonus=x (Blob/File)", + "x/x;x=\"â\";bonus=x (Blob/File)", + "x/x;ã=x;bonus=x (Blob/File)", + "x/x;x=ã;bonus=x (Blob/File)", + "x/x;x=\"ã\";bonus=x (Blob/File)", + "x/x;ä=x;bonus=x (Blob/File)", + "x/x;x=ä;bonus=x (Blob/File)", + "x/x;x=\"ä\";bonus=x (Blob/File)", + "x/x;å=x;bonus=x (Blob/File)", + "x/x;x=å;bonus=x (Blob/File)", + "x/x;x=\"å\";bonus=x (Blob/File)", + "x/x;æ=x;bonus=x (Blob/File)", + "x/x;x=æ;bonus=x (Blob/File)", + "x/x;x=\"æ\";bonus=x (Blob/File)", + "x/x;ç=x;bonus=x (Blob/File)", + "x/x;x=ç;bonus=x (Blob/File)", + "x/x;x=\"ç\";bonus=x (Blob/File)", + "x/x;è=x;bonus=x (Blob/File)", + "x/x;x=è;bonus=x (Blob/File)", + "x/x;x=\"è\";bonus=x (Blob/File)", + "x/x;é=x;bonus=x (Blob/File)", + "x/x;x=é;bonus=x (Blob/File)", + "x/x;x=\"é\";bonus=x (Blob/File)", + "x/x;ê=x;bonus=x (Blob/File)", + "x/x;x=ê;bonus=x (Blob/File)", + "x/x;x=\"ê\";bonus=x (Blob/File)", + "x/x;ë=x;bonus=x (Blob/File)", + "x/x;x=ë;bonus=x (Blob/File)", + "x/x;x=\"ë\";bonus=x (Blob/File)", + "x/x;ì=x;bonus=x (Blob/File)", + "x/x;x=ì;bonus=x (Blob/File)", + "x/x;x=\"ì\";bonus=x (Blob/File)", + "x/x;í=x;bonus=x (Blob/File)", + "x/x;x=í;bonus=x (Blob/File)", + "x/x;x=\"í\";bonus=x (Blob/File)", + "x/x;î=x;bonus=x (Blob/File)", + "x/x;x=î;bonus=x (Blob/File)", + "x/x;x=\"î\";bonus=x (Blob/File)", + "x/x;ï=x;bonus=x (Blob/File)", + "x/x;x=ï;bonus=x (Blob/File)", + "x/x;x=\"ï\";bonus=x (Blob/File)", + "x/x;ð=x;bonus=x (Blob/File)", + "x/x;x=ð;bonus=x (Blob/File)", + "x/x;x=\"ð\";bonus=x (Blob/File)", + "x/x;ñ=x;bonus=x (Blob/File)", + "x/x;x=ñ;bonus=x (Blob/File)", + "x/x;x=\"ñ\";bonus=x (Blob/File)", + "x/x;ò=x;bonus=x (Blob/File)", + "x/x;x=ò;bonus=x (Blob/File)", + "x/x;x=\"ò\";bonus=x (Blob/File)", + "x/x;ó=x;bonus=x (Blob/File)", + "x/x;x=ó;bonus=x (Blob/File)", + "x/x;x=\"ó\";bonus=x (Blob/File)", + "x/x;ô=x;bonus=x (Blob/File)", + "x/x;x=ô;bonus=x (Blob/File)", + "x/x;x=\"ô\";bonus=x (Blob/File)", + "x/x;õ=x;bonus=x (Blob/File)", + "x/x;x=õ;bonus=x (Blob/File)", + "x/x;x=\"õ\";bonus=x (Blob/File)", + "x/x;ö=x;bonus=x (Blob/File)", + "x/x;x=ö;bonus=x (Blob/File)", + "x/x;x=\"ö\";bonus=x (Blob/File)", + "x/x;÷=x;bonus=x (Blob/File)", + "x/x;x=÷;bonus=x (Blob/File)", + "x/x;x=\"÷\";bonus=x (Blob/File)", + "x/x;ø=x;bonus=x (Blob/File)", + "x/x;x=ø;bonus=x (Blob/File)", + "x/x;x=\"ø\";bonus=x (Blob/File)", + "x/x;ù=x;bonus=x (Blob/File)", + "x/x;x=ù;bonus=x (Blob/File)", + "x/x;x=\"ù\";bonus=x (Blob/File)", + "x/x;ú=x;bonus=x (Blob/File)", + "x/x;x=ú;bonus=x (Blob/File)", + "x/x;x=\"ú\";bonus=x (Blob/File)", + "x/x;û=x;bonus=x (Blob/File)", + "x/x;x=û;bonus=x (Blob/File)", + "x/x;x=\"û\";bonus=x (Blob/File)", + "x/x;ü=x;bonus=x (Blob/File)", + "x/x;x=ü;bonus=x (Blob/File)", + "x/x;x=\"ü\";bonus=x (Blob/File)", + "x/x;ý=x;bonus=x (Blob/File)", + "x/x;x=ý;bonus=x (Blob/File)", + "x/x;x=\"ý\";bonus=x (Blob/File)", + "x/x;þ=x;bonus=x (Blob/File)", + "x/x;x=þ;bonus=x (Blob/File)", + "x/x;x=\"þ\";bonus=x (Blob/File)", + "x/x;ÿ=x;bonus=x (Blob/File)", + "x/x;x=ÿ;bonus=x (Blob/File)", + "x/x;x=\"ÿ\";bonus=x (Blob/File)", + "TEXT/HTML;CHARSET=GBK (Request/Response)", + "text/html;charset= \";charset=GBK (Request/Response)", + "text/html;charset=\";charset=foo\";charset=GBK (Request/Response)", + "text/html;charset=\"\";charset=GBK (Request/Response)", + "text/html;charset=\";charset=GBK (Request/Response)", + "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Request/Response)", + "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Request/Response)", + "text/html;test=ÿ;charset=gbk (Request/Response)", + "x/x;,=x;bonus=x (Request/Response)", + "x/x;x=,;bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=
;bonus=x (Request/Response)", + "x/x;x=\"
\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x= ;bonus=x (Request/Response)", + "x/x;x=\" \";bonus=x (Request/Response)", + "x/x;x=¡;bonus=x (Request/Response)", + "x/x;x=\"¡\";bonus=x (Request/Response)", + "x/x;x=¢;bonus=x (Request/Response)", + "x/x;x=\"¢\";bonus=x (Request/Response)", + "x/x;x=£;bonus=x (Request/Response)", + "x/x;x=\"£\";bonus=x (Request/Response)", + "x/x;x=¤;bonus=x (Request/Response)", + "x/x;x=\"¤\";bonus=x (Request/Response)", + "x/x;x=¥;bonus=x (Request/Response)", + "x/x;x=\"¥\";bonus=x (Request/Response)", + "x/x;x=¦;bonus=x (Request/Response)", + "x/x;x=\"¦\";bonus=x (Request/Response)", + "x/x;x=§;bonus=x (Request/Response)", + "x/x;x=\"§\";bonus=x (Request/Response)", + "x/x;x=¨;bonus=x (Request/Response)", + "x/x;x=\"¨\";bonus=x (Request/Response)", + "x/x;x=©;bonus=x (Request/Response)", + "x/x;x=\"©\";bonus=x (Request/Response)", + "x/x;x=ª;bonus=x (Request/Response)", + "x/x;x=\"ª\";bonus=x (Request/Response)", + "x/x;x=«;bonus=x (Request/Response)", + "x/x;x=\"«\";bonus=x (Request/Response)", + "x/x;x=¬;bonus=x (Request/Response)", + "x/x;x=\"¬\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=®;bonus=x (Request/Response)", + "x/x;x=\"®\";bonus=x (Request/Response)", + "x/x;x=¯;bonus=x (Request/Response)", + "x/x;x=\"¯\";bonus=x (Request/Response)", + "x/x;x=°;bonus=x (Request/Response)", + "x/x;x=\"°\";bonus=x (Request/Response)", + "x/x;x=±;bonus=x (Request/Response)", + "x/x;x=\"±\";bonus=x (Request/Response)", + "x/x;x=²;bonus=x (Request/Response)", + "x/x;x=\"²\";bonus=x (Request/Response)", + "x/x;x=³;bonus=x (Request/Response)", + "x/x;x=\"³\";bonus=x (Request/Response)", + "x/x;x=´;bonus=x (Request/Response)", + "x/x;x=\"´\";bonus=x (Request/Response)", + "x/x;x=µ;bonus=x (Request/Response)", + "x/x;x=\"µ\";bonus=x (Request/Response)", + "x/x;x=¶;bonus=x (Request/Response)", + "x/x;x=\"¶\";bonus=x (Request/Response)", + "x/x;x=·;bonus=x (Request/Response)", + "x/x;x=\"·\";bonus=x (Request/Response)", + "x/x;x=¸;bonus=x (Request/Response)", + "x/x;x=\"¸\";bonus=x (Request/Response)", + "x/x;x=¹;bonus=x (Request/Response)", + "x/x;x=\"¹\";bonus=x (Request/Response)", + "x/x;x=º;bonus=x (Request/Response)", + "x/x;x=\"º\";bonus=x (Request/Response)", + "x/x;x=»;bonus=x (Request/Response)", + "x/x;x=\"»\";bonus=x (Request/Response)", + "x/x;x=¼;bonus=x (Request/Response)", + "x/x;x=\"¼\";bonus=x (Request/Response)", + "x/x;x=½;bonus=x (Request/Response)", + "x/x;x=\"½\";bonus=x (Request/Response)", + "x/x;x=¾;bonus=x (Request/Response)", + "x/x;x=\"¾\";bonus=x (Request/Response)", + "x/x;x=¿;bonus=x (Request/Response)", + "x/x;x=\"¿\";bonus=x (Request/Response)", + "x/x;x=À;bonus=x (Request/Response)", + "x/x;x=\"À\";bonus=x (Request/Response)", + "x/x;x=Á;bonus=x (Request/Response)", + "x/x;x=\"Á\";bonus=x (Request/Response)", + "x/x;x=Â;bonus=x (Request/Response)", + "x/x;x=\"Â\";bonus=x (Request/Response)", + "x/x;x=Ã;bonus=x (Request/Response)", + "x/x;x=\"Ã\";bonus=x (Request/Response)", + "x/x;x=Ä;bonus=x (Request/Response)", + "x/x;x=\"Ä\";bonus=x (Request/Response)", + "x/x;x=Å;bonus=x (Request/Response)", + "x/x;x=\"Å\";bonus=x (Request/Response)", + "x/x;x=Æ;bonus=x (Request/Response)", + "x/x;x=\"Æ\";bonus=x (Request/Response)", + "x/x;x=Ç;bonus=x (Request/Response)", + "x/x;x=\"Ç\";bonus=x (Request/Response)", + "x/x;x=È;bonus=x (Request/Response)", + "x/x;x=\"È\";bonus=x (Request/Response)", + "x/x;x=É;bonus=x (Request/Response)", + "x/x;x=\"É\";bonus=x (Request/Response)", + "x/x;x=Ê;bonus=x (Request/Response)", + "x/x;x=\"Ê\";bonus=x (Request/Response)", + "x/x;x=Ë;bonus=x (Request/Response)", + "x/x;x=\"Ë\";bonus=x (Request/Response)", + "x/x;x=Ì;bonus=x (Request/Response)", + "x/x;x=\"Ì\";bonus=x (Request/Response)", + "x/x;x=Í;bonus=x (Request/Response)", + "x/x;x=\"Í\";bonus=x (Request/Response)", + "x/x;x=Î;bonus=x (Request/Response)", + "x/x;x=\"Î\";bonus=x (Request/Response)", + "x/x;x=Ï;bonus=x (Request/Response)", + "x/x;x=\"Ï\";bonus=x (Request/Response)", + "x/x;x=Ð;bonus=x (Request/Response)", + "x/x;x=\"Ð\";bonus=x (Request/Response)", + "x/x;x=Ñ;bonus=x (Request/Response)", + "x/x;x=\"Ñ\";bonus=x (Request/Response)", + "x/x;x=Ò;bonus=x (Request/Response)", + "x/x;x=\"Ò\";bonus=x (Request/Response)", + "x/x;x=Ó;bonus=x (Request/Response)", + "x/x;x=\"Ó\";bonus=x (Request/Response)", + "x/x;x=Ô;bonus=x (Request/Response)", + "x/x;x=\"Ô\";bonus=x (Request/Response)", + "x/x;x=Õ;bonus=x (Request/Response)", + "x/x;x=\"Õ\";bonus=x (Request/Response)", + "x/x;x=Ö;bonus=x (Request/Response)", + "x/x;x=\"Ö\";bonus=x (Request/Response)", + "x/x;x=×;bonus=x (Request/Response)", + "x/x;x=\"×\";bonus=x (Request/Response)", + "x/x;x=Ø;bonus=x (Request/Response)", + "x/x;x=\"Ø\";bonus=x (Request/Response)", + "x/x;x=Ù;bonus=x (Request/Response)", + "x/x;x=\"Ù\";bonus=x (Request/Response)", + "x/x;x=Ú;bonus=x (Request/Response)", + "x/x;x=\"Ú\";bonus=x (Request/Response)", + "x/x;x=Û;bonus=x (Request/Response)", + "x/x;x=\"Û\";bonus=x (Request/Response)", + "x/x;x=Ü;bonus=x (Request/Response)", + "x/x;x=\"Ü\";bonus=x (Request/Response)", + "x/x;x=Ý;bonus=x (Request/Response)", + "x/x;x=\"Ý\";bonus=x (Request/Response)", + "x/x;x=Þ;bonus=x (Request/Response)", + "x/x;x=\"Þ\";bonus=x (Request/Response)", + "x/x;x=ß;bonus=x (Request/Response)", + "x/x;x=\"ß\";bonus=x (Request/Response)", + "x/x;x=à;bonus=x (Request/Response)", + "x/x;x=\"à\";bonus=x (Request/Response)", + "x/x;x=á;bonus=x (Request/Response)", + "x/x;x=\"á\";bonus=x (Request/Response)", + "x/x;x=â;bonus=x (Request/Response)", + "x/x;x=\"â\";bonus=x (Request/Response)", + "x/x;x=ã;bonus=x (Request/Response)", + "x/x;x=\"ã\";bonus=x (Request/Response)", + "x/x;x=ä;bonus=x (Request/Response)", + "x/x;x=\"ä\";bonus=x (Request/Response)", + "x/x;x=å;bonus=x (Request/Response)", + "x/x;x=\"å\";bonus=x (Request/Response)", + "x/x;x=æ;bonus=x (Request/Response)", + "x/x;x=\"æ\";bonus=x (Request/Response)", + "x/x;x=ç;bonus=x (Request/Response)", + "x/x;x=\"ç\";bonus=x (Request/Response)", + "x/x;x=è;bonus=x (Request/Response)", + "x/x;x=\"è\";bonus=x (Request/Response)", + "x/x;x=é;bonus=x (Request/Response)", + "x/x;x=\"é\";bonus=x (Request/Response)", + "x/x;x=ê;bonus=x (Request/Response)", + "x/x;x=\"ê\";bonus=x (Request/Response)", + "x/x;x=ë;bonus=x (Request/Response)", + "x/x;x=\"ë\";bonus=x (Request/Response)", + "x/x;x=ì;bonus=x (Request/Response)", + "x/x;x=\"ì\";bonus=x (Request/Response)", + "x/x;x=í;bonus=x (Request/Response)", + "x/x;x=\"í\";bonus=x (Request/Response)", + "x/x;x=î;bonus=x (Request/Response)", + "x/x;x=\"î\";bonus=x (Request/Response)", + "x/x;x=ï;bonus=x (Request/Response)", + "x/x;x=\"ï\";bonus=x (Request/Response)", + "x/x;x=ð;bonus=x (Request/Response)", + "x/x;x=\"ð\";bonus=x (Request/Response)", + "x/x;x=ñ;bonus=x (Request/Response)", + "x/x;x=\"ñ\";bonus=x (Request/Response)", + "x/x;x=ò;bonus=x (Request/Response)", + "x/x;x=\"ò\";bonus=x (Request/Response)", + "x/x;x=ó;bonus=x (Request/Response)", + "x/x;x=\"ó\";bonus=x (Request/Response)", + "x/x;x=ô;bonus=x (Request/Response)", + "x/x;x=\"ô\";bonus=x (Request/Response)", + "x/x;x=õ;bonus=x (Request/Response)", + "x/x;x=\"õ\";bonus=x (Request/Response)", + "x/x;x=ö;bonus=x (Request/Response)", + "x/x;x=\"ö\";bonus=x (Request/Response)", + "x/x;x=÷;bonus=x (Request/Response)", + "x/x;x=\"÷\";bonus=x (Request/Response)", + "x/x;x=ø;bonus=x (Request/Response)", + "x/x;x=\"ø\";bonus=x (Request/Response)", + "x/x;x=ù;bonus=x (Request/Response)", + "x/x;x=\"ù\";bonus=x (Request/Response)", + "x/x;x=ú;bonus=x (Request/Response)", + "x/x;x=\"ú\";bonus=x (Request/Response)", + "x/x;x=û;bonus=x (Request/Response)", + "x/x;x=\"û\";bonus=x (Request/Response)", + "x/x;x=ü;bonus=x (Request/Response)", + "x/x;x=\"ü\";bonus=x (Request/Response)", + "x/x;x=ý;bonus=x (Request/Response)", + "x/x;x=\"ý\";bonus=x (Request/Response)", + "x/x;x=þ;bonus=x (Request/Response)", + "x/x;x=\"þ\";bonus=x (Request/Response)", + "x/x;x=ÿ;bonus=x (Request/Response)", + "x/x;x=\"ÿ\";bonus=x (Request/Response)" + ], + "parsing.any.worker.html": [ + "TEXT/HTML;CHARSET=GBK (Blob/File)", + "text/html;charset=gbk( (Blob/File)", + "text/html;x=(;charset=gbk (Blob/File)", + "text/html;charset=gbk;charset=windows-1255 (Blob/File)", + "text/html;charset=();charset=GBK (Blob/File)", + "text/html;charset =gbk (Blob/File)", + "text/html ;charset=gbk (Blob/File)", + "text/html; charset=gbk (Blob/File)", + "text/html;charset= gbk (Blob/File)", + "text/html;charset= \"gbk\" (Blob/File)", + "text/html;charset=\u000bgbk (Blob/File)", + "text/html;charset=\fgbk (Blob/File)", + "text/html;\u000bcharset=gbk (Blob/File)", + "text/html;\fcharset=gbk (Blob/File)", + "text/html;charset=';charset=GBK (Blob/File)", + "text/html;test;charset=gbk (Blob/File)", + "text/html;test=;charset=gbk (Blob/File)", + "text/html;';charset=gbk (Blob/File)", + "text/html;\";charset=gbk (Blob/File)", + "text/html ; ; charset=gbk (Blob/File)", + "text/html;;;;charset=gbk (Blob/File)", + "text/html;charset= \";charset=GBK (Blob/File)", + "text/html;charset=\";charset=foo\";charset=GBK (Blob/File)", + "text/html;charset=\"gbk\" (Blob/File)", + "text/html;charset=\"gbk (Blob/File)", + "text/html;charset=gbk\" (Blob/File)", + "text/html;charset=\"\\ gbk\" (Blob/File)", + "text/html;charset=\"\\g\\b\\k\" (Blob/File)", + "text/html;charset=\"gbk\"x (Blob/File)", + "text/html;charset=\"\";charset=GBK (Blob/File)", + "text/html;charset=\";charset=GBK (Blob/File)", + "text/html;charset={gbk} (Blob/File)", + "text/html;a]=bar;b[=bar;c=bar (Blob/File)", + "text/html;in]valid=\";asd=foo\";foo=bar (Blob/File)", + "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Blob/File)", + "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Blob/File)", + "x/x;test (Blob/File)", + "x/x;test=\"\\ (Blob/File)", + "x/x;x= (Blob/File)", + "x/x;x=\t (Blob/File)", + "x/x\n\r\t ;x=x (Blob/File)", + "\n\r\t x/x;x=x\n\r\t (Blob/File)", + "x/x;\n\r\t x=x\n\r\t ;x=y (Blob/File)", + "text/html;test=ÿ;charset=gbk (Blob/File)", + "x/x;test=�;x=x (Blob/File)", + "/ (Blob/File)", + "bogus (Blob/File)", + "bogus/ (Blob/File)", + "bogus/ (Blob/File)", + "bogus/bogus/; (Blob/File)", + "</> (Blob/File)", + "(/) (Blob/File)", + "text/html(;doesnot=matter (Blob/File)", + "{/} (Blob/File)", + "text /html (Blob/File)", + "text/ html (Blob/File)", + "\"text/html\" (Blob/File)", + "x/x;\u0000=x;bonus=x (Blob/File)", + "x/x;x=\u0000;bonus=x (Blob/File)", + "x/x;x=\"\u0000\";bonus=x (Blob/File)", + "x/x;\u0001=x;bonus=x (Blob/File)", + "x/x;x=\u0001;bonus=x (Blob/File)", + "x/x;x=\"\u0001\";bonus=x (Blob/File)", + "x/x;\u0002=x;bonus=x (Blob/File)", + "x/x;x=\u0002;bonus=x (Blob/File)", + "x/x;x=\"\u0002\";bonus=x (Blob/File)", + "x/x;\u0003=x;bonus=x (Blob/File)", + "x/x;x=\u0003;bonus=x (Blob/File)", + "x/x;x=\"\u0003\";bonus=x (Blob/File)", + "x/x;\u0004=x;bonus=x (Blob/File)", + "x/x;x=\u0004;bonus=x (Blob/File)", + "x/x;x=\"\u0004\";bonus=x (Blob/File)", + "x/x;\u0005=x;bonus=x (Blob/File)", + "x/x;x=\u0005;bonus=x (Blob/File)", + "x/x;x=\"\u0005\";bonus=x (Blob/File)", + "x/x;\u0006=x;bonus=x (Blob/File)", + "x/x;x=\u0006;bonus=x (Blob/File)", + "x/x;x=\"\u0006\";bonus=x (Blob/File)", + "x/x;\u0007=x;bonus=x (Blob/File)", + "x/x;x=\u0007;bonus=x (Blob/File)", + "x/x;x=\"\u0007\";bonus=x (Blob/File)", + "x/x;\b=x;bonus=x (Blob/File)", + "x/x;x=\b;bonus=x (Blob/File)", + "x/x;x=\"\b\";bonus=x (Blob/File)", + "x/x;\t=x;bonus=x (Blob/File)", + "x/x;\n=x;bonus=x (Blob/File)", + "x/x;x=\n;bonus=x (Blob/File)", + "x/x;x=\"\n\";bonus=x (Blob/File)", + "x/x;\u000b=x;bonus=x (Blob/File)", + "x/x;x=\u000b;bonus=x (Blob/File)", + "x/x;x=\"\u000b\";bonus=x (Blob/File)", + "x/x;\f=x;bonus=x (Blob/File)", + "x/x;x=\f;bonus=x (Blob/File)", + "x/x;x=\"\f\";bonus=x (Blob/File)", + "x/x;\r=x;bonus=x (Blob/File)", + "x/x;x=\r;bonus=x (Blob/File)", + "x/x;x=\"\r\";bonus=x (Blob/File)", + "x/x;\u000e=x;bonus=x (Blob/File)", + "x/x;x=\u000e;bonus=x (Blob/File)", + "x/x;x=\"\u000e\";bonus=x (Blob/File)", + "x/x;\u000f=x;bonus=x (Blob/File)", + "x/x;x=\u000f;bonus=x (Blob/File)", + "x/x;x=\"\u000f\";bonus=x (Blob/File)", + "x/x;\u0010=x;bonus=x (Blob/File)", + "x/x;x=\u0010;bonus=x (Blob/File)", + "x/x;x=\"\u0010\";bonus=x (Blob/File)", + "x/x;\u0011=x;bonus=x (Blob/File)", + "x/x;x=\u0011;bonus=x (Blob/File)", + "x/x;x=\"\u0011\";bonus=x (Blob/File)", + "x/x;\u0012=x;bonus=x (Blob/File)", + "x/x;x=\u0012;bonus=x (Blob/File)", + "x/x;x=\"\u0012\";bonus=x (Blob/File)", + "x/x;\u0013=x;bonus=x (Blob/File)", + "x/x;x=\u0013;bonus=x (Blob/File)", + "x/x;x=\"\u0013\";bonus=x (Blob/File)", + "x/x;\u0014=x;bonus=x (Blob/File)", + "x/x;x=\u0014;bonus=x (Blob/File)", + "x/x;x=\"\u0014\";bonus=x (Blob/File)", + "x/x;\u0015=x;bonus=x (Blob/File)", + "x/x;x=\u0015;bonus=x (Blob/File)", + "x/x;x=\"\u0015\";bonus=x (Blob/File)", + "x/x;\u0016=x;bonus=x (Blob/File)", + "x/x;x=\u0016;bonus=x (Blob/File)", + "x/x;x=\"\u0016\";bonus=x (Blob/File)", + "x/x;\u0017=x;bonus=x (Blob/File)", + "x/x;x=\u0017;bonus=x (Blob/File)", + "x/x;x=\"\u0017\";bonus=x (Blob/File)", + "x/x;\u0018=x;bonus=x (Blob/File)", + "x/x;x=\u0018;bonus=x (Blob/File)", + "x/x;x=\"\u0018\";bonus=x (Blob/File)", + "x/x;\u0019=x;bonus=x (Blob/File)", + "x/x;x=\u0019;bonus=x (Blob/File)", + "x/x;x=\"\u0019\";bonus=x (Blob/File)", + "x/x;\u001a=x;bonus=x (Blob/File)", + "x/x;x=\u001a;bonus=x (Blob/File)", + "x/x;x=\"\u001a\";bonus=x (Blob/File)", + "x/x;\u001b=x;bonus=x (Blob/File)", + "x/x;x=\u001b;bonus=x (Blob/File)", + "x/x;x=\"\u001b\";bonus=x (Blob/File)", + "x/x;\u001c=x;bonus=x (Blob/File)", + "x/x;x=\u001c;bonus=x (Blob/File)", + "x/x;x=\"\u001c\";bonus=x (Blob/File)", + "x/x;\u001d=x;bonus=x (Blob/File)", + "x/x;x=\u001d;bonus=x (Blob/File)", + "x/x;x=\"\u001d\";bonus=x (Blob/File)", + "x/x;\u001e=x;bonus=x (Blob/File)", + "x/x;x=\u001e;bonus=x (Blob/File)", + "x/x;x=\"\u001e\";bonus=x (Blob/File)", + "x/x;\u001f=x;bonus=x (Blob/File)", + "x/x;x=\u001f;bonus=x (Blob/File)", + "x/x;x=\"\u001f\";bonus=x (Blob/File)", + " /x (Blob/File)", + "x/ (Blob/File)", + "x/x; =x;bonus=x (Blob/File)", + "\"/x (Blob/File)", + "x/\" (Blob/File)", + "x/x;\"=x;bonus=x (Blob/File)", + "(/x (Blob/File)", + "x/( (Blob/File)", + "x/x;(=x;bonus=x (Blob/File)", + "x/x;x=(;bonus=x (Blob/File)", + ")/x (Blob/File)", + "x/) (Blob/File)", + "x/x;)=x;bonus=x (Blob/File)", + "x/x;x=);bonus=x (Blob/File)", + ",/x (Blob/File)", + "x/, (Blob/File)", + "x/x;,=x;bonus=x (Blob/File)", + "x/x;x=,;bonus=x (Blob/File)", + "x/x;/=x;bonus=x (Blob/File)", + "x/x;x=/;bonus=x (Blob/File)", + ":/x (Blob/File)", + "x/: (Blob/File)", + "x/x;:=x;bonus=x (Blob/File)", + "x/x;x=:;bonus=x (Blob/File)", + ";/x (Blob/File)", + "x/; (Blob/File)", + "</x (Blob/File)", + "x/< (Blob/File)", + "x/x;<=x;bonus=x (Blob/File)", + "x/x;x=<;bonus=x (Blob/File)", + "=/x (Blob/File)", + "x/= (Blob/File)", + "x/x;x==;bonus=x (Blob/File)", + ">/x (Blob/File)", + "x/> (Blob/File)", + "x/x;>=x;bonus=x (Blob/File)", + "x/x;x=>;bonus=x (Blob/File)", + "?/x (Blob/File)", + "x/? (Blob/File)", + "x/x;?=x;bonus=x (Blob/File)", + "x/x;x=?;bonus=x (Blob/File)", + "@/x (Blob/File)", + "x/@ (Blob/File)", + "x/x;@=x;bonus=x (Blob/File)", + "x/x;x=@;bonus=x (Blob/File)", + "[/x (Blob/File)", + "x/[ (Blob/File)", + "x/x;[=x;bonus=x (Blob/File)", + "x/x;x=[;bonus=x (Blob/File)", + "\\/x (Blob/File)", + "x/\\ (Blob/File)", + "x/x;\\=x;bonus=x (Blob/File)", + "]/x (Blob/File)", + "x/] (Blob/File)", + "x/x;]=x;bonus=x (Blob/File)", + "x/x;x=];bonus=x (Blob/File)", + "{/x (Blob/File)", + "x/{ (Blob/File)", + "x/x;{=x;bonus=x (Blob/File)", + "x/x;x={;bonus=x (Blob/File)", + "}/x (Blob/File)", + "x/} (Blob/File)", + "x/x;}=x;bonus=x (Blob/File)", + "x/x;x=};bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;
=x;bonus=x (Blob/File)", + "x/x;x=
;bonus=x (Blob/File)", + "x/x;x=\"
\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x; =x;bonus=x (Blob/File)", + "x/x;x= ;bonus=x (Blob/File)", + "x/x;x=\" \";bonus=x (Blob/File)", + "x/x;¡=x;bonus=x (Blob/File)", + "x/x;x=¡;bonus=x (Blob/File)", + "x/x;x=\"¡\";bonus=x (Blob/File)", + "x/x;¢=x;bonus=x (Blob/File)", + "x/x;x=¢;bonus=x (Blob/File)", + "x/x;x=\"¢\";bonus=x (Blob/File)", + "x/x;£=x;bonus=x (Blob/File)", + "x/x;x=£;bonus=x (Blob/File)", + "x/x;x=\"£\";bonus=x (Blob/File)", + "x/x;¤=x;bonus=x (Blob/File)", + "x/x;x=¤;bonus=x (Blob/File)", + "x/x;x=\"¤\";bonus=x (Blob/File)", + "x/x;¥=x;bonus=x (Blob/File)", + "x/x;x=¥;bonus=x (Blob/File)", + "x/x;x=\"¥\";bonus=x (Blob/File)", + "x/x;¦=x;bonus=x (Blob/File)", + "x/x;x=¦;bonus=x (Blob/File)", + "x/x;x=\"¦\";bonus=x (Blob/File)", + "x/x;§=x;bonus=x (Blob/File)", + "x/x;x=§;bonus=x (Blob/File)", + "x/x;x=\"§\";bonus=x (Blob/File)", + "x/x;¨=x;bonus=x (Blob/File)", + "x/x;x=¨;bonus=x (Blob/File)", + "x/x;x=\"¨\";bonus=x (Blob/File)", + "x/x;©=x;bonus=x (Blob/File)", + "x/x;x=©;bonus=x (Blob/File)", + "x/x;x=\"©\";bonus=x (Blob/File)", + "x/x;ª=x;bonus=x (Blob/File)", + "x/x;x=ª;bonus=x (Blob/File)", + "x/x;x=\"ª\";bonus=x (Blob/File)", + "x/x;«=x;bonus=x (Blob/File)", + "x/x;x=«;bonus=x (Blob/File)", + "x/x;x=\"«\";bonus=x (Blob/File)", + "x/x;¬=x;bonus=x (Blob/File)", + "x/x;x=¬;bonus=x (Blob/File)", + "x/x;x=\"¬\";bonus=x (Blob/File)", + "x/x;=x;bonus=x (Blob/File)", + "x/x;x=;bonus=x (Blob/File)", + "x/x;x=\"\";bonus=x (Blob/File)", + "x/x;®=x;bonus=x (Blob/File)", + "x/x;x=®;bonus=x (Blob/File)", + "x/x;x=\"®\";bonus=x (Blob/File)", + "x/x;¯=x;bonus=x (Blob/File)", + "x/x;x=¯;bonus=x (Blob/File)", + "x/x;x=\"¯\";bonus=x (Blob/File)", + "x/x;°=x;bonus=x (Blob/File)", + "x/x;x=°;bonus=x (Blob/File)", + "x/x;x=\"°\";bonus=x (Blob/File)", + "x/x;±=x;bonus=x (Blob/File)", + "x/x;x=±;bonus=x (Blob/File)", + "x/x;x=\"±\";bonus=x (Blob/File)", + "x/x;²=x;bonus=x (Blob/File)", + "x/x;x=²;bonus=x (Blob/File)", + "x/x;x=\"²\";bonus=x (Blob/File)", + "x/x;³=x;bonus=x (Blob/File)", + "x/x;x=³;bonus=x (Blob/File)", + "x/x;x=\"³\";bonus=x (Blob/File)", + "x/x;´=x;bonus=x (Blob/File)", + "x/x;x=´;bonus=x (Blob/File)", + "x/x;x=\"´\";bonus=x (Blob/File)", + "x/x;µ=x;bonus=x (Blob/File)", + "x/x;x=µ;bonus=x (Blob/File)", + "x/x;x=\"µ\";bonus=x (Blob/File)", + "x/x;¶=x;bonus=x (Blob/File)", + "x/x;x=¶;bonus=x (Blob/File)", + "x/x;x=\"¶\";bonus=x (Blob/File)", + "x/x;·=x;bonus=x (Blob/File)", + "x/x;x=·;bonus=x (Blob/File)", + "x/x;x=\"·\";bonus=x (Blob/File)", + "x/x;¸=x;bonus=x (Blob/File)", + "x/x;x=¸;bonus=x (Blob/File)", + "x/x;x=\"¸\";bonus=x (Blob/File)", + "x/x;¹=x;bonus=x (Blob/File)", + "x/x;x=¹;bonus=x (Blob/File)", + "x/x;x=\"¹\";bonus=x (Blob/File)", + "x/x;º=x;bonus=x (Blob/File)", + "x/x;x=º;bonus=x (Blob/File)", + "x/x;x=\"º\";bonus=x (Blob/File)", + "x/x;»=x;bonus=x (Blob/File)", + "x/x;x=»;bonus=x (Blob/File)", + "x/x;x=\"»\";bonus=x (Blob/File)", + "x/x;¼=x;bonus=x (Blob/File)", + "x/x;x=¼;bonus=x (Blob/File)", + "x/x;x=\"¼\";bonus=x (Blob/File)", + "x/x;½=x;bonus=x (Blob/File)", + "x/x;x=½;bonus=x (Blob/File)", + "x/x;x=\"½\";bonus=x (Blob/File)", + "x/x;¾=x;bonus=x (Blob/File)", + "x/x;x=¾;bonus=x (Blob/File)", + "x/x;x=\"¾\";bonus=x (Blob/File)", + "x/x;¿=x;bonus=x (Blob/File)", + "x/x;x=¿;bonus=x (Blob/File)", + "x/x;x=\"¿\";bonus=x (Blob/File)", + "x/x;À=x;bonus=x (Blob/File)", + "x/x;x=À;bonus=x (Blob/File)", + "x/x;x=\"À\";bonus=x (Blob/File)", + "x/x;Á=x;bonus=x (Blob/File)", + "x/x;x=Á;bonus=x (Blob/File)", + "x/x;x=\"Á\";bonus=x (Blob/File)", + "x/x;Â=x;bonus=x (Blob/File)", + "x/x;x=Â;bonus=x (Blob/File)", + "x/x;x=\"Â\";bonus=x (Blob/File)", + "x/x;Ã=x;bonus=x (Blob/File)", + "x/x;x=Ã;bonus=x (Blob/File)", + "x/x;x=\"Ã\";bonus=x (Blob/File)", + "x/x;Ä=x;bonus=x (Blob/File)", + "x/x;x=Ä;bonus=x (Blob/File)", + "x/x;x=\"Ä\";bonus=x (Blob/File)", + "x/x;Å=x;bonus=x (Blob/File)", + "x/x;x=Å;bonus=x (Blob/File)", + "x/x;x=\"Å\";bonus=x (Blob/File)", + "x/x;Æ=x;bonus=x (Blob/File)", + "x/x;x=Æ;bonus=x (Blob/File)", + "x/x;x=\"Æ\";bonus=x (Blob/File)", + "x/x;Ç=x;bonus=x (Blob/File)", + "x/x;x=Ç;bonus=x (Blob/File)", + "x/x;x=\"Ç\";bonus=x (Blob/File)", + "x/x;È=x;bonus=x (Blob/File)", + "x/x;x=È;bonus=x (Blob/File)", + "x/x;x=\"È\";bonus=x (Blob/File)", + "x/x;É=x;bonus=x (Blob/File)", + "x/x;x=É;bonus=x (Blob/File)", + "x/x;x=\"É\";bonus=x (Blob/File)", + "x/x;Ê=x;bonus=x (Blob/File)", + "x/x;x=Ê;bonus=x (Blob/File)", + "x/x;x=\"Ê\";bonus=x (Blob/File)", + "x/x;Ë=x;bonus=x (Blob/File)", + "x/x;x=Ë;bonus=x (Blob/File)", + "x/x;x=\"Ë\";bonus=x (Blob/File)", + "x/x;Ì=x;bonus=x (Blob/File)", + "x/x;x=Ì;bonus=x (Blob/File)", + "x/x;x=\"Ì\";bonus=x (Blob/File)", + "x/x;Í=x;bonus=x (Blob/File)", + "x/x;x=Í;bonus=x (Blob/File)", + "x/x;x=\"Í\";bonus=x (Blob/File)", + "x/x;Î=x;bonus=x (Blob/File)", + "x/x;x=Î;bonus=x (Blob/File)", + "x/x;x=\"Î\";bonus=x (Blob/File)", + "x/x;Ï=x;bonus=x (Blob/File)", + "x/x;x=Ï;bonus=x (Blob/File)", + "x/x;x=\"Ï\";bonus=x (Blob/File)", + "x/x;Ð=x;bonus=x (Blob/File)", + "x/x;x=Ð;bonus=x (Blob/File)", + "x/x;x=\"Ð\";bonus=x (Blob/File)", + "x/x;Ñ=x;bonus=x (Blob/File)", + "x/x;x=Ñ;bonus=x (Blob/File)", + "x/x;x=\"Ñ\";bonus=x (Blob/File)", + "x/x;Ò=x;bonus=x (Blob/File)", + "x/x;x=Ò;bonus=x (Blob/File)", + "x/x;x=\"Ò\";bonus=x (Blob/File)", + "x/x;Ó=x;bonus=x (Blob/File)", + "x/x;x=Ó;bonus=x (Blob/File)", + "x/x;x=\"Ó\";bonus=x (Blob/File)", + "x/x;Ô=x;bonus=x (Blob/File)", + "x/x;x=Ô;bonus=x (Blob/File)", + "x/x;x=\"Ô\";bonus=x (Blob/File)", + "x/x;Õ=x;bonus=x (Blob/File)", + "x/x;x=Õ;bonus=x (Blob/File)", + "x/x;x=\"Õ\";bonus=x (Blob/File)", + "x/x;Ö=x;bonus=x (Blob/File)", + "x/x;x=Ö;bonus=x (Blob/File)", + "x/x;x=\"Ö\";bonus=x (Blob/File)", + "x/x;×=x;bonus=x (Blob/File)", + "x/x;x=×;bonus=x (Blob/File)", + "x/x;x=\"×\";bonus=x (Blob/File)", + "x/x;Ø=x;bonus=x (Blob/File)", + "x/x;x=Ø;bonus=x (Blob/File)", + "x/x;x=\"Ø\";bonus=x (Blob/File)", + "x/x;Ù=x;bonus=x (Blob/File)", + "x/x;x=Ù;bonus=x (Blob/File)", + "x/x;x=\"Ù\";bonus=x (Blob/File)", + "x/x;Ú=x;bonus=x (Blob/File)", + "x/x;x=Ú;bonus=x (Blob/File)", + "x/x;x=\"Ú\";bonus=x (Blob/File)", + "x/x;Û=x;bonus=x (Blob/File)", + "x/x;x=Û;bonus=x (Blob/File)", + "x/x;x=\"Û\";bonus=x (Blob/File)", + "x/x;Ü=x;bonus=x (Blob/File)", + "x/x;x=Ü;bonus=x (Blob/File)", + "x/x;x=\"Ü\";bonus=x (Blob/File)", + "x/x;Ý=x;bonus=x (Blob/File)", + "x/x;x=Ý;bonus=x (Blob/File)", + "x/x;x=\"Ý\";bonus=x (Blob/File)", + "x/x;Þ=x;bonus=x (Blob/File)", + "x/x;x=Þ;bonus=x (Blob/File)", + "x/x;x=\"Þ\";bonus=x (Blob/File)", + "x/x;ß=x;bonus=x (Blob/File)", + "x/x;x=ß;bonus=x (Blob/File)", + "x/x;x=\"ß\";bonus=x (Blob/File)", + "x/x;à=x;bonus=x (Blob/File)", + "x/x;x=à;bonus=x (Blob/File)", + "x/x;x=\"à\";bonus=x (Blob/File)", + "x/x;á=x;bonus=x (Blob/File)", + "x/x;x=á;bonus=x (Blob/File)", + "x/x;x=\"á\";bonus=x (Blob/File)", + "x/x;â=x;bonus=x (Blob/File)", + "x/x;x=â;bonus=x (Blob/File)", + "x/x;x=\"â\";bonus=x (Blob/File)", + "x/x;ã=x;bonus=x (Blob/File)", + "x/x;x=ã;bonus=x (Blob/File)", + "x/x;x=\"ã\";bonus=x (Blob/File)", + "x/x;ä=x;bonus=x (Blob/File)", + "x/x;x=ä;bonus=x (Blob/File)", + "x/x;x=\"ä\";bonus=x (Blob/File)", + "x/x;å=x;bonus=x (Blob/File)", + "x/x;x=å;bonus=x (Blob/File)", + "x/x;x=\"å\";bonus=x (Blob/File)", + "x/x;æ=x;bonus=x (Blob/File)", + "x/x;x=æ;bonus=x (Blob/File)", + "x/x;x=\"æ\";bonus=x (Blob/File)", + "x/x;ç=x;bonus=x (Blob/File)", + "x/x;x=ç;bonus=x (Blob/File)", + "x/x;x=\"ç\";bonus=x (Blob/File)", + "x/x;è=x;bonus=x (Blob/File)", + "x/x;x=è;bonus=x (Blob/File)", + "x/x;x=\"è\";bonus=x (Blob/File)", + "x/x;é=x;bonus=x (Blob/File)", + "x/x;x=é;bonus=x (Blob/File)", + "x/x;x=\"é\";bonus=x (Blob/File)", + "x/x;ê=x;bonus=x (Blob/File)", + "x/x;x=ê;bonus=x (Blob/File)", + "x/x;x=\"ê\";bonus=x (Blob/File)", + "x/x;ë=x;bonus=x (Blob/File)", + "x/x;x=ë;bonus=x (Blob/File)", + "x/x;x=\"ë\";bonus=x (Blob/File)", + "x/x;ì=x;bonus=x (Blob/File)", + "x/x;x=ì;bonus=x (Blob/File)", + "x/x;x=\"ì\";bonus=x (Blob/File)", + "x/x;í=x;bonus=x (Blob/File)", + "x/x;x=í;bonus=x (Blob/File)", + "x/x;x=\"í\";bonus=x (Blob/File)", + "x/x;î=x;bonus=x (Blob/File)", + "x/x;x=î;bonus=x (Blob/File)", + "x/x;x=\"î\";bonus=x (Blob/File)", + "x/x;ï=x;bonus=x (Blob/File)", + "x/x;x=ï;bonus=x (Blob/File)", + "x/x;x=\"ï\";bonus=x (Blob/File)", + "x/x;ð=x;bonus=x (Blob/File)", + "x/x;x=ð;bonus=x (Blob/File)", + "x/x;x=\"ð\";bonus=x (Blob/File)", + "x/x;ñ=x;bonus=x (Blob/File)", + "x/x;x=ñ;bonus=x (Blob/File)", + "x/x;x=\"ñ\";bonus=x (Blob/File)", + "x/x;ò=x;bonus=x (Blob/File)", + "x/x;x=ò;bonus=x (Blob/File)", + "x/x;x=\"ò\";bonus=x (Blob/File)", + "x/x;ó=x;bonus=x (Blob/File)", + "x/x;x=ó;bonus=x (Blob/File)", + "x/x;x=\"ó\";bonus=x (Blob/File)", + "x/x;ô=x;bonus=x (Blob/File)", + "x/x;x=ô;bonus=x (Blob/File)", + "x/x;x=\"ô\";bonus=x (Blob/File)", + "x/x;õ=x;bonus=x (Blob/File)", + "x/x;x=õ;bonus=x (Blob/File)", + "x/x;x=\"õ\";bonus=x (Blob/File)", + "x/x;ö=x;bonus=x (Blob/File)", + "x/x;x=ö;bonus=x (Blob/File)", + "x/x;x=\"ö\";bonus=x (Blob/File)", + "x/x;÷=x;bonus=x (Blob/File)", + "x/x;x=÷;bonus=x (Blob/File)", + "x/x;x=\"÷\";bonus=x (Blob/File)", + "x/x;ø=x;bonus=x (Blob/File)", + "x/x;x=ø;bonus=x (Blob/File)", + "x/x;x=\"ø\";bonus=x (Blob/File)", + "x/x;ù=x;bonus=x (Blob/File)", + "x/x;x=ù;bonus=x (Blob/File)", + "x/x;x=\"ù\";bonus=x (Blob/File)", + "x/x;ú=x;bonus=x (Blob/File)", + "x/x;x=ú;bonus=x (Blob/File)", + "x/x;x=\"ú\";bonus=x (Blob/File)", + "x/x;û=x;bonus=x (Blob/File)", + "x/x;x=û;bonus=x (Blob/File)", + "x/x;x=\"û\";bonus=x (Blob/File)", + "x/x;ü=x;bonus=x (Blob/File)", + "x/x;x=ü;bonus=x (Blob/File)", + "x/x;x=\"ü\";bonus=x (Blob/File)", + "x/x;ý=x;bonus=x (Blob/File)", + "x/x;x=ý;bonus=x (Blob/File)", + "x/x;x=\"ý\";bonus=x (Blob/File)", + "x/x;þ=x;bonus=x (Blob/File)", + "x/x;x=þ;bonus=x (Blob/File)", + "x/x;x=\"þ\";bonus=x (Blob/File)", + "x/x;ÿ=x;bonus=x (Blob/File)", + "x/x;x=ÿ;bonus=x (Blob/File)", + "x/x;x=\"ÿ\";bonus=x (Blob/File)", + "TEXT/HTML;CHARSET=GBK (Request/Response)", + "text/html;charset= \";charset=GBK (Request/Response)", + "text/html;charset=\";charset=foo\";charset=GBK (Request/Response)", + "text/html;charset=\"\";charset=GBK (Request/Response)", + "text/html;charset=\";charset=GBK (Request/Response)", + "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Request/Response)", + "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Request/Response)", + "text/html;test=ÿ;charset=gbk (Request/Response)", + "x/x;,=x;bonus=x (Request/Response)", + "x/x;x=,;bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=
;bonus=x (Request/Response)", + "x/x;x=\"
\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x= ;bonus=x (Request/Response)", + "x/x;x=\" \";bonus=x (Request/Response)", + "x/x;x=¡;bonus=x (Request/Response)", + "x/x;x=\"¡\";bonus=x (Request/Response)", + "x/x;x=¢;bonus=x (Request/Response)", + "x/x;x=\"¢\";bonus=x (Request/Response)", + "x/x;x=£;bonus=x (Request/Response)", + "x/x;x=\"£\";bonus=x (Request/Response)", + "x/x;x=¤;bonus=x (Request/Response)", + "x/x;x=\"¤\";bonus=x (Request/Response)", + "x/x;x=¥;bonus=x (Request/Response)", + "x/x;x=\"¥\";bonus=x (Request/Response)", + "x/x;x=¦;bonus=x (Request/Response)", + "x/x;x=\"¦\";bonus=x (Request/Response)", + "x/x;x=§;bonus=x (Request/Response)", + "x/x;x=\"§\";bonus=x (Request/Response)", + "x/x;x=¨;bonus=x (Request/Response)", + "x/x;x=\"¨\";bonus=x (Request/Response)", + "x/x;x=©;bonus=x (Request/Response)", + "x/x;x=\"©\";bonus=x (Request/Response)", + "x/x;x=ª;bonus=x (Request/Response)", + "x/x;x=\"ª\";bonus=x (Request/Response)", + "x/x;x=«;bonus=x (Request/Response)", + "x/x;x=\"«\";bonus=x (Request/Response)", + "x/x;x=¬;bonus=x (Request/Response)", + "x/x;x=\"¬\";bonus=x (Request/Response)", + "x/x;x=;bonus=x (Request/Response)", + "x/x;x=\"\";bonus=x (Request/Response)", + "x/x;x=®;bonus=x (Request/Response)", + "x/x;x=\"®\";bonus=x (Request/Response)", + "x/x;x=¯;bonus=x (Request/Response)", + "x/x;x=\"¯\";bonus=x (Request/Response)", + "x/x;x=°;bonus=x (Request/Response)", + "x/x;x=\"°\";bonus=x (Request/Response)", + "x/x;x=±;bonus=x (Request/Response)", + "x/x;x=\"±\";bonus=x (Request/Response)", + "x/x;x=²;bonus=x (Request/Response)", + "x/x;x=\"²\";bonus=x (Request/Response)", + "x/x;x=³;bonus=x (Request/Response)", + "x/x;x=\"³\";bonus=x (Request/Response)", + "x/x;x=´;bonus=x (Request/Response)", + "x/x;x=\"´\";bonus=x (Request/Response)", + "x/x;x=µ;bonus=x (Request/Response)", + "x/x;x=\"µ\";bonus=x (Request/Response)", + "x/x;x=¶;bonus=x (Request/Response)", + "x/x;x=\"¶\";bonus=x (Request/Response)", + "x/x;x=·;bonus=x (Request/Response)", + "x/x;x=\"·\";bonus=x (Request/Response)", + "x/x;x=¸;bonus=x (Request/Response)", + "x/x;x=\"¸\";bonus=x (Request/Response)", + "x/x;x=¹;bonus=x (Request/Response)", + "x/x;x=\"¹\";bonus=x (Request/Response)", + "x/x;x=º;bonus=x (Request/Response)", + "x/x;x=\"º\";bonus=x (Request/Response)", + "x/x;x=»;bonus=x (Request/Response)", + "x/x;x=\"»\";bonus=x (Request/Response)", + "x/x;x=¼;bonus=x (Request/Response)", + "x/x;x=\"¼\";bonus=x (Request/Response)", + "x/x;x=½;bonus=x (Request/Response)", + "x/x;x=\"½\";bonus=x (Request/Response)", + "x/x;x=¾;bonus=x (Request/Response)", + "x/x;x=\"¾\";bonus=x (Request/Response)", + "x/x;x=¿;bonus=x (Request/Response)", + "x/x;x=\"¿\";bonus=x (Request/Response)", + "x/x;x=À;bonus=x (Request/Response)", + "x/x;x=\"À\";bonus=x (Request/Response)", + "x/x;x=Á;bonus=x (Request/Response)", + "x/x;x=\"Á\";bonus=x (Request/Response)", + "x/x;x=Â;bonus=x (Request/Response)", + "x/x;x=\"Â\";bonus=x (Request/Response)", + "x/x;x=Ã;bonus=x (Request/Response)", + "x/x;x=\"Ã\";bonus=x (Request/Response)", + "x/x;x=Ä;bonus=x (Request/Response)", + "x/x;x=\"Ä\";bonus=x (Request/Response)", + "x/x;x=Å;bonus=x (Request/Response)", + "x/x;x=\"Å\";bonus=x (Request/Response)", + "x/x;x=Æ;bonus=x (Request/Response)", + "x/x;x=\"Æ\";bonus=x (Request/Response)", + "x/x;x=Ç;bonus=x (Request/Response)", + "x/x;x=\"Ç\";bonus=x (Request/Response)", + "x/x;x=È;bonus=x (Request/Response)", + "x/x;x=\"È\";bonus=x (Request/Response)", + "x/x;x=É;bonus=x (Request/Response)", + "x/x;x=\"É\";bonus=x (Request/Response)", + "x/x;x=Ê;bonus=x (Request/Response)", + "x/x;x=\"Ê\";bonus=x (Request/Response)", + "x/x;x=Ë;bonus=x (Request/Response)", + "x/x;x=\"Ë\";bonus=x (Request/Response)", + "x/x;x=Ì;bonus=x (Request/Response)", + "x/x;x=\"Ì\";bonus=x (Request/Response)", + "x/x;x=Í;bonus=x (Request/Response)", + "x/x;x=\"Í\";bonus=x (Request/Response)", + "x/x;x=Î;bonus=x (Request/Response)", + "x/x;x=\"Î\";bonus=x (Request/Response)", + "x/x;x=Ï;bonus=x (Request/Response)", + "x/x;x=\"Ï\";bonus=x (Request/Response)", + "x/x;x=Ð;bonus=x (Request/Response)", + "x/x;x=\"Ð\";bonus=x (Request/Response)", + "x/x;x=Ñ;bonus=x (Request/Response)", + "x/x;x=\"Ñ\";bonus=x (Request/Response)", + "x/x;x=Ò;bonus=x (Request/Response)", + "x/x;x=\"Ò\";bonus=x (Request/Response)", + "x/x;x=Ó;bonus=x (Request/Response)", + "x/x;x=\"Ó\";bonus=x (Request/Response)", + "x/x;x=Ô;bonus=x (Request/Response)", + "x/x;x=\"Ô\";bonus=x (Request/Response)", + "x/x;x=Õ;bonus=x (Request/Response)", + "x/x;x=\"Õ\";bonus=x (Request/Response)", + "x/x;x=Ö;bonus=x (Request/Response)", + "x/x;x=\"Ö\";bonus=x (Request/Response)", + "x/x;x=×;bonus=x (Request/Response)", + "x/x;x=\"×\";bonus=x (Request/Response)", + "x/x;x=Ø;bonus=x (Request/Response)", + "x/x;x=\"Ø\";bonus=x (Request/Response)", + "x/x;x=Ù;bonus=x (Request/Response)", + "x/x;x=\"Ù\";bonus=x (Request/Response)", + "x/x;x=Ú;bonus=x (Request/Response)", + "x/x;x=\"Ú\";bonus=x (Request/Response)", + "x/x;x=Û;bonus=x (Request/Response)", + "x/x;x=\"Û\";bonus=x (Request/Response)", + "x/x;x=Ü;bonus=x (Request/Response)", + "x/x;x=\"Ü\";bonus=x (Request/Response)", + "x/x;x=Ý;bonus=x (Request/Response)", + "x/x;x=\"Ý\";bonus=x (Request/Response)", + "x/x;x=Þ;bonus=x (Request/Response)", + "x/x;x=\"Þ\";bonus=x (Request/Response)", + "x/x;x=ß;bonus=x (Request/Response)", + "x/x;x=\"ß\";bonus=x (Request/Response)", + "x/x;x=à;bonus=x (Request/Response)", + "x/x;x=\"à\";bonus=x (Request/Response)", + "x/x;x=á;bonus=x (Request/Response)", + "x/x;x=\"á\";bonus=x (Request/Response)", + "x/x;x=â;bonus=x (Request/Response)", + "x/x;x=\"â\";bonus=x (Request/Response)", + "x/x;x=ã;bonus=x (Request/Response)", + "x/x;x=\"ã\";bonus=x (Request/Response)", + "x/x;x=ä;bonus=x (Request/Response)", + "x/x;x=\"ä\";bonus=x (Request/Response)", + "x/x;x=å;bonus=x (Request/Response)", + "x/x;x=\"å\";bonus=x (Request/Response)", + "x/x;x=æ;bonus=x (Request/Response)", + "x/x;x=\"æ\";bonus=x (Request/Response)", + "x/x;x=ç;bonus=x (Request/Response)", + "x/x;x=\"ç\";bonus=x (Request/Response)", + "x/x;x=è;bonus=x (Request/Response)", + "x/x;x=\"è\";bonus=x (Request/Response)", + "x/x;x=é;bonus=x (Request/Response)", + "x/x;x=\"é\";bonus=x (Request/Response)", + "x/x;x=ê;bonus=x (Request/Response)", + "x/x;x=\"ê\";bonus=x (Request/Response)", + "x/x;x=ë;bonus=x (Request/Response)", + "x/x;x=\"ë\";bonus=x (Request/Response)", + "x/x;x=ì;bonus=x (Request/Response)", + "x/x;x=\"ì\";bonus=x (Request/Response)", + "x/x;x=í;bonus=x (Request/Response)", + "x/x;x=\"í\";bonus=x (Request/Response)", + "x/x;x=î;bonus=x (Request/Response)", + "x/x;x=\"î\";bonus=x (Request/Response)", + "x/x;x=ï;bonus=x (Request/Response)", + "x/x;x=\"ï\";bonus=x (Request/Response)", + "x/x;x=ð;bonus=x (Request/Response)", + "x/x;x=\"ð\";bonus=x (Request/Response)", + "x/x;x=ñ;bonus=x (Request/Response)", + "x/x;x=\"ñ\";bonus=x (Request/Response)", + "x/x;x=ò;bonus=x (Request/Response)", + "x/x;x=\"ò\";bonus=x (Request/Response)", + "x/x;x=ó;bonus=x (Request/Response)", + "x/x;x=\"ó\";bonus=x (Request/Response)", + "x/x;x=ô;bonus=x (Request/Response)", + "x/x;x=\"ô\";bonus=x (Request/Response)", + "x/x;x=õ;bonus=x (Request/Response)", + "x/x;x=\"õ\";bonus=x (Request/Response)", + "x/x;x=ö;bonus=x (Request/Response)", + "x/x;x=\"ö\";bonus=x (Request/Response)", + "x/x;x=÷;bonus=x (Request/Response)", + "x/x;x=\"÷\";bonus=x (Request/Response)", + "x/x;x=ø;bonus=x (Request/Response)", + "x/x;x=\"ø\";bonus=x (Request/Response)", + "x/x;x=ù;bonus=x (Request/Response)", + "x/x;x=\"ù\";bonus=x (Request/Response)", + "x/x;x=ú;bonus=x (Request/Response)", + "x/x;x=\"ú\";bonus=x (Request/Response)", + "x/x;x=û;bonus=x (Request/Response)", + "x/x;x=\"û\";bonus=x (Request/Response)", + "x/x;x=ü;bonus=x (Request/Response)", + "x/x;x=\"ü\";bonus=x (Request/Response)", + "x/x;x=ý;bonus=x (Request/Response)", + "x/x;x=\"ý\";bonus=x (Request/Response)", + "x/x;x=þ;bonus=x (Request/Response)", + "x/x;x=\"þ\";bonus=x (Request/Response)", + "x/x;x=ÿ;bonus=x (Request/Response)", + "x/x;x=\"ÿ\";bonus=x (Request/Response)" + ], + "charset-parameter.window.html": [ + "text/html;charset=gbk", + "TEXT/HTML;CHARSET=GBK", + "text/html;charset=gbk(", + "text/html;x=(;charset=gbk", + "text/html;charset=gbk;charset=windows-1255", + "text/html;charset=();charset=GBK", + "text/html;charset =gbk", + "text/html ;charset=gbk", + "text/html; charset=gbk", + "text/html;charset= gbk", + "text/html;charset= \"gbk\"", + "text/html;charset=\u000bgbk", + "text/html;charset=\fgbk", + "text/html;\u000bcharset=gbk", + "text/html;\fcharset=gbk", + "text/html;charset='gbk'", + "text/html;charset='gbk", + "text/html;charset=gbk'", + "text/html;charset=';charset=GBK", + "text/html;test;charset=gbk", + "text/html;test=;charset=gbk", + "text/html;';charset=gbk", + "text/html;\";charset=gbk", + "text/html ; ; charset=gbk", + "text/html;;;;charset=gbk", + "text/html;charset= \";charset=GBK", + "text/html;charset=\";charset=foo\";charset=GBK", + "text/html;charset=\"gbk\"", + "text/html;charset=\"gbk", + "text/html;charset=gbk\"", + "text/html;charset=\" gbk\"", + "text/html;charset=\"gbk \"", + "text/html;charset=\"\\ gbk\"", + "text/html;charset=\"\\g\\b\\k\"", + "text/html;charset=\"gbk\"x", + "text/html;charset=\"\";charset=GBK", + "text/html;charset=\";charset=GBK", + "text/html;charset={gbk}", + "text/html;0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789=x;charset=gbk", + "text/html;test=ÿ;charset=gbk" + ] + }, + "media": { + "media-sniff.window.html": false + } + }, + "eventsource": { + "dedicated-worker": { + "eventsource-eventtarget.worker.html": true, + "eventsource-constructor-no-new.any.html": true, + "eventsource-constructor-no-new.any.worker.html": true + }, + "event-data.any.html": true, + "event-data.any.worker.html": true, + "eventsource-constructor-empty-url.any.html": true, + "eventsource-constructor-empty-url.any.worker.html": true, + "eventsource-constructor-url-bogus.any.html": true, + "eventsource-constructor-url-bogus.any.worker.html": true, + "eventsource-eventtarget.any.html": true, + "eventsource-eventtarget.any.worker.html": true, + "eventsource-onmessage-trusted.any.html": true, + "eventsource-onmessage-trusted.any.worker.html": true, + "eventsource-onmessage.any.html": true, + "eventsource-onmessage.any.worker.html": true, + "eventsource-onopen.any.html": true, + "eventsource-onopen.any.worker.html": true, + "eventsource-prototype.any.html": true, + "eventsource-prototype.any.worker.html": true, + "eventsource-request-cancellation.window.any.html": false, + "eventsource-request-cancellation.window.any.worker.html": false, + "eventsource-url.any.html": true, + "eventsource-url.any.worker.html": true, + "format-bom-2.any.html": true, + "format-bom-2.any.worker.html": true, + "format-bom.any.html": true, + "format-bom.any.worker.html": true, + "format-comments.any.html": true, + "format-comments.any.worker.html": true, + "format-data-before-final-empty-line.any.html": true, + "format-data-before-final-empty-line.any.worker.html": true, + "format-field-data.any.html": true, + "format-field-data.any.worker.html": true, + "format-field-event-empty.any.html": true, + "format-field-event-empty.any.worker.html": true, + "format-field-event.any.html": true, + "format-field-event.any.worker.html": true, + "format-field-id-2.any.html": true, + "format-field-id-2.any.worker.html": true, + "format-field-id-3.window.html": true, + "format-field-id-null.window.html": true, + "format-field-id.any.html": true, + "format-field-id.any.worker.html": true, + "format-field-parsing.any.html": true, + "format-field-parsing.any.worker.html": true, + "format-field-retry-bogus.any.html": true, + "format-field-retry-bogus.any.worker.html": true, + "format-field-retry-empty.any.html": true, + "format-field-retry-empty.any.worker.html": true, + "format-field-retry.any.html": true, + "format-field-retry.any.worker.html": true, + "format-field-unknown.any.html": true, + "format-field-unknown.any.worker.html": true, + "format-leading-space.any.html": true, + "format-leading-space.any.worker.html": true, + "format-mime-bogus.any.html": true, + "format-mime-bogus.any.worker.html": true, + "format-mime-trailing-semicolon.any.html": true, + "format-mime-trailing-semicolon.any.worker.html": true, + "format-mime-valid-bogus.any.html": true, + "format-mime-valid-bogus.any.worker.html": true, + "format-newlines.any.html": true, + "format-newlines.any.worker.html": true, + "format-null-character.any.html": true, + "format-null-character.any.worker.html": true, + "format-utf-8.any.html": true, + "format-utf-8.any.worker.html": true, + "request-accept.any.html": true, + "request-accept.any.worker.html": true, + "request-cache-control.any.html": false, + "request-cache-control.any.worker.html": false, + "eventsource-close.window.html": false, + "eventsource-constructor-document-domain.window.html": false, + "eventsource-constructor-non-same-origin.window.html": false, + "eventsource-constructor-stringify.window.html": false, + "eventsource-cross-origin.window.html": false, + "eventsource-reconnect.window.html": false, + "request-status-error.window.html": false + } +} diff --git a/tests/wpt/runner/runner.ts b/tests/wpt/runner/runner.ts new file mode 100644 index 000000000..c7234da63 --- /dev/null +++ b/tests/wpt/runner/runner.ts @@ -0,0 +1,241 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + delay, + join, + ROOT_PATH, + TextLineStream, + toFileUrl, +} from "../../../tools/util.js"; +import { assert, denoBinary, ManifestTestOptions, runPy } from "./utils.ts"; +import { DOMParser } from "https://deno.land/x/deno_dom@v0.1.3-alpha2/deno-dom-wasm.ts"; + +export async function runWithTestUtil<T>( + verbose: boolean, + f: () => Promise<T>, +): Promise<T> { + const proc = runPy([ + "wpt", + "serve", + "--config", + "../../../tests/wpt/runner/config.json", + ], { + stdout: verbose ? "inherit" : "piped", + stderr: verbose ? "inherit" : "piped", + }); + + const start = performance.now(); + while (true) { + await delay(1000); + try { + const req = await fetch("http://localhost:8000/"); + await req.body?.cancel(); + if (req.status == 200) { + break; + } + } catch (_err) { + // do nothing if this fails + } + const passedTime = performance.now() - start; + if (passedTime > 15000) { + try { + proc.kill("SIGINT"); + } catch { + // Might have already died + } + await proc.status; + throw new Error("Timed out while trying to start wpt test util."); + } + } + + if (verbose) console.log(`Started wpt test util.`); + + try { + return await f(); + } finally { + if (verbose) console.log("Killing wpt test util."); + try { + proc.kill("SIGINT"); + } catch { + // Might have already died + } + await proc.status; + } +} + +export interface TestResult { + cases: TestCaseResult[]; + harnessStatus: TestHarnessStatus | null; + duration: number; + status: number; + stderr: string; +} + +export interface TestHarnessStatus { + status: number; + message: string | null; + stack: string | null; +} + +export interface TestCaseResult { + name: string; + passed: boolean; + status: number; + message: string | null; + stack: string | null; +} + +export async function runSingleTest( + url: URL, + _options: ManifestTestOptions, + reporter: (result: TestCaseResult) => void, + inspectBrk: boolean, + timeouts: { long: number; default: number }, +): Promise<TestResult> { + const timeout = _options.timeout === "long" + ? timeouts.long + : timeouts.default; + const filename = url.pathname.substring( + url.pathname.lastIndexOf("/") + 1, + url.pathname.indexOf("."), + ); + const { title } = Object.fromEntries(_options.script_metadata || []); + const bundle = await generateBundle(url); + const tempFile = await Deno.makeTempFile({ + prefix: "wpt-bundle-", + suffix: ".js", + }); + + let interval; + try { + await Deno.writeTextFile(tempFile, bundle); + + const startTime = new Date().getTime(); + + const args = [ + "run", + "-A", + "--unstable-broadcast-channel", + "--unstable-webgpu", + "--unstable-net", + "--v8-flags=--expose-gc", + ]; + + if (inspectBrk) { + args.push("--inspect-brk"); + } + + args.push( + "--enable-testing-features-do-not-use", + "--location", + url.toString(), + "--cert", + join(ROOT_PATH, `./tests/wpt/runner/certs/cacert.pem`), + tempFile, + "[]", + ); + + const start = performance.now(); + const proc = new Deno.Command(denoBinary(), { + args, + env: { + NO_COLOR: "1", + }, + stdout: "null", + stderr: "piped", + }).spawn(); + + const cases = []; + let stderr = ""; + + let harnessStatus = null; + + const lines = proc.stderr.pipeThrough(new TextDecoderStream()).pipeThrough( + new TextLineStream(), + ); + interval = setInterval(() => { + const passedTime = performance.now() - start; + if (passedTime > timeout) { + proc.kill("SIGINT"); + } + }, 1000); + for await (const line of lines) { + if (line.startsWith("{")) { + const data = JSON.parse(line); + const result = { ...data, passed: data.status == 0 }; + if (/^Untitled( \d+)?$/.test(result.name)) { + result.name = `${title || filename}${result.name.slice(8)}`; + } + cases.push(result); + reporter(result); + } else if (line.startsWith("#$#$#{")) { + harnessStatus = JSON.parse(line.slice(5)); + } else { + stderr += line + "\n"; + } + } + + const duration = new Date().getTime() - startTime; + + const { code } = await proc.status; + return { + status: code, + harnessStatus, + duration, + cases, + stderr, + }; + } finally { + clearInterval(interval); + await Deno.remove(tempFile); + } +} + +async function generateBundle(location: URL): Promise<string> { + const res = await fetch(location); + const body = await res.text(); + const doc = new DOMParser().parseFromString(body, "text/html"); + assert(doc, "document should have been parsed"); + const scripts = doc.getElementsByTagName("script"); + const title = doc.getElementsByTagName("title")[0]?.childNodes[0].nodeValue; + const scriptContents = []; + let inlineScriptCount = 0; + if (title) { + const url = new URL(`#${inlineScriptCount}`, location); + inlineScriptCount++; + scriptContents.push([ + url.href, + `globalThis.META_TITLE=${JSON.stringify(title)}`, + ]); + } + for (const script of scripts) { + const src = script.getAttribute("src"); + if (src === "/resources/testharnessreport.js") { + const url = toFileUrl( + join(ROOT_PATH, "./tests/wpt/runner/testharnessreport.js"), + ); + const contents = await Deno.readTextFile(url); + scriptContents.push([url.href, contents]); + } else if (src) { + const url = new URL(src, location); + const res = await fetch(url); + if (res.ok) { + const contents = await res.text(); + scriptContents.push([url.href, contents]); + } + } else { + const url = new URL(`#${inlineScriptCount}`, location); + inlineScriptCount++; + scriptContents.push([url.href, script.textContent]); + } + } + + return scriptContents.map(([url, contents]) => ` +(function() { + const [_,err] = Deno[Deno.internal].core.evalContext(${ + JSON.stringify(contents) + }, ${JSON.stringify(url)}); + if (err !== null) { + throw err?.thrown; + } +})();`).join("\n"); +} diff --git a/tests/wpt/runner/testharnessreport.js b/tests/wpt/runner/testharnessreport.js new file mode 100644 index 000000000..7cc6a9e2d --- /dev/null +++ b/tests/wpt/runner/testharnessreport.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +window.add_result_callback(({ message, name, stack, status }) => { + const data = new TextEncoder().encode( + `${JSON.stringify({ name, status, message, stack })}\n`, + ); + let bytesWritten = 0; + while (bytesWritten < data.byteLength) { + bytesWritten += Deno.stderr.writeSync(data.subarray(bytesWritten)); + } +}); + +window.add_completion_callback((_tests, harnessStatus) => { + const data = new TextEncoder().encode( + `#$#$#${JSON.stringify(harnessStatus)}\n`, + ); + let bytesWritten = 0; + while (bytesWritten < data.byteLength) { + bytesWritten += Deno.stderr.writeSync(data.subarray(bytesWritten)); + } + + // TODO(cjihrig): Restore the prototype of globalThis to be an EventTarget + // again. There are WPTs that change the prototype, which causes brand + // checking to fail. Once the globalThis prototype is frozen properly, this + // line can be removed. + Object.setPrototypeOf(globalThis, EventTarget.prototype); + + Deno.exit(harnessStatus.status === 0 ? 0 : 1); +}); diff --git a/tests/wpt/runner/utils.ts b/tests/wpt/runner/utils.ts new file mode 100644 index 000000000..5e3399fa7 --- /dev/null +++ b/tests/wpt/runner/utils.ts @@ -0,0 +1,214 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +/// FLAGS + +import { parse } from "../../util/std/flags/mod.ts"; +import { join, resolve, ROOT_PATH } from "../../../tools/util.js"; + +export const { + json, + wptreport, + quiet, + release, + rebuild, + ["--"]: rest, + ["auto-config"]: autoConfig, + ["inspect-brk"]: inspectBrk, + ["no-ignore"]: noIgnore, + binary, +} = parse(Deno.args, { + "--": true, + boolean: ["quiet", "release", "no-interactive", "inspect-brk", "no-ignore"], + string: ["json", "wptreport", "binary"], +}); + +export function denoBinary() { + if (binary) { + return resolve(binary); + } + return join(ROOT_PATH, `./target/${release ? "release" : "debug"}/deno`); +} + +/// WPT TEST MANIFEST + +export interface Manifest { + items: { + testharness: ManifestFolder; + }; +} +export interface ManifestFolder { + [key: string]: ManifestFolder | ManifestTest; +} +export type ManifestTest = [ + hash: string, + ...variations: ManifestTestVariation[], +]; +export type ManifestTestVariation = [ + path: string, + options: ManifestTestOptions, +]; +export interface ManifestTestOptions { + // deno-lint-ignore camelcase + script_metadata: [string, string][]; +} + +const MANIFEST_PATH = join(ROOT_PATH, "./tests/wpt/runner/manifest.json"); + +export async function updateManifest() { + const status = await runPy( + [ + "wpt", + "manifest", + "--tests-root", + ".", + "-p", + MANIFEST_PATH, + ...(rebuild ? ["--rebuild"] : []), + ], + {}, + ).status; + assert(status.success, "updating wpt manifest should succeed"); +} + +export function getManifest(): Manifest { + const manifestText = Deno.readTextFileSync(MANIFEST_PATH); + return JSON.parse(manifestText); +} + +/// WPT TEST EXPECTATIONS + +const EXPECTATION_PATH = join(ROOT_PATH, "./tests/wpt/runner/expectation.json"); + +export interface Expectation { + [key: string]: Expectation | boolean | string[]; +} + +export function getExpectation(): Expectation { + const expectationText = Deno.readTextFileSync(EXPECTATION_PATH); + return JSON.parse(expectationText); +} + +export function saveExpectation(expectation: Expectation) { + Deno.writeTextFileSync( + EXPECTATION_PATH, + JSON.stringify(expectation, undefined, " "), + ); +} + +export function getExpectFailForCase( + expectation: boolean | string[], + caseName: string, +): boolean { + if (noIgnore) return false; + if (typeof expectation == "boolean") { + return !expectation; + } + return expectation.includes(caseName); +} + +/// UTILS + +class AssertionError extends Error { + name = "AssertionError"; + constructor(message: string) { + super(message); + } +} + +export function assert(condition: unknown, message: string): asserts condition { + if (!condition) { + throw new AssertionError(message); + } +} + +export function runPy<T extends Omit<Deno.CommandOptions, "cwd">>( + args: string[], + options: T, +): Deno.ChildProcess { + const cmd = Deno.build.os == "windows" ? "python.exe" : "python3"; + return new Deno.Command(cmd, { + args, + stdout: "inherit", + stderr: "inherit", + ...options, + cwd: join(ROOT_PATH, "./tests/wpt/suite/"), + }).spawn(); +} + +export async function checkPy3Available() { + const { success, stdout } = await runPy(["--version"], { + stdout: "piped", + }).output(); + assert(success, "failed to run python --version"); + const output = new TextDecoder().decode(stdout); + assert( + output.includes("Python 3."), + `The ${ + Deno.build.os == "windows" ? "python.exe" : "python3" + } in your path is not Python 3.`, + ); +} + +export async function cargoBuild() { + if (binary) return; + const { success } = await new Deno.Command("cargo", { + args: ["build", ...(release ? ["--release"] : [])], + cwd: ROOT_PATH, + stdout: "inherit", + stderr: "inherit", + }).output(); + assert(success, "cargo build failed"); +} + +export function escapeLoneSurrogates(input: string): string; +export function escapeLoneSurrogates(input: string | null): string | null; +export function escapeLoneSurrogates(input: string | null): string | null { + if (input === null) return null; + return input.replace( + /[\uD800-\uDFFF]/gu, + (match) => `U+${match.charCodeAt(0).toString(16)}`, + ); +} + +/// WPTREPORT + +export async function generateRunInfo(): Promise<unknown> { + const oses = { + "windows": "win", + "darwin": "mac", + "linux": "linux", + "freebsd": "freebsd", + "openbsd": "openbsd", + }; + const proc = await new Deno.Command("git", { + args: ["rev-parse", "HEAD"], + cwd: join(ROOT_PATH, "tests", "wpt", "suite"), + stderr: "inherit", + }).output(); + const revision = (new TextDecoder().decode(proc.stdout)).trim(); + const proc2 = await new Deno.Command(denoBinary(), { + args: ["eval", "console.log(JSON.stringify(Deno.version))"], + cwd: join(ROOT_PATH, "tests", "wpt", "suite"), + }).output(); + const version = JSON.parse(new TextDecoder().decode(proc2.stdout)); + const runInfo = { + "os": oses[Deno.build.os], + "processor": Deno.build.arch, + "version": "unknown", + "os_version": "unknown", + "bits": 64, + "has_sandbox": true, + "webrender": false, + "automation": false, + "linux_distro": "unknown", + "revision": revision, + "python_version": 3, + "product": "deno", + "debug": false, + "browser_version": version.deno, + "browser_channel": version.deno.includes("+") ? "canary" : "stable", + "verify": false, + "wasm": false, + "headless": true, + }; + return runInfo; +} diff --git a/tests/wpt/wpt.ts b/tests/wpt/wpt.ts new file mode 100755 index 000000000..351ee518c --- /dev/null +++ b/tests/wpt/wpt.ts @@ -0,0 +1,816 @@ +#!/usr/bin/env -S deno run --unstable --allow-write --allow-read --allow-net --allow-env --allow-run +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +// This script is used to run WPT tests for Deno. + +import { + runSingleTest, + runWithTestUtil, + TestCaseResult, + TestResult, +} from "./runner/runner.ts"; +import { + assert, + autoConfig, + cargoBuild, + checkPy3Available, + escapeLoneSurrogates, + Expectation, + generateRunInfo, + getExpectation, + getExpectFailForCase, + getManifest, + inspectBrk, + json, + ManifestFolder, + ManifestTestOptions, + ManifestTestVariation, + noIgnore, + quiet, + rest, + runPy, + updateManifest, + wptreport, +} from "./runner/utils.ts"; +import { pooledMap } from "../util/std/async/pool.ts"; +import { blue, bold, green, red, yellow } from "../util/std/fmt/colors.ts"; +import { writeAll, writeAllSync } from "../util/std/streams/write_all.ts"; +import { saveExpectation } from "./runner/utils.ts"; + +class TestFilter { + filter?: string[]; + constructor(filter?: string[]) { + this.filter = filter; + } + + matches(path: string): boolean { + if (this.filter === undefined || this.filter.length == 0) { + return true; + } + for (const filter of this.filter) { + if (filter.startsWith("/")) { + if (path.startsWith(filter)) { + return true; + } + } else { + if (path.substring(1).startsWith(filter)) { + return true; + } + } + } + return false; + } +} + +const command = Deno.args[0]; + +switch (command) { + case "setup": + await checkPy3Available(); + await updateManifest(); + await setup(); + break; + + case "run": + await cargoBuild(); + await run(); + break; + + case "update": + await cargoBuild(); + await update(); + break; + + default: + console.log(`Possible commands: + + setup + Validate that your environment is configured correctly, or help you configure it. + + run + Run all tests like specified in \`expectation.json\`. + + update + Update the \`expectation.json\` to match the current reality. + +More details at https://deno.land/manual@main/contributing/web_platform_tests + + `); + break; +} + +async function setup() { + const hostsPath = Deno.build.os == "windows" + ? `${Deno.env.get("SystemRoot")}\\System32\\drivers\\etc\\hosts` + : "/etc/hosts"; + // TODO(lucacsonato): use this when 1.7.1 is released. + // const records = await Deno.resolveDns("web-platform.test", "A"); + // const etcHostsConfigured = records[0] == "127.0.0.1"; + const hostsFile = await Deno.readTextFile(hostsPath); + const etcHostsConfigured = hostsFile.includes("web-platform.test"); + + if (etcHostsConfigured) { + console.log(hostsPath + " is already configured."); + } else { + const autoConfigure = autoConfig || + confirm( + `The WPT require certain entries to be present in your ${hostsPath} file. Should these be configured automatically?`, + ); + if (autoConfigure) { + const { success, stdout } = await runPy(["wpt", "make-hosts-file"], { + stdout: "piped", + }).output(); + assert(success, "wpt make-hosts-file should not fail"); + const entries = new TextDecoder().decode(stdout); + const file = await Deno.open(hostsPath, { append: true }).catch((err) => { + if (err instanceof Deno.errors.PermissionDenied) { + throw new Error( + `Failed to open ${hostsPath} (permission error). Please run this command again with sudo, or configure the entries manually.`, + ); + } else { + throw err; + } + }); + await writeAll( + file, + new TextEncoder().encode( + "\n\n# Configured for Web Platform Tests (Deno)\n" + entries, + ), + ); + console.log(`Updated ${hostsPath}`); + } else { + console.log(`Please configure the ${hostsPath} entries manually.`); + if (Deno.build.os == "windows") { + console.log("To do this run the following command in PowerShell:"); + console.log(""); + console.log(" cd tests/wpt/suite/"); + console.log( + " python.exe wpt make-hosts-file | Out-File $env:SystemRoot\\System32\\drivers\\etc\\hosts -Encoding ascii -Append", + ); + console.log(""); + } else { + console.log("To do this run the following command in your shell:"); + console.log(""); + console.log(" cd tests/wpt/suite/"); + console.log( + " python3 ./wpt make-hosts-file | sudo tee -a /etc/hosts", + ); + console.log(""); + } + } + } + + console.log(green("Setup complete!")); +} + +interface TestToRun { + path: string; + url: URL; + options: ManifestTestOptions; + expectation: boolean | string[]; +} + +function getTestTimeout(test: TestToRun) { + if (Deno.env.get("CI")) { + // Don't give expected failures the full time + if (test.expectation === false) { + return { long: 60_000, default: 10_000 }; + } + return { long: 4 * 60_000, default: 4 * 60_000 }; + } + + return { long: 60_000, default: 10_000 }; +} + +async function run() { + const startTime = new Date().getTime(); + assert(Array.isArray(rest), "filter must be array"); + const expectation = getExpectation(); + const filter = new TestFilter(rest); + const tests = discoverTestsToRun( + filter, + expectation, + ); + assertAllExpectationsHaveTests(expectation, tests, filter); + const cores = navigator.hardwareConcurrency; + console.log(`Going to run ${tests.length} test files on ${cores} cores.`); + + const results = await runWithTestUtil(false, async () => { + const results: { test: TestToRun; result: TestResult }[] = []; + const inParallel = !(cores === 1 || tests.length === 1); + // ideally we would parallelize all tests, but we ran into some flakiness + // on the CI, so here we're partitioning based on the start of the test path + const partitionedTests = partitionTests(tests); + + const iter = pooledMap(cores, partitionedTests, async (tests) => { + for (const test of tests) { + if (!inParallel) { + console.log(`${blue("-".repeat(40))}\n${bold(test.path)}\n`); + } + const result = await runSingleTest( + test.url, + test.options, + inParallel ? () => {} : createReportTestCase(test.expectation), + inspectBrk, + getTestTimeout(test), + ); + results.push({ test, result }); + if (inParallel) { + console.log(`${blue("-".repeat(40))}\n${bold(test.path)}\n`); + } + reportVariation(result, test.expectation); + } + }); + + for await (const _ of iter) { + // ignore + } + + return results; + }); + const endTime = new Date().getTime(); + + if (json) { + const minifiedResults = []; + for (const result of results) { + const minified = { + file: result.test.path, + name: + Object.fromEntries(result.test.options.script_metadata ?? []).title ?? + null, + cases: result.result.cases.map((case_) => ({ + name: case_.name, + passed: case_.passed, + })), + }; + minifiedResults.push(minified); + } + await Deno.writeTextFile(json, JSON.stringify(minifiedResults)); + } + + if (wptreport) { + const report = await generateWptReport(results, startTime, endTime); + await Deno.writeTextFile(wptreport, JSON.stringify(report)); + } + + const code = reportFinal(results, endTime - startTime); + Deno.exit(code); +} + +async function generateWptReport( + results: { test: TestToRun; result: TestResult }[], + startTime: number, + endTime: number, +) { + const runInfo = await generateRunInfo(); + const reportResults = []; + for (const { test, result } of results) { + const status = result.status !== 0 + ? "CRASH" + : result.harnessStatus?.status === 0 + ? "OK" + : "ERROR"; + let message; + if (result.harnessStatus === null && result.status === 0) { + // If the only error is the event loop running out of tasks, using stderr + // as the message won't help. + message = "Event loop run out of tasks."; + } else { + message = result.harnessStatus?.message ?? (result.stderr.trim() || null); + } + const reportResult = { + test: test.url.pathname + test.url.search + test.url.hash, + subtests: result.cases.map((case_) => { + let expected = undefined; + if (!case_.passed) { + if (typeof test.expectation === "boolean") { + expected = test.expectation ? "PASS" : "FAIL"; + } else if (Array.isArray(test.expectation)) { + expected = test.expectation.includes(case_.name) ? "FAIL" : "PASS"; + } else { + expected = "PASS"; + } + } + + return { + name: escapeLoneSurrogates(case_.name), + status: case_.passed ? "PASS" : "FAIL", + message: escapeLoneSurrogates(case_.message), + expected, + known_intermittent: [], + }; + }), + status, + message: escapeLoneSurrogates(message), + duration: result.duration, + expected: status === "OK" ? undefined : "OK", + "known_intermittent": [], + }; + reportResults.push(reportResult); + } + return { + "run_info": runInfo, + "time_start": startTime, + "time_end": endTime, + "results": reportResults, + }; +} + +// Check that all expectations in the expectations file have a test that will be +// run. +function assertAllExpectationsHaveTests( + expectation: Expectation, + testsToRun: TestToRun[], + filter: TestFilter, +): void { + const tests = new Set(testsToRun.map((t) => t.path)); + const missingTests: string[] = []; + function walk(parentExpectation: Expectation, parent: string) { + for (const [key, expectation] of Object.entries(parentExpectation)) { + const path = `${parent}/${key}`; + if (!filter.matches(path)) continue; + if ( + (typeof expectation == "boolean" || Array.isArray(expectation)) && + key !== "ignore" + ) { + if (!tests.has(path)) { + missingTests.push(path); + } + } else { + walk(expectation, path); + } + } + } + + walk(expectation, ""); + + if (missingTests.length > 0) { + console.log( + red( + "Following tests are missing in manifest, but are present in expectations:", + ), + ); + console.log(""); + console.log(missingTests.join("\n")); + Deno.exit(1); + } +} + +async function update() { + assert(Array.isArray(rest), "filter must be array"); + const startTime = new Date().getTime(); + const filter = new TestFilter(rest); + const tests = discoverTestsToRun(filter, true); + console.log(`Going to run ${tests.length} test files.`); + + const results = await runWithTestUtil(false, async () => { + const results = []; + + for (const test of tests) { + console.log(`${blue("-".repeat(40))}\n${bold(test.path)}\n`); + const result = await runSingleTest( + test.url, + test.options, + json ? () => {} : createReportTestCase(test.expectation), + inspectBrk, + { long: 60_000, default: 10_000 }, + ); + results.push({ test, result }); + reportVariation(result, test.expectation); + } + + return results; + }); + const endTime = new Date().getTime(); + + if (json) { + await Deno.writeTextFile(json, JSON.stringify(results)); + } + + const resultTests: Record< + string, + { passed: string[]; failed: string[]; testSucceeded: boolean } + > = {}; + for (const { test, result } of results) { + if (!resultTests[test.path]) { + resultTests[test.path] = { + passed: [], + failed: [], + testSucceeded: result.status === 0 && result.harnessStatus !== null, + }; + } + for (const case_ of result.cases) { + if (case_.passed) { + resultTests[test.path].passed.push(case_.name); + } else { + resultTests[test.path].failed.push(case_.name); + } + } + } + + const currentExpectation = getExpectation(); + + for (const [path, result] of Object.entries(resultTests)) { + const { passed, failed, testSucceeded } = result; + let finalExpectation: boolean | string[]; + if (failed.length == 0 && testSucceeded) { + finalExpectation = true; + } else if (failed.length > 0 && passed.length > 0 && testSucceeded) { + finalExpectation = failed; + } else { + finalExpectation = false; + } + + insertExpectation( + path.slice(1).split("/"), + currentExpectation, + finalExpectation, + ); + } + + saveExpectation(currentExpectation); + + reportFinal(results, endTime - startTime); + + console.log(blue("Updated expectation.json to match reality.")); + + Deno.exit(0); +} + +function insertExpectation( + segments: string[], + currentExpectation: Expectation, + finalExpectation: boolean | string[], +) { + const segment = segments.shift(); + assert(segment, "segments array must never be empty"); + if (segments.length > 0) { + if ( + !currentExpectation[segment] || + Array.isArray(currentExpectation[segment]) || + typeof currentExpectation[segment] === "boolean" + ) { + currentExpectation[segment] = {}; + } + insertExpectation( + segments, + currentExpectation[segment] as Expectation, + finalExpectation, + ); + } else { + currentExpectation[segment] = finalExpectation; + } +} + +function reportFinal( + results: { test: TestToRun; result: TestResult }[], + duration: number, +): number { + const finalTotalCount = results.length; + let finalFailedCount = 0; + const finalFailed: [string, TestCaseResult][] = []; + let finalExpectedFailedAndFailedCount = 0; + const finalExpectedFailedButPassedTests: [string, TestCaseResult][] = []; + const finalExpectedFailedButPassedFiles: string[] = []; + const finalFailedFiles: string[] = []; + for (const { test, result } of results) { + const { + failed, + failedCount, + expectedFailedButPassed, + expectedFailedAndFailedCount, + } = analyzeTestResult( + result, + test.expectation, + ); + if (result.status !== 0 || result.harnessStatus === null) { + if (test.expectation === false) { + finalExpectedFailedAndFailedCount += 1; + } else { + finalFailedCount += 1; + finalFailedFiles.push(test.path); + } + } else if (failedCount > 0) { + finalFailedCount += 1; + for (const case_ of failed) { + finalFailed.push([test.path, case_]); + } + for (const case_ of expectedFailedButPassed) { + finalExpectedFailedButPassedTests.push([test.path, case_]); + } + } else if ( + test.expectation === false && + expectedFailedAndFailedCount != result.cases.length + ) { + finalExpectedFailedButPassedFiles.push(test.path); + } + } + const finalPassedCount = finalTotalCount - finalFailedCount; + + console.log(bold(blue("=".repeat(40)))); + + if (finalFailed.length > 0) { + console.log(`\nfailures:\n`); + } + for (const result of finalFailed) { + console.log( + ` ${JSON.stringify(`${result[0]} - ${result[1].name}`)}`, + ); + } + if (finalFailedFiles.length > 0) { + console.log(`\nfile failures:\n`); + } + for (const result of finalFailedFiles) { + console.log( + ` ${JSON.stringify(result)}`, + ); + } + if (finalExpectedFailedButPassedTests.length > 0) { + console.log(`\nexpected test failures that passed:\n`); + } + for (const result of finalExpectedFailedButPassedTests) { + console.log( + ` ${JSON.stringify(`${result[0]} - ${result[1].name}`)}`, + ); + } + if (finalExpectedFailedButPassedFiles.length > 0) { + console.log(`\nexpected file failures that passed:\n`); + } + for (const result of finalExpectedFailedButPassedFiles) { + console.log(` ${JSON.stringify(result)}`); + } + + const failed = (finalFailedCount > 0) || + (finalExpectedFailedButPassedFiles.length > 0); + + console.log( + `\nfinal result: ${ + failed ? red("failed") : green("ok") + }. ${finalPassedCount} passed; ${finalFailedCount} failed; ${finalExpectedFailedAndFailedCount} expected failure; total ${finalTotalCount} (${duration}ms)\n`, + ); + + return failed ? 1 : 0; +} + +function analyzeTestResult( + result: TestResult, + expectation: boolean | string[], +): { + failed: TestCaseResult[]; + failedCount: number; + passedCount: number; + totalCount: number; + expectedFailedButPassed: TestCaseResult[]; + expectedFailedButPassedCount: number; + expectedFailedAndFailedCount: number; +} { + const failed = result.cases.filter( + (t) => !getExpectFailForCase(expectation, t.name) && !t.passed, + ); + const expectedFailedButPassed = result.cases.filter( + (t) => getExpectFailForCase(expectation, t.name) && t.passed, + ); + const expectedFailedButPassedCount = expectedFailedButPassed.length; + const failedCount = failed.length + expectedFailedButPassedCount; + const expectedFailedAndFailedCount = result.cases.filter( + (t) => getExpectFailForCase(expectation, t.name) && !t.passed, + ).length; + const totalCount = result.cases.length; + const passedCount = totalCount - failedCount - expectedFailedAndFailedCount; + + return { + failed, + failedCount, + passedCount, + totalCount, + expectedFailedButPassed, + expectedFailedButPassedCount, + expectedFailedAndFailedCount, + }; +} + +function reportVariation(result: TestResult, expectation: boolean | string[]) { + if (result.status !== 0 || result.harnessStatus === null) { + if (result.stderr) { + console.log(`test stderr:\n${result.stderr}\n`); + } + + const expectFail = expectation === false; + const failReason = result.status !== 0 + ? "runner failed during test" + : "the event loop run out of tasks during the test"; + console.log( + `\nfile result: ${ + expectFail ? yellow("failed (expected)") : red("failed") + }. ${failReason} (${formatDuration(result.duration)})\n`, + ); + return; + } + + const { + failed, + failedCount, + passedCount, + totalCount, + expectedFailedButPassed, + expectedFailedButPassedCount, + expectedFailedAndFailedCount, + } = analyzeTestResult(result, expectation); + + if (failed.length > 0) { + console.log(`\nfailures:`); + } + for (const result of failed) { + console.log(`\n${result.name}\n${result.message}\n${result.stack}`); + } + + if (failedCount > 0) { + console.log(`\nfailures:\n`); + } + for (const result of failed) { + console.log(` ${JSON.stringify(result.name)}`); + } + if (expectedFailedButPassedCount > 0) { + console.log(`\nexpected failures that passed:\n`); + } + for (const result of expectedFailedButPassed) { + console.log(` ${JSON.stringify(result.name)}`); + } + if (result.stderr) { + console.log("\ntest stderr:\n" + result.stderr); + } + console.log( + `\nfile result: ${ + failedCount > 0 ? red("failed") : green("ok") + }. ${passedCount} passed; ${failedCount} failed; ${expectedFailedAndFailedCount} expected failure; total ${totalCount} (${ + formatDuration(result.duration) + })\n`, + ); +} + +function createReportTestCase(expectation: boolean | string[]) { + return function reportTestCase({ name, status }: TestCaseResult) { + const expectFail = getExpectFailForCase(expectation, name); + let simpleMessage = `test ${name} ... `; + switch (status) { + case 0: + if (expectFail) { + simpleMessage += red("ok (expected fail)"); + } else { + simpleMessage += green("ok"); + if (quiet) { + // don't print `ok` tests if --quiet is enabled + return; + } + } + break; + case 1: + if (expectFail) { + simpleMessage += yellow("failed (expected)"); + } else { + simpleMessage += red("failed"); + } + break; + case 2: + if (expectFail) { + simpleMessage += yellow("failed (expected)"); + } else { + simpleMessage += red("failed (timeout)"); + } + break; + case 3: + if (expectFail) { + simpleMessage += yellow("failed (expected)"); + } else { + simpleMessage += red("failed (incomplete)"); + } + break; + } + + writeAllSync(Deno.stdout, new TextEncoder().encode(simpleMessage + "\n")); + }; +} + +function discoverTestsToRun( + filter: TestFilter, + expectation: Expectation | string[] | boolean = getExpectation(), +): TestToRun[] { + const manifestFolder = getManifest().items.testharness; + + const testsToRun: TestToRun[] = []; + + function walk( + parentFolder: ManifestFolder, + parentExpectation: Expectation | string[] | boolean, + prefix: string, + ) { + for (const [key, entry] of Object.entries(parentFolder)) { + if (Array.isArray(entry)) { + for ( + const [path, options] of entry.slice( + 1, + ) as ManifestTestVariation[] + ) { + // Test keys ending with ".html" include their own html boilerplate. + // Test keys ending with ".js" will have the necessary boilerplate generated and + // the manifest path will contain the full path to the generated html test file. + // See: https://web-platform-tests.org/writing-tests/testharness.html + if (!key.endsWith(".html") && !key.endsWith(".js")) continue; + + const testHtmlPath = path ?? `${prefix}/${key}`; + const url = new URL(testHtmlPath, "http://web-platform.test:8000"); + if (!url.pathname.endsWith(".html")) { + continue; + } + // These tests require an HTTP2 compatible server. + if (url.pathname.includes(".h2.")) { + continue; + } + // Streaming fetch requests need a server that supports chunked + // encoding, which the WPT test server does not. Unfortunately this + // also disables some useful fetch tests. + if (url.pathname.includes("request-upload")) { + continue; + } + const finalPath = url.pathname + url.search; + + const split = finalPath.split("/"); + const finalKey = split[split.length - 1]; + + const expectation = Array.isArray(parentExpectation) || + typeof parentExpectation == "boolean" + ? parentExpectation + : parentExpectation[finalKey]; + + if (expectation === undefined) continue; + + if (typeof expectation === "object") { + if (typeof expectation.ignore !== "undefined") { + assert( + typeof expectation.ignore === "boolean", + "test entry's `ignore` key must be a boolean", + ); + if (expectation.ignore === true && !noIgnore) continue; + } + } + + if (!noIgnore) { + assert( + Array.isArray(expectation) || typeof expectation == "boolean", + "test entry must not have a folder expectation", + ); + } + + if (!filter.matches(finalPath)) continue; + + testsToRun.push({ + path: finalPath, + url, + options, + expectation, + }); + } + } else { + const expectation = Array.isArray(parentExpectation) || + typeof parentExpectation == "boolean" + ? parentExpectation + : parentExpectation[key]; + + if (expectation === undefined) continue; + + walk(entry, expectation, `${prefix}/${key}`); + } + } + } + walk(manifestFolder, expectation, ""); + + return testsToRun; +} + +function partitionTests(tests: TestToRun[]): TestToRun[][] { + const testsByKey: { [key: string]: TestToRun[] } = {}; + for (const test of tests) { + // Run all WebCryptoAPI tests in parallel + if (test.path.includes("/WebCryptoAPI")) { + testsByKey[test.path] = [test]; + continue; + } + // Paths looks like: /fetch/corb/img-html-correctly-labeled.sub-ref.html + const key = test.path.split("/")[1]; + if (!(key in testsByKey)) { + testsByKey[key] = []; + } + testsByKey[key].push(test); + } + return Object.values(testsByKey); +} + +function formatDuration(duration: number): string { + if (duration >= 5000) { + return red(`${duration}ms`); + } else if (duration >= 1000) { + return yellow(`${duration}ms`); + } else { + return `${duration}ms`; + } +} |