From 942c4e66d7367e3d614313307a87c226dc740fd8 Mon Sep 17 00:00:00 2001 From: Martin Taillefer Date: Mon, 22 Apr 2019 09:12:18 -0700 Subject: [PATCH] Site improvements. (#4015) - Substantially simplify logic that deals with releases & release notes. - Make it easier to add a new release to the site. THere are fewer things to change as the site infra can figure more stuff out on its own. - Make it so release notes can be added in one language without require them to be added in the other language. - Replace the ugly "a new version is available" callout on older release note pages with a popup that only shows up when you click on the download button. (cherry picked from commit d458423cf49d835c463a43505d065ae907fe3267) --- .../creating-and-editing-pages/index.md | 2 +- content/about/notes/1.0.1/index.md | 4 +- content/about/notes/1.0.2/index.md | 4 +- content/about/notes/1.0.3/index.md | 4 +- content/about/notes/1.0.4/index.md | 4 +- content/about/notes/1.0.5/index.md | 4 +- content/about/notes/1.0.6/index.md | 4 +- content/about/notes/1.0.7/index.md | 5 +- content/about/notes/1.0/index.md | 4 +- content/about/notes/1.1.1/index.md | 4 +- content/about/notes/1.1.2/index.md | 5 +- content/about/notes/1.1.3/index.md | 3 +- content/about/notes/1.1/index.md | 4 +- content/about/notes/_index.md | 3 - content/about/notes/older/0.1/index.md | 4 +- content/about/notes/older/0.2/index.md | 4 +- content/about/notes/older/0.3/index.md | 4 +- content/about/notes/older/0.4/index.md | 4 +- content/about/notes/older/0.5/index.md | 4 +- content/about/notes/older/0.6/index.md | 4 +- content/about/notes/older/0.7/index.md | 4 +- content/about/notes/older/0.8/index.md | 4 +- content/blog/2018/announcing-1.0.1/index.md | 5 +- content/blog/2018/announcing-1.0.2/index.md | 5 +- content/blog/2018/announcing-1.0.3/index.md | 5 +- content/blog/2018/announcing-1.0.4/index.md | 5 +- content/blog/2018/announcing-1.0.5/index.md | 5 +- content/blog/2018/announcing-1.0/index.md | 3 +- content/blog/2019/announcing-1.0.6/index.md | 5 +- content/blog/2019/announcing-1.0.7/index.md | 12 ++ content/blog/2019/announcing-1.1.1/index.md | 5 +- content/blog/2019/announcing-1.1.2/index.md | 78 +---------- content/blog/2019/announcing-1.1.3/index.md | 5 +- content/blog/2019/announcing-1.1/index.md | 3 +- content/boilerplates/notes/1.0.7.md | 66 +++++++++ content/boilerplates/notes/1.1.2.md | 66 +++++++++ content_zh/about/notes/1.0.1/index.md | 4 +- content_zh/about/notes/1.0.2/index.md | 4 +- content_zh/about/notes/1.0.3/index.md | 4 +- content_zh/about/notes/1.0.4/index.md | 4 +- content_zh/about/notes/1.0.5/index.md | 4 +- content_zh/about/notes/1.0.6/index.md | 4 +- content_zh/about/notes/1.0.7/index.md | 4 +- content_zh/about/notes/1.0/index.md | 4 +- content_zh/about/notes/1.1.1/index.md | 3 + content_zh/about/notes/1.1.2/index.md | 4 +- content_zh/about/notes/1.1.3/index.md | 6 +- content_zh/about/notes/1.1/index.md | 4 +- content_zh/about/notes/older/0.1/index.md | 5 +- content_zh/about/notes/older/0.2/index.md | 5 +- content_zh/about/notes/older/0.3/index.md | 5 +- content_zh/about/notes/older/0.4/index.md | 5 +- content_zh/about/notes/older/0.5/index.md | 5 +- content_zh/about/notes/older/0.6/index.md | 5 +- content_zh/about/notes/older/0.7/index.md | 5 +- content_zh/about/notes/older/0.8/index.md | 5 +- .../blog/2018/announcing-1.0.1/index.md | 3 + .../blog/2018/announcing-1.0.2/index.md | 3 + .../blog/2018/announcing-1.0.3/index.md | 3 + .../blog/2018/announcing-1.0.4/index.md | 5 +- .../blog/2018/announcing-1.0.5/index.md | 3 + content_zh/blog/2018/announcing-1.0/index.md | 1 + .../blog/2019/announcing-1.0.6/index.md | 6 +- .../blog/2019/announcing-1.0.7/index.md | 12 ++ .../blog/2019/announcing-1.1.2/index.md | 60 +------- .../blog/2019/announcing-1.1.3/index.md | 5 +- content_zh/blog/2019/announcing-1.1/index.md | 3 +- content_zh/boilerplates/notes/1.0.7.md | 48 +++++++ content_zh/boilerplates/notes/1.1.2.md | 48 +++++++ .../general/what-deployment-environment.md | 2 +- data/args.yml | 3 + data/releases.yml | 2 - generated/css/all.css | 2 +- generated/css/all.css.map | 2 +- generated/js/all.min.js | 3 +- generated/js/all.min.js.map | 2 +- i18n/en.toml | 6 +- i18n/zh.toml | 8 +- layouts/_default/release-note.html | 130 ------------------ layouts/shortcodes/announcement_links.html | 61 -------- layouts/shortcodes/relnote.html | 94 +++++++++++++ layouts/shortcodes/relnote_links.html | 76 ---------- scripts/build_site.sh | 2 +- src/sass/misc/_call-to-action.scss | 12 ++ src/ts/callToAction.ts | 25 ++++ src/ts/overlays.ts | 52 +++++++ 86 files changed, 620 insertions(+), 505 deletions(-) create mode 100644 content/blog/2019/announcing-1.0.7/index.md create mode 100644 content_zh/blog/2019/announcing-1.0.7/index.md delete mode 100644 layouts/_default/release-note.html delete mode 100644 layouts/shortcodes/announcement_links.html create mode 100644 layouts/shortcodes/relnote.html delete mode 100644 layouts/shortcodes/relnote_links.html create mode 100644 src/ts/callToAction.ts diff --git a/content/about/contribute/creating-and-editing-pages/index.md b/content/about/contribute/creating-and-editing-pages/index.md index 400813c9d6..30860323e9 100644 --- a/content/about/contribute/creating-and-editing-pages/index.md +++ b/content/about/contribute/creating-and-editing-pages/index.md @@ -131,7 +131,7 @@ The available front matter fields are: |`skip_seealso` | Set this to true to prevent the page from having a "See also" section generated for it |`force_inline_toc` | Set this to true to force the generated table of contents to be inserted inline in the text instead of in a sidebar |`simple_list` | Set this to true to force a generated section page to use a simple list layout rather that a gallery layout -|`content_above` | Set this to true to force the content portion of a section index to be rendered above the auto-generated content +|`content_above` | Set this to true to force the content portion of a section index to be rendered above the auto-generated part There are a few more front matter fields available specifically for blog posts: diff --git a/content/about/notes/1.0.1/index.md b/content/about/notes/1.0.1/index.md index e6edc80787..8f41c649d6 100644 --- a/content/about/notes/1.0.1/index.md +++ b/content/about/notes/1.0.1/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.1 publishdate: 2018-08-29 icon: notes -layout: release-note +release: 1.0.1 --- This release addresses some critical issues found by the community when using Istio 1.0. This release note describes what's different between Istio 1.0 and Istio 1.0.1. + +{{< relnote >}} diff --git a/content/about/notes/1.0.2/index.md b/content/about/notes/1.0.2/index.md index aa7d5ec3fe..e3c9f0e8cb 100644 --- a/content/about/notes/1.0.2/index.md +++ b/content/about/notes/1.0.2/index.md @@ -2,8 +2,10 @@ title: Istio 1.0.2 publishdate: 2018-09-06 icon: notes -layout: release-note +release: 1.0.2 --- This release addresses some critical issues found by the community when using Istio 1.0.1. This release note describes what's different between Istio 1.0.1 and Istio 1.0.2. + +{{< relnote >}} diff --git a/content/about/notes/1.0.3/index.md b/content/about/notes/1.0.3/index.md index f4d200b098..7f84a1c5de 100644 --- a/content/about/notes/1.0.3/index.md +++ b/content/about/notes/1.0.3/index.md @@ -2,8 +2,10 @@ title: Istio 1.0.3 publishdate: 2018-10-30 icon: notes -layout: release-note +release: 1.0.3 --- This release addresses some critical issues found by the community when using Istio 1.0.2. This release note describes what's different between Istio 1.0.2 and Istio 1.0.3. + +{{< relnote >}} diff --git a/content/about/notes/1.0.4/index.md b/content/about/notes/1.0.4/index.md index b26b833529..17a844b439 100644 --- a/content/about/notes/1.0.4/index.md +++ b/content/about/notes/1.0.4/index.md @@ -2,8 +2,10 @@ title: Istio 1.0.4 publishdate: 2018-11-21 icon: notes -layout: release-note +release: 1.0.4 --- This release addresses some critical issues found by the community when using Istio 1.0.3. This release note describes what's different between Istio 1.0.3 and Istio 1.0.4. + +{{< relnote >}} diff --git a/content/about/notes/1.0.5/index.md b/content/about/notes/1.0.5/index.md index 9963d6b619..c403160f8f 100644 --- a/content/about/notes/1.0.5/index.md +++ b/content/about/notes/1.0.5/index.md @@ -2,8 +2,10 @@ title: Istio 1.0.5 publishdate: 2018-12-20 icon: notes -layout: release-note +release: 1.0.5 --- This release addresses some critical issues found by the community in prior releases. This release note describes what's different between Istio 1.0.4 and Istio 1.0.5. + +{{< relnote >}} diff --git a/content/about/notes/1.0.6/index.md b/content/about/notes/1.0.6/index.md index 19d0ac3e71..7cdadb1f11 100644 --- a/content/about/notes/1.0.6/index.md +++ b/content/about/notes/1.0.6/index.md @@ -2,8 +2,10 @@ title: Istio 1.0.6 publishdate: 2019-02-12 icon: notes -layout: release-note +release: 1.0.6 --- This release includes security vulnerability fixes and improvements to robustness. This release note describes what's different between Istio 1.0.5 and Istio 1.0.6. + +{{< relnote >}} diff --git a/content/about/notes/1.0.7/index.md b/content/about/notes/1.0.7/index.md index 3578be9e64..b1d84005d6 100644 --- a/content/about/notes/1.0.7/index.md +++ b/content/about/notes/1.0.7/index.md @@ -2,8 +2,9 @@ title: Istio 1.0.7 publishdate: 2019-04-05 icon: notes -layout: release-note +release: 1.0.7 --- This release includes an important security update. All customers using prior versions of Istio are advised to upgrade immediately. -Please refer to the [announcement blog post](/blog/2019/announcing-1.1.2) for a description of the security issue. + +{{< relnote >}} diff --git a/content/about/notes/1.0/index.md b/content/about/notes/1.0/index.md index dba41cd212..d89d3c80ca 100644 --- a/content/about/notes/1.0/index.md +++ b/content/about/notes/1.0/index.md @@ -2,7 +2,7 @@ title: Istio 1.0 publishdate: 2018-07-31 icon: notes -layout: release-note +release: 1.0.0 --- We're proud to release Istio 1.0! Istio has been in development for nearly two years, and the 1.0 release represents a substantial @@ -10,3 +10,5 @@ milestone for us. All of our [core features](/about/feature-stages/) are now rea These release notes describe what's different between Istio 0.8 and Istio 1.0. Istio 1.0 only has a few new features relative to 0.8 as most of the effort for this release went into fixing bugs and improving performance. + +{{< relnote >}} diff --git a/content/about/notes/1.1.1/index.md b/content/about/notes/1.1.1/index.md index cd48b275f9..1a04b60932 100644 --- a/content/about/notes/1.1.1/index.md +++ b/content/about/notes/1.1.1/index.md @@ -2,7 +2,9 @@ title: Istio 1.1.1 publishdate: 2019-03-25 icon: notes -layout: release-note +release: 1.1.1 --- This release includes security vulnerability fixes and improvements to robustness. This release note describes what's different between Istio 1.1 and Istio 1.1.1. + +{{< relnote >}} diff --git a/content/about/notes/1.1.2/index.md b/content/about/notes/1.1.2/index.md index b6fc9cc0e4..cee5d7659d 100644 --- a/content/about/notes/1.1.2/index.md +++ b/content/about/notes/1.1.2/index.md @@ -2,8 +2,9 @@ title: Istio 1.1.2 publishdate: 2019-04-05 icon: notes -layout: release-note +release: 1.1.2 --- This release includes an important security update. All customers using prior versions of Istio are advised to upgrade immediately. -Please refer to the [announcement blog post](/blog/2019/announcing-1.1.2) for a description of the security issue. + +{{< relnote >}} diff --git a/content/about/notes/1.1.3/index.md b/content/about/notes/1.1.3/index.md index 8660f79031..303a737687 100644 --- a/content/about/notes/1.1.3/index.md +++ b/content/about/notes/1.1.3/index.md @@ -2,8 +2,9 @@ title: Istio 1.1.3 publishdate: 2019-04-15 icon: notes -layout: release-note +release: 1.1.3 --- This release includes several bug fixes and improvements to robustness. This release note describes what's different between Istio 1.1.2 and Istio 1.1.3. +{{< relnote >}} diff --git a/content/about/notes/1.1/index.md b/content/about/notes/1.1/index.md index 58a72c7c40..ac94e046b8 100644 --- a/content/about/notes/1.1/index.md +++ b/content/about/notes/1.1/index.md @@ -2,7 +2,7 @@ title: Istio 1.1 publishdate: 2019-03-19 icon: notes -layout: release-note +release: 1.1.0 --- We're proud to release Istio 1.1! @@ -14,3 +14,5 @@ few. Special thanks to all of our end-users for providing feedback, feature requests, and testing the release candidates at various scales. These release notes describe what's different between Istio 1.0.6 and Istio 1.1. + +{{< relnote >}} diff --git a/content/about/notes/_index.md b/content/about/notes/_index.md index 6cd0414916..3e3a6e9cb5 100644 --- a/content/about/notes/_index.md +++ b/content/about/notes/_index.md @@ -12,6 +12,3 @@ simple_list: true --- Check out our [release page](https://github.com/istio/istio/releases) to download Istio binaries. - -If you're on the lookout for info on ancient Istio releases, head straight for -our [archive of the earlier releases' documentation](https://archive.istio.io/). diff --git a/content/about/notes/older/0.1/index.md b/content/about/notes/older/0.1/index.md index b03ceee020..4fef2c3298 100644 --- a/content/about/notes/older/0.1/index.md +++ b/content/about/notes/older/0.1/index.md @@ -5,7 +5,9 @@ aliases: - /docs/welcome/notes/0.1.html - /about/notes/0.1/index.html icon: notes -layout: release-note +release: 0.1.0 --- Istio 0.1 is the initial [release](https://github.com/istio/istio/releases) of Istio. It works in a single Kubernetes cluster and supports the following features: + +{{< relnote >}} diff --git a/content/about/notes/older/0.2/index.md b/content/about/notes/older/0.2/index.md index 9c0eb4c96d..e0a181cc6f 100644 --- a/content/about/notes/older/0.2/index.md +++ b/content/about/notes/older/0.2/index.md @@ -5,5 +5,7 @@ aliases: - /docs/welcome/notes/0.2.html - /about/notes/0.2/index.html icon: notes -layout: release-note +release: 0.2.0 --- + +{{< relnote >}} diff --git a/content/about/notes/older/0.3/index.md b/content/about/notes/older/0.3/index.md index 71dec396bd..c6791eca87 100644 --- a/content/about/notes/older/0.3/index.md +++ b/content/about/notes/older/0.3/index.md @@ -5,5 +5,7 @@ aliases: - /docs/welcome/notes/0.3.html - /about/notes/0.3/index.html icon: notes -layout: release-note +release: 0.3.0 --- + +{{< relnote >}} diff --git a/content/about/notes/older/0.4/index.md b/content/about/notes/older/0.4/index.md index 21f08acad7..94a9d178f8 100644 --- a/content/about/notes/older/0.4/index.md +++ b/content/about/notes/older/0.4/index.md @@ -5,9 +5,11 @@ aliases: - /docs/welcome/notes/0.4.html - /about/notes/0.4/index.html icon: notes -layout: release-note +release: 0.4.0 --- This release has only got a few weeks' worth of changes, as we stabilize our monthly release process. In addition to the usual pile of bug fixes and performance improvements, this release includes the items below. + +{{< relnote >}} diff --git a/content/about/notes/older/0.5/index.md b/content/about/notes/older/0.5/index.md index fe28d6588a..c05242211c 100644 --- a/content/about/notes/older/0.5/index.md +++ b/content/about/notes/older/0.5/index.md @@ -4,8 +4,10 @@ publishdate: 2018-02-02 icon: notes aliases: - /about/notes/0.5/index.html -layout: release-note +release: 0.5.0 --- In addition to the usual pile of bug fixes and performance improvements, this release includes the new or updated features detailed below. + +{{< relnote >}} diff --git a/content/about/notes/older/0.6/index.md b/content/about/notes/older/0.6/index.md index e29642a11f..e5df931f7d 100644 --- a/content/about/notes/older/0.6/index.md +++ b/content/about/notes/older/0.6/index.md @@ -4,8 +4,10 @@ publishdate: 2018-03-08 icon: notes aliases: - /about/notes/0.6/index.html -layout: release-note +release: 0.6.0 --- In addition to the usual pile of bug fixes and performance improvements, this release includes the new or updated features detailed below. + +{{< relnote >}} diff --git a/content/about/notes/older/0.7/index.md b/content/about/notes/older/0.7/index.md index 772ddba51f..df1908b39e 100644 --- a/content/about/notes/older/0.7/index.md +++ b/content/about/notes/older/0.7/index.md @@ -4,8 +4,10 @@ publishdate: 2018-03-28 icon: notes aliases: - /about/notes/0.7/index.html -layout: release-note +release: 0.7.0 --- For this release, we focused on improving our build and test infrastructures and increasing the quality of our tests. As a result, there are no new features for this month. + +{{< relnote >}} diff --git a/content/about/notes/older/0.8/index.md b/content/about/notes/older/0.8/index.md index d67669ec97..e1b80a464d 100644 --- a/content/about/notes/older/0.8/index.md +++ b/content/about/notes/older/0.8/index.md @@ -4,7 +4,9 @@ publishdate: 2018-06-01 icon: notes aliases: - /about/notes/0.8/index.html -layout: release-note +release: 0.8.0 --- This is a major release for Istio on the road to 1.0. There are a great many new features and architectural improvements in addition to the usual pile of bug fixes and performance improvements. + +{{< relnote >}} diff --git a/content/blog/2018/announcing-1.0.1/index.md b/content/blog/2018/announcing-1.0.1/index.md index ced12a1a3d..141a0c1fb4 100644 --- a/content/blog/2018/announcing-1.0.1/index.md +++ b/content/blog/2018/announcing-1.0.1/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.0.1 description: Istio 1.0.1 patch release. publishdate: 2018-08-29 attribution: The Istio Team +release: 1.0.1 --- We're pleased to announce the availability of Istio 1.0.1. Please see below for what's changed. -{{< announcement_links "1.0.1" >}} - -{{< boilerplate "notes/1.0.1" >}} +{{< relnote >}} diff --git a/content/blog/2018/announcing-1.0.2/index.md b/content/blog/2018/announcing-1.0.2/index.md index 206d671252..1558f29c4d 100644 --- a/content/blog/2018/announcing-1.0.2/index.md +++ b/content/blog/2018/announcing-1.0.2/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.0.2 description: Istio 1.0.2 patch release. publishdate: 2018-09-06 attribution: The Istio Team +release: 1.0.2 --- We're pleased to announce the availability of Istio 1.0.2. Please see below for what's changed. -{{< announcement_links "1.0.2" >}} - -{{< boilerplate "notes/1.0.2" >}} +{{< relnote >}} diff --git a/content/blog/2018/announcing-1.0.3/index.md b/content/blog/2018/announcing-1.0.3/index.md index 2fbe193583..3a47ed3979 100644 --- a/content/blog/2018/announcing-1.0.3/index.md +++ b/content/blog/2018/announcing-1.0.3/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.0.3 description: Istio 1.0.3 patch release. publishdate: 2018-10-30 attribution: The Istio Team +release: 1.0.3 --- We're pleased to announce the availability of Istio 1.0.3. Please see below for what's changed. -{{< announcement_links "1.0.3" >}} - -{{< boilerplate "notes/1.0.3" >}} +{{< relnote >}} diff --git a/content/blog/2018/announcing-1.0.4/index.md b/content/blog/2018/announcing-1.0.4/index.md index 00196e3c24..93aa3b1690 100644 --- a/content/blog/2018/announcing-1.0.4/index.md +++ b/content/blog/2018/announcing-1.0.4/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.0.4 description: Istio 1.0.4 patch release. publishdate: 2018-11-21 attribution: The Istio Team +release: 1.0.4 --- We're pleased to announce the availability of Istio 1.0.4. Please see below for what's changed. -{{< announcement_links "1.0.4" >}} - -{{< boilerplate "notes/1.0.4" >}} +{{< relnote >}} diff --git a/content/blog/2018/announcing-1.0.5/index.md b/content/blog/2018/announcing-1.0.5/index.md index 6920193d22..6e88352c41 100644 --- a/content/blog/2018/announcing-1.0.5/index.md +++ b/content/blog/2018/announcing-1.0.5/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.0.5 description: Istio 1.0.5 patch release. publishdate: 2018-12-20 attribution: The Istio Team +release: 1.0.5 --- We're pleased to announce the availability of Istio 1.0.5. Please see below for what's changed. -{{< announcement_links "1.0.5" >}} - -{{< boilerplate "notes/1.0.5" >}} +{{< relnote >}} diff --git a/content/blog/2018/announcing-1.0/index.md b/content/blog/2018/announcing-1.0/index.md index 0ec40c6357..1abd747168 100644 --- a/content/blog/2018/announcing-1.0/index.md +++ b/content/blog/2018/announcing-1.0/index.md @@ -4,11 +4,12 @@ subtitle: The production ready service mesh description: Istio is ready for production use with its 1.0 release. publishdate: 2018-07-31 attribution: The Istio Team +release: 1.0.0 --- Today, we’re excited to announce [Istio 1.0](/about/notes/1.0). It’s been a little over a year since our initial 0.1 release. Since then, Istio has evolved significantly with the help of a thriving and growing community of contributors and users. We’ve now reached the point where many companies have successfully adopted Istio in production and have gotten real value from the insight and control it provides over their deployments. We’ve helped large enterprises and fast-moving startups like [eBay](https://www.ebay.com/), [Auto Trader UK](https://www.autotrader.co.uk/), [Descartes Labs](http://www.descarteslabs.com/), [HP FitStation](https://www.fitstation.com/), [JUSPAY](https://juspay.in), [Namely](https://www.namely.com/), [PubNub](https://www.pubnub.com/) and [Trulia](https://www.trulia.com/) use Istio to connect, manage and secure their services from the ground up. Shipping this release as 1.0 is recognition that we’ve built a core set of functionality that our users can rely on for production use. -{{< announcement_links "1.0.0" true >}} +{{< relnote linktonote="true" >}} ## Ecosystem diff --git a/content/blog/2019/announcing-1.0.6/index.md b/content/blog/2019/announcing-1.0.6/index.md index a35ca8792f..8859a3b29b 100644 --- a/content/blog/2019/announcing-1.0.6/index.md +++ b/content/blog/2019/announcing-1.0.6/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.0.6 description: Istio 1.0.6 patch release. publishdate: 2019-02-12 attribution: The Istio Team +release: 1.0.6 --- We're pleased to announce the availability of Istio 1.0.6. Please see below for what's changed. -{{< announcement_links "1.0.6" >}} - -{{< boilerplate "notes/1.0.6" >}} +{{< relnote >}} diff --git a/content/blog/2019/announcing-1.0.7/index.md b/content/blog/2019/announcing-1.0.7/index.md new file mode 100644 index 0000000000..20cd9b7863 --- /dev/null +++ b/content/blog/2019/announcing-1.0.7/index.md @@ -0,0 +1,12 @@ +--- +title: Announcing Istio 1.0.7 with Important Security Update +subtitle: Important Security Update +description: Istio 1.0.7 patch releases. +publishdate: 2019-04-05 +attribution: The Istio Team +release: 1.0.7 +--- + +We're announcing immediate availability of Istio 1.0.7 which contains some important security updates. Please see below for details. + +{{< relnote >}} diff --git a/content/blog/2019/announcing-1.1.1/index.md b/content/blog/2019/announcing-1.1.1/index.md index b48ce35325..c841b6c2d9 100644 --- a/content/blog/2019/announcing-1.1.1/index.md +++ b/content/blog/2019/announcing-1.1.1/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.1.1 description: Istio 1.1.1 patch release. publishdate: 2019-03-25 attribution: The Istio Team +release: 1.1.1 --- We're pleased to announce the availability of Istio 1.1.1. Please see below for what's changed. -{{< announcement_links "1.1.1" >}} - -{{< boilerplate "notes/1.1.1" >}} +{{< relnote >}} diff --git a/content/blog/2019/announcing-1.1.2/index.md b/content/blog/2019/announcing-1.1.2/index.md index a8c83c8b9c..39206a64dc 100644 --- a/content/blog/2019/announcing-1.1.2/index.md +++ b/content/blog/2019/announcing-1.1.2/index.md @@ -1,80 +1,12 @@ --- -title: Announcing Istio 1.1.2 and 1.0.7 with Important Security Update +title: Announcing Istio 1.1.2 with Important Security Update subtitle: Important Security Update -description: Istio 1.1.2 and 1.0.7 patch releases. +description: Istio 1.1.2 patch release. publishdate: 2019-04-05 attribution: The Istio Team +release: 1.1.2 --- -We're announcing immediate availability of Istio 1.1.2 and Istio 1.0.7 which contain some important security updates. Please see below for details. +We're announcing immediate availability of Istio 1.1.2 which contains some important security updates. Please see below for details. -{{< announcement_links "1.1.2" >}} - -{{< announcement_links "1.0.7" >}} - -## Security update - -Two security vulnerabilities have recently been identified in the Envoy proxy -([CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) and [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901)). The -vulnerabilities have now been patched in Envoy version 1.9.1, and correspondingly in the Envoy builds -embedded in Istio 1.1.2 and Istio 1.0.7. Since Envoy is an integral part of Istio, users are advised to update Istio -immediately to mitigate security risks arising from these vulnerabilities. - -The vulnerabilities are centered on the fact that Envoy did not normalize HTTP URI paths and did not fully validate HTTP/1.1 header values. These -vulnerabilities impact Istio features that rely on Envoy to enforce any of authorization, routing, or rate limiting. - -## Affected Istio releases - -The following Istio releases are vulnerable: - -- 1.1, 1.1.1 - - These releases can be patched to Istio 1.1.2. - - 1.1.2 is built from the same source as 1.1.1 with the addition of Envoy patches minimally sufficient to address the CVEs. - -- 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6 - - These releases can be patched to Istio 1.0.7 - - 1.0.7 is built from the same source as 1.0.6 with the addition of Envoy patches minimally sufficient to address the CVEs. - -- 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 - - These releases are no longer supported and will not be patched. Please upgrade to a supported release with the necessary fixes. - -## Vulnerability impact - -[CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) and [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901) -allow remote attackers access to unauthorized resources by using specially crafted request URI paths (9901) and NUL bytes in -HTTP/1.1 headers (9900), potentially circumventing DoS prevention systems such as rate limiting, or routing to a unexposed upstream system. Refer to -[issue 6434](https://github.com/envoyproxy/envoy/issues/6434) -and [issue 6435](https://github.com/envoyproxy/envoy/issues/6435) for more information. - -As Istio is based on Envoy, Istio customers can be affected by these vulnerabilities based on whether paths and request headers are used within Istio -policies or routing rules and how the backend HTTP implementation resolves them. If prefix path matching rules are used by Mixer or by Istio authorization -policies or the routing rules, an attacker could exploit these vulnerabilities to gain access to unauthorized paths on certain HTTP backends. - -## Mitigation - -Eliminating the vulnerabilities requires updating to a corrected version of Envoy. We’ve incorporated the necessary updates in the latest Istio patch releases. - -For Istio 1.1.x deployments: update to a minimum of [Istio 1.1.2](/about/notes/1.1.2) - -For Istio 1.0.x deployments: update to a minimum of [Istio 1.0.7](/about/notes/1.0.7) - -While Envoy 1.9.1 requires opting in to path normalization to address CVE 2019-9901, the version of Envoy embedded in Istio 1.1.2 and 1.0.7 enables path -normalization by default. - -## Detection of NUL header exploit - -Based on current information, this only affects HTTP/1.1 traffic. If this is not structurally possible in your network or configuration, then it is unlikely -that this vulnerability applies. - -File-based access logging uses the `c_str()` representation for header values, as does gRPC access logging, so there will be no trivial detection via -Envoy’s access logs by scanning for NUL. Instead, operators might look for inconsistencies in logs between the routing that Envoy performs and the logic -intended in the `RouteConfiguration`. - -External authorization and rate limit services can check for NULs in headers. Backend servers might have sufficient logging to detect NULs or unintended -access; it’s likely that many will simply reject NULs in this scenario via 400 Bad Request, as per RFC 7230. - -## Detection of path traversal exploit - -Envoy’s access logs (whether file-based or gRPC) will contain the unnormalized path, so it is possible to examine these logs to detect suspicious patterns and -requests that are incongruous with the intended operator configuration intent. In addition, unnormalized paths are available at `ext_authz`, rate limiting -and backend servers for log inspection. +{{< relnote >}} diff --git a/content/blog/2019/announcing-1.1.3/index.md b/content/blog/2019/announcing-1.1.3/index.md index 1f935efc5b..637931d3e3 100644 --- a/content/blog/2019/announcing-1.1.3/index.md +++ b/content/blog/2019/announcing-1.1.3/index.md @@ -3,10 +3,9 @@ title: Announcing Istio 1.1.3 description: Istio 1.1.3 patch release. publishdate: 2019-04-15 attribution: The Istio Team +release: 1.1.3 --- We're pleased to announce the availability of Istio 1.1.3. Please see below for what's changed. -{{< announcement_links "1.1.3" >}} - -{{< boilerplate "notes/1.1.3" >}} +{{< relnote >}} diff --git a/content/blog/2019/announcing-1.1/index.md b/content/blog/2019/announcing-1.1/index.md index 762084d38f..6d24f50f19 100644 --- a/content/blog/2019/announcing-1.1/index.md +++ b/content/blog/2019/announcing-1.1/index.md @@ -4,11 +4,12 @@ subtitle: Major Update description: Istio 1.1 release announcement. publishdate: 2019-03-19 attribution: The Istio Team +release: 1.1.0 --- We are pleased to announce the release of Istio 1.1! -{{< announcement_links "1.1.0" true >}} +{{< relnote linktonote="true" >}} Since we released 1.0 back in July, we’ve done a lot of work to help people get into production. Not surprisingly, we had to do some [patch releases](/about/notes) diff --git a/content/boilerplates/notes/1.0.7.md b/content/boilerplates/notes/1.0.7.md index e69de29bb2..c12a243908 100644 --- a/content/boilerplates/notes/1.0.7.md +++ b/content/boilerplates/notes/1.0.7.md @@ -0,0 +1,66 @@ +## Security update + +Two security vulnerabilities have recently been identified in the Envoy proxy +([CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) and [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901)). The +vulnerabilities have now been patched in Envoy version 1.9.1, and correspondingly in the Envoy builds +embedded in Istio 1.1.2 and Istio 1.0.7. Since Envoy is an integral part of Istio, users are advised to update Istio +immediately to mitigate security risks arising from these vulnerabilities. + +The vulnerabilities are centered on the fact that Envoy did not normalize HTTP URI paths and did not fully validate HTTP/1.1 header values. These +vulnerabilities impact Istio features that rely on Envoy to enforce any of authorization, routing, or rate limiting. + +## Affected Istio releases + +The following Istio releases are vulnerable: + +- 1.1, 1.1.1 + - These releases can be patched to Istio 1.1.2. + - 1.1.2 is built from the same source as 1.1.1 with the addition of Envoy patches minimally sufficient to address the CVEs. + +- 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6 + - These releases can be patched to Istio 1.0.7 + - 1.0.7 is built from the same source as 1.0.6 with the addition of Envoy patches minimally sufficient to address the CVEs. + +- 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 + - These releases are no longer supported and will not be patched. Please upgrade to a supported release with the necessary fixes. + +## Vulnerability impact + +[CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) and [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901) +allow remote attackers access to unauthorized resources by using specially crafted request URI paths (9901) and NUL bytes in +HTTP/1.1 headers (9900), potentially circumventing DoS prevention systems such as rate limiting, or routing to a unexposed upstream system. Refer to +[issue 6434](https://github.com/envoyproxy/envoy/issues/6434) +and [issue 6435](https://github.com/envoyproxy/envoy/issues/6435) for more information. + +As Istio is based on Envoy, Istio customers can be affected by these vulnerabilities based on whether paths and request headers are used within Istio +policies or routing rules and how the backend HTTP implementation resolves them. If prefix path matching rules are used by Mixer or by Istio authorization +policies or the routing rules, an attacker could exploit these vulnerabilities to gain access to unauthorized paths on certain HTTP backends. + +## Mitigation + +Eliminating the vulnerabilities requires updating to a corrected version of Envoy. We’ve incorporated the necessary updates in the latest Istio patch releases. + +For Istio 1.1.x deployments: update to a minimum of [Istio 1.1.2](/about/notes/1.1.2) + +For Istio 1.0.x deployments: update to a minimum of [Istio 1.0.7](/about/notes/1.0.7) + +While Envoy 1.9.1 requires opting in to path normalization to address CVE 2019-9901, the version of Envoy embedded in Istio 1.1.2 and 1.0.7 enables path +normalization by default. + +## Detection of NUL header exploit + +Based on current information, this only affects HTTP/1.1 traffic. If this is not structurally possible in your network or configuration, then it is unlikely +that this vulnerability applies. + +File-based access logging uses the `c_str()` representation for header values, as does gRPC access logging, so there will be no trivial detection via +Envoy’s access logs by scanning for NUL. Instead, operators might look for inconsistencies in logs between the routing that Envoy performs and the logic +intended in the `RouteConfiguration`. + +External authorization and rate limit services can check for NULs in headers. Backend servers might have sufficient logging to detect NULs or unintended +access; it’s likely that many will simply reject NULs in this scenario via 400 Bad Request, as per RFC 7230. + +## Detection of path traversal exploit + +Envoy’s access logs (whether file-based or gRPC) will contain the unnormalized path, so it is possible to examine these logs to detect suspicious patterns and +requests that are incongruous with the intended operator configuration intent. In addition, unnormalized paths are available at `ext_authz`, rate limiting +and backend servers for log inspection. diff --git a/content/boilerplates/notes/1.1.2.md b/content/boilerplates/notes/1.1.2.md index e69de29bb2..c12a243908 100644 --- a/content/boilerplates/notes/1.1.2.md +++ b/content/boilerplates/notes/1.1.2.md @@ -0,0 +1,66 @@ +## Security update + +Two security vulnerabilities have recently been identified in the Envoy proxy +([CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) and [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901)). The +vulnerabilities have now been patched in Envoy version 1.9.1, and correspondingly in the Envoy builds +embedded in Istio 1.1.2 and Istio 1.0.7. Since Envoy is an integral part of Istio, users are advised to update Istio +immediately to mitigate security risks arising from these vulnerabilities. + +The vulnerabilities are centered on the fact that Envoy did not normalize HTTP URI paths and did not fully validate HTTP/1.1 header values. These +vulnerabilities impact Istio features that rely on Envoy to enforce any of authorization, routing, or rate limiting. + +## Affected Istio releases + +The following Istio releases are vulnerable: + +- 1.1, 1.1.1 + - These releases can be patched to Istio 1.1.2. + - 1.1.2 is built from the same source as 1.1.1 with the addition of Envoy patches minimally sufficient to address the CVEs. + +- 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6 + - These releases can be patched to Istio 1.0.7 + - 1.0.7 is built from the same source as 1.0.6 with the addition of Envoy patches minimally sufficient to address the CVEs. + +- 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 + - These releases are no longer supported and will not be patched. Please upgrade to a supported release with the necessary fixes. + +## Vulnerability impact + +[CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) and [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901) +allow remote attackers access to unauthorized resources by using specially crafted request URI paths (9901) and NUL bytes in +HTTP/1.1 headers (9900), potentially circumventing DoS prevention systems such as rate limiting, or routing to a unexposed upstream system. Refer to +[issue 6434](https://github.com/envoyproxy/envoy/issues/6434) +and [issue 6435](https://github.com/envoyproxy/envoy/issues/6435) for more information. + +As Istio is based on Envoy, Istio customers can be affected by these vulnerabilities based on whether paths and request headers are used within Istio +policies or routing rules and how the backend HTTP implementation resolves them. If prefix path matching rules are used by Mixer or by Istio authorization +policies or the routing rules, an attacker could exploit these vulnerabilities to gain access to unauthorized paths on certain HTTP backends. + +## Mitigation + +Eliminating the vulnerabilities requires updating to a corrected version of Envoy. We’ve incorporated the necessary updates in the latest Istio patch releases. + +For Istio 1.1.x deployments: update to a minimum of [Istio 1.1.2](/about/notes/1.1.2) + +For Istio 1.0.x deployments: update to a minimum of [Istio 1.0.7](/about/notes/1.0.7) + +While Envoy 1.9.1 requires opting in to path normalization to address CVE 2019-9901, the version of Envoy embedded in Istio 1.1.2 and 1.0.7 enables path +normalization by default. + +## Detection of NUL header exploit + +Based on current information, this only affects HTTP/1.1 traffic. If this is not structurally possible in your network or configuration, then it is unlikely +that this vulnerability applies. + +File-based access logging uses the `c_str()` representation for header values, as does gRPC access logging, so there will be no trivial detection via +Envoy’s access logs by scanning for NUL. Instead, operators might look for inconsistencies in logs between the routing that Envoy performs and the logic +intended in the `RouteConfiguration`. + +External authorization and rate limit services can check for NULs in headers. Backend servers might have sufficient logging to detect NULs or unintended +access; it’s likely that many will simply reject NULs in this scenario via 400 Bad Request, as per RFC 7230. + +## Detection of path traversal exploit + +Envoy’s access logs (whether file-based or gRPC) will contain the unnormalized path, so it is possible to examine these logs to detect suspicious patterns and +requests that are incongruous with the intended operator configuration intent. In addition, unnormalized paths are available at `ext_authz`, rate limiting +and backend servers for log inspection. diff --git a/content_zh/about/notes/1.0.1/index.md b/content_zh/about/notes/1.0.1/index.md index 9a23323682..0953adc661 100644 --- a/content_zh/about/notes/1.0.1/index.md +++ b/content_zh/about/notes/1.0.1/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.1 publishdate: 2018-08-29 icon: notes -layout: release-note +release: 1.0.1 --- 本次发布解决了一些社区在使用 Istio 1.0 过程中发现的关键问题。本发布声明描述了 Istio 1.0 和 Istio 1.0.1 之间的区别。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0.2/index.md b/content_zh/about/notes/1.0.2/index.md index 1079486c91..543b72fa22 100644 --- a/content_zh/about/notes/1.0.2/index.md +++ b/content_zh/about/notes/1.0.2/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.2 publishdate: 2018-09-06 icon: notes -layout: release-note +release: 1.0.2 --- 此版本解决了社区在使用 Istio 1.0.1 过程中发现的一些关键问题。本文描述了 Istio 1.0.1 和 Istio 1.0.2 之间的差异。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0.3/index.md b/content_zh/about/notes/1.0.3/index.md index 4ff050bc50..c843991b41 100644 --- a/content_zh/about/notes/1.0.3/index.md +++ b/content_zh/about/notes/1.0.3/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.3 publishdate: 2018-10-30 icon: notes -layout: release-note +release: 1.0.3 --- 本次发布中针对社区在使用 Istio 1.0.2 的过程中发现的严重问题进行了修补。下文将陈述 Istio 1.0.2 和 Istio 1.0.3 之间的差异。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0.4/index.md b/content_zh/about/notes/1.0.4/index.md index 36226e1e2c..8b95839414 100644 --- a/content_zh/about/notes/1.0.4/index.md +++ b/content_zh/about/notes/1.0.4/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.4 publishdate: 2018-11-21 icon: notes -layout: release-note +release: 1.0.4 --- 社区在 Istio 1.0.3 的使用过程中发现了一些严重问题,本次发布对这些问题进行了处理。本文对 Istio 1.0.3 和 1.0.4 两个版本之间的差异进行了描述。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0.5/index.md b/content_zh/about/notes/1.0.5/index.md index cb6fe99701..97c69522e3 100644 --- a/content_zh/about/notes/1.0.5/index.md +++ b/content_zh/about/notes/1.0.5/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.5 publishdate: 2018-12-20 icon: notes -layout: release-note +release: 1.0.5 --- 社区在 Istio 1.0.4 的使用过程中发现了一些严重问题,本次发布对这些问题进行了处理。本文对 Istio 1.0.4 和 1.0.5 两个版本之间的差异进行了描述。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0.6/index.md b/content_zh/about/notes/1.0.6/index.md index a154cf6e56..009fc42a45 100644 --- a/content_zh/about/notes/1.0.6/index.md +++ b/content_zh/about/notes/1.0.6/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.6 publishdate: 2019-02-12 icon: notes -layout: release-note +release: 1.0.6 --- 本次发布中包含了安全缺陷的修复,并增强了系统的健壮性。发行声明中包含了 Istio 1.0.5 和 1.0.6 之间的差别。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0.7/index.md b/content_zh/about/notes/1.0.7/index.md index 7ecbc8c803..421d4c77f8 100644 --- a/content_zh/about/notes/1.0.7/index.md +++ b/content_zh/about/notes/1.0.7/index.md @@ -2,7 +2,9 @@ title: Istio 1.0.7 publishdate: 2019-04-05 icon: notes -layout: release-note +release: 1.0.7 --- 这一版本包含了重要的安全更新。建议所有使用 Istio 较旧版本的用户立即更新。请参考[更新通知](/blog/2019/announcing-1.1.2)获取更多关于这一安全问题的相关信息。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.0/index.md b/content_zh/about/notes/1.0/index.md index f23c0b070f..9ae58e95bd 100644 --- a/content_zh/about/notes/1.0/index.md +++ b/content_zh/about/notes/1.0/index.md @@ -2,9 +2,11 @@ title: Istio 1.0 publishdate: 2018-07-31 icon: notes -layout: release-note +release: 1.0.0 --- 我们很自豪地发布了 Istio 1.0!Istio 至今已经开发了近两年,1.0 版本对我们来说是一个重要的里程碑。我们所有的[核心功能](/zh/about/feature-stages/)现在都已经可以用于生产环境。 本文描述了 Istio 1.0 与 Istio 0.8 之间的不同之处。 此版本的大部分工作都用于修复错误和提高性能,因此相对于 0.8 来说,Istio 1.0 只提供了很少的新功能。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.1.1/index.md b/content_zh/about/notes/1.1.1/index.md index 0cdae1220f..7b77746c0e 100644 --- a/content_zh/about/notes/1.1.1/index.md +++ b/content_zh/about/notes/1.1.1/index.md @@ -2,6 +2,9 @@ title: Istio 1.1.1 publishdate: 2018-03-25 icon: notes +release: 1.1.1 --- TBD + +{{< relnote >}} diff --git a/content_zh/about/notes/1.1.2/index.md b/content_zh/about/notes/1.1.2/index.md index 430dd3f8cd..ea46841fda 100644 --- a/content_zh/about/notes/1.1.2/index.md +++ b/content_zh/about/notes/1.1.2/index.md @@ -2,8 +2,10 @@ title: Istio 1.1.2 publishdate: 2019-04-05 icon: notes -layout: release-note +release: 1.1.2 --- 本次发布中包含了一个重要的安全更新。建议所有使用以前版本 Istio 的用户立即升级。 请参考[发布声明](/blog/2019/announcing-1.1.2)获取关于这一安全问题的描述。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.1.3/index.md b/content_zh/about/notes/1.1.3/index.md index 383206d294..8e2c7e4840 100644 --- a/content_zh/about/notes/1.1.3/index.md +++ b/content_zh/about/notes/1.1.3/index.md @@ -2,7 +2,9 @@ title: Istio 1.1.3 publishdate: 2019-04-15 icon: notes -layout: release-note +release: 1.1.3 --- -这个版本中修复了大量问题,并提高了健壮性。下面列出了 Istio 1.1.2 和 Istio 1.1.3 之间的差别。 \ No newline at end of file +这个版本中修复了大量问题,并提高了健壮性。下面列出了 Istio 1.1.2 和 Istio 1.1.3 之间的差别。 + +{{< relnote >}} diff --git a/content_zh/about/notes/1.1/index.md b/content_zh/about/notes/1.1/index.md index e7dea5ca1a..a79daf196c 100644 --- a/content_zh/about/notes/1.1/index.md +++ b/content_zh/about/notes/1.1/index.md @@ -2,7 +2,7 @@ title: Istio 1.1 publishdate: 2018-03-01 icon: notes -layout: release-note +release: 1.1.0 --- 自豪地宣布,Istio 1.1 发布了! @@ -10,3 +10,5 @@ layout: release-note 我们用了 8 个月的时间,对整个产品做出众多改进,其中包括了来自 Google、IBM、VMware、Huawei、RedHat、Cisco、SAP、Salesforce、Pivotal、SUSE、Datadog 以及 LightStep 等众多厂商和个人的贡献。特别感谢所有的终端用户提供的反馈、功能需求以及在各种规模环境中做出的各种测试。 本文描述了 Istio 1.0.6 以及 Istio 1.1 之间的差异。 + +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.1/index.md b/content_zh/about/notes/older/0.1/index.md index f4e8308d76..52fdfe9a10 100644 --- a/content_zh/about/notes/older/0.1/index.md +++ b/content_zh/about/notes/older/0.1/index.md @@ -2,8 +2,7 @@ title: Istio 0.1 publishdate: 2017-05-24 icon: notes +release: 0.1.0 --- -{{< relnote_links >}} - -{{< boilerplate "notes/0.1" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.2/index.md b/content_zh/about/notes/older/0.2/index.md index c88765bc87..88a19a32e2 100644 --- a/content_zh/about/notes/older/0.2/index.md +++ b/content_zh/about/notes/older/0.2/index.md @@ -2,8 +2,7 @@ title: Istio 0.2 publishdate: 2017-10-10 icon: notes +release: 0.2.0 --- -{{< relnote_links >}} - -{{< boilerplate "notes/0.2" >}} +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.3/index.md b/content_zh/about/notes/older/0.3/index.md index 106fd42423..cc84d24ff7 100644 --- a/content_zh/about/notes/older/0.3/index.md +++ b/content_zh/about/notes/older/0.3/index.md @@ -2,8 +2,7 @@ title: Istio 0.3 publishdate: 2017-11-29 icon: notes +release: 0.3.0 --- -{{< relnote_links >}} - -{{< boilerplate "notes/0.3" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.4/index.md b/content_zh/about/notes/older/0.4/index.md index 7a089dbf5f..6ee9f84181 100644 --- a/content_zh/about/notes/older/0.4/index.md +++ b/content_zh/about/notes/older/0.4/index.md @@ -2,10 +2,9 @@ title: Istio 0.4 publishdate: 2017-12-18 icon: notes +release: 0.4.0 --- 我们稳定了月度发布流程,因此这一版本只有几个星期的工作量。在平淡无奇的问题修复和性能增强之外,这个版本中包括如下内容。 -{{< relnote_links >}} - -{{< boilerplate "notes/0.4" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.5/index.md b/content_zh/about/notes/older/0.5/index.md index b1d95630a6..2544dae794 100644 --- a/content_zh/about/notes/older/0.5/index.md +++ b/content_zh/about/notes/older/0.5/index.md @@ -2,10 +2,9 @@ title: Istio 0.5 publishdate: 2018-02-02 icon: notes +release: 0.5.0 --- 在平淡无奇的问题修复和性能增强之外,这一版本包含了部分全新的功能,以及对现有功能的改进,具体包括以下内容。 -{{< relnote_links >}} - -{{< boilerplate "notes/0.5" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.6/index.md b/content_zh/about/notes/older/0.6/index.md index 3646643dc6..9a9f39ee87 100644 --- a/content_zh/about/notes/older/0.6/index.md +++ b/content_zh/about/notes/older/0.6/index.md @@ -2,10 +2,9 @@ title: Istio 0.6 publishdate: 2018-03-08 icon: notes +release: 0.6.0 --- 在平淡无奇的问题修复和性能增强之外,这一版本包含了部分全新的功能,以及对现有功能的改进,具体包括以下内容。 -{{< relnote_links >}} - -{{< boilerplate "notes/0.6" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.7/index.md b/content_zh/about/notes/older/0.7/index.md index 0adb7b559c..f8b94d29a5 100644 --- a/content_zh/about/notes/older/0.7/index.md +++ b/content_zh/about/notes/older/0.7/index.md @@ -2,10 +2,9 @@ title: Istio 0.7 publishdate: 2018-03-28 icon: notes +release: 0.7.0 --- 本次发布,我们专注于提升我们的构建和测试基础设施并且提高了测试的质量。因此,这个月没有新的特性发布。 -{{< relnote_links >}} - -{{< boilerplate "notes/0.7" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/about/notes/older/0.8/index.md b/content_zh/about/notes/older/0.8/index.md index 717b1b6313..188123ca71 100644 --- a/content_zh/about/notes/older/0.8/index.md +++ b/content_zh/about/notes/older/0.8/index.md @@ -2,10 +2,9 @@ title: Istio 0.8 publishdate: 2018-06-01 icon: notes +release: 0.8.0 --- 这是 Istio 1.0 路上的一次重要发布,除了通常的问题修复和性能增强之外,其中包含了很多新功能,架构方面也做出了很多改进。 -{{< relnote_links >}} - -{{< boilerplate "notes/0.8" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/blog/2018/announcing-1.0.1/index.md b/content_zh/blog/2018/announcing-1.0.1/index.md index 1492f19cbc..8083887917 100644 --- a/content_zh/blog/2018/announcing-1.0.1/index.md +++ b/content_zh/blog/2018/announcing-1.0.1/index.md @@ -3,6 +3,9 @@ title: Istio 1.0.1 发布 description: Istio 1.0.1 补丁版本。 publishdate: 2018-08-29 attribution: The Istio Team +release: 1.0.1 --- 我们高兴地发布了 Istio 1.0.1。请查看[发行说明](/zh/about/notes/1.0.1/) 来了解和下载更新。 + +{{< relnote >}} diff --git a/content_zh/blog/2018/announcing-1.0.2/index.md b/content_zh/blog/2018/announcing-1.0.2/index.md index 18cd7cd394..70573452e6 100644 --- a/content_zh/blog/2018/announcing-1.0.2/index.md +++ b/content_zh/blog/2018/announcing-1.0.2/index.md @@ -3,6 +3,9 @@ title: Istio 1.0.2 发布 description: Istio 1.0.2 补丁版本. publishdate: 2018-09-06 attribution: The Istio Team +release: 1.0.2 --- 我们很高兴地发布了 Istio 1.0.2。请查看[发行说明](/zh/about/notes/1.0.2/)以了解更多信息并下载此更新。 + +{{< relnote >}} diff --git a/content_zh/blog/2018/announcing-1.0.3/index.md b/content_zh/blog/2018/announcing-1.0.3/index.md index 645eabc21f..03f9518c63 100644 --- a/content_zh/blog/2018/announcing-1.0.3/index.md +++ b/content_zh/blog/2018/announcing-1.0.3/index.md @@ -3,6 +3,9 @@ title: 宣布 Istio 1.0.3 description: Istio 1.0.3 修补版本。 publishdate: 2018-10-30 attribution: Istio 团队 +release: 1.0.3 --- Istio 1.0.3 已经发布。[发行说明](/zh/about/notes/1.0.3/)中列举了这一版本的更新内容并提供了下载。 + +{{< relnote >}} diff --git a/content_zh/blog/2018/announcing-1.0.4/index.md b/content_zh/blog/2018/announcing-1.0.4/index.md index e3eb972174..7d68b30527 100644 --- a/content_zh/blog/2018/announcing-1.0.4/index.md +++ b/content_zh/blog/2018/announcing-1.0.4/index.md @@ -3,6 +3,9 @@ title: Istio 1.0.4 发布 description: Istio 1.0.4 补丁版本发布。 publishdate: 2018-11-21 attribution: Istio 团队 +release: 1.0.4 --- -很高兴宣布 Istio 1.0.4 已经可用。请参阅 [Istio 1.0.4 发布通知](/zh/about/notes/1.0.4/),更多的了解和下载这次更新。 \ No newline at end of file +很高兴宣布 Istio 1.0.4 已经可用。请参阅 [Istio 1.0.4 发布通知](/zh/about/notes/1.0.4/),更多的了解和下载这次更新。 + +{{< relnote >}} diff --git a/content_zh/blog/2018/announcing-1.0.5/index.md b/content_zh/blog/2018/announcing-1.0.5/index.md index 832bdd20ab..ff70cb55fe 100644 --- a/content_zh/blog/2018/announcing-1.0.5/index.md +++ b/content_zh/blog/2018/announcing-1.0.5/index.md @@ -3,6 +3,9 @@ title: Istio 1.0.5 发布 description: Istio 1.0.5 补丁版本发布。 publishdate: 2018-12-20 attribution: Istio 团队 +release: 1.0.5 --- 很高兴宣布 Istio 1.0.5 已经可用。请参阅 [Istio 1.0.5 发布通知](/zh/about/notes/1.0.5/),详细了解和下载这次更新。 + +{{< relnote >}} diff --git a/content_zh/blog/2018/announcing-1.0/index.md b/content_zh/blog/2018/announcing-1.0/index.md index 761594397d..4cfcbdc435 100644 --- a/content_zh/blog/2018/announcing-1.0/index.md +++ b/content_zh/blog/2018/announcing-1.0/index.md @@ -4,6 +4,7 @@ subtitle: 生产就绪的服务网格 description: Istio 1.0 已生产就绪。 publishdate: 2018-07-31 attribution: The Istio Team +release: 1.0.0 --- 今天,我们很高兴地宣布 [Istio 1.0](/zh/about/notes/1.0)。这距离最初的 0.1 版本发布以来已经过了一年多时间了。从 0.1 起,Istio 就在蓬勃发展的社区、贡献者和用户的帮助下迅速发展。现在已经有许多公司成功将 Istio 应用于生产,并通过 Istio 提供的洞察力和控制力获得了真正的价值。我们帮助大型企业和快速发展的创业公司,如 [eBay](https://www.ebay.com/)、[Auto Trader UK](https://www.autotrader.co.uk/)、[Descartes Labs](http://www.descarteslabs.com/)、[HP FitStation](https://www.fitstation.com/)、[Namely](https://www.namely.com/)、[JUSPAY](https://juspay.in)、[PubNub](https://www.pubnub.com/) 和 [Trulia](https://www.trulia.com/) 使用 Istio 从头开始连接、管理和保护他们的服务。将此版本作为 1.0 发布是对我们构建了一组核心功能的认可,用户们可以依赖这些功能进行生产。 diff --git a/content_zh/blog/2019/announcing-1.0.6/index.md b/content_zh/blog/2019/announcing-1.0.6/index.md index d0b5beac45..81b7ebfe83 100644 --- a/content_zh/blog/2019/announcing-1.0.6/index.md +++ b/content_zh/blog/2019/announcing-1.0.6/index.md @@ -3,7 +3,9 @@ title: Istio 1.0.6 发布 description: Istio 1.0.6 补丁版本。 publishdate: 2019-02-12 attribution: The Istio Team -weight: 77 +release: 1.0.6 --- -很高兴地宣布,Istio 1.0.6 已经发布。请参阅[发行声明](/zh/about/notes/1.0.6/),获知更多相关内容并下载这一更新。 \ No newline at end of file +很高兴地宣布,Istio 1.0.6 已经发布。请参阅[发行声明](/zh/about/notes/1.0.6/),获知更多相关内容并下载这一更新。 + +{{< relnote >}} diff --git a/content_zh/blog/2019/announcing-1.0.7/index.md b/content_zh/blog/2019/announcing-1.0.7/index.md new file mode 100644 index 0000000000..127972a578 --- /dev/null +++ b/content_zh/blog/2019/announcing-1.0.7/index.md @@ -0,0 +1,12 @@ +--- +title: 安全更新:发布 Istio 1.0.7 +subtitle: 重要安全更新 +description: Istio 1.0.7 的补丁版本。 +publishdate: 2019-04-05 +attribution: The Istio Team +release: 1.0.7 +--- + +第一时间发布 1.0.7,其中包含了重要的安全更新。请参看下方详情链接。 + +{{< relnote >}} diff --git a/content_zh/blog/2019/announcing-1.1.2/index.md b/content_zh/blog/2019/announcing-1.1.2/index.md index 7e2b018073..17821f1a7a 100644 --- a/content_zh/blog/2019/announcing-1.1.2/index.md +++ b/content_zh/blog/2019/announcing-1.1.2/index.md @@ -1,62 +1,12 @@ --- -title: 安全更新:发布 Istio 1.1.2 以及 1.0.7 +title: 安全更新:发布 Istio 1.1.2 subtitle: 重要安全更新 -description: Istio 1.1.2 和 1.0.7 的补丁版本。 +description: Istio 1.1.2 的补丁版本。 publishdate: 2019-04-05 attribution: The Istio Team +release: 1.1.2 --- -第一时间发布 Istio 1.1.2 以及 1.0.7,其中包含了重要的安全更新。请参看下方详情链接。 +第一时间发布 Istio 1.1.2,其中包含了重要的安全更新。请参看下方详情链接。 -{{< announcement_links "1.1.2" >}} - -{{< announcement_links "1.0.7" >}} - -## 安全更新 - -最近发现了两个 Envoy 的安全威胁,分别是 [CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) 和 [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901)。Envoy 1.9.1 中已经包含了应对这两个问题的安全补丁,对应的 Istio 中的集成版本分别是 Istio 1.1.2 和 Istio 1.0.7。Envoy 是 Istio 的重要组件,我们建议立刻更新 Istio 加以防范。 - -这一安全问题的根本原因是 Envoy 没有对 HTTP URI 路径进行常规化,没有完整的对 HTTP/1.1 Header 进行校验。会影响到 Istio 依赖 Envoy 的一些功能,例如认证、路由以及速率限制。 - -## 受影响的 Istio 版本 - -下列 Istio 版本受到影响: - -- 1.1, 1.1.1 - - 这些版本可以升级为 Istio 1.1.2。 - - 1.1.2 和 1.1.1 的源码一致,加入了 Envoy 补丁用于应对 CVE。 - -- 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6 - - 这些版本可以升级到 Istio 1.0.7 - - 1.0.7 和 1.0.6 的源码一致,加入了 Envoy 补丁用于应对 CVE。 - -- 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 - - 这些版本已经不再支持,不会加入补丁。请升级到一个有支持的版本。 - -## 影响范围 - -[CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) 以及[CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901) 允许远程攻击者能够使用特定构造的请求 URI 路径来访问未经授权的资源(9901),HTTP/1.1 中的 NUL 字节能够部分的回避 DoS 防御系统(例如速率限制),或者路由到一个未开放的上游系统(9900)。可以参考 [issue 6434](https://github.com/envoyproxy/envoy/issues/6434) 和 [issue 6435](https://github.com/envoyproxy/envoy/issues/6435) 中的具体信息。 - -Istio 构建在 Envoy 的基础之上,如果用户在使用 Istio 的过程中,在路由或者策略中遇到了上文提到的路径或者 Header 方面的问题,就会受到影响,需要更新来解决。如果路径前缀符合规则的匹配条件,并且用于 Mixer 或者 Istio 授权策略或者路由规则,攻击者可以藉由这些隐患来访问特定 HTTP 后端的未授权服务的路径。 - -## 防范 - -要防范这些问题需要更新到 Envoy 的特定版本。我们已经在 Istio 的补丁版本中加入了必要的更新内容。 - -Istio 1.1.x 版本,至少应更新到 [Istio 1.1.2](/zh/about/notes/1.1.2) - -Istio 1.0.x 版本,至少应更新到 [Istio 1.0.7](/zh/about/notes/1.0.7) - -Envoy 1.0.1 需要打开路径常规化的选项来应对 CVE 2019-9901,Istio 1.1.2 和 1.0.7 中内置的 Envoy 缺省启用了这一功能。 - -## 检测 NUL Header 入侵 - -根据目前的已知信息,这一问题仅对 HTTP/1.1 有影响。如果你的网络或者配置中不允许这种行为,应该不会受到这一威胁。 - -基于文件的访问日志使用 `c_str()` 来处理 Header,gRPC 访问日志也是这样的,所以这种情况不会检查 Envoy 访问日志中的 NUL。运维人员可以查看 Envoy 路由和 `RouteConfiguration` 之间的差异。 - -外部授权和速率限制服务会检查 Header 中的 NUL。后端服务器会检查 NUL 或者被禁止的访问;很多情况下会根据 RFC 7230,简单的使用 400 错误码来拒绝 NULS。 - -## 检测路径遍历入侵 - -Envoy 的访问日志(不论是文件的还是 gRPC 的)会包含未经常规化的路径,所以可以根据这些日志来检查可以的访问请求,从中发掘不符合配置规定的访问行为。另外未经常规化的路径在 `ext_auzhz`、速率限制以及日志后端服务器都是可能发现的。 +{{< relnote >}} diff --git a/content_zh/blog/2019/announcing-1.1.3/index.md b/content_zh/blog/2019/announcing-1.1.3/index.md index d363b1b21f..6a4a05777f 100644 --- a/content_zh/blog/2019/announcing-1.1.3/index.md +++ b/content_zh/blog/2019/announcing-1.1.3/index.md @@ -4,8 +4,7 @@ subtitle: 重要安全更新 description: Istio 1.1.3。 publishdate: 2019-04-15 attribution: The Istio Team +release: 1.1.3 --- -{{< announcement_links "1.1.3" >}} - -{{< boilerplate "notes/1.1.3" >}} \ No newline at end of file +{{< relnote >}} diff --git a/content_zh/blog/2019/announcing-1.1/index.md b/content_zh/blog/2019/announcing-1.1/index.md index 0c724e8610..095aaab514 100644 --- a/content_zh/blog/2019/announcing-1.1/index.md +++ b/content_zh/blog/2019/announcing-1.1/index.md @@ -3,11 +3,12 @@ title: 宣布 Istio 1.1 发布 description: Istio 1.1 发布声明。 publishdate: 2019-03-19 attribution: The Istio Team +release: 1.1.0 --- 我们很高兴地宣布,Istio 1.1 发布! -{{< announcement_links "1.1.0" >}} +{{< relnote linktonote="true" >}} 自从去年 7 月份 1.0 发布以来,为了帮助人们将 Istio 投入生产我们做了很多工作。意料之中,我们发布了很多补丁(到目前为止已经发布了 6 个补丁!),但我们也在努力为产品添加新功能。 diff --git a/content_zh/boilerplates/notes/1.0.7.md b/content_zh/boilerplates/notes/1.0.7.md index e69de29bb2..de08b82a87 100644 --- a/content_zh/boilerplates/notes/1.0.7.md +++ b/content_zh/boilerplates/notes/1.0.7.md @@ -0,0 +1,48 @@ +## 安全更新 + +最近发现了两个 Envoy 的安全威胁,分别是 [CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) 和 [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901)。Envoy 1.9.1 中已经包含了应对这两个问题的安全补丁,对应的 Istio 中的集成版本分别是 Istio 1.1.2 和 Istio 1.0.7。Envoy 是 Istio 的重要组件,我们建议立刻更新 Istio 加以防范。 + +这一安全问题的根本原因是 Envoy 没有对 HTTP URI 路径进行常规化,没有完整的对 HTTP/1.1 Header 进行校验。会影响到 Istio 依赖 Envoy 的一些功能,例如认证、路由以及速率限制。 + +## 受影响的 Istio 版本 + +下列 Istio 版本受到影响: + +- 1.1, 1.1.1 + - 这些版本可以升级为 Istio 1.1.2。 + - 1.1.2 和 1.1.1 的源码一致,加入了 Envoy 补丁用于应对 CVE。 + +- 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6 + - 这些版本可以升级到 Istio 1.0.7 + - 1.0.7 和 1.0.6 的源码一致,加入了 Envoy 补丁用于应对 CVE。 + +- 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 + - 这些版本已经不再支持,不会加入补丁。请升级到一个有支持的版本。 + +## 影响范围 + +[CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) 以及[CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901) 允许远程攻击者能够使用特定构造的请求 URI 路径来访问未经授权的资源(9901),HTTP/1.1 中的 NUL 字节能够部分的回避 DoS 防御系统(例如速率限制),或者路由到一个未开放的上游系统(9900)。可以参考 [issue 6434](https://github.com/envoyproxy/envoy/issues/6434) 和 [issue 6435](https://github.com/envoyproxy/envoy/issues/6435) 中的具体信息。 + +Istio 构建在 Envoy 的基础之上,如果用户在使用 Istio 的过程中,在路由或者策略中遇到了上文提到的路径或者 Header 方面的问题,就会受到影响,需要更新来解决。如果路径前缀符合规则的匹配条件,并且用于 Mixer 或者 Istio 授权策略或者路由规则,攻击者可以藉由这些隐患来访问特定 HTTP 后端的未授权服务的路径。 + +## 防范 + +要防范这些问题需要更新到 Envoy 的特定版本。我们已经在 Istio 的补丁版本中加入了必要的更新内容。 + +Istio 1.1.x 版本,至少应更新到 [Istio 1.1.2](/zh/about/notes/1.1.2) + +Istio 1.0.x 版本,至少应更新到 [Istio 1.0.7](/zh/about/notes/1.0.7) + +Envoy 1.0.1 需要打开路径常规化的选项来应对 CVE 2019-9901,Istio 1.1.2 和 1.0.7 中内置的 Envoy 缺省启用了这一功能。 + +## 检测 NUL Header 入侵 + +根据目前的已知信息,这一问题仅对 HTTP/1.1 有影响。如果你的网络或者配置中不允许这种行为,应该不会受到这一威胁。 + +基于文件的访问日志使用 `c_str()` 来处理 Header,gRPC 访问日志也是这样的,所以这种情况不会检查 Envoy 访问日志中的 NUL。运维人员可以查看 Envoy 路由和 `RouteConfiguration` 之间的差异。 + +外部授权和速率限制服务会检查 Header 中的 NUL。后端服务器会检查 NUL 或者被禁止的访问;很多情况下会根据 RFC 7230,简单的使用 400 错误码来拒绝 NULS。 + +## 检测路径遍历入侵 + +Envoy 的访问日志(不论是文件的还是 gRPC 的)会包含未经常规化的路径,所以可以根据这些日志来检查可以的访问请求,从中发掘不符合配置规定的访问行为。另外未经常规化的路径在 `ext_auzhz`、速率限制以及日志后端服务器都是可能发现的。 diff --git a/content_zh/boilerplates/notes/1.1.2.md b/content_zh/boilerplates/notes/1.1.2.md index e69de29bb2..de08b82a87 100644 --- a/content_zh/boilerplates/notes/1.1.2.md +++ b/content_zh/boilerplates/notes/1.1.2.md @@ -0,0 +1,48 @@ +## 安全更新 + +最近发现了两个 Envoy 的安全威胁,分别是 [CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) 和 [CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901)。Envoy 1.9.1 中已经包含了应对这两个问题的安全补丁,对应的 Istio 中的集成版本分别是 Istio 1.1.2 和 Istio 1.0.7。Envoy 是 Istio 的重要组件,我们建议立刻更新 Istio 加以防范。 + +这一安全问题的根本原因是 Envoy 没有对 HTTP URI 路径进行常规化,没有完整的对 HTTP/1.1 Header 进行校验。会影响到 Istio 依赖 Envoy 的一些功能,例如认证、路由以及速率限制。 + +## 受影响的 Istio 版本 + +下列 Istio 版本受到影响: + +- 1.1, 1.1.1 + - 这些版本可以升级为 Istio 1.1.2。 + - 1.1.2 和 1.1.1 的源码一致,加入了 Envoy 补丁用于应对 CVE。 + +- 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6 + - 这些版本可以升级到 Istio 1.0.7 + - 1.0.7 和 1.0.6 的源码一致,加入了 Envoy 补丁用于应对 CVE。 + +- 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 + - 这些版本已经不再支持,不会加入补丁。请升级到一个有支持的版本。 + +## 影响范围 + +[CVE 2019-9900](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9900) 以及[CVE 2019-9901](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9901) 允许远程攻击者能够使用特定构造的请求 URI 路径来访问未经授权的资源(9901),HTTP/1.1 中的 NUL 字节能够部分的回避 DoS 防御系统(例如速率限制),或者路由到一个未开放的上游系统(9900)。可以参考 [issue 6434](https://github.com/envoyproxy/envoy/issues/6434) 和 [issue 6435](https://github.com/envoyproxy/envoy/issues/6435) 中的具体信息。 + +Istio 构建在 Envoy 的基础之上,如果用户在使用 Istio 的过程中,在路由或者策略中遇到了上文提到的路径或者 Header 方面的问题,就会受到影响,需要更新来解决。如果路径前缀符合规则的匹配条件,并且用于 Mixer 或者 Istio 授权策略或者路由规则,攻击者可以藉由这些隐患来访问特定 HTTP 后端的未授权服务的路径。 + +## 防范 + +要防范这些问题需要更新到 Envoy 的特定版本。我们已经在 Istio 的补丁版本中加入了必要的更新内容。 + +Istio 1.1.x 版本,至少应更新到 [Istio 1.1.2](/zh/about/notes/1.1.2) + +Istio 1.0.x 版本,至少应更新到 [Istio 1.0.7](/zh/about/notes/1.0.7) + +Envoy 1.0.1 需要打开路径常规化的选项来应对 CVE 2019-9901,Istio 1.1.2 和 1.0.7 中内置的 Envoy 缺省启用了这一功能。 + +## 检测 NUL Header 入侵 + +根据目前的已知信息,这一问题仅对 HTTP/1.1 有影响。如果你的网络或者配置中不允许这种行为,应该不会受到这一威胁。 + +基于文件的访问日志使用 `c_str()` 来处理 Header,gRPC 访问日志也是这样的,所以这种情况不会检查 Envoy 访问日志中的 NUL。运维人员可以查看 Envoy 路由和 `RouteConfiguration` 之间的差异。 + +外部授权和速率限制服务会检查 Header 中的 NUL。后端服务器会检查 NUL 或者被禁止的访问;很多情况下会根据 RFC 7230,简单的使用 400 错误码来拒绝 NULS。 + +## 检测路径遍历入侵 + +Envoy 的访问日志(不论是文件的还是 gRPC 的)会包含未经常规化的路径,所以可以根据这些日志来检查可以的访问请求,从中发掘不符合配置规定的访问行为。另外未经常规化的路径在 `ext_auzhz`、速率限制以及日志后端服务器都是可能发现的。 diff --git a/content_zh/help/faq/general/what-deployment-environment.md b/content_zh/help/faq/general/what-deployment-environment.md index 372519a2d9..83688219b0 100644 --- a/content_zh/help/faq/general/what-deployment-environment.md +++ b/content_zh/help/faq/general/what-deployment-environment.md @@ -3,4 +3,4 @@ title: 支持哪些部署环境? weight: 60 --- -Istio 的设计和构建与平台无关。对于我们 {{}} 发布,Istio 支持运行容器编排平台环境,如 Kubernetes(v1.9 或更高版本)和 Nomad(使用 Consul)。 \ No newline at end of file +Istio 的设计和构建与平台无关。对于我们 {{< istio_version >}} 发布,Istio 支持运行容器编排平台环境,如 Kubernetes(v1.9 或更高版本)和 Nomad(使用 Consul)。 \ No newline at end of file diff --git a/data/args.yml b/data/args.yml index eb0590c18f..d7f9cdc52e 100644 --- a/data/args.yml +++ b/data/args.yml @@ -26,6 +26,9 @@ doc_branch_name: release-1.1 # The list of supported versions described by the docs supported_kubernetes_versions: ["1.11", "1.12", "1.13"] +# The version of Istio currently in istio.io +main_version: "1.1" + ####### Static values # we use different search engines for each incarnation of the site diff --git a/data/releases.yml b/data/releases.yml index d0cfa4c42e..18ebd04f0b 100644 --- a/data/releases.yml +++ b/data/releases.yml @@ -2,10 +2,8 @@ url: https://preliminary.istio.io - name: "1.1" url: https://istio.io - latest_patch: 1.1.3 - name: "1.0" url: https://archive.istio.io/v1.0 - latest_patch: 1.0.7 - name: "0.8" url: https://archive.istio.io/v0.8 - name: "0.7" diff --git a/generated/css/all.css b/generated/css/all.css index f66329e63e..ac9339cc53 100644 --- a/generated/css/all.css +++ b/generated/css/all.css @@ -1 +1 @@ -:root{--mainBrandColor: #466bb0;--secondBrandColor: #286ac7;--textBrandColor: #ffffff;--textBrandColorLight: #cccccc;--textBrandHighlightColor: #de7d40}:root .preliminary-site{--secondBrandColor: #68aaf7}:root .archive-site{--secondBrandColor: #041a77}body{--backgroundColor: #ffffff;--textColor: #535f61;--textCodeColor: #d14;--disabledTextColor: #d7dcdc;--linkColor: #306bcc;--linkHoverColor: #1d67a0;--linkDisabledColor: #cccccc;--linkActiveColor: #b05464;--h1Color: #2e2e2e;--h2Color: #2e2e2e;--h3Color: #404040;--h4Color: #404040;--h5Color: #404040;--h6Color: #404040;--h2UnderlineColor: var(--mainBrandColor);--buttonActiveColor: #b05464;--dividerBarColor: rgba(0, 0, 0, .1);--glossaryHeaderColor: #cccccc;--deprecatedBackgroundColor: silver;--boxBorderColor: var(--secondBrandColor);--quoteCalloutBackgroundColor: #f3f3f3;--quoteCalloutBorderColor: #ebebeb;--tipCalloutBackgroundColor: #f2fff2;--tipCalloutBorderColor: #eaf7ea;--ideaCalloutBackgroundColor: #ffffe0;--ideaCalloutBorderColor: #f7f7d8;--warningCalloutBackgroundColor: #fff2f2;--warningCalloutBorderColor: #f7eaea;--preBlockShadowColor: #a7a7a7;--preBlockBorderColor: #f2f2f2;--preBlockBackgroundColor: var(--backgroundColor);--preBlockCommandOutputTextColor: var(--textColor);--preBlockCommandOutputBackgroundColor: #f8f8f8;--dropdownBorderColor: #000;--dropdownCheck: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='black' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--dropdownCheckHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='white' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--tabsetBorderColor: #f2f2f2;--tabsetShadowColor: #a7a7a7;--tabsetUnselectedTabTextColor: #306bcc;--tabsetUnselectedTabBackgroundColor: #ffffff;--tabsetSelectedTabTextColor: var(--textColor);--tabsetSelectedTabBackgroundColor: #eeeeff;--sidebarRightChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='black' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarRightChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='orange' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarDownChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='black' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--sidebarDownChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='orange' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--popoverBorderColor: #777777;--popoverShadowColor: #777777;--popoverHeaderBackgroundColor: #f8f8f8;--popoverHeaderTextColor: var(--textColor);--popoverBackgroundColor: var(--backgroundColor);--popoverTextColor: var(--textColor);--headerLightShadowColor: rgba(0, 0, 0, .14);--headerDarkShadowColor: rgba(0, 0, 0, .28);--figureBackgroundColor: var(--backgroundColor);--figureCaptionColor: var(--textColor);--heroLogoColor: var(--mainBrandColor);--landingPanelBackgroundColor: #f8f8f8;--landingPanelBorderColor: #dddddd;--landingPanelTextColor: var(--textColor);--landingPanelShadowColor: #a7a7a7;--landingPanelShadowHoverColor: #a7a7ee;--floatingButtonColor: rgba(0, 0, 0, .4);--floatingButtonHoverColor: var(--textBrandHighlightColor);--companyLogoBackgroundColor: var(--backgroundColor);--companyLogoTaglineColor: var(--textColor);--textWeight: 400;--linkWeight: 400;--h1Weight: 400;--h2Weight: 400;--h3Weight: 500;--h4Weight: 500;--h5Weight: 500;--h6Weight: 500;--tableHeaderWeight: 400;--boldTextWeight: 600;--heroLeadWeight: 300;--blogAttributeWeight: 600;--sectionIndexLinkWeight: 400;--buttonWeight: 400;--tocLinkWeight: 400;--sidebarLinkWeight: 400;--sidebarCurrentPageWeight: 500;--glossaryHeaderWeight: 300;--glossaryWordWeight: 500;--figureCaptionWeight: 400;--textCodeWeight: 400;--faqQuestionWeight: 400}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:rgba(255,255,255,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function,.token.class-name{color:#dd4a68}.token.regex,.token.important,.token.variable{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.dark-theme{--backgroundColor: #5a5a5a;--textColor: #dddddd;--textCodeColor: #cccccc;--disabledTextColor: #9d9d9d;--linkColor: #e9ffaa;--linkHoverColor: #de7d40;--linkDisabledColor: #444444;--linkActiveColor: #de7d40;--h1Color: #ffffff;--h2Color: #ffffff;--h3Color: #f8f8f8;--h4Color: #f8f8f8;--h5Color: #f8f8f8;--h6Color: #f8f8f8;--h2UnderlineColor: var(--mainBrandColor);--buttonActiveColor: #e07484;--dividerBarColor: rgba(255, 255, 255, .1);--glossaryHeaderColor: #cccccc;--deprecatedBackgroundColor: silver;--boxBorderColor: var(--textColor);--quoteCalloutBackgroundColor: #404040;--quoteCalloutBorderColor: #404040;--tipCalloutBackgroundColor: #404040;--tipCalloutBorderColor: #404040;--ideaCalloutBackgroundColor: #404040;--ideaCalloutBorderColor: #404040;--warningCalloutBackgroundColor: #404040;--warningCalloutBorderColor: #404040;--preBlockShadowColor: #777777;--preBlockBorderColor: #777777;--preBlockBackgroundColor: #2d2d2d;--preBlockCommandOutputTextColor: var(--textColor);--preBlockCommandOutputBackgroundColor: #404040;--dropdownBorderColor: #ffffff;--dropdownCheck: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='white' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--dropdownCheckHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='white' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--tabsetBorderColor: #777777;--tabsetShadowColor: #777777;--tabsetUnselectedTabTextColor: #e9ffaa;--tabsetUnselectedTabBackgroundColor: #5a5a5a;--tabsetSelectedTabTextColor: #a7a7a7;--tabsetSelectedTabBackgroundColor: #404040;--sidebarRightChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='white' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarRightChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='orange' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarDownChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='white' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--sidebarDownChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='orange' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--popoverBorderColor: #777777;--popoverShadowColor: #777777;--popoverHeaderBackgroundColor: #404040;--popoverHeaderTextColor: var(--textColor);--popoverBackgroundColor: var(--backgroundColor);--popoverTextColor: var(--textColor);--headerLightShadowColor: rgba(0, 0, 0, .14);--headerDarkShadowColor: rgba(0, 0, 0, .28);--figureBackgroundColor: #a3a3a3;--figureCaptionColor: #ffffff;--heroLogoColor: var(--textColor);--landingPanelBackgroundColor: #404040;--landingPanelBorderColor: #777777;--landingPanelTextColor: var(--textColor);--landingPanelShadowColor: #777777;--landingPanelShadowHoverColor: #999999;--floatingButtonColor: rgba(0, 0, 0, .4);--floatingButtonHoverColor: var(--textBrandHighlightColor);--companyLogoBackgroundColor: lightgrey;--companyLogoTaglineColor: #000;--textWeight: 300;--linkWeight: 300;--h1Weight: 400;--h2Weight: 400;--h3Weight: 500;--h4Weight: 500;--h5Weight: 500;--h6Weight: 500;--tableHeaderWeight: 400;--boldTextWeight: 600;--heroLeadWeight: 300;--blogAttributeWeight: 500;--sectionIndexLinkWeight: 400;--buttonWeight: 400;--tocLinkWeight: 300;--sidebarLinkWeight: 300;--sidebarCurrentPageWeight: 500;--glossaryHeaderWeight: 300;--glossaryWordWeight: 500;--figureCaptionWeight: 400;--textCodeWeight: 300;--faqQuestionWeight: 400}.dark-theme .token.comment,.dark-theme .token.block-comment,.dark-theme .token.prolog,.dark-theme .token.doctype,.dark-theme .token.cdata{color:#999}.dark-theme .token.punctuation{color:#ccc}.dark-theme .token.tag,.dark-theme .token.attr-name,.dark-theme .token.namespace,.dark-theme .token.deleted{color:#e2777a}.dark-theme .token.function-name{color:#6196cc}.dark-theme .token.boolean,.dark-theme .token.number,.dark-theme .token.function{color:#f08d49}.dark-theme .token.property,.dark-theme .token.class-name,.dark-theme .token.constant,.dark-theme .token.symbol{color:#f8c555}.dark-theme .token.selector,.dark-theme .token.important,.dark-theme .token.atrule,.dark-theme .token.keyword,.dark-theme .token.builtin{color:#dda9d8}.dark-theme .token.string,.dark-theme .token.char,.dark-theme .token.attr-value,.dark-theme .token.regex,.dark-theme .token.variable{color:#7ec699}.dark-theme .token.operator,.dark-theme .token.entity,.dark-theme .token.url{color:#67cdcc}.dark-theme .token.important,.dark-theme .token.bold{font-weight:bold}.dark-theme .token.italic{font-style:italic}.dark-theme .token.entity{cursor:help}.dark-theme .token.inserted{color:green}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:none}table{border-collapse:collapse;border-spacing:0}*,*::before,*::after{box-sizing:border-box}@media screen{:target::before{content:"";display:block;height:3.7rem;margin-top:-3.7rem}tr[id]::before{content:normal}html{overflow-y:scroll;position:relative;min-height:100%}body{margin-top:3.7rem;margin-bottom:calc(7rem + 3rem);font-family:"Work Sans",sans-serif;color:var(--textColor);background-color:var(--backgroundColor)}}body{line-height:1.5}a{color:var(--linkColor);text-decoration:none;font-weight:var(--linkWeight);font-family:"Chivo",sans-serif}a:hover,a:focus{color:var(--linkHoverColor);text-decoration:underline;font-weight:var(--linkWeight);outline:0}a.disabled{color:var(--linkDisabledColor);text-decoration:none;font-weight:var(--linkWeight)}a.active{color:var(--linkActiveColor);text-decoration:none;font-weight:var(--linkWeight)}a.dropdown-item{cursor:pointer}table,th,td,tr{padding:.5em}table{margin-left:.5em;margin-right:.5em;border-collapse:separate;border-spacing:0}table p:first-of-type{margin-top:0}table p:last-of-type{margin-bottom:0}th{color:var(--textBrandColor);background-color:var(--mainBrandColor);font-weight:var(--tableHeaderWeight)}th code{color:var(--textBrandColor)}tr.oneof>td{border-bottom:1px dashed var(--dividerBarColor);border-top:1px dashed var(--dividerBarColor)}th,td{border-left:1px solid var(--boxBorderColor);border-top:1px solid var(--boxBorderColor)}tr:first-child th:first-child{border-radius:4px 0 0}tr:first-child td:first-child{border-radius:4px 0 0}tr:first-child th:last-child{border-radius:0 4px 0 0}tr:first-child td:last-child{border-radius:0 4px 0 0}tr:last-child td{border-bottom:1px solid var(--boxBorderColor)}tr:last-child td:first-child{border-radius:0 0 0 4px}tr:last-child td:last-child{border-radius:0 0 4px}tr th:last-child{border-right:1px solid var(--boxBorderColor)}tr td:last-child{border-right:1px solid var(--boxBorderColor)}thead+tbody tr:first-child td:first-child{border-radius:0}thead+tbody tr:first-child td:last-child{border-radius:0}p{font-size:1rem;font-weight:var(--textWeight);margin:.75em 0}@media(min-width: 768px){p{margin:1.5em 0}}li,dt,dd{font-size:1rem;font-weight:var(--textWeight);margin:.25em}ol,ul,dl{list-style:initial;font-size:1rem;font-weight:var(--textWeight);margin:0 0 0 1.5em;padding:0}li p,dt p,dd p{margin:.4em 0}ol{list-style:decimal}h1,h2,h3,h4,h5,h6{border:0;line-height:1.2}h1{font-size:2.5rem;color:var(--h1Color);font-weight:var(--h1Weight);margin-bottom:0}h2{font-size:2rem;color:var(--h2Color);font-weight:var(--h2Weight);margin-top:3rem;margin-bottom:1.8rem}h2::before{display:block;content:" ";width:5rem;border-bottom:2px solid var(--mainBrandColor);margin-bottom:1.1rem;visibility:visible}h3{font-size:1.85rem;color:var(--h3Color);font-weight:var(--h3Weight);letter-spacing:1px;margin-bottom:20px;margin-top:30px}h4{font-size:1.85rem;color:var(--h4Color);font-weight:var(--h4Weight);margin:30px 0 20px}h4+p{margin:5px 0}@media(min-width: 768px){h4+p{margin:10px 0}}h5{font-size:1.15rem;color:var(--h5Color);font-weight:var(--h5Weight)}h6{font-size:.9rem;color:var(--h6Color);font-weight:var(--h6Weight)}.self-link{position:relative;left:.5em;top:-0.1em;opacity:0;font-size:.6em;display:none}@media screen{.self-link{display:unset}}h2:hover .self-link,h3:hover .self-link,h4:hover .self-link,h5:hover .self-link,h6:hover .self-link,dt:hover .self-link{transition:opacity .4s ease-in-out;opacity:1}em{font-style:italic}strong{font-weight:var(--boldTextWeight)}img{width:100%}blockquote{display:block;margin:1em 0 1em 2em;padding-left:1em;padding-right:1em;background-color:var(--quoteCalloutBackgroundColor);border-radius:4px}@media(min-width: 768px){blockquote{margin:1em 3em}}.deprecated{background:var(--deprecateBackgroundColor)}div.aliases::before{content:"Alternate forms:"}@media print{h1,h2,h3{color:#000;background:none;page-break-after:avoid}img{max-width:100% !important}blockquote,img{page-break-inside:avoid}}.icon{width:1em;height:1em;display:inline;fill:var(--textColor);stroke:var(--textColor);vertical-align:middle}.large-icon{width:1.4em;height:1.4em;display:inline;fill:var(--textColor);stroke:var(--textColor);vertical-align:middle}.page-icon{margin-right:.3em}.title-icon{margin-right:.3em}.title-icon .icon{width:2rem;height:2rem}.title-area{display:flex;margin-bottom:2.5rem;align-items:center}.flipped{transform:scaleX(-1)}.subtitle{margin-top:.15rem;margin-bottom:0;padding:0;font-size:125%}.byline{margin-top:.15rem;margin-bottom:0;padding:0;text-transform:uppercase;font-size:75%}.attribution{font-weight:var(--blogAttributeWeight)}#subscribe{padding:1em;font-size:1.2em;background-color:var(--backgroundColor);text-align:center}#subscribe svg{margin-right:.5em}[aria-label=Breadcrumb]{text-transform:uppercase;margin:1.1em 0}@media print{[aria-label=Breadcrumb]{display:none}}[aria-label=Breadcrumb] ol{margin:0;padding:0;list-style:none}[aria-label=Breadcrumb] li{display:inline;font-size:80%;margin:0}[aria-label=Breadcrumb] li+li::before{display:inline-block;margin:0 .55em 0 .25em;content:"/"}[aria-label=Breadcrumb] a:focus{outline:0}.btn{display:inline-block;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:4px;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;background-color:var(--secondBrandColor);color:var(--textBrandColor);font-weight:var(--buttonWeight);letter-spacing:1px;cursor:pointer;box-shadow:3px 3px 8px #a7a7a7}.btn:hover{background-color:var(--mainBrandColor);color:var(--textBrandColor);text-decoration:none}.btn:active{background-color:var(--buttonActiveColor);color:var(--textBrandColor)}.btn:focus{color:var(--textBrandColor)}.callout{padding:.5em;border-radius:4px;border-width:1px;border-style:solid;display:inline-block;position:relative;margin:1em 0 1em 1em;max-width:calc(100% - .5em - .5em - 1em)}@media(min-width: 768px){.callout{margin:1.25em;max-width:calc(100% - .5em - .5em - 1.25em - 1.25em)}}.callout .type{left:-0.75em;top:50%;transform:translateY(-50%);position:absolute}.callout .type svg{fill:var(--boxBorderColor)}.callout .content{margin-left:1em;min-height:100%}.callout .content p:first-of-type{margin-top:0}.callout .content p:last-of-type{margin-bottom:0}.callout.tip{background-color:var(--tipCalloutBackgroundColor);border-color:var(--tipCalloutBorderColor)}.callout.idea{background-color:var(--ideaCalloutBackgroundColor);border-color:var(--ideaCalloutBorderColor)}.callout.warning{background-color:var(--warningCalloutBackgroundColor);border-color:var(--warningCalloutBorderColor)}.callout.quote{background-color:var(--quoteCalloutBackgroundColor);border-color:var(--quoteCalloutBorderColor);font-style:italic}.callout:hover .type svg{animation:shake 2.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;transform:translate3d(0, 0, 0);backface-visibility:hidden;perspective:1000px}@keyframes shake{10%,90%{transform:translate3d(-1px, 0, 0)}20%,80%{transform:translate3d(2px, 0, 0)}30%,50%,70%{transform:translate3d(-4px, 0, 0)}40%,60%{transform:translate3d(4px, 0, 0)}}.call-to-action{text-align:center;opacity:0;transition:opacity .25s ease-in}@media print{.call-to-action{display:none}}.call-to-action .btn{margin:1rem;width:13rem}@media(min-width: 768px){.call-to-action .btn{margin:1rem 5rem}}.call-to-action span.btn{cursor:not-allowed}.call-to-action span.btn:hover{background-color:var(--secondBrandColor);color:var(--textBrandColor)}.call-to-action span.btn:active{background-color:var(--secondBrandColor);color:var(--textBrandColor)}.call-to-action span.btn:focus{background-color:var(--secondBrandColor);color:var(--textBrandColor)}code{color:var(--textCodeColor);font-size:80%;font-weight:var(--textCodeWeight);font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;word-break:normal}pre{margin:1em 0 1em 1em;min-width:12em;max-height:31em;border:1px solid var(--preBlockBorderColor);border-radius:4px;box-shadow:3px 3px 8px var(--preBlockShadowColor);font-size:87.5%;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none;background:var(--preBlockBackgroundColor);overflow:auto}@media(min-width: 768px){pre{margin:1em}}@media print{pre{page-break-inside:avoid}}pre code{display:block;padding:.5em;color:var(--textColor)}pre code.command-output{padding:0}pre code.command-output .command{padding:1.5em 1em}@media(min-width: 768px){pre code.command-output .command{padding:.5em .5em 0}}pre code.command-output .output{color:var(--preBlockCommandOutputTextColor);background-color:var(--preBlockCommandOutputBackgroundColor);font-style:italic;padding:1em;float:left;clear:left;min-width:100%}@media(min-width: 768px){pre code.command-output .output{padding:0 .5em .5em}}pre code.command-output div:only-of-type{padding:1.5em 1em}@media(min-width: 768px){pre code.command-output div:only-of-type{padding:.5em}}@media print{pre{max-height:unset}}div.toolbar{position:relative}div.toolbar button{font-size:.8em;padding:0 .5em;border-radius:.3em;background-color:var(--secondBrandColor);cursor:pointer;color:var(--textBrandColor);text-decoration:none;border:0;position:absolute;top:3px;z-index:1;transition:opacity .4s ease-in-out;opacity:0}div.toolbar button.toolbar-show{transition:opacity 1.1s ease-in-out;opacity:1}div.toolbar button.copy{right:2.2rem;width:3rem}div.toolbar button.download{right:5.5rem}div.toolbar button.print{right:7.25rem}div.toolbar svg{width:.8em;height:.8em;display:inline;fill:var(--textBrandColor);stroke:var(--textBrandColor)}.community-item{display:table-row}.community-item .logo{display:table-cell;width:65px;vertical-align:middle;padding-left:1em;padding-top:1em;padding-bottom:1em}.community-item .desc{display:table-cell;vertical-align:middle;padding-left:1em;padding-top:1em;padding-bottom:1em}#endnotes-container{display:none}@media print{#endnotes-container.show{display:block}}@media screen{.endnote-ref{display:none}}.faq .question{font-weight:var(--faqQuestionWeight);text-transform:uppercase}.faq .answer{margin-left:2.5em}.faq-landing{column-count:1;column-gap:2rem}@media(min-width: 576px){.faq-landing{column-count:2}}.faq-landing .panel{display:inline-block;border:1px solid var(--boxBorderColor);border-radius:4px;width:100%;margin-bottom:2rem}.faq-landing .panel .header{color:var(--textBrandColor);background-color:var(--boxBorderColor);padding:.75rem 1.25rem;border-bottom:1px solid rgba(0,0,0,.125)}.faq-landing .panel .body{padding:1.25rem}.faq-landing .panel .body ul{list-style:none;padding:0;margin:0}figure{margin:1.5rem auto;padding:.5rem;background-color:var(--figureBackgroundColor);border-radius:4px}figure .wrapper-with-intrinsic-ratio{position:relative;height:0}figure .element-to-stretch{position:absolute;top:0;left:0;width:100%;height:100%}figure figcaption{text-align:center;font-size:1.15rem;font-style:italic;font-weight:var(--figureCaptionWeight);color:var(--figureCaptionColor);padding-top:.5rem}#sidebar-toggler,#scroll-to-top,#switch-lang,#edit-this-page,#report-site-bugs{z-index:15;outline:none;background-color:rgba(var(--backgroundColor), 0.7);cursor:pointer;padding:3px 5px;border-radius:10px;font-size:1rem;border:0;box-shadow:0 0 2px 2px var(--floatingButtonColor)}@media print{#sidebar-toggler,#scroll-to-top,#switch-lang,#edit-this-page,#report-site-bugs{display:none}}#sidebar-toggler svg,#scroll-to-top svg,#switch-lang svg,#edit-this-page svg,#report-site-bugs svg{width:1.5em;height:1.5em;vertical-align:middle;fill:var(--floatingButtonColor)}#sidebar-toggler svg:hover,#scroll-to-top svg:hover,#switch-lang svg:hover,#edit-this-page svg:hover,#report-site-bugs svg:hover{fill:var(--floatingButtonHoverColor)}#sidebar-toggler{position:absolute;top:3.7rem;right:10px}@media(min-width: 768px){#sidebar-toggler{display:none}}@media print{#scroll-to-top-container{display:none}}@media(min-width: 1200px){#scroll-to-top-container{display:none}}#scroll-to-top-container #scroll-to-top{display:none;position:fixed;top:3.7rem;right:10px}#scroll-to-top-container #scroll-to-top.show{display:block}#switch-lang-container,#edit-this-page-container,#report-site-bugs-container{display:none}@media screen{#switch-lang-container,#edit-this-page-container,#report-site-bugs-container{display:block}}#switch-lang-container #switch-lang,#switch-lang-container #edit-this-page,#switch-lang-container #report-site-bugs,#edit-this-page-container #switch-lang,#edit-this-page-container #edit-this-page,#edit-this-page-container #report-site-bugs,#report-site-bugs-container #switch-lang,#report-site-bugs-container #edit-this-page,#report-site-bugs-container #report-site-bugs{display:block;position:fixed;right:1rem;background-color:bisque}#switch-lang-container #switch-lang.disabled,#switch-lang-container #edit-this-page.disabled,#switch-lang-container #report-site-bugs.disabled,#edit-this-page-container #switch-lang.disabled,#edit-this-page-container #edit-this-page.disabled,#edit-this-page-container #report-site-bugs.disabled,#report-site-bugs-container #switch-lang.disabled,#report-site-bugs-container #edit-this-page.disabled,#report-site-bugs-container #report-site-bugs.disabled{background-color:#d3d3d3;cursor:default}#switch-lang-container #switch-lang.disabled svg:hover,#switch-lang-container #edit-this-page.disabled svg:hover,#switch-lang-container #report-site-bugs.disabled svg:hover,#edit-this-page-container #switch-lang.disabled svg:hover,#edit-this-page-container #edit-this-page.disabled svg:hover,#edit-this-page-container #report-site-bugs.disabled svg:hover,#report-site-bugs-container #switch-lang.disabled svg:hover,#report-site-bugs-container #edit-this-page.disabled svg:hover,#report-site-bugs-container #report-site-bugs.disabled svg:hover{fill:var(--floatingButtonColor)}#switch-lang-container #switch-lang{bottom:1rem}@media(min-width: 576px){#switch-lang-container #switch-lang{bottom:calc(1rem + 7rem)}}#edit-this-page-container #edit-this-page{bottom:6rem}@media(min-width: 576px){#edit-this-page-container #edit-this-page{bottom:calc(6rem + 7rem)}}#report-site-bugs-container #report-site-bugs{bottom:3.5rem}@media(min-width: 576px){#report-site-bugs-container #report-site-bugs{bottom:calc(3.5rem + 7rem)}}footer{background-image:linear-gradient(to right, var(--mainBrandColor), var(--secondBrandColor));color:var(--textBrandColor);position:absolute;bottom:0;width:100%;height:7rem;overflow:hidden;padding:1rem 4px 1.5rem;text-align:center;display:grid;grid-template-columns:[user-links] 45% [info] 55% [dev-links] 0%;grid-template-rows:100%}@media print{footer{display:none}}@media(min-width: 576px){footer{padding:1.5rem 1.25rem 1rem}}@media(min-width: 992px){footer{grid-template-columns:[user-links] 30% [info] 40% [dev-links] 30%}}footer .user-links{grid-column:user-links;text-align:left}footer .info{grid-column:info}footer .info .copyright{padding:0;margin-top:8px;color:var(--textBrandColorLight);line-height:1.6em;font-size:.5em;text-align:right !important}@media(min-width: 992px){footer .info .copyright{text-align:center !important;font-size:.7em;margin:0}}footer .info .copyright a{color:var(--textBrandColorLight);text-decoration:underline}footer .info .copyright a:hover,footer .info .copyright a:focus{color:var(--textBrandColor)}footer .dev-links{grid-column:dev-links;text-align:right;display:none}@media(min-width: 992px){footer .dev-links{display:block}}footer .channel{position:relative;display:inline-flex;margin-top:8px;padding:6px;border-width:2px;border-color:rgba(0,0,0,0);border-style:solid;border-radius:2px;color:var(--textBrandColor)}@media(min-width: 576px){footer .channel{margin:0 .2rem}}footer .channel a{text-decoration:none}footer .channel svg{width:27px;height:27px;fill:var(--textBrandColor);stroke:var(--mainBrandColor)}@media(min-width: 576px){footer .channel svg{width:35px;height:35px}}footer .channel span{opacity:0;background-color:transparent;color:var(--textBrandColor);text-align:center;position:absolute;width:212px;left:-82px;top:-23px;font-size:75%}footer .channel:hover,footer .channel:focus{border-color:#fff;border-radius:25px;box-shadow:0 0 2px 2px var(--textBrandColor);transition:border-radius 1s,border-color 1s ease;outline:0}footer .channel:hover span,footer .channel:focus span{opacity:1;transition:opacity .5s}footer .tag{padding:0 1rem;font-style:italic;margin:0;line-height:1.6em;font-size:.8em}.glossary .trampolines{font-size:1.85rem;text-align:center;padding-top:.8rem}@media print{.glossary .trampolines{display:none}}@media screen{.glossary .entries .letter:target::before{height:calc(3.7rem - 1rem);margin-top:calc(0 - calc(3.7rem - 1rem))}}.glossary .entries h4{font-size:1.65rem;font-weight:var(--glossaryHeaderWeight);border-bottom:1px solid;color:var(--glossaryHeaderColor);border-color:var(--glossaryHeaderColor);background-color:var(--backgroundColor);padding-top:2.2rem;padding-bottom:.15rem;position:sticky;top:calc(3.7rem - 1rem);margin-top:0;margin-bottom:0;z-index:10}.glossary .entries dl{margin-left:0}.glossary .entries dl dt{font-weight:var(--glossaryWordWeight);list-style-type:none;margin-bottom:0;margin-top:.9rem;margin-left:0;text-transform:uppercase}.glossary .entries dl dd{list-style-type:none;margin-left:1.5rem}header{background-image:linear-gradient(to right, var(--mainBrandColor), var(--secondBrandColor));box-shadow:0 0 2px 2px var(--headerLightShadowColor),0 2px 4px 2px var(--heaserDarkShadowColor);padding-top:.2em;padding-bottom:.2em;position:fixed;top:0;right:0;left:0;z-index:100}@media print{header{display:none}}header #brand{display:inline-block;font-size:1.25rem;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;line-height:inherit;white-space:nowrap;width:100%}@media(min-width: 576px){header #brand{width:unset}}@media(max-width: 575px){header #brand.open-hamburger{display:none}}header #brand .logo{width:2em;height:2em;top:3px;left:.8em;position:fixed;fill:var(--textBrandColor);transition-duration:.8s;transition-property:transform;transform-origin:50% 50%}header #brand .logo circle{fill:var(--mainBrandColor);stroke:var(--textBrandColor)}@media(min-width: 768px){header #brand .logo{width:3em;height:3em}}header #brand .logo:hover{transform:rotate(360deg)}header #brand .name{color:var(--textBrandColor);font-weight:400;vertical-align:bottom;line-height:1.1em;display:inline-block;padding-top:.35rem;text-align:center;margin-left:0;margin-right:0;width:100%}@media(min-width: 576px){header #brand .name{text-align:left;margin-left:3em;margin-right:1rem;width:unset}}@media(min-width: 768px){header #brand .name{margin-left:4.2em}}header #brand:hover span,header #brand:focus span{color:var(--textBrandHighlightColor)}header a,header button{background-color:transparent;border:0;font-weight:500;color:var(--textBrandColor);font-size:1.1em;margin-left:.3rem;margin-right:.3rem;stroke:var(--textBrandColor);fill:var(--textBrandColor);padding:0}@media(min-width: 576px){header a,header button{font-size:.9em;margin-left:.58rem;margin-right:.58rem}}header a svg.icon,header button svg.icon{fill:var(--textBrandColor);stroke:var(--textBrandColor)}header a:hover,header button:hover{cursor:pointer}header a:hover,header a:focus,header button:hover,header button:focus{text-decoration:none;color:var(--textBrandHighlightColor);outline:0}header a:hover svg.icon,header a:focus svg.icon,header button:hover svg.icon,header button:focus svg.icon{fill:var(--textBrandHighlightColor);stroke:var(--textBrandHighlightColor)}header div.menu{display:inline-block}header svg.icon{width:1.1em;height:1.1em}header #hamburger{display:inline-block;position:absolute;top:.8rem;right:1.3rem}@media(min-width: 576px){header #hamburger{display:none}}header #hamburger svg.icon{fill:var(--textBrandColor);stroke:var(--textBrandColor)}header #header-links{display:none;top:.6rem;right:1.1rem;transition:right .5s}@media(max-width: 575px){header #header-links.open-hamburger{display:block;text-align:center;margin-top:1em;padding-left:1em;padding-right:2.5em}}@media(min-width: 576px){header #header-links{display:inline-block;position:absolute}}header #header-links.show-search{right:-700px;transition:right .5s}header #header-links span{border-bottom:solid 3px var(--textBrandColor);border-radius:2px;color:var(--textBrandColor);cursor:default;font-weight:var(--linkWeight);font-family:"Chivo",sans-serif;font-size:1.1em;margin-left:.3rem;margin-right:.3rem}@media(min-width: 576px){header #header-links span{font-size:.9em;margin-left:.58rem;margin-right:.58rem}}header #search-show{display:none}@media(min-width: 576px){header #search-show{display:inline-block}}header #search-form{display:none;top:0;right:-700px;transition:right .5s}@media(max-width: 575px){header #search-form.open-hamburger{display:flex}}@media(min-width: 576px){header #search-form{display:flex;position:absolute}}header #search-form.show-search{right:1rem;transition:right .5s}header #search-form button:focus{outline:0}header #search-textbox{display:block;height:calc(2.25rem + 2px);padding:.375rem .75rem;font-size:1rem;line-height:1.5;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-offset:-2px;margin:12px 1rem 5px;width:100%;text-align:center}@media(min-width: 576px){header #search-textbox{margin:4px 0 5px;width:22rem;text-align:unset}}header #search-textbox:focus{outline:0}header #search-close{display:none;background-color:rgba(0,0,0,0);color:var(--textBrandColor);border-width:0;cursor:pointer;font-size:inherit;line-height:inherit}@media(min-width: 576px){header #search-close{display:block}}header #search-close:hover{color:var(--textBrandHighlightColor)}.landing #banner{display:flex;justify-content:center;padding-top:1rem;padding-bottom:1rem}.landing #banner #hero-label{margin:0;padding:30px 0 0;font-size:4rem;font-family:"Verdana",serif;text-align:center}.landing #banner #hero-lead{display:block;font-size:1rem;font-weight:var(--heroLeadTextWeight);text-align:center;margin:0;padding:0}.landing #banner #hero-logo{width:0;fill:var(--heroLogoColor)}.landing #banner #hero-text{width:20rem;margin-left:0}@media(min-width: 576px){.landing #banner #hero-logo{width:7rem}.landing #banner #hero-label{text-align:left}.landing #banner #hero-lead{text-align:left}.landing #banner #hero-text{margin-left:3rem}}.landing #panels{display:grid;grid-template-columns:[panel] auto;padding-top:30px;padding-bottom:30px;grid-gap:2rem;justify-content:center;align-content:end}@media(min-width: 768px){.landing #panels{padding-top:50px;padding-bottom:50px;grid-template-columns:[panel] auto [panel] auto}}@media(min-width: 80rem){.landing #panels{grid-template-columns:[panel] auto [panel] auto [panel] auto [panel] auto}}.landing #panels .panel{color:var(--landingPanelTextColor);opacity:.1;transition:opacity .25s linear;background-color:var(--landingPanelBackgroundColor);width:18rem;box-shadow:3px 3px 8px var(--landingPanelShadowColor);padding:1rem;border:1px solid var(--landingPanelBorderColor);border-radius:4px}.landing #panels .panel a{text-decoration:none;color:var(--textColor)}.landing #panels .panel a:hover{color:var(--textColor);text-decoration:none}.landing #panels .panel:hover{box-shadow:3px 3px 8px var(--landingPanelShadowHoverColor)}.landing #panels .panel .panel-title{text-align:center}.landing #panels .panel .panel-line{margin-left:1.6rem;margin-right:1.6rem;height:1px;border:0;background-color:var(--landingPanelTextColor)}.landing #panels .panel .panel-img-top{text-align:center;padding:0}.landing #panels .panel .panel-body{padding-top:0;padding-left:.5rem;padding-right:.5rem}@media(min-width: 768px){.landing #panels .panel .panel-body{padding-left:1.25rem;padding-right:1.25rem}}.landing #buttons{opacity:0;transition:opacity .25s ease-in;text-align:center}@media(min-width: 768px){.landing #buttons{padding-bottom:20px}}.landing #buttons .btn{margin:1rem;width:18rem}@media(min-width: 768px){.landing #buttons .btn{margin:1rem 5rem}}.logo-gallery{margin:3rem}.logo-gallery .company-logo{margin:1rem;padding:14px;display:inline-block;width:200px;height:120px;transition-duration:.8s;transform-origin:50% 50%;transition-property:none;position:relative;box-shadow:0 0 50px rgba(0,0,0,.1),0 5px 10px rgba(0,0,0,.25);border-radius:3px;background-color:var(--companyLogoBackgroundColor)}.logo-gallery .company-logo:hover{transition-property:transform,opacity,box-shadow;transform:rotate(360deg);box-shadow:0 0 50px rgba(0,0,200,.1),0 5px 10px rgba(0,0,200,.25)}.logo-gallery .outer{display:table;position:absolute;width:172px;height:92px;margin:0;padding:0}.logo-gallery .inner{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%;margin:0 auto}.logo-gallery .with-tag-line:hover:hover img{opacity:.15}.logo-gallery .with-tag-line:hover:hover .tagline{opacity:1}.logo-gallery img{position:absolute;width:172px;height:92px;object-fit:contain;transition-duration:.8s;transition-property:opacity}.logo-gallery .tagline{color:var(--companyLogoTaglineColor);opacity:0;transition-duration:.8s;transition-property:opacity}.media-resources table,.media-resources th,.media-resources td{border:0}.media-resources td{line-height:1.15em;vertical-align:middle;padding-top:1em;padding-bottom:1em}.media-resources td.logo{width:100px;border:0}.media-resources td.desc{border:0}.media-resources li{list-style-type:none}.media-resources .advice{display:grid;grid-template-columns:[panel] 1fr;grid-gap:2rem;padding-top:2rem}@media(min-width: 992px){.media-resources .advice{grid-template-columns:[panel] 1fr [panel] 1fr}}.media-resources .advice .panel{display:table;border-radius:4px;border:1px solid var(--mainBrandColor);min-height:11rem;width:100%;margin-bottom:1rem}.media-resources .advice .panel .title{position:relative;display:table-cell;width:2rem;border-top-left-radius:4px;border-bottom-left-radius:4px;background-color:var(--mainBrandColor);min-height:100%}.media-resources .advice .panel .title div{position:absolute;top:11rem;width:11rem;text-align:center;transform:rotate(-90deg);transform-origin:left top 0}.media-resources .advice .panel .title p{color:var(--textBrandColor);font-size:2rem;margin:0;padding:0;line-height:2rem}.media-resources .advice .panel .body{display:table-cell;min-height:100%;padding:1rem 0}.menu{position:relative}.menu .menu-trigger{cursor:pointer}.menu .menu-content{display:block;position:absolute;min-width:16em;z-index:75;padding:0;background-color:var(--backgroundColor);border:1px solid var(--dropdownBorderColor);border-radius:4px;margin-top:.125rem;right:0;text-align:left;top:-600px;transition:top .5s;cursor:default}.menu .menu-content a{display:block;font-weight:var(--linkWeight);color:var(--textColor);padding:.25rem 1.5rem;margin:0}.menu .menu-content a:hover,.menu .menu-content a:focus{color:var(--textBrandColor);background-color:var(--mainBrandColor);text-decoration:none}.menu .menu-content a.active{font-weight:500;background-color:transparent;background-image:var(--dropdownCheck);background-repeat:no-repeat;background-position:.4rem .6rem;background-size:.75rem .75rem;border:0}.menu .menu-content a.active:hover,.menu .menu-content a.active:focus{background-image:var(--dropdownCheckHover);background-color:var(--mainBrandColor)}.menu .menu-content a:focus{text-decoration:none}.menu .menu-content a.disabled{color:var(--disabledTextColor);background-color:var(--backgroundColor);cursor:default}.menu .menu-content h6{padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.menu .menu-content div{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.menu.show .menu-content{top:1.5rem;transition:top .5s}.notfound{text-align:center}.notfound .icon{margin-top:9rem;width:12rem;height:12rem;fill:#000}.notfound .error{padding:2rem 0 0;font-weight:500;font-size:200%}.notfound .explanation{padding:2rem 0 9rem;font-weight:var(--textWeight);font-size:100%}.pagenav{display:flex;width:100%;text-transform:uppercase;font-size:80%;margin:1.5rem 0}@media print{.pagenav{display:none}}.pagenav .left{width:50%}.pagenav .right{width:50%;text-align:right}.pagenav svg{fill:var(--linkColor);stroke:var(--linkColor);margin-left:.5em;margin-right:.5em}.pagenav svg:hover,.pagenav svgfocus{fill:var(--linkHoverColor);stroke:var(--linkHoverColor)}.pagenav a:focus{outline:0}.partner-component{display:block;margin:1em 0 1em 2em;padding-left:1em;padding-right:1em;background-color:var(--quoteCalloutBackgroundColor);border-radius:4px}@media(min-width: 768px){.partner-component{margin:1em 3em}}.partner-component table td:first-of-type{color:var(--textBrandColor);background-color:var(--mainBrandColor);font-weight:var(--tableHeaderWeight)}.partner-component table td:last-of-type{background-color:var(--backgroundColor)}.partner-component table tr:last-of-type td{border-bottom-color:var(--boxBorderColor)}.partner-component table.with-logo td:first-of-type{opacity:.9}.partner-component table.with-logo td:last-of-type{opacity:.9}.popover{display:none;z-index:75;color:var(--popoverTextColor);background-color:var(--popoverBackgroundColor);border-radius:4px;border:1px solid var(--popoverBoardColor);box-shadow:3px 3px 8px var(--popoverShadowColor),-3px -3px 8px var(--popoverShadowColor);max-width:276px}@media(min-width: 768px){.popover{max-width:350px}}@media(min-width: 1200px){.popover{max-width:500px}}.popover.show{display:block}.popover .title{text-align:center;color:var(--popoverHeaderTextColor);background-color:var(--popoverHeaderBackgroundColor);font-size:140%;border-radius:4px 4px 0 0}.popover .body{padding-left:1rem;padding-right:1rem}.popover .arrow{width:0;height:0;border-style:solid;position:absolute;border-color:transparent}.popover[x-placement^=top]{margin-bottom:5px}.popover[x-placement^=top] .arrow{border-width:5px 5px 0 5px;border-top-color:var(--popoverBackgroundColor);bottom:-5px;margin:0 5px}.popover[x-placement^=bottom]{margin-top:5px}.popover[x-placement^=bottom] .arrow{border-width:0 5px 5px;border-bottom-color:var(--popoverBackgroundColor);top:-5px;margin:0 5px}.popover[x-placement^=right]{margin-left:5px}.popover[x-placement^=right] .arrow{border-width:5px 5px 5px 0;border-right-color:var(--popoverBackgroundColor);left:-5px;margin:5px 0}.popover[x-placement^=left]{margin-right:5px}.popover[x-placement^=left] .arrow{border-width:5px 0 5px 5px;border-left-color:var(--popoverBackgroundColor);right:-5px;margin:5px 0}@media screen{.term{border-bottom:dashed 1px;cursor:help;position:relative;display:inline-block}}.primary{display:grid;grid-template-columns:[article] 100%;grid-column-gap:1rem;padding-left:.5rem;padding-right:.5rem}@media print{.primary{padding-left:0;padding-right:0}}@media screen and (min-width: 768px){.primary{grid-template-columns:[sidebar] 20% [article] calc(80% - 1rem);padding-left:1rem;padding-right:1rem}}.primary .sidebar-container{max-width:25em}@media print{.primary .sidebar-container{display:none}}.primary .toc-container{display:none}@media screen and (min-width: 1200px){.primary{grid-template-columns:[sidebar] 16% [article] calc(68% - 2rem) [toc] 16%}.primary .toc-container{display:block}}@media screen and (min-width: 1200px){.primary.notoc{grid-template-columns:[sidebar] 16% [article] calc(84% - 1rem)}}@media print{.primary #see-also{display:none}}.promotion{position:absolute;display:block;top:22px;left:-80px;width:260px;overflow:hidden;height:46px;z-index:200;color:#fff;background:#228b22;transform:rotate(-45deg);text-align:center}.promotion:hover{text-decoration:none;color:#90ee90}.search-results .gs-webResult div.gs-visibleUrl-long,.search-results .gs-promotion div.gs-visibleUrl-long{padding-bottom:0}.search-results .gsc-adBlock{display:none}.search-results table,.search-results th,.search-results td,.search-results tr{border:0;padding:0}.search-results table{margin-left:.5em;margin-right:0;border-collapse:collapse;border-spacing:0}.search-results table p:first-of-type{margin-top:0}.search-results table p:last-of-type{margin-bottom:0}.search-results tr.oneof>td{border:0}.search-results tr:first-child th:first-child{border:0}.search-results tr:first-child td:first-child{border:0}.search-results tr:first-child th:last-child{border:0}.search-results tr:first-child td:last-child{border:0}.search-results tr:last-child td{border:0}.search-results tr:last-child td:first-child{border:0}.search-results tr:last-child td:last-child{border:0}.search-results tr th:last-child{border:0}.search-results tr td:last-child{border:0}.section-index{display:grid;grid-template-columns:[entry] 1fr}@media(min-width: 576px){.section-index{grid-template-columns:[entry] 1fr [entry] 1fr}}@media(min-width: 1200px){.section-index{grid-template-columns:[entry] 1fr [entry] 1fr [entry] 1fr}}.section-index .entry{padding:1rem}@media(min-width: 768px){.section-index .entry{padding:1rem 4rem}}.section-index h5{margin-bottom:0}.section-index h5 a{font-weight:700}.section-index p{margin-top:0}.see-also{padding-top:0;display:grid;grid-template-columns:[entry] 1fr;grid-gap:1em}@media(min-width: 576px){.see-also{grid-template-columns:[entry] 1fr [entry] 1fr}}@media(min-width: 1200px){.see-also{grid-template-columns:[entry] 1fr [entry] 1fr [entry] 1fr}}.see-also .entry{padding:0}.see-also .entry .link{margin-bottom:0;margin-top:0}.see-also .entry .desc{margin-top:0}@media screen and (max-width: 767px){.sidebar-offcanvas{position:absolute;width:80%;transition:all .4s ease;left:-768px;top:3.7rem}}@media screen and (min-width: 768px){.sidebar-offcanvas{position:unset;width:auto}}@media screen{.sidebar-offcanvas.active{left:1rem}}#sidebar{order:0;font-size:85%;padding-top:.1rem}@media(min-width: 1200px){#sidebar{font-size:100%}}@supports(position: sticky){#sidebar{position:sticky;top:3.7rem}}@media(min-width: 768px){#sidebar{padding-top:1rem}}@supports(position: sticky){#sidebar .directory{max-height:calc(100vh - 9rem)}}@media(min-width: 768px){#sidebar .directory{display:block !important}@supports(position: sticky){#sidebar .directory{max-height:calc(100vh - 9rem);overflow-y:auto}}}#sidebar .directory .body>ul.leaf-section>li{margin-left:0}#sidebar .directory .card{background-color:var(--backgroundColor);margin-top:.1rem;margin-bottom:.1rem;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-clip:border-box;border:1px solid var(--dividerBarColor);border-radius:4px}#sidebar .directory .card .header{margin-bottom:0;background-color:rgba(0,0,0,.03);border:0;border-bottom:1px solid rgba(0,0,0,0);padding:.75em 1.25em;color:var(--textColor);width:100%;text-align:left;outline:none;font:inherit;transition:border-bottom-color .6s}#sidebar .directory .card .header.dynamic{color:var(--linkColor);cursor:pointer}#sidebar .directory .card .header.dynamic:hover{color:var(--linkHoverColor)}#sidebar .directory .card .header[aria-expanded=true]{border-bottom-color:var(--dividerBarColor);transition:border-bottom-color .6s}#sidebar .directory .card .header svg{margin-right:.3em}#sidebar .directory .card .header a{text-decoration:none}#sidebar .directory .card .body{flex:1 1 auto;overflow:hidden;padding:0 1em;max-height:0;transform:scaleY(0) scaleX(0);transition:max-height .6s ease-out,padding,transform .6s}#sidebar .directory .card .body.show{padding:.5em 1em;transform:scaleY(1) scaleX(1)}#sidebar .directory .card .body.default{padding:.5em 1em;transform:scaleY(1) scaleX(1);max-height:unset}#sidebar .directory .card .body button{cursor:pointer;border:0;background:var(--sidebarRightChevron) no-repeat;width:1rem;height:1rem;left:-1.3rem;position:absolute}#sidebar .directory .card .body button.show{background:var(--sidebarDownChevron) no-repeat}#sidebar .directory .card .body button:focus{outline:0}#sidebar .directory .card .body button:hover,#sidebar .directory .card .body button:focus{outline:0;background:var(--sidebarRightChevronHover) no-repeat}#sidebar .directory .card .body button:hover.show,#sidebar .directory .card .body button:focus.show{background:var(--sidebarDownChevronHover) no-repeat}#sidebar .directory .card .body a{font-weight:var(--sidebarLinkWeight)}#sidebar .directory .card .body ul{list-style:none;padding:0;margin:0;display:none}#sidebar .directory .card .body ul[aria-expanded=true]{display:block}#sidebar .directory .card .body li{margin:.7em 0 .7em 1.3rem;padding:0;font-size:85%;position:relative}#sidebar .directory .card .body li .current{color:var(--linkActiveColor);font-weight:var(--sidebarCurrentPageWeight)}.tabset{padding:0;margin:1em 0 1em 1em}@media(min-width: 768px){.tabset{margin:1em}}.tabset .tab-strip button{display:inline-block;margin:0 3px;border:1px solid var(--tabsetBorderColor);border-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;padding:0 1rem;transform:skewX(-20deg);transform-origin:left bottom;cursor:pointer;outline:0;font:inherit;background-color:var(--tabsetUnselectedTabBackgroundColor)}.tabset .tab-strip button span{transform:skewX(6deg);color:var(--tabsetUnselectedTabTextColor);font-size:80%}.tabset .tab-strip button:hover span,.tabset .tab-strip button:focus span{color:var(--linkActiveColor)}.tabset .tab-strip button[aria-selected=true]{background-color:var(--tabsetSelectedTabBackgroundColor);cursor:default;box-shadow:none;border-bottom:solid 2px var(--mainBrandColor)}.tabset .tab-strip button[aria-selected=true] span{color:var(--tabsetSelectedTabTextColor)}.tabset .tab-content{border:1px solid var(--tabsetBorderColor);border-radius:4px;padding:1rem;box-shadow:3px 3px 8px var(--tabsetShadowColor)}.tabset .tab-content p:first-of-type{margin-top:0}.tabset .tab-content p:last-of-type{margin-bottom:0}*{box-sizing:border-box}@keyframes ticker{0%{transform:translate3d(0, 0, 0);visibility:visible}100%{transform:translate3d(-100%, 0, 0)}}.ticker-wrap{position:fixed;z-index:150;cursor:pointer;bottom:0;width:100%;overflow:hidden;height:4rem;background-color:red;padding-left:100%;box-sizing:content-box}.ticker-wrap .ticker{display:inline-block;height:4rem;line-height:4rem;white-space:nowrap;padding-right:100%;box-sizing:content-box;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:ticker;animation-duration:30s}.ticker-wrap .ticker .item{display:inline-block;padding:0 2rem;font-size:2rem;color:#fff}.toc{order:0;padding-top:.1rem}@media(min-width: 768px){.toc{padding-top:1rem}}@supports(position: sticky){.toc{position:sticky;top:3.7rem}}.toc div{padding-left:.5em;border-left:1px solid var(--dividerBarColor)}@supports(position: sticky){.toc div{max-height:calc(100vh - 9rem)}}@media(min-width: 768px){.toc div{display:block !important}@supports(position: sticky){.toc div{max-height:calc(100vh - 9rem);overflow-y:auto}}}.toc div li{font-size:.9rem}.toc div li a{font-weight:var(--tocLinkWeight)}.toc div li a.current{color:var(--linkActiveColor);font-weight:bold}.toc div ol{list-style-type:none !important;padding-left:0;padding-bottom:0;margin:0}.toc div ol ol{padding-left:1em}.toc-inlined{display:block;margin-bottom:2rem}@media print{.toc-inlined{display:none}}@media(min-width: 1200px){.toc-inlined{display:none}}.toc-inlined div{border-left:0}.toc-inlined div li{font-size:1rem}.toc-inlined div ol{list-style-type:none !important;padding-left:0;padding-bottom:0;margin:0}.toc-inlined div ol ol{padding-left:1em}.toc-inlined div ol a{font-weight:var(--tocLinkWeight)}@media screen{.toc-forced{display:block}}/*# sourceMappingURL=all.css.map */ +:root{--mainBrandColor: #466bb0;--secondBrandColor: #286ac7;--textBrandColor: #ffffff;--textBrandColorLight: #cccccc;--textBrandHighlightColor: #de7d40}:root .preliminary-site{--secondBrandColor: #68aaf7}:root .archive-site{--secondBrandColor: #041a77}body{--backgroundColor: #ffffff;--textColor: #535f61;--textCodeColor: #d14;--disabledTextColor: #d7dcdc;--linkColor: #306bcc;--linkHoverColor: #1d67a0;--linkDisabledColor: #cccccc;--linkActiveColor: #b05464;--h1Color: #2e2e2e;--h2Color: #2e2e2e;--h3Color: #404040;--h4Color: #404040;--h5Color: #404040;--h6Color: #404040;--h2UnderlineColor: var(--mainBrandColor);--buttonActiveColor: #b05464;--dividerBarColor: rgba(0, 0, 0, .1);--glossaryHeaderColor: #cccccc;--deprecatedBackgroundColor: silver;--boxBorderColor: var(--secondBrandColor);--quoteCalloutBackgroundColor: #f3f3f3;--quoteCalloutBorderColor: #ebebeb;--tipCalloutBackgroundColor: #f2fff2;--tipCalloutBorderColor: #eaf7ea;--ideaCalloutBackgroundColor: #ffffe0;--ideaCalloutBorderColor: #f7f7d8;--warningCalloutBackgroundColor: #fff2f2;--warningCalloutBorderColor: #f7eaea;--preBlockShadowColor: #a7a7a7;--preBlockBorderColor: #f2f2f2;--preBlockBackgroundColor: var(--backgroundColor);--preBlockCommandOutputTextColor: var(--textColor);--preBlockCommandOutputBackgroundColor: #f8f8f8;--dropdownBorderColor: #000;--dropdownCheck: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='black' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--dropdownCheckHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='white' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--tabsetBorderColor: #f2f2f2;--tabsetShadowColor: #a7a7a7;--tabsetUnselectedTabTextColor: #306bcc;--tabsetUnselectedTabBackgroundColor: #ffffff;--tabsetSelectedTabTextColor: var(--textColor);--tabsetSelectedTabBackgroundColor: #eeeeff;--sidebarRightChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='black' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarRightChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='orange' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarDownChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='black' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--sidebarDownChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='orange' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--popoverBorderColor: #777777;--popoverShadowColor: #777777;--popoverHeaderBackgroundColor: #f8f8f8;--popoverHeaderTextColor: var(--textColor);--popoverBackgroundColor: var(--backgroundColor);--popoverTextColor: var(--textColor);--headerLightShadowColor: rgba(0, 0, 0, .14);--headerDarkShadowColor: rgba(0, 0, 0, .28);--figureBackgroundColor: var(--backgroundColor);--figureCaptionColor: var(--textColor);--heroLogoColor: var(--mainBrandColor);--landingPanelBackgroundColor: #f8f8f8;--landingPanelBorderColor: #dddddd;--landingPanelTextColor: var(--textColor);--landingPanelShadowColor: #a7a7a7;--landingPanelShadowHoverColor: #a7a7ee;--floatingButtonColor: rgba(0, 0, 0, .4);--floatingButtonHoverColor: var(--textBrandHighlightColor);--companyLogoBackgroundColor: var(--backgroundColor);--companyLogoTaglineColor: var(--textColor);--textWeight: 400;--linkWeight: 400;--h1Weight: 400;--h2Weight: 400;--h3Weight: 500;--h4Weight: 500;--h5Weight: 500;--h6Weight: 500;--tableHeaderWeight: 400;--boldTextWeight: 600;--heroLeadWeight: 300;--blogAttributeWeight: 600;--sectionIndexLinkWeight: 400;--buttonWeight: 400;--tocLinkWeight: 400;--sidebarLinkWeight: 400;--sidebarCurrentPageWeight: 500;--glossaryHeaderWeight: 300;--glossaryWordWeight: 500;--figureCaptionWeight: 400;--textCodeWeight: 400;--faqQuestionWeight: 400}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:rgba(255,255,255,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function,.token.class-name{color:#dd4a68}.token.regex,.token.important,.token.variable{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.dark-theme{--backgroundColor: #5a5a5a;--textColor: #dddddd;--textCodeColor: #cccccc;--disabledTextColor: #9d9d9d;--linkColor: #e9ffaa;--linkHoverColor: #de7d40;--linkDisabledColor: #444444;--linkActiveColor: #de7d40;--h1Color: #ffffff;--h2Color: #ffffff;--h3Color: #f8f8f8;--h4Color: #f8f8f8;--h5Color: #f8f8f8;--h6Color: #f8f8f8;--h2UnderlineColor: var(--mainBrandColor);--buttonActiveColor: #e07484;--dividerBarColor: rgba(255, 255, 255, .1);--glossaryHeaderColor: #cccccc;--deprecatedBackgroundColor: silver;--boxBorderColor: var(--textColor);--quoteCalloutBackgroundColor: #404040;--quoteCalloutBorderColor: #404040;--tipCalloutBackgroundColor: #404040;--tipCalloutBorderColor: #404040;--ideaCalloutBackgroundColor: #404040;--ideaCalloutBorderColor: #404040;--warningCalloutBackgroundColor: #404040;--warningCalloutBorderColor: #404040;--preBlockShadowColor: #777777;--preBlockBorderColor: #777777;--preBlockBackgroundColor: #2d2d2d;--preBlockCommandOutputTextColor: var(--textColor);--preBlockCommandOutputBackgroundColor: #404040;--dropdownBorderColor: #ffffff;--dropdownCheck: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='white' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--dropdownCheckHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='white' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");--tabsetBorderColor: #777777;--tabsetShadowColor: #777777;--tabsetUnselectedTabTextColor: #e9ffaa;--tabsetUnselectedTabBackgroundColor: #5a5a5a;--tabsetSelectedTabTextColor: #a7a7a7;--tabsetSelectedTabBackgroundColor: #404040;--sidebarRightChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='white' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarRightChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.436 407.436'%3E%3Cpath fill='orange' d='M112.814 0L91.566 21.178l181.946 182.54-181.946 182.54 21.248 21.178 203.055-203.718z'/%3E%3C/svg%3E");--sidebarDownChevron: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='white' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--sidebarDownChevronHover: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 407.437 407.437'%3E%3Cpath fill='orange' d='M386.258 91.567l-182.54 181.945L21.179 91.567 0 112.815 203.718 315.87l203.719-203.055z'/%3E%3C/svg%3E");--popoverBorderColor: #777777;--popoverShadowColor: #777777;--popoverHeaderBackgroundColor: #404040;--popoverHeaderTextColor: var(--textColor);--popoverBackgroundColor: var(--backgroundColor);--popoverTextColor: var(--textColor);--headerLightShadowColor: rgba(0, 0, 0, .14);--headerDarkShadowColor: rgba(0, 0, 0, .28);--figureBackgroundColor: #a3a3a3;--figureCaptionColor: #ffffff;--heroLogoColor: var(--textColor);--landingPanelBackgroundColor: #404040;--landingPanelBorderColor: #777777;--landingPanelTextColor: var(--textColor);--landingPanelShadowColor: #777777;--landingPanelShadowHoverColor: #999999;--floatingButtonColor: rgba(0, 0, 0, .4);--floatingButtonHoverColor: var(--textBrandHighlightColor);--companyLogoBackgroundColor: lightgrey;--companyLogoTaglineColor: #000;--textWeight: 300;--linkWeight: 300;--h1Weight: 400;--h2Weight: 400;--h3Weight: 500;--h4Weight: 500;--h5Weight: 500;--h6Weight: 500;--tableHeaderWeight: 400;--boldTextWeight: 600;--heroLeadWeight: 300;--blogAttributeWeight: 500;--sectionIndexLinkWeight: 400;--buttonWeight: 400;--tocLinkWeight: 300;--sidebarLinkWeight: 300;--sidebarCurrentPageWeight: 500;--glossaryHeaderWeight: 300;--glossaryWordWeight: 500;--figureCaptionWeight: 400;--textCodeWeight: 300;--faqQuestionWeight: 400}.dark-theme .token.comment,.dark-theme .token.block-comment,.dark-theme .token.prolog,.dark-theme .token.doctype,.dark-theme .token.cdata{color:#999}.dark-theme .token.punctuation{color:#ccc}.dark-theme .token.tag,.dark-theme .token.attr-name,.dark-theme .token.namespace,.dark-theme .token.deleted{color:#e2777a}.dark-theme .token.function-name{color:#6196cc}.dark-theme .token.boolean,.dark-theme .token.number,.dark-theme .token.function{color:#f08d49}.dark-theme .token.property,.dark-theme .token.class-name,.dark-theme .token.constant,.dark-theme .token.symbol{color:#f8c555}.dark-theme .token.selector,.dark-theme .token.important,.dark-theme .token.atrule,.dark-theme .token.keyword,.dark-theme .token.builtin{color:#dda9d8}.dark-theme .token.string,.dark-theme .token.char,.dark-theme .token.attr-value,.dark-theme .token.regex,.dark-theme .token.variable{color:#7ec699}.dark-theme .token.operator,.dark-theme .token.entity,.dark-theme .token.url{color:#67cdcc}.dark-theme .token.important,.dark-theme .token.bold{font-weight:bold}.dark-theme .token.italic{font-style:italic}.dark-theme .token.entity{cursor:help}.dark-theme .token.inserted{color:green}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:none}table{border-collapse:collapse;border-spacing:0}*,*::before,*::after{box-sizing:border-box}@media screen{:target::before{content:"";display:block;height:3.7rem;margin-top:-3.7rem}tr[id]::before{content:normal}html{overflow-y:scroll;position:relative;min-height:100%}body{margin-top:3.7rem;margin-bottom:calc(7rem + 3rem);font-family:"Work Sans",sans-serif;color:var(--textColor);background-color:var(--backgroundColor)}}body{line-height:1.5}a{color:var(--linkColor);text-decoration:none;font-weight:var(--linkWeight);font-family:"Chivo",sans-serif}a:hover,a:focus{color:var(--linkHoverColor);text-decoration:underline;font-weight:var(--linkWeight);outline:0}a.disabled{color:var(--linkDisabledColor);text-decoration:none;font-weight:var(--linkWeight)}a.active{color:var(--linkActiveColor);text-decoration:none;font-weight:var(--linkWeight)}a.dropdown-item{cursor:pointer}table,th,td,tr{padding:.5em}table{margin-left:.5em;margin-right:.5em;border-collapse:separate;border-spacing:0}table p:first-of-type{margin-top:0}table p:last-of-type{margin-bottom:0}th{color:var(--textBrandColor);background-color:var(--mainBrandColor);font-weight:var(--tableHeaderWeight)}th code{color:var(--textBrandColor)}tr.oneof>td{border-bottom:1px dashed var(--dividerBarColor);border-top:1px dashed var(--dividerBarColor)}th,td{border-left:1px solid var(--boxBorderColor);border-top:1px solid var(--boxBorderColor)}tr:first-child th:first-child{border-radius:4px 0 0}tr:first-child td:first-child{border-radius:4px 0 0}tr:first-child th:last-child{border-radius:0 4px 0 0}tr:first-child td:last-child{border-radius:0 4px 0 0}tr:last-child td{border-bottom:1px solid var(--boxBorderColor)}tr:last-child td:first-child{border-radius:0 0 0 4px}tr:last-child td:last-child{border-radius:0 0 4px}tr th:last-child{border-right:1px solid var(--boxBorderColor)}tr td:last-child{border-right:1px solid var(--boxBorderColor)}thead+tbody tr:first-child td:first-child{border-radius:0}thead+tbody tr:first-child td:last-child{border-radius:0}p{font-size:1rem;font-weight:var(--textWeight);margin:.75em 0}@media(min-width: 768px){p{margin:1.5em 0}}li,dt,dd{font-size:1rem;font-weight:var(--textWeight);margin:.25em}ol,ul,dl{list-style:initial;font-size:1rem;font-weight:var(--textWeight);margin:0 0 0 1.5em;padding:0}li p,dt p,dd p{margin:.4em 0}ol{list-style:decimal}h1,h2,h3,h4,h5,h6{border:0;line-height:1.2}h1{font-size:2.5rem;color:var(--h1Color);font-weight:var(--h1Weight);margin-bottom:0}h2{font-size:2rem;color:var(--h2Color);font-weight:var(--h2Weight);margin-top:3rem;margin-bottom:1.8rem}h2::before{display:block;content:" ";width:5rem;border-bottom:2px solid var(--mainBrandColor);margin-bottom:1.1rem;visibility:visible}h3{font-size:1.85rem;color:var(--h3Color);font-weight:var(--h3Weight);letter-spacing:1px;margin-bottom:20px;margin-top:30px}h4{font-size:1.85rem;color:var(--h4Color);font-weight:var(--h4Weight);margin:30px 0 20px}h4+p{margin:5px 0}@media(min-width: 768px){h4+p{margin:10px 0}}h5{font-size:1.15rem;color:var(--h5Color);font-weight:var(--h5Weight)}h6{font-size:.9rem;color:var(--h6Color);font-weight:var(--h6Weight)}.self-link{position:relative;left:.5em;top:-0.1em;opacity:0;font-size:.6em;display:none}@media screen{.self-link{display:unset}}h2:hover .self-link,h3:hover .self-link,h4:hover .self-link,h5:hover .self-link,h6:hover .self-link,dt:hover .self-link{transition:opacity .4s ease-in-out;opacity:1}em{font-style:italic}strong{font-weight:var(--boldTextWeight)}img{width:100%}blockquote{display:block;margin:1em 0 1em 2em;padding-left:1em;padding-right:1em;background-color:var(--quoteCalloutBackgroundColor);border-radius:4px}@media(min-width: 768px){blockquote{margin:1em 3em}}.deprecated{background:var(--deprecateBackgroundColor)}div.aliases::before{content:"Alternate forms:"}@media print{h1,h2,h3{color:#000;background:none;page-break-after:avoid}img{max-width:100% !important}blockquote,img{page-break-inside:avoid}}.icon{width:1em;height:1em;display:inline;fill:var(--textColor);stroke:var(--textColor);vertical-align:middle}.large-icon{width:1.4em;height:1.4em;display:inline;fill:var(--textColor);stroke:var(--textColor);vertical-align:middle}.page-icon{margin-right:.3em}.title-icon{margin-right:.3em}.title-icon .icon{width:2rem;height:2rem}.title-area{display:flex;margin-bottom:2.5rem;align-items:center}.flipped{transform:scaleX(-1)}.subtitle{margin-top:.15rem;margin-bottom:0;padding:0;font-size:125%}.byline{margin-top:.15rem;margin-bottom:0;padding:0;text-transform:uppercase;font-size:75%}.attribution{font-weight:var(--blogAttributeWeight)}#subscribe{padding:1em;font-size:1.2em;background-color:var(--backgroundColor);text-align:center}#subscribe svg{margin-right:.5em}[aria-label=Breadcrumb]{text-transform:uppercase;margin:1.1em 0}@media print{[aria-label=Breadcrumb]{display:none}}[aria-label=Breadcrumb] ol{margin:0;padding:0;list-style:none}[aria-label=Breadcrumb] li{display:inline;font-size:80%;margin:0}[aria-label=Breadcrumb] li+li::before{display:inline-block;margin:0 .55em 0 .25em;content:"/"}[aria-label=Breadcrumb] a:focus{outline:0}.btn{display:inline-block;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:4px;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;background-color:var(--secondBrandColor);color:var(--textBrandColor);font-weight:var(--buttonWeight);letter-spacing:1px;cursor:pointer;box-shadow:3px 3px 8px #a7a7a7}.btn:hover{background-color:var(--mainBrandColor);color:var(--textBrandColor);text-decoration:none}.btn:active{background-color:var(--buttonActiveColor);color:var(--textBrandColor)}.btn:focus{color:var(--textBrandColor)}.callout{padding:.5em;border-radius:4px;border-width:1px;border-style:solid;display:inline-block;position:relative;margin:1em 0 1em 1em;max-width:calc(100% - .5em - .5em - 1em)}@media(min-width: 768px){.callout{margin:1.25em;max-width:calc(100% - .5em - .5em - 1.25em - 1.25em)}}.callout .type{left:-0.75em;top:50%;transform:translateY(-50%);position:absolute}.callout .type svg{fill:var(--boxBorderColor)}.callout .content{margin-left:1em;min-height:100%}.callout .content p:first-of-type{margin-top:0}.callout .content p:last-of-type{margin-bottom:0}.callout.tip{background-color:var(--tipCalloutBackgroundColor);border-color:var(--tipCalloutBorderColor)}.callout.idea{background-color:var(--ideaCalloutBackgroundColor);border-color:var(--ideaCalloutBorderColor)}.callout.warning{background-color:var(--warningCalloutBackgroundColor);border-color:var(--warningCalloutBorderColor)}.callout.quote{background-color:var(--quoteCalloutBackgroundColor);border-color:var(--quoteCalloutBorderColor);font-style:italic}.callout:hover .type svg{animation:shake 2.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;transform:translate3d(0, 0, 0);backface-visibility:hidden;perspective:1000px}@keyframes shake{10%,90%{transform:translate3d(-1px, 0, 0)}20%,80%{transform:translate3d(2px, 0, 0)}30%,50%,70%{transform:translate3d(-4px, 0, 0)}40%,60%{transform:translate3d(4px, 0, 0)}}.call-to-action{text-align:center;opacity:0;transition:opacity .25s ease-in}@media print{.call-to-action{display:none}}.call-to-action .btn{margin:1rem;width:13rem}@media(min-width: 768px){.call-to-action .btn{margin:1rem 5rem}}.call-to-action .wide{width:20rem}.call-to-action button.btn{outline:0}.call-to-action button.btn:focus{text-decoration:underline}.call-to-action span.btn{cursor:not-allowed}.call-to-action span.btn:hover{background-color:var(--secondBrandColor);color:var(--textBrandColor)}.call-to-action span.btn:active{background-color:var(--secondBrandColor);color:var(--textBrandColor)}.call-to-action span.btn:focus{background-color:var(--secondBrandColor);color:var(--textBrandColor)}code{color:var(--textCodeColor);font-size:80%;font-weight:var(--textCodeWeight);font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;word-break:normal}pre{margin:1em 0 1em 1em;min-width:12em;max-height:31em;border:1px solid var(--preBlockBorderColor);border-radius:4px;box-shadow:3px 3px 8px var(--preBlockShadowColor);font-size:87.5%;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none;background:var(--preBlockBackgroundColor);overflow:auto}@media(min-width: 768px){pre{margin:1em}}@media print{pre{page-break-inside:avoid}}pre code{display:block;padding:.5em;color:var(--textColor)}pre code.command-output{padding:0}pre code.command-output .command{padding:1.5em 1em}@media(min-width: 768px){pre code.command-output .command{padding:.5em .5em 0}}pre code.command-output .output{color:var(--preBlockCommandOutputTextColor);background-color:var(--preBlockCommandOutputBackgroundColor);font-style:italic;padding:1em;float:left;clear:left;min-width:100%}@media(min-width: 768px){pre code.command-output .output{padding:0 .5em .5em}}pre code.command-output div:only-of-type{padding:1.5em 1em}@media(min-width: 768px){pre code.command-output div:only-of-type{padding:.5em}}@media print{pre{max-height:unset}}div.toolbar{position:relative}div.toolbar button{font-size:.8em;padding:0 .5em;border-radius:.3em;background-color:var(--secondBrandColor);cursor:pointer;color:var(--textBrandColor);text-decoration:none;border:0;position:absolute;top:3px;z-index:1;transition:opacity .4s ease-in-out;opacity:0}div.toolbar button.toolbar-show{transition:opacity 1.1s ease-in-out;opacity:1}div.toolbar button.copy{right:2.2rem;width:3rem}div.toolbar button.download{right:5.5rem}div.toolbar button.print{right:7.25rem}div.toolbar svg{width:.8em;height:.8em;display:inline;fill:var(--textBrandColor);stroke:var(--textBrandColor)}.community-item{display:table-row}.community-item .logo{display:table-cell;width:65px;vertical-align:middle;padding-left:1em;padding-top:1em;padding-bottom:1em}.community-item .desc{display:table-cell;vertical-align:middle;padding-left:1em;padding-top:1em;padding-bottom:1em}#endnotes-container{display:none}@media print{#endnotes-container.show{display:block}}@media screen{.endnote-ref{display:none}}.faq .question{font-weight:var(--faqQuestionWeight);text-transform:uppercase}.faq .answer{margin-left:2.5em}.faq-landing{column-count:1;column-gap:2rem}@media(min-width: 576px){.faq-landing{column-count:2}}.faq-landing .panel{display:inline-block;border:1px solid var(--boxBorderColor);border-radius:4px;width:100%;margin-bottom:2rem}.faq-landing .panel .header{color:var(--textBrandColor);background-color:var(--boxBorderColor);padding:.75rem 1.25rem;border-bottom:1px solid rgba(0,0,0,.125)}.faq-landing .panel .body{padding:1.25rem}.faq-landing .panel .body ul{list-style:none;padding:0;margin:0}figure{margin:1.5rem auto;padding:.5rem;background-color:var(--figureBackgroundColor);border-radius:4px}figure .wrapper-with-intrinsic-ratio{position:relative;height:0}figure .element-to-stretch{position:absolute;top:0;left:0;width:100%;height:100%}figure figcaption{text-align:center;font-size:1.15rem;font-style:italic;font-weight:var(--figureCaptionWeight);color:var(--figureCaptionColor);padding-top:.5rem}#sidebar-toggler,#scroll-to-top,#switch-lang,#edit-this-page,#report-site-bugs{z-index:15;outline:none;background-color:rgba(var(--backgroundColor), 0.7);cursor:pointer;padding:3px 5px;border-radius:10px;font-size:1rem;border:0;box-shadow:0 0 2px 2px var(--floatingButtonColor)}@media print{#sidebar-toggler,#scroll-to-top,#switch-lang,#edit-this-page,#report-site-bugs{display:none}}#sidebar-toggler svg,#scroll-to-top svg,#switch-lang svg,#edit-this-page svg,#report-site-bugs svg{width:1.5em;height:1.5em;vertical-align:middle;fill:var(--floatingButtonColor)}#sidebar-toggler svg:hover,#scroll-to-top svg:hover,#switch-lang svg:hover,#edit-this-page svg:hover,#report-site-bugs svg:hover{fill:var(--floatingButtonHoverColor)}#sidebar-toggler{position:absolute;top:3.7rem;right:10px}@media(min-width: 768px){#sidebar-toggler{display:none}}@media print{#scroll-to-top-container{display:none}}@media(min-width: 1200px){#scroll-to-top-container{display:none}}#scroll-to-top-container #scroll-to-top{display:none;position:fixed;top:3.7rem;right:10px}#scroll-to-top-container #scroll-to-top.show{display:block}#switch-lang-container,#edit-this-page-container,#report-site-bugs-container{display:none}@media screen{#switch-lang-container,#edit-this-page-container,#report-site-bugs-container{display:block}}#switch-lang-container #switch-lang,#switch-lang-container #edit-this-page,#switch-lang-container #report-site-bugs,#edit-this-page-container #switch-lang,#edit-this-page-container #edit-this-page,#edit-this-page-container #report-site-bugs,#report-site-bugs-container #switch-lang,#report-site-bugs-container #edit-this-page,#report-site-bugs-container #report-site-bugs{display:block;position:fixed;right:1rem;background-color:bisque}#switch-lang-container #switch-lang.disabled,#switch-lang-container #edit-this-page.disabled,#switch-lang-container #report-site-bugs.disabled,#edit-this-page-container #switch-lang.disabled,#edit-this-page-container #edit-this-page.disabled,#edit-this-page-container #report-site-bugs.disabled,#report-site-bugs-container #switch-lang.disabled,#report-site-bugs-container #edit-this-page.disabled,#report-site-bugs-container #report-site-bugs.disabled{background-color:#d3d3d3;cursor:default}#switch-lang-container #switch-lang.disabled svg:hover,#switch-lang-container #edit-this-page.disabled svg:hover,#switch-lang-container #report-site-bugs.disabled svg:hover,#edit-this-page-container #switch-lang.disabled svg:hover,#edit-this-page-container #edit-this-page.disabled svg:hover,#edit-this-page-container #report-site-bugs.disabled svg:hover,#report-site-bugs-container #switch-lang.disabled svg:hover,#report-site-bugs-container #edit-this-page.disabled svg:hover,#report-site-bugs-container #report-site-bugs.disabled svg:hover{fill:var(--floatingButtonColor)}#switch-lang-container #switch-lang{bottom:1rem}@media(min-width: 576px){#switch-lang-container #switch-lang{bottom:calc(1rem + 7rem)}}#edit-this-page-container #edit-this-page{bottom:6rem}@media(min-width: 576px){#edit-this-page-container #edit-this-page{bottom:calc(6rem + 7rem)}}#report-site-bugs-container #report-site-bugs{bottom:3.5rem}@media(min-width: 576px){#report-site-bugs-container #report-site-bugs{bottom:calc(3.5rem + 7rem)}}footer{background-image:linear-gradient(to right, var(--mainBrandColor), var(--secondBrandColor));color:var(--textBrandColor);position:absolute;bottom:0;width:100%;height:7rem;overflow:hidden;padding:1rem 4px 1.5rem;text-align:center;display:grid;grid-template-columns:[user-links] 45% [info] 55% [dev-links] 0%;grid-template-rows:100%}@media print{footer{display:none}}@media(min-width: 576px){footer{padding:1.5rem 1.25rem 1rem}}@media(min-width: 992px){footer{grid-template-columns:[user-links] 30% [info] 40% [dev-links] 30%}}footer .user-links{grid-column:user-links;text-align:left}footer .info{grid-column:info}footer .info .copyright{padding:0;margin-top:8px;color:var(--textBrandColorLight);line-height:1.6em;font-size:.5em;text-align:right !important}@media(min-width: 992px){footer .info .copyright{text-align:center !important;font-size:.7em;margin:0}}footer .info .copyright a{color:var(--textBrandColorLight);text-decoration:underline}footer .info .copyright a:hover,footer .info .copyright a:focus{color:var(--textBrandColor)}footer .dev-links{grid-column:dev-links;text-align:right;display:none}@media(min-width: 992px){footer .dev-links{display:block}}footer .channel{position:relative;display:inline-flex;margin-top:8px;padding:6px;border-width:2px;border-color:rgba(0,0,0,0);border-style:solid;border-radius:2px;color:var(--textBrandColor)}@media(min-width: 576px){footer .channel{margin:0 .2rem}}footer .channel a{text-decoration:none}footer .channel svg{width:27px;height:27px;fill:var(--textBrandColor);stroke:var(--mainBrandColor)}@media(min-width: 576px){footer .channel svg{width:35px;height:35px}}footer .channel span{opacity:0;background-color:transparent;color:var(--textBrandColor);text-align:center;position:absolute;width:212px;left:-82px;top:-23px;font-size:75%}footer .channel:hover,footer .channel:focus{border-color:#fff;border-radius:25px;box-shadow:0 0 2px 2px var(--textBrandColor);transition:border-radius 1s,border-color 1s ease;outline:0}footer .channel:hover span,footer .channel:focus span{opacity:1;transition:opacity .5s}footer .tag{padding:0 1rem;font-style:italic;margin:0;line-height:1.6em;font-size:.8em}.glossary .trampolines{font-size:1.85rem;text-align:center;padding-top:.8rem}@media print{.glossary .trampolines{display:none}}@media screen{.glossary .entries .letter:target::before{height:calc(3.7rem - 1rem);margin-top:calc(0 - calc(3.7rem - 1rem))}}.glossary .entries h4{font-size:1.65rem;font-weight:var(--glossaryHeaderWeight);border-bottom:1px solid;color:var(--glossaryHeaderColor);border-color:var(--glossaryHeaderColor);background-color:var(--backgroundColor);padding-top:2.2rem;padding-bottom:.15rem;position:sticky;top:calc(3.7rem - 1rem);margin-top:0;margin-bottom:0;z-index:10}.glossary .entries dl{margin-left:0}.glossary .entries dl dt{font-weight:var(--glossaryWordWeight);list-style-type:none;margin-bottom:0;margin-top:.9rem;margin-left:0;text-transform:uppercase}.glossary .entries dl dd{list-style-type:none;margin-left:1.5rem}header{background-image:linear-gradient(to right, var(--mainBrandColor), var(--secondBrandColor));box-shadow:0 0 2px 2px var(--headerLightShadowColor),0 2px 4px 2px var(--heaserDarkShadowColor);padding-top:.2em;padding-bottom:.2em;position:fixed;top:0;right:0;left:0;z-index:100}@media print{header{display:none}}header #brand{display:inline-block;font-size:1.25rem;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;line-height:inherit;white-space:nowrap;width:100%}@media(min-width: 576px){header #brand{width:unset}}@media(max-width: 575px){header #brand.open-hamburger{display:none}}header #brand .logo{width:2em;height:2em;top:3px;left:.8em;position:fixed;fill:var(--textBrandColor);transition-duration:.8s;transition-property:transform;transform-origin:50% 50%}header #brand .logo circle{fill:var(--mainBrandColor);stroke:var(--textBrandColor)}@media(min-width: 768px){header #brand .logo{width:3em;height:3em}}header #brand .logo:hover{transform:rotate(360deg)}header #brand .name{color:var(--textBrandColor);font-weight:400;vertical-align:bottom;line-height:1.1em;display:inline-block;padding-top:.35rem;text-align:center;margin-left:0;margin-right:0;width:100%}@media(min-width: 576px){header #brand .name{text-align:left;margin-left:3em;margin-right:1rem;width:unset}}@media(min-width: 768px){header #brand .name{margin-left:4.2em}}header #brand:hover span,header #brand:focus span{color:var(--textBrandHighlightColor)}header a,header button{background-color:transparent;border:0;font-weight:500;color:var(--textBrandColor);font-size:1.1em;margin-left:.3rem;margin-right:.3rem;stroke:var(--textBrandColor);fill:var(--textBrandColor);padding:0}@media(min-width: 576px){header a,header button{font-size:.9em;margin-left:.58rem;margin-right:.58rem}}header a svg.icon,header button svg.icon{fill:var(--textBrandColor);stroke:var(--textBrandColor)}header a:hover,header button:hover{cursor:pointer}header a:hover,header a:focus,header button:hover,header button:focus{text-decoration:none;color:var(--textBrandHighlightColor);outline:0}header a:hover svg.icon,header a:focus svg.icon,header button:hover svg.icon,header button:focus svg.icon{fill:var(--textBrandHighlightColor);stroke:var(--textBrandHighlightColor)}header div.menu{display:inline-block}header svg.icon{width:1.1em;height:1.1em}header #hamburger{display:inline-block;position:absolute;top:.8rem;right:1.3rem}@media(min-width: 576px){header #hamburger{display:none}}header #hamburger svg.icon{fill:var(--textBrandColor);stroke:var(--textBrandColor)}header #header-links{display:none;top:.6rem;right:1.1rem;transition:right .5s}@media(max-width: 575px){header #header-links.open-hamburger{display:block;text-align:center;margin-top:1em;padding-left:1em;padding-right:2.5em}}@media(min-width: 576px){header #header-links{display:inline-block;position:absolute}}header #header-links.show-search{right:-700px;transition:right .5s}header #header-links span{border-bottom:solid 3px var(--textBrandColor);border-radius:2px;color:var(--textBrandColor);cursor:default;font-weight:var(--linkWeight);font-family:"Chivo",sans-serif;font-size:1.1em;margin-left:.3rem;margin-right:.3rem}@media(min-width: 576px){header #header-links span{font-size:.9em;margin-left:.58rem;margin-right:.58rem}}header #search-show{display:none}@media(min-width: 576px){header #search-show{display:inline-block}}header #search-form{display:none;top:0;right:-700px;transition:right .5s}@media(max-width: 575px){header #search-form.open-hamburger{display:flex}}@media(min-width: 576px){header #search-form{display:flex;position:absolute}}header #search-form.show-search{right:1rem;transition:right .5s}header #search-form button:focus{outline:0}header #search-textbox{display:block;height:calc(2.25rem + 2px);padding:.375rem .75rem;font-size:1rem;line-height:1.5;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-offset:-2px;margin:12px 1rem 5px;width:100%;text-align:center}@media(min-width: 576px){header #search-textbox{margin:4px 0 5px;width:22rem;text-align:unset}}header #search-textbox:focus{outline:0}header #search-close{display:none;background-color:rgba(0,0,0,0);color:var(--textBrandColor);border-width:0;cursor:pointer;font-size:inherit;line-height:inherit}@media(min-width: 576px){header #search-close{display:block}}header #search-close:hover{color:var(--textBrandHighlightColor)}.landing #banner{display:flex;justify-content:center;padding-top:1rem;padding-bottom:1rem}.landing #banner #hero-label{margin:0;padding:30px 0 0;font-size:4rem;font-family:"Verdana",serif;text-align:center}.landing #banner #hero-lead{display:block;font-size:1rem;font-weight:var(--heroLeadTextWeight);text-align:center;margin:0;padding:0}.landing #banner #hero-logo{width:0;fill:var(--heroLogoColor)}.landing #banner #hero-text{width:20rem;margin-left:0}@media(min-width: 576px){.landing #banner #hero-logo{width:7rem}.landing #banner #hero-label{text-align:left}.landing #banner #hero-lead{text-align:left}.landing #banner #hero-text{margin-left:3rem}}.landing #panels{display:grid;grid-template-columns:[panel] auto;padding-top:30px;padding-bottom:30px;grid-gap:2rem;justify-content:center;align-content:end}@media(min-width: 768px){.landing #panels{padding-top:50px;padding-bottom:50px;grid-template-columns:[panel] auto [panel] auto}}@media(min-width: 80rem){.landing #panels{grid-template-columns:[panel] auto [panel] auto [panel] auto [panel] auto}}.landing #panels .panel{color:var(--landingPanelTextColor);opacity:.1;transition:opacity .25s linear;background-color:var(--landingPanelBackgroundColor);width:18rem;box-shadow:3px 3px 8px var(--landingPanelShadowColor);padding:1rem;border:1px solid var(--landingPanelBorderColor);border-radius:4px}.landing #panels .panel a{text-decoration:none;color:var(--textColor)}.landing #panels .panel a:hover{color:var(--textColor);text-decoration:none}.landing #panels .panel:hover{box-shadow:3px 3px 8px var(--landingPanelShadowHoverColor)}.landing #panels .panel .panel-title{text-align:center}.landing #panels .panel .panel-line{margin-left:1.6rem;margin-right:1.6rem;height:1px;border:0;background-color:var(--landingPanelTextColor)}.landing #panels .panel .panel-img-top{text-align:center;padding:0}.landing #panels .panel .panel-body{padding-top:0;padding-left:.5rem;padding-right:.5rem}@media(min-width: 768px){.landing #panels .panel .panel-body{padding-left:1.25rem;padding-right:1.25rem}}.landing #buttons{opacity:0;transition:opacity .25s ease-in;text-align:center}@media(min-width: 768px){.landing #buttons{padding-bottom:20px}}.landing #buttons .btn{margin:1rem;width:18rem}@media(min-width: 768px){.landing #buttons .btn{margin:1rem 5rem}}.logo-gallery{margin:3rem}.logo-gallery .company-logo{margin:1rem;padding:14px;display:inline-block;width:200px;height:120px;transition-duration:.8s;transform-origin:50% 50%;transition-property:none;position:relative;box-shadow:0 0 50px rgba(0,0,0,.1),0 5px 10px rgba(0,0,0,.25);border-radius:3px;background-color:var(--companyLogoBackgroundColor)}.logo-gallery .company-logo:hover{transition-property:transform,opacity,box-shadow;transform:rotate(360deg);box-shadow:0 0 50px rgba(0,0,200,.1),0 5px 10px rgba(0,0,200,.25)}.logo-gallery .outer{display:table;position:absolute;width:172px;height:92px;margin:0;padding:0}.logo-gallery .inner{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%;margin:0 auto}.logo-gallery .with-tag-line:hover:hover img{opacity:.15}.logo-gallery .with-tag-line:hover:hover .tagline{opacity:1}.logo-gallery img{position:absolute;width:172px;height:92px;object-fit:contain;transition-duration:.8s;transition-property:opacity}.logo-gallery .tagline{color:var(--companyLogoTaglineColor);opacity:0;transition-duration:.8s;transition-property:opacity}.media-resources table,.media-resources th,.media-resources td{border:0}.media-resources td{line-height:1.15em;vertical-align:middle;padding-top:1em;padding-bottom:1em}.media-resources td.logo{width:100px;border:0}.media-resources td.desc{border:0}.media-resources li{list-style-type:none}.media-resources .advice{display:grid;grid-template-columns:[panel] 1fr;grid-gap:2rem;padding-top:2rem}@media(min-width: 992px){.media-resources .advice{grid-template-columns:[panel] 1fr [panel] 1fr}}.media-resources .advice .panel{display:table;border-radius:4px;border:1px solid var(--mainBrandColor);min-height:11rem;width:100%;margin-bottom:1rem}.media-resources .advice .panel .title{position:relative;display:table-cell;width:2rem;border-top-left-radius:4px;border-bottom-left-radius:4px;background-color:var(--mainBrandColor);min-height:100%}.media-resources .advice .panel .title div{position:absolute;top:11rem;width:11rem;text-align:center;transform:rotate(-90deg);transform-origin:left top 0}.media-resources .advice .panel .title p{color:var(--textBrandColor);font-size:2rem;margin:0;padding:0;line-height:2rem}.media-resources .advice .panel .body{display:table-cell;min-height:100%;padding:1rem 0}.menu{position:relative}.menu .menu-trigger{cursor:pointer}.menu .menu-content{display:block;position:absolute;min-width:16em;z-index:75;padding:0;background-color:var(--backgroundColor);border:1px solid var(--dropdownBorderColor);border-radius:4px;margin-top:.125rem;right:0;text-align:left;top:-600px;transition:top .5s;cursor:default}.menu .menu-content a{display:block;font-weight:var(--linkWeight);color:var(--textColor);padding:.25rem 1.5rem;margin:0}.menu .menu-content a:hover,.menu .menu-content a:focus{color:var(--textBrandColor);background-color:var(--mainBrandColor);text-decoration:none}.menu .menu-content a.active{font-weight:500;background-color:transparent;background-image:var(--dropdownCheck);background-repeat:no-repeat;background-position:.4rem .6rem;background-size:.75rem .75rem;border:0}.menu .menu-content a.active:hover,.menu .menu-content a.active:focus{background-image:var(--dropdownCheckHover);background-color:var(--mainBrandColor)}.menu .menu-content a:focus{text-decoration:none}.menu .menu-content a.disabled{color:var(--disabledTextColor);background-color:var(--backgroundColor);cursor:default}.menu .menu-content h6{padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.menu .menu-content div{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.menu.show .menu-content{top:1.5rem;transition:top .5s}.notfound{text-align:center}.notfound .icon{margin-top:9rem;width:12rem;height:12rem;fill:#000}.notfound .error{padding:2rem 0 0;font-weight:500;font-size:200%}.notfound .explanation{padding:2rem 0 9rem;font-weight:var(--textWeight);font-size:100%}.pagenav{display:flex;width:100%;text-transform:uppercase;font-size:80%;margin:1.5rem 0}@media print{.pagenav{display:none}}.pagenav .left{width:50%}.pagenav .right{width:50%;text-align:right}.pagenav svg{fill:var(--linkColor);stroke:var(--linkColor);margin-left:.5em;margin-right:.5em}.pagenav svg:hover,.pagenav svgfocus{fill:var(--linkHoverColor);stroke:var(--linkHoverColor)}.pagenav a:focus{outline:0}.partner-component{display:block;margin:1em 0 1em 2em;padding-left:1em;padding-right:1em;background-color:var(--quoteCalloutBackgroundColor);border-radius:4px}@media(min-width: 768px){.partner-component{margin:1em 3em}}.partner-component table td:first-of-type{color:var(--textBrandColor);background-color:var(--mainBrandColor);font-weight:var(--tableHeaderWeight)}.partner-component table td:last-of-type{background-color:var(--backgroundColor)}.partner-component table tr:last-of-type td{border-bottom-color:var(--boxBorderColor)}.partner-component table.with-logo td:first-of-type{opacity:.9}.partner-component table.with-logo td:last-of-type{opacity:.9}.popover{display:none;z-index:75;color:var(--popoverTextColor);background-color:var(--popoverBackgroundColor);border-radius:4px;border:1px solid var(--popoverBoardColor);box-shadow:3px 3px 8px var(--popoverShadowColor),-3px -3px 8px var(--popoverShadowColor);max-width:276px}@media(min-width: 768px){.popover{max-width:350px}}@media(min-width: 1200px){.popover{max-width:500px}}.popover.show{display:block}.popover .title{text-align:center;color:var(--popoverHeaderTextColor);background-color:var(--popoverHeaderBackgroundColor);font-size:140%;border-radius:4px 4px 0 0}.popover .body{padding-left:1rem;padding-right:1rem}.popover .arrow{width:0;height:0;border-style:solid;position:absolute;border-color:transparent}.popover[x-placement^=top]{margin-bottom:5px}.popover[x-placement^=top] .arrow{border-width:5px 5px 0 5px;border-top-color:var(--popoverBackgroundColor);bottom:-5px;margin:0 5px}.popover[x-placement^=bottom]{margin-top:5px}.popover[x-placement^=bottom] .arrow{border-width:0 5px 5px;border-bottom-color:var(--popoverBackgroundColor);top:-5px;margin:0 5px}.popover[x-placement^=right]{margin-left:5px}.popover[x-placement^=right] .arrow{border-width:5px 5px 5px 0;border-right-color:var(--popoverBackgroundColor);left:-5px;margin:5px 0}.popover[x-placement^=left]{margin-right:5px}.popover[x-placement^=left] .arrow{border-width:5px 0 5px 5px;border-left-color:var(--popoverBackgroundColor);right:-5px;margin:5px 0}@media screen{.term{border-bottom:dashed 1px;cursor:help;position:relative;display:inline-block}}.primary{display:grid;grid-template-columns:[article] 100%;grid-column-gap:1rem;padding-left:.5rem;padding-right:.5rem}@media print{.primary{padding-left:0;padding-right:0}}@media screen and (min-width: 768px){.primary{grid-template-columns:[sidebar] 20% [article] calc(80% - 1rem);padding-left:1rem;padding-right:1rem}}.primary .sidebar-container{max-width:25em}@media print{.primary .sidebar-container{display:none}}.primary .toc-container{display:none}@media screen and (min-width: 1200px){.primary{grid-template-columns:[sidebar] 16% [article] calc(68% - 2rem) [toc] 16%}.primary .toc-container{display:block}}@media screen and (min-width: 1200px){.primary.notoc{grid-template-columns:[sidebar] 16% [article] calc(84% - 1rem)}}@media print{.primary #see-also{display:none}}.promotion{position:absolute;display:block;top:22px;left:-80px;width:260px;overflow:hidden;height:46px;z-index:200;color:#fff;background:#228b22;transform:rotate(-45deg);text-align:center}.promotion:hover{text-decoration:none;color:#90ee90}.search-results .gs-webResult div.gs-visibleUrl-long,.search-results .gs-promotion div.gs-visibleUrl-long{padding-bottom:0}.search-results .gsc-adBlock{display:none}.search-results table,.search-results th,.search-results td,.search-results tr{border:0;padding:0}.search-results table{margin-left:.5em;margin-right:0;border-collapse:collapse;border-spacing:0}.search-results table p:first-of-type{margin-top:0}.search-results table p:last-of-type{margin-bottom:0}.search-results tr.oneof>td{border:0}.search-results tr:first-child th:first-child{border:0}.search-results tr:first-child td:first-child{border:0}.search-results tr:first-child th:last-child{border:0}.search-results tr:first-child td:last-child{border:0}.search-results tr:last-child td{border:0}.search-results tr:last-child td:first-child{border:0}.search-results tr:last-child td:last-child{border:0}.search-results tr th:last-child{border:0}.search-results tr td:last-child{border:0}.section-index{display:grid;grid-template-columns:[entry] 1fr}@media(min-width: 576px){.section-index{grid-template-columns:[entry] 1fr [entry] 1fr}}@media(min-width: 1200px){.section-index{grid-template-columns:[entry] 1fr [entry] 1fr [entry] 1fr}}.section-index .entry{padding:1rem}@media(min-width: 768px){.section-index .entry{padding:1rem 4rem}}.section-index h5{margin-bottom:0}.section-index h5 a{font-weight:700}.section-index p{margin-top:0}.see-also{padding-top:0;display:grid;grid-template-columns:[entry] 1fr;grid-gap:1em}@media(min-width: 576px){.see-also{grid-template-columns:[entry] 1fr [entry] 1fr}}@media(min-width: 1200px){.see-also{grid-template-columns:[entry] 1fr [entry] 1fr [entry] 1fr}}.see-also .entry{padding:0}.see-also .entry .link{margin-bottom:0;margin-top:0}.see-also .entry .desc{margin-top:0}@media screen and (max-width: 767px){.sidebar-offcanvas{position:absolute;width:80%;transition:all .4s ease;left:-768px;top:3.7rem}}@media screen and (min-width: 768px){.sidebar-offcanvas{position:unset;width:auto}}@media screen{.sidebar-offcanvas.active{left:1rem}}#sidebar{order:0;font-size:85%;padding-top:.1rem}@media(min-width: 1200px){#sidebar{font-size:100%}}@supports(position: sticky){#sidebar{position:sticky;top:3.7rem}}@media(min-width: 768px){#sidebar{padding-top:1rem}}@supports(position: sticky){#sidebar .directory{max-height:calc(100vh - 9rem)}}@media(min-width: 768px){#sidebar .directory{display:block !important}@supports(position: sticky){#sidebar .directory{max-height:calc(100vh - 9rem);overflow-y:auto}}}#sidebar .directory .body>ul.leaf-section>li{margin-left:0}#sidebar .directory .card{background-color:var(--backgroundColor);margin-top:.1rem;margin-bottom:.1rem;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-clip:border-box;border:1px solid var(--dividerBarColor);border-radius:4px}#sidebar .directory .card .header{margin-bottom:0;background-color:rgba(0,0,0,.03);border:0;border-bottom:1px solid rgba(0,0,0,0);padding:.75em 1.25em;color:var(--textColor);width:100%;text-align:left;outline:none;font:inherit;transition:border-bottom-color .6s}#sidebar .directory .card .header.dynamic{color:var(--linkColor);cursor:pointer}#sidebar .directory .card .header.dynamic:hover{color:var(--linkHoverColor)}#sidebar .directory .card .header[aria-expanded=true]{border-bottom-color:var(--dividerBarColor);transition:border-bottom-color .6s}#sidebar .directory .card .header svg{margin-right:.3em}#sidebar .directory .card .header a{text-decoration:none}#sidebar .directory .card .body{flex:1 1 auto;overflow:hidden;padding:0 1em;max-height:0;transform:scaleY(0) scaleX(0);transition:max-height .6s ease-out,padding,transform .6s}#sidebar .directory .card .body.show{padding:.5em 1em;transform:scaleY(1) scaleX(1)}#sidebar .directory .card .body.default{padding:.5em 1em;transform:scaleY(1) scaleX(1);max-height:unset}#sidebar .directory .card .body button{cursor:pointer;border:0;background:var(--sidebarRightChevron) no-repeat;width:1rem;height:1rem;left:-1.3rem;position:absolute}#sidebar .directory .card .body button.show{background:var(--sidebarDownChevron) no-repeat}#sidebar .directory .card .body button:focus{outline:0}#sidebar .directory .card .body button:hover,#sidebar .directory .card .body button:focus{outline:0;background:var(--sidebarRightChevronHover) no-repeat}#sidebar .directory .card .body button:hover.show,#sidebar .directory .card .body button:focus.show{background:var(--sidebarDownChevronHover) no-repeat}#sidebar .directory .card .body a{font-weight:var(--sidebarLinkWeight)}#sidebar .directory .card .body ul{list-style:none;padding:0;margin:0;display:none}#sidebar .directory .card .body ul[aria-expanded=true]{display:block}#sidebar .directory .card .body li{margin:.7em 0 .7em 1.3rem;padding:0;font-size:85%;position:relative}#sidebar .directory .card .body li .current{color:var(--linkActiveColor);font-weight:var(--sidebarCurrentPageWeight)}.tabset{padding:0;margin:1em 0 1em 1em}@media(min-width: 768px){.tabset{margin:1em}}.tabset .tab-strip button{display:inline-block;margin:0 3px;border:1px solid var(--tabsetBorderColor);border-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;padding:0 1rem;transform:skewX(-20deg);transform-origin:left bottom;cursor:pointer;outline:0;font:inherit;background-color:var(--tabsetUnselectedTabBackgroundColor)}.tabset .tab-strip button span{transform:skewX(6deg);color:var(--tabsetUnselectedTabTextColor);font-size:80%}.tabset .tab-strip button:hover span,.tabset .tab-strip button:focus span{color:var(--linkActiveColor)}.tabset .tab-strip button[aria-selected=true]{background-color:var(--tabsetSelectedTabBackgroundColor);cursor:default;box-shadow:none;border-bottom:solid 2px var(--mainBrandColor)}.tabset .tab-strip button[aria-selected=true] span{color:var(--tabsetSelectedTabTextColor)}.tabset .tab-content{border:1px solid var(--tabsetBorderColor);border-radius:4px;padding:1rem;box-shadow:3px 3px 8px var(--tabsetShadowColor)}.tabset .tab-content p:first-of-type{margin-top:0}.tabset .tab-content p:last-of-type{margin-bottom:0}*{box-sizing:border-box}@keyframes ticker{0%{transform:translate3d(0, 0, 0);visibility:visible}100%{transform:translate3d(-100%, 0, 0)}}.ticker-wrap{position:fixed;z-index:150;cursor:pointer;bottom:0;width:100%;overflow:hidden;height:4rem;background-color:red;padding-left:100%;box-sizing:content-box}.ticker-wrap .ticker{display:inline-block;height:4rem;line-height:4rem;white-space:nowrap;padding-right:100%;box-sizing:content-box;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:ticker;animation-duration:30s}.ticker-wrap .ticker .item{display:inline-block;padding:0 2rem;font-size:2rem;color:#fff}.toc{order:0;padding-top:.1rem}@media(min-width: 768px){.toc{padding-top:1rem}}@supports(position: sticky){.toc{position:sticky;top:3.7rem}}.toc div{padding-left:.5em;border-left:1px solid var(--dividerBarColor)}@supports(position: sticky){.toc div{max-height:calc(100vh - 9rem)}}@media(min-width: 768px){.toc div{display:block !important}@supports(position: sticky){.toc div{max-height:calc(100vh - 9rem);overflow-y:auto}}}.toc div li{font-size:.9rem}.toc div li a{font-weight:var(--tocLinkWeight)}.toc div li a.current{color:var(--linkActiveColor);font-weight:bold}.toc div ol{list-style-type:none !important;padding-left:0;padding-bottom:0;margin:0}.toc div ol ol{padding-left:1em}.toc-inlined{display:block;margin-bottom:2rem}@media print{.toc-inlined{display:none}}@media(min-width: 1200px){.toc-inlined{display:none}}.toc-inlined div{border-left:0}.toc-inlined div li{font-size:1rem}.toc-inlined div ol{list-style-type:none !important;padding-left:0;padding-bottom:0;margin:0}.toc-inlined div ol ol{padding-left:1em}.toc-inlined div ol a{font-weight:var(--tocLinkWeight)}@media screen{.toc-forced{display:block}}/*# sourceMappingURL=all.css.map */ diff --git a/generated/css/all.css.map b/generated/css/all.css.map index 78e9258ec2..a09f9786c6 100644 --- a/generated/css/all.css.map +++ b/generated/css/all.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["src/sass/themes/_brand.scss","src/sass/themes/_light-theme.scss","src/sass/themes/_light-theme-syntax.scss","src/sass/themes/_dark-theme.scss","src/sass/themes/_dark-theme-syntax.scss","src/sass/base/_reset.scss","src/sass/base/_base.scss","src/sass/base/_constants.scss","src/sass/themes/_vars.scss","src/sass/misc/_blog.scss","src/sass/misc/_breadcrumbs.scss","src/sass/misc/_button.scss","src/sass/misc/_callout.scss","src/sass/misc/_call-to-action.scss","src/sass/misc/_code-blocks.scss","src/sass/misc/_community.scss","src/sass/misc/_endnotes.scss","src/sass/misc/_faq.scss","src/sass/misc/_faq-landing.scss","src/sass/misc/_figure.scss","src/sass/misc/_floaters.scss","src/sass/misc/_footer.scss","src/sass/misc/_glossary.scss","src/sass/misc/_header.scss","src/sass/misc/_landing.scss","src/sass/misc/_logo-gallery.scss","src/sass/misc/_media-resources.scss","src/sass/misc/_menu.scss","src/sass/misc/_notfound.scss","src/sass/misc/_pagenav.scss","src/sass/misc/_partner-component.scss","src/sass/misc/_popover.scss","src/sass/misc/_primary.scss","src/sass/misc/_promotion.scss","src/sass/misc/_search-results.scss","src/sass/misc/_section-index.scss","src/sass/misc/_see-also.scss","src/sass/misc/_sidebar.scss","src/sass/misc/_tabset.scss","src/sass/misc/_ticker.scss","src/sass/misc/_toc.scss"],"names":[],"mappings":"AAAA,MACI,0BACA,4BACA,0BACA,+BACA,mCAEA,wBACI,4BAGJ,oBACI,4BCZR,KACI,2BAEA,qBACA,sBACA,6BAEA,qBACA,0BACA,6BACA,2BAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,0CAEA,6BACA,qCACA,+BACA,oCACA,0CAEA,uCACA,mCACA,qCACA,iCACA,sCACA,kCACA,yCACA,qCAEA,+BACA,+BACA,kDACA,mDACA,gDAEA,4BACA,qQACA,0QAEA,6BACA,6BACA,wCACA,8CACA,+CACA,4CAEA,qQACA,2QACA,sQACA,4QAEA,8BACA,8BACA,wCACA,2CACA,iDACA,qCAEA,6CACA,4CAEA,gDACA,uCAEA,uCACA,uCACA,mCACA,0CACA,mCACA,wCAEA,yCACA,2DAEA,qDACA,4CAEA,kBACA,kBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,yBACA,sBACA,sBACA,2BACA,8BACA,oBACA,qBACA,yBACA,gCACA,4BACA,0BACA,2BACA,sBACA,yBCjGJ,yDAII,cAGJ,mBACI,WAGJ,WACI,WAGJ,qGAOI,WAGJ,0FAMI,WAGJ,0FAKI,cACA,gCAGJ,+CAGI,WAGJ,kCAEI,cAGJ,8CAGI,WAGJ,6BAEI,iBAGJ,cACI,kBAGJ,cACI,YC7EJ,YAEI,2BAEA,qBACA,yBACA,6BAEA,qBACA,0BACA,6BACA,2BAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,0CAEA,6BACA,2CACA,+BACA,oCACA,mCAEA,uCACA,mCACA,qCACA,iCACA,sCACA,kCACA,yCACA,qCAEA,+BACA,+BACA,mCACA,mDACA,gDAEA,+BACA,qQACA,0QAEA,6BACA,6BACA,wCACA,8CACA,sCACA,4CAEA,qQACA,2QACA,sQACA,4QAEA,8BACA,8BACA,wCACA,2CACA,iDACA,qCAEA,6CACA,4CAEA,iCACA,8BAEA,kCACA,uCACA,mCACA,0CACA,mCACA,wCAEA,yCACA,2DAEA,wCACA,gCAEA,kBACA,kBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,yBACA,sBACA,sBA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","file":"all.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["src/sass/themes/_brand.scss","src/sass/themes/_light-theme.scss","src/sass/themes/_light-theme-syntax.scss","src/sass/themes/_dark-theme.scss","src/sass/themes/_dark-theme-syntax.scss","src/sass/base/_reset.scss","src/sass/base/_base.scss","src/sass/base/_constants.scss","src/sass/themes/_vars.scss","src/sass/misc/_blog.scss","src/sass/misc/_breadcrumbs.scss","src/sass/misc/_button.scss","src/sass/misc/_callout.scss","src/sass/misc/_call-to-action.scss","src/sass/misc/_code-blocks.scss","src/sass/misc/_community.scss","src/sass/misc/_endnotes.scss","src/sass/misc/_faq.scss","src/sass/misc/_faq-landing.scss","src/sass/misc/_figure.scss","src/sass/misc/_floaters.scss","src/sass/misc/_footer.scss","src/sass/misc/_glossary.scss","src/sass/misc/_header.scss","src/sass/misc/_landing.scss","src/sass/misc/_logo-gallery.scss","src/sass/misc/_media-resources.scss","src/sass/misc/_menu.scss","src/sass/misc/_notfound.scss","src/sass/misc/_pagenav.scss","src/sass/misc/_partner-component.scss","src/sass/misc/_popover.scss","src/sass/misc/_primary.scss","src/sass/misc/_promotion.scss","src/sass/misc/_search-results.scss","src/sass/misc/_section-index.scss","src/sass/misc/_see-also.scss","src/sass/misc/_sidebar.scss","src/sass/misc/_tabset.scss","src/sass/misc/_ticker.scss","src/sass/misc/_toc.scss"],"names":[],"mappings":"AAAA,MACI,0BACA,4BACA,0BACA,+BACA,mCAEA,wBACI,4BAGJ,oBACI,4BCZR,KACI,2BAEA,qBACA,sBACA,6BAEA,qBACA,0BACA,6BACA,2BAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,0CAEA,6BACA,qCACA,+BACA,oCACA,0CAEA,uCACA,mCACA,qCACA,iCACA,sCACA,kCACA,yCACA,qCAEA,+BACA,+BACA,kDACA,mDACA,gDAEA,4BACA,qQACA,0QAEA,6BACA,6BACA,wCACA,8CACA,+CACA,4CAEA,qQACA,2QACA,sQACA,4QAEA,8BACA,8BACA,wCACA,2CACA,iDACA,qCAEA,6CACA,4CAEA,gDACA,uCAEA,uCACA,uCACA,mCACA,0CACA,mCACA,wCAEA,yCACA,2DAEA,qDACA,4CAEA,kBACA,kBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,yBACA,sBACA,sBACA,2BACA,8BACA,oBACA,qBACA,yBACA,gCACA,4BACA,0BACA,2BACA,sBACA,yBCjGJ,yDAII,cAGJ,mBACI,WAGJ,WACI,WAGJ,qGAOI,WAGJ,0FAMI,WAGJ,0FAKI,cACA,gCAGJ,+CAGI,WAGJ,kCAEI,cAGJ,8CAGI,WAGJ,6BAEI,iBAGJ,cACI,kBAGJ,cACI,YC7EJ,YAEI,2BAEA,qBACA,yBACA,6BAEA,qBACA,0BACA,6BACA,2BAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,0CAEA,6BACA,2CACA,+BACA,oCACA,mCAEA,uCACA,mCACA,qCACA,iCACA,sCACA,kCACA,yCACA,qCAEA,+BACA,+BACA,mCACA,mDACA,gDAEA,+BACA,qQACA,0QAEA,6BACA,6BACA,wCACA,8CACA,sCACA,4CAEA,qQACA,2QACA,sQACA,4QAEA,8BACA,8BACA,wCACA,2CACA,iDACA,qCAEA,6CACA,4CAEA,iCACA,8BAEA,kCACA,uCACA,mCACA,0CACA,mCACA,wCAEA,yCACA,2DAEA,wCACA,gCAEA,kBACA,kBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,yBACA,sBACA,sBA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","file":"all.css"} \ No newline at end of file diff --git a/generated/js/all.min.js b/generated/js/all.min.js index c217fbfbd3..cd430a0558 100644 --- a/generated/js/all.min.js +++ b/generated/js/all.min.js @@ -10,7 +10,8 @@ "use strict";let syntaxColoring=!0;function handleCodeBlocks(){function a(a){const c=document.createElement(button);c.title=buttonCopy,c.className="copy",c.innerHTML="",c.setAttribute(ariaLabel,buttonCopy),listen(c,mouseenter,a=>a.currentTarget.classList.add(f)),listen(c,mouseleave,a=>a.currentTarget.classList.remove(f)),listen(c,"focus",a=>a.currentTarget.classList.add(f)),listen(c,"blur",a=>a.currentTarget.classList.remove(f)),listen(c,click,a=>{const c=a.currentTarget.parentElement;if(c){const a=b(c);copyToClipboard(a)}return!0});const d=document.createElement(button);d.title=buttonDownload,d.className="download",d.innerHTML="",d.setAttribute(ariaLabel,buttonDownload),listen(d,mouseenter,a=>a.currentTarget.classList.add(f)),listen(d,mouseleave,a=>a.currentTarget.classList.remove(f)),listen(d,"focus",a=>a.currentTarget.classList.add(f)),listen(d,"blur",a=>a.currentTarget.classList.remove(f)),listen(d,click,a=>{const c=a.currentTarget.parentElement;if(!c)return!1;const d=c.getElementsByTagName("code");if(null!==d&&0",e.setAttribute(ariaLabel,buttonPrint),listen(e,mouseenter,a=>a.currentTarget.classList.add(f)),listen(e,mouseleave,a=>a.currentTarget.classList.remove(f)),listen(e,"focus",a=>a.currentTarget.classList.add(f)),listen(e,"blur",a=>a.currentTarget.classList.remove(f)),listen(e,click,a=>{const c=a.currentTarget.parentElement;if(c){const a=b(c);printText(a)}return!0});const g=document.createElement("div");g.className="toolbar";const h=a.parentElement;h&&h.insertBefore(g,a),g.appendChild(a),g.appendChild(e),g.appendChild(d),g.appendChild(c),listen(a,mouseenter,a=>{const b=a.currentTarget,c=b.nextElementSibling;if(c){c.classList.add(f);const a=c.nextElementSibling;if(a){a.classList.add(f);const b=a.nextElementSibling;b&&b.classList.add(f)}}}),listen(a,mouseleave,a=>{const b=a.currentTarget,c=b.nextElementSibling;if(c){c.classList.remove(f);const a=c.nextElementSibling;if(a){a.classList.remove(f);const b=a.nextElementSibling;b&&b.classList.remove(f)}}})}function b(a){const b=a.getElementsByClassName("command");if(null!==b&&0$1"));let f="
"+e+"
",g="";if(0/g,">"),b.dataset.outputis&&syntaxColoring&&(g=Prism.highlight(g,Prism.languages[b.dataset.outputis],b.dataset.outputis)),f+="
"+g+"
"),b.innerHTML=f,b.classList.remove(c),b.classList.add("command-output")}else syntaxColoring&&Prism.highlightElement(b,!1)}else syntaxColoring&&Prism.highlightElement(b,!1)}function d(a){const b=a.firstElementChild;b&&b.dataset.src&&function(d,f){fetch(f).then(a=>200===a.status?a.text():"Unable to access "+f+": "+a.statusText).catch(a=>"Unable to access "+f+": "+a).then(e=>{if(b.dataset.snippet){const a="\\#.*?\\$snippet "+b.dataset.snippet+"\\n(.*?)\\n\\#.+?\\$endsnippet",c=new RegExp(a,"gms");let d="",f=c.exec(e);for(;null!==f;)""!==d&&(d+="\n"),d+=f[1],f=c.exec(e);e=d}d.textContent=e,c(a)})}(b,b.dataset.src)}function e(){const a=readCookie(g);"true"===a?syntaxColoring=!0:"false"===a&&(syntaxColoring=!1);const b=document.getElementById(h);b&&(syntaxColoring?b.classList.add(active):b.classList.remove(active)),listen(getById(h),click,()=>{createCookie(g,syntaxColoring?"false":"true"),location.reload()})}const f="toolbar-show",g="syntax-coloring",h="syntax-coloring-item";e(),document.querySelectorAll("pre").forEach(b=>{a(b),c(b),d(b)})}handleCodeBlocks(); "use strict";function handleLinks(){function a(a){if(""!==a.id){const b=document.createElement("a");b.className="self-link",b.href="#"+a.id,b.setAttribute("aria-hidden","true"),b.innerHTML="",a.appendChild(b)}}(function(){document.querySelectorAll("h2").forEach(a),document.querySelectorAll("h3").forEach(a),document.querySelectorAll("h4").forEach(a),document.querySelectorAll("h5").forEach(a),document.querySelectorAll("h6").forEach(a),document.querySelectorAll("dt").forEach(a)})(),function(){document.querySelectorAll("a").forEach(a=>{a.hostname&&a.hostname!==location.hostname&&(a.setAttribute("target","_blank"),a.setAttribute("rel","noopener"))})}(),function(){const a=getById("endnotes");if(null===a)return;const b=document.getElementsByTagName("article")[0],c=new Map(null);let d=0;if(b.querySelectorAll("a").forEach(b=>{if(b.pathname===location.pathname)return;if(b.pathname.endsWith("/")&&""!==b.hash)return;if(b.classList.contains("btn"))return;if("true"===b.dataset.skipendnotes)return;let e=c.get(b.href);if(void 0===e){e=c.size+1,c.set(b.href,e);const d=document.createElement("li");d.innerText=b.href,a.appendChild(d)}b.insertAdjacentHTML("afterend",""),d++}),0=c&&i.tope&&(d=f,e=i.top)),tocLinks[f].classList.remove("current")}0<=a?tocLinks[a].classList.add("current"):0<=d&&tocLinks[d].classList.add("current")}}const c=pageHeader?pageHeader.getBoundingClientRect().height:0;a(),b();const d=document.querySelector(":target");d&&"TR"===d.tagName&&!d.dataset.scrolled&&(document.documentElement.scrollTop-=c,d.dataset.scrolled="true")}scrollToTopButton=getById("scroll-to-top"),listen(scrollToTopButton,click,()=>{document.body.scrollTop=0,document.documentElement.scrollTop=0});const b=getById("toc");if(b){tocLinks=b.getElementsByTagName("a");for(const a of tocLinks)if(a){const b=a.hash.substring(1),c=getById(b);c&&tocHeadings.push(c)}}pageHeader=document.getElementsByTagName("header")[0],a(),listen(window,"scroll",a)}handleScroll(); -"use strict";let overlay=null,popper=null;function toggleOverlay(a){overlay===a?closeActiveOverlay():(overlay&&closeActiveOverlay(),a.classList.add("show"),overlay=a)}function showOverlay(a){overlay===a||(closeActiveOverlay(),a.classList.add("show"),overlay=a)}function closeActiveOverlay(){overlay&&(overlay.classList.remove("show"),overlay=null,popper&&(popper.destroy(),popper=null))}function handleOverlays(){function a(a,b){popper&&popper.destroy(),popper=new Popper(a,b,{modifiers:{flip:{enabled:!0},preventOverflow:{enabled:!0},shift:{enabled:!0}},placement:"auto-start"})}document.querySelectorAll(".term").forEach(b=>{const c=document.createElement("i");c.innerHTML="";const d=document.createElement("span");d.innerText=" "+b.dataset.title;const e=document.createElement("div");e.className="title",e.appendChild(c),e.appendChild(d);const f=document.createElement("div");f.className="body",b.dataset.body&&(f.innerHTML=b.dataset.body);const g=document.createElement("div");g.className="arrow",g.setAttribute("x-arrow","");const h=document.createElement("div");h.className="popover",h.appendChild(e),h.appendChild(f),h.appendChild(g),h.setAttribute("aria-hidden","true"),listen(h,click,a=>{a.cancelBubble=!0});const i=b.parentElement;i&&i.insertBefore(h,b.nextElementSibling),b.removeAttribute("data-title"),b.removeAttribute("data-body"),listen(b,click,c=>{c.cancelBubble=!0,toggleOverlay(h),a(b,h)})}),listen(window,click,closeActiveOverlay),listen(window,"resize",closeActiveOverlay)}handleOverlays(); +"use strict";let overlay=null,popper=null;function toggleOverlay(a){overlay===a?closeActiveOverlay():(overlay&&closeActiveOverlay(),a.classList.add("show"),overlay=a)}function showOverlay(a){overlay===a||(closeActiveOverlay(),a.classList.add("show"),overlay=a)}function closeActiveOverlay(){overlay&&(overlay.classList.remove("show"),overlay=null,popper&&(popper.destroy(),popper=null))}function handleOverlays(){function a(a,b){popper&&popper.destroy(),popper=new Popper(a,b,{modifiers:{flip:{enabled:!0},preventOverflow:{enabled:!0},shift:{enabled:!0}},placement:"auto-start"})}document.querySelectorAll(".term").forEach(b=>{const c=document.createElement("i");c.innerHTML="";const d=document.createElement("span");d.innerText=" "+b.dataset.title;const e=document.createElement("div");e.className="title",e.appendChild(c),e.appendChild(d);const f=document.createElement("div");f.className="body",b.dataset.body&&(f.innerHTML=b.dataset.body);const g=document.createElement("div");g.className="arrow",g.setAttribute("x-arrow","");const h=document.createElement("div");h.className="popover",h.appendChild(e),h.appendChild(f),h.appendChild(g),h.setAttribute("aria-hidden","true"),listen(h,click,a=>{a.cancelBubble=!0});const i=b.parentElement;i&&i.insertBefore(h,b.nextElementSibling),b.removeAttribute("data-title"),b.removeAttribute("data-body"),listen(b,click,c=>{c.cancelBubble=!0,toggleOverlay(h),a(b,h)})}),document.querySelectorAll(".update-notice").forEach(b=>{const c=document.createElement("i");c.innerHTML="";const d=document.createElement("span");d.innerText=" "+b.dataset.title;const e=document.createElement("div");e.className="title",e.appendChild(c),e.appendChild(d);const f=document.createElement("div");f.className="body",f.innerHTML="

"+b.dataset.updateadvice+"

"+b.dataset.updatebutton+""+b.innerText+"";const g=document.createElement("div");g.className="arrow",g.setAttribute("x-arrow","");const h=document.createElement("div");h.className="popover",h.appendChild(e),h.appendChild(f),h.appendChild(g),h.setAttribute("aria-hidden","true"),listen(h,click,a=>{a.cancelBubble=!0});const i=b.parentElement;i&&i.insertBefore(h,b.nextElementSibling),b.removeAttribute("data-title"),b.removeAttribute("data-downloadhref"),b.removeAttribute("data-updatehref"),b.removeAttribute("data-updateadvice"),b.removeAttribute("data-updatebutton"),listen(b,click,c=>{c.cancelBubble=!0,toggleOverlay(h),a(b,h)})}),listen(window,click,closeActiveOverlay),listen(window,"resize",closeActiveOverlay)}handleOverlays(); "use strict";function handleLanguageSwitch(){listen(getById("switch-lang"),click,()=>{const a=new URL(window.location.href);let b=a.pathname;return b.startsWith("/zh")?(b=b.substr(3),createCookie("nf_lang","en")):(b="/zh"+b,createCookie("nf_lang","zh")),a.pathname=b,navigateToUrlOrRoot(a.toString()),!0}),listen(getById("switch-lang-en"),click,()=>{const a=new URL(window.location.href);let b=a.pathname;b.startsWith("/zh")&&(b=b.substr(3)),a.pathname=b,createCookie("nf_lang","en"),navigateToUrlOrRoot(a.toString())}),listen(getById("switch-lang-zh"),click,()=>{const a=new URL(window.location.href);let b=a.pathname;b.startsWith("/zh")||(b="/zh"+b),a.pathname=b,createCookie("nf_lang","zh"),navigateToUrlOrRoot(a.toString())})}handleLanguageSwitch(); +"use strict";const callToActionDelayMs=250;function handleCallToAction(){window.setTimeout(()=>{document.querySelectorAll(".call-to-action").forEach(a=>{a.style.opacity="1"})},callToActionDelayMs)}handleCallToAction(); //# sourceMappingURL=all.min.js.map \ No newline at end of file diff --git a/generated/js/all.min.js.map b/generated/js/all.min.js.map index a00f69e30b..deb801d28b 100644 --- a/generated/js/all.min.js.map +++ b/generated/js/all.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/ts/constants.ts","../../src/ts/utils.ts","../../src/ts/kbdnav.ts","../../src/ts/themes.ts","../../src/ts/menu.ts","../../src/ts/header.ts","../../src/ts/sidebar.ts","../../src/ts/tabset.ts","../../src/ts/prism.js","../../src/ts/codeBlocks.ts","../../src/ts/links.ts","../../src/ts/scroll.ts","../../src/ts/overlays.ts","../../src/ts/lang.ts"],"names":[],"mappings":"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","file":"all.min.js","sourcesContent":["// Copyright 2019 Istio Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nconst click = \"click\";\nconst mouseenter = \"mouseenter\";\nconst mouseleave = \"mouseleave\";\nconst active = \"active\";\nconst keyup = \"keyup\";\nconst keydown = \"keydown\";\nconst button = \"button\";\nconst ariaLabel = \"aria-label\";\nconst ariaExpanded = \"aria-expanded\";\nconst ariaSelected = \"aria-selected\";\nconst ariaControls = \"aria-controls\";\nconst tabIndex = \"tabindex\";\n","// Copyright 2019 Istio Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nconst keyCodes = Object.freeze({\n DOWN: 40,\n END: 35,\n ESC: 27,\n HOME: 36,\n LEFT: 37,\n PAGEDOWN: 34,\n PAGEUP: 33,\n RETURN: 13,\n RIGHT: 39,\n SPACE: 32,\n TAB: 9,\n UP: 38,\n});\n\n// copy the given text to the system clipboard\nfunction copyToClipboard(str: string): void {\n const sel = document.getSelection();\n if (!sel) {\n return;\n }\n\n const el = document.createElement(\"textarea\"); // Create a