From 4170e0d9df883a25f4b4a83bedf4094ad9c3370a Mon Sep 17 00:00:00 2001 From: GitHub workflow <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 17 May 2024 17:39:51 +0000 Subject: [PATCH] updated by ajv workflow https://github.com/ajv-validator/ajv/actions/runs/9132114074 --- 404.html | 8 ++++---- api.html | 6 +++--- assets/css/0.styles.ee8c710e.css | 1 + assets/img/contributors.b5942013.jpg | Bin 0 -> 241791 bytes assets/js/21.1cdd24eb.js | 1 + assets/js/57.fde3de3b.js | 1 + assets/js/62.bbc8aa45.js | 1 + assets/js/81.48e48c0e.js | 1 + assets/js/app.d771025d.js | 16 ++++++++++++++++ code_of_conduct/index.html | 6 +++--- codegen.html | 6 +++--- coercion.html | 6 +++--- components.html | 6 +++--- contributing/index.html | 6 +++--- faq.html | 6 +++--- guide/async-validation.html | 6 +++--- guide/combining-schemas.html | 6 +++--- guide/environments.html | 6 +++--- guide/formats.html | 6 +++--- guide/getting-started.html | 6 +++--- guide/managing-schemas.html | 6 +++--- guide/modifying-data.html | 6 +++--- guide/schema-language.html | 6 +++--- guide/typescript.html | 6 +++--- guide/user-keywords.html | 6 +++--- guide/why-ajv.html | 6 +++--- index.html | 12 ++++++------ json-schema.html | 6 +++--- json-type-definition.html | 6 +++--- keywords.html | 6 +++--- license.html | 6 +++--- ...-08-14-mozilla-grant-openjs-foundation.html | 6 +++--- news/2020-12-15-ajv-version-7-released.html | 6 +++--- ...3-07-ajv-supports-json-type-definition.html | 6 +++--- news/2021-03-27-ajv-version-8-released.html | 6 +++--- news/2021-04-24-ajv-online-event.html | 6 +++--- news/2021-05-24-ajv-online-event-video.html | 6 +++--- ...21-07-22-ajv-microsoft-foss-fund-award.html | 6 +++--- news/index.html | 6 +++--- options.html | 6 +++--- packages/ajv-cli.html | 6 +++--- packages/ajv-errors.html | 6 +++--- packages/ajv-formats.html | 6 +++--- packages/ajv-i18n.html | 6 +++--- packages/ajv-keywords.html | 6 +++--- packages/index.html | 6 +++--- security.html | 6 +++--- standalone.html | 6 +++--- strict-mode.html | 6 +++--- testimonials.html | 6 +++--- v6-to-v8-migration.html | 6 +++--- 51 files changed, 157 insertions(+), 136 deletions(-) create mode 100644 assets/css/0.styles.ee8c710e.css create mode 100644 assets/img/contributors.b5942013.jpg create mode 100644 assets/js/21.1cdd24eb.js create mode 100644 assets/js/57.fde3de3b.js create mode 100644 assets/js/62.bbc8aa45.js create mode 100644 assets/js/81.48e48c0e.js create mode 100644 assets/js/app.d771025d.js diff --git a/404.html b/404.html index 434848d7b..37583ab89 100644 --- a/404.html +++ b/404.html @@ -18,13 +18,13 @@ - - + + -

404

How did we get here?
+ - + diff --git a/api.html b/api.html index 2d3c3e5a1..e57feed6c 100644 --- a/api.html +++ b/api.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/assets/css/0.styles.ee8c710e.css b/assets/css/0.styles.ee8c710e.css new file mode 100644 index 000000000..e159caae4 --- /dev/null +++ b/assets/css/0.styles.ee8c710e.css @@ -0,0 +1 @@ +code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#545252;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#07aab4}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#292828}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#292828}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:480px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#292828}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#07aab4}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:480px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}img+span>.icon.outbound{display:none}body{font-family:Raleway;font-weight:400}strong{font-weight:550}h1,h2,h3,h4,h5,h6{font-family:IstokWeb;font-weight:400}.custom-block.tip{border-color:#23c8d2;background-color:#f7f7f3;color:#292828}.custom-block.tip .custom-block-title{color:#292828}.custom-block.warning{border-color:#f1f440;background-color:#f7f7f3;color:#292828}.custom-block.warning .custom-block-title{color:#292828}.custom-block.danger{border-color:#f5775b;background-color:#f7f7f3;color:#292828}.custom-block.danger .custom-block-title{color:#292828}.sidebar nav.nav-links div.nav-item{display:none}span.badge{font-family:Raleway;font-weight:500}.theme-code-group .token.string{color:#7ec699}.theme-code-group button.theme-code-group__nav-tab.theme-code-group__nav-tab-active{border-color:#7ec699}.navbar span.site-name{font-family:IstokWeb;font-weight:500;font-size:1.6em}p.sidebar-heading{font-weight:500;font-size:1em}a.sidebar-link.active{font-weight:500!important}@font-face{font-family:Raleway;src:url(/fonts/Raleway-VariableFont_wght.ttf)}@font-face{font-family:IstokWeb;src:url(/fonts/IstokWeb-Regular.ttf);font-weight:400}#nprogress{pointer-events:none}#nprogress .bar{background:#07aab4;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #07aab4,0 0 5px #07aab4;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#07aab4 transparent transparent #07aab4;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.algolia-search-wrapper>span{vertical-align:middle}.algolia-search-wrapper .algolia-autocomplete{line-height:normal}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu{background-color:#fff;border:1px solid #999;border-radius:4px;font-size:16px;margin:6px 0 0;padding:4px;text-align:left}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu:before{border-color:#999}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu [class*=ds-dataset-]{border:none;padding:0}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu .ds-suggestions{margin-top:0}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu .ds-suggestion{border-bottom:1px solid #eaecef}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#2c815b}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion{border-color:#eaecef;padding:0}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--category-header{padding:5px 10px;margin-top:0;background:#07aab4;color:#fff;font-weight:600}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background:hsla(0,0%,100%,.6)}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--wrapper{padding:0}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--title{font-weight:600;margin-bottom:0;color:#292828}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{vertical-align:top;padding:5px 7px 5px 5px;border-color:#eaecef;background:#f1f3f5}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{display:none}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column-text{color:#555}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-footer{border-color:#eaecef}.algolia-search-wrapper .algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--content{background-color:#e7edf3!important;color:#292828}@media (min-width:719px){.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{float:none;width:150px;min-width:150px;display:table-cell}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{float:none;display:table-cell;width:100%;vertical-align:top}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .ds-dropdown-menu{min-width:515px!important}}@media (max-width:719px){.algolia-search-wrapper .ds-dropdown-menu{min-width:calc(100vw - 4rem)!important;max-width:calc(100vw - 4rem)!important}.algolia-search-wrapper .algolia-docsearch-suggestion--wrapper{padding:5px 7px 5px 5px!important}.algolia-search-wrapper .algolia-docsearch-suggestion--subcategory-column{padding:0!important;background:#fff!important}.algolia-search-wrapper .algolia-docsearch-suggestion--subcategory-column-text:after{content:" > ";font-size:10px;line-height:14.4px;display:inline-block;width:5px;margin:-3px 3px 0;vertical-align:middle}}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#807d7d}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#07aab4;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #0699a2}.home .hero .action-button:hover{background-color:#08c7d3}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3f3d3d}.home .feature p{color:#5f5d5d}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#5f5d5d}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:480px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#5f5d5d;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#07aab4}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#757272}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#07aab4}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:480px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.badge[data-v-6eb0829b]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;background-color:#42b983}.badge.green[data-v-6eb0829b],.badge.tip[data-v-6eb0829b]{background-color:#23c8d2}.badge.error[data-v-6eb0829b]{background-color:#f5775b}.badge.warn[data-v-6eb0829b],.badge.warning[data-v-6eb0829b],.badge.yellow[data-v-6eb0829b]{background-color:#e9c400}.badge+.badge[data-v-6eb0829b]{margin-left:5px}.theme-code-block[data-v-311ec9b4]{display:none}.theme-code-block__active[data-v-311ec9b4]{display:block}.theme-code-block>pre[data-v-311ec9b4]{background-color:orange}.theme-code-group__nav[data-v-5cad0a2e]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-5cad0a2e]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-5cad0a2e]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-5cad0a2e]{border-bottom:1px solid #42b983}.pre-blank[data-v-5cad0a2e]{color:#42b983}a.button[data-v-439d4a3b]{display:block;width:114px;height:38px;line-height:38px;background-color:#23c8d2;border-radius:6px;color:#fff;text-align:center;font-weight:600}.column[data-v-71066fea]{margin-bottom:22px}@media only screen and (min-width:719px){.column.left[data-v-71066fea]{width:33%;margin-right:5%}.column.right[data-v-71066fea]{width:62%}}@media only screen and (min-width:719px){.columns[data-v-6d930324]{display:flex}}.contributor[data-v-074475b8]{width:3.26em;height:3.26em;border-radius:50%;text-indent:-9999px;display:inline-block;background:no-repeat url(/assets/img/contributors.b5942013.jpg);background-size:auto 102%;margin:0 .67em .67em 0;border:2px solid var(--second)}@media only screen and (min-width:414px){.contributor[data-v-074475b8]{width:3.625em;height:3.625em;margin:0 .8em .8em 0}}div[data-v-20681dd8]{height:200px;box-sizing:border-box;padding:28px;border-radius:8px;position:relative;color:#fff;margin-bottom:25px}@media only screen and (min-width:480px){div[data-v-20681dd8]{height:160px}}@media only screen and (min-width:719px){div[data-v-20681dd8]{width:31.25%;height:225px;margin-right:3%;margin-bottom:0}}div h3[data-v-20681dd8]{margin:0}@media only screen and (min-width:959px){div h3[data-v-20681dd8]{font-size:1.75em}}div h3 .header-anchor[data-v-20681dd8]{display:none}@media only screen and (min-width:959px){div p[data-v-20681dd8]{font-size:1.25em}}div.less-code[data-v-20681dd8]{background-color:#23c8d2}div.fast-secure[data-v-20681dd8]{background-color:#409cff}div.multi-spec[data-v-20681dd8]{background-color:#f5775b}@media only screen and (min-width:719px){div[data-v-20681dd8]:last-child{margin-right:0}}a[data-v-20681dd8]{position:absolute;bottom:24px;right:24px;color:#fff}.features[data-v-30c230c6]{padding:60px 0}@media only screen and (min-width:719px){.features[data-v-30c230c6]{display:flex}}@media only screen and (min-width:719px){div[data-v-f7c18a96]{width:25%}}p a[data-v-f7c18a96]{color:#292828;font-weight:400}p a[data-v-f7c18a96]:hover{text-decoration:underline}@media only screen and (max-width:719px){p[data-v-f7c18a96]{margin:0;line-height:30px}}.column img[data-v-f7c18a96]{display:block;margin:0 auto}.column.ajv img[data-v-f7c18a96]{margin:0;width:100px}@media only screen and (max-width:719px){.column.ajv img[data-v-f7c18a96]{margin-bottom:34px}}.column.links a[data-v-f7c18a96]{color:#292828;font-weight:400}@media only screen and (max-width:719px){.column.sponsors a[data-v-f7c18a96]:first-child{display:block;margin-top:80px}}.column.sponsors img[data-v-f7c18a96]{width:140px;padding:0 20px 15px}.footer-columns[data-v-de1d7950]{padding:20px 0 60px;border-bottom:1px solid #c4c4c4}@media only screen and (min-width:719px){.footer-columns[data-v-de1d7950]{display:flex}}span[data-v-3ac601d9]{vertical-align:-8px;padding-left:20px}@media only screen and (max-width:719px){span[data-v-3ac601d9]{vertical-align:-21px}}.hero-section[data-v-37c67372]{width:100%;padding:3.6rem 0 50px;overflow:hidden;background:linear-gradient(304.33deg,hsla(0,0%,92.9%,.31) -7.48%,#c6e1ff 30.07%,hsla(0,0%,92.9%,.26) 82.76%)}.hero-section .section-content[data-v-37c67372]{position:relative;max-width:1000px;padding:0 50px;margin:0 auto}@media only screen and (max-width:719px){.hero-section .section-content[data-v-37c67372]{padding:0 40px}}@media only screen and (max-width:480px){.hero-section .section-content[data-v-37c67372]{padding:0 30px}}.hero-section .section-content .section-content-wrapper[data-v-37c67372]{position:relative;z-index:2}.hero-section .hero-image[data-v-37c67372]{position:absolute;z-index:1;width:658px;top:-400px;left:-25px}@media only screen and (min-width:480px){.hero-section .hero-image[data-v-37c67372]{width:823px;top:-500px;left:50px}}@media only screen and (min-width:719px){.hero-section .hero-image[data-v-37c67372]{top:-430px;left:330px}}@media only screen and (min-width:959px){.hero-section .hero-image[data-v-37c67372]{width:1097px;top:-575px;left:425px}}.hero-section .header-anchor[data-v-37c67372]{display:none}.hero-section h1[data-v-37c67372]{font-size:2em;margin-top:200px}.hero-section h2[data-v-37c67372]{border-bottom:none}@media only screen and (min-width:480px){.hero-section h1[data-v-37c67372]{font-size:3em}.hero-section h2[data-v-37c67372]{font-size:1.75em}}@media only screen and (min-width:719px){.hero-section h1[data-v-37c67372],.hero-section h2[data-v-37c67372]{margin-left:48px}}@media only screen and (min-width:959px){.hero-section h1[data-v-37c67372]{font-size:4em}.hero-section h2[data-v-37c67372]{font-size:2.25em}.hero-section h1[data-v-37c67372],.hero-section h2[data-v-37c67372]{margin-left:64px}}.home-section[data-v-aed41194]{width:100%;padding:3.6rem 0 50px}.home-section .section-content[data-v-aed41194]{max-width:1000px;padding:0 50px;margin:0 auto}@media only screen and (max-width:719px){.home-section .section-content[data-v-aed41194]{padding:0 40px}}@media only screen and (max-width:480px){.home-section .section-content[data-v-aed41194]{padding:0 30px}}.home-section[data-v-aed41194] .theme-code-group button{position:relative;outline:none;z-index:1}.home-section.contributors[data-v-aed41194],.home-section.footer[data-v-aed41194],.home-section.testimonials[data-v-aed41194]{background:linear-gradient(295.26deg,hsla(0,0%,91%,.8) 26.65%,hsla(0,0%,100%,.04) 83.48%)}.home-section.footer p[data-v-aed41194]{padding:20px 0 0;text-align:center;color:#292828}.home-section.footer p a[data-v-aed41194]{color:#292828;font-weight:400}.home-section.footer p a[data-v-aed41194]:hover{text-decoration:underline}.homepage[data-v-07ee638e]{padding:0;box-sizing:content-box}.post[data-v-a228e400]{display:flex;border-bottom:1px solid #eaecef}.post[data-v-a228e400]:last-child{border-bottom:none}.post a.read-more[data-v-a228e400]{float:right;margin:28px 0}p.subscribe[data-v-a228e400]{margin-top:2em}p.subscribe a.all-news[data-v-a228e400]{display:block;margin-top:1rem}@media only screen and (min-width:480px){p.subscribe a.all-news[data-v-a228e400]{display:inline-block;float:right;margin-top:0}}.post-meta>div[data-v-f7ce3066]{display:inline-flex}.pub-date[data-v-f7ce3066]{color:grey}.projects p[data-v-7ef3dfe8]{max-width:1100px;padding:0}.projects img[data-v-7ef3dfe8]{display:inline-block;max-width:240px;height:40px;line-height:40px;vertical-align:middle}@media only screen and (max-width:719px){.projects img[data-v-7ef3dfe8]{max-width:160px;height:30px;line-height:30px}}.projects a[data-v-7ef3dfe8]{display:inline-block;height:40px;line-height:40px;vertical-align:middle;margin:0 36px 30px 0;font-size:28px;font-weight:500;color:#292828}@media only screen and (max-width:719px){.projects a[data-v-7ef3dfe8]{margin:0 24px 20px 0;height:30px;line-height:30px;font-size:20px}}.projects a[data-v-7ef3dfe8]:hover{text-decoration:none}.projects a span[data-v-7ef3dfe8]{display:none}.sponsors[data-v-c1b00a8c]{max-width:800px;margin:0 auto}.sponsors h2[data-v-c1b00a8c]{margin-left:0;text-decoration:none}.sponsors h2 a.header-anchor[data-v-c1b00a8c]{width:auto;margin-right:0}.sponsors p[data-v-c1b00a8c]{font-size:24px}.sponsors.bronze img[data-v-c1b00a8c],.sponsors.gold img[data-v-c1b00a8c],.sponsors.platinum img[data-v-c1b00a8c]{width:100%}.sponsors.bronze a[data-v-c1b00a8c],.sponsors.gold a[data-v-c1b00a8c],.sponsors.platinum a[data-v-c1b00a8c]{margin-bottom:10px;display:inline-block}@media only screen and (min-width:480px){.sponsors.bronze a[data-v-c1b00a8c],.sponsors.gold a[data-v-c1b00a8c],.sponsors.platinum a[data-v-c1b00a8c]{margin-bottom:0}}.sponsors.bronze a[data-v-c1b00a8c]:last-child,.sponsors.gold a[data-v-c1b00a8c]:last-child,.sponsors.platinum a[data-v-c1b00a8c]:last-child{margin-right:0}.sponsors.platinum a[data-v-c1b00a8c]{width:100%;display:block}@media only screen and (min-width:480px){.sponsors.platinum a[data-v-c1b00a8c]{display:inline-block;width:45%;margin-right:8%}}.sponsors.gold a[data-v-c1b00a8c]{width:45%;margin-right:4%}@media only screen and (min-width:480px){.sponsors.gold a[data-v-c1b00a8c]{width:31%;margin-right:2%}}.sponsors.bronze a[data-v-c1b00a8c]{width:45%;margin-right:4%}@media only screen and (min-width:480px){.sponsors.bronze a[data-v-c1b00a8c]{width:22%;margin-right:3%}}form[data-v-410e8fc2]{display:inline-block}label[data-v-410e8fc2]{display:block;margin-bottom:1rem}@media only screen and (min-width:719px){label[data-v-410e8fc2]{display:inline-block;margin-bottom:0}}button[data-v-410e8fc2],input[data-v-410e8fc2]{font-family:Raleway;font-size:16px;border:0 solid;outline:none}input[data-v-410e8fc2]{border:1px solid #cfd4db;height:2rem;width:180px;border-radius:2rem;padding:0 .5rem;margin:0 .5rem 0 0}input[data-v-410e8fc2]:focus{border-color:#07aab4}@media only screen and (min-width:719px){input[data-v-410e8fc2]{width:200px;margin:0 1rem}}button[data-v-410e8fc2]{width:114px;height:36px;line-height:36px;padding-top:0;background-color:#23c8d2;border-radius:6px;color:#fff;text-align:center;font-weight:600;display:block;margin-top:1em}@media only screen and (min-width:414px){button[data-v-410e8fc2]{display:inline-block;margin-top:0}}div.testimonial-content[data-v-2c05e654]{background-position:50%;overflow:hidden;width:280px;background-repeat:no-repeat}div.testimonial-content.blue[data-v-2c05e654]{background-image:url(/assets/img/testimonials-blue.868231a8.svg)}div.testimonial-content.green[data-v-2c05e654]{background-image:url(/assets/img/testimonials-green.6fdaa89c.svg)}div.testimonial-content p[data-v-2c05e654]{margin:.9em 0;font-size:15px}@media only screen and (max-width:374px){div.testimonial-content.blue[data-v-2c05e654],div.testimonial-content.green[data-v-2c05e654]{background-image:none;padding:0}div.testimonial-content.blue p[data-v-2c05e654],div.testimonial-content.green p[data-v-2c05e654]{font-size:15px}}@media only screen and (max-width:500px){div.testimonial-content[data-v-2c05e654]{width:100%;background-size:350px 156px;padding:0 calc(50% - 100px);box-sizing:border-box}div.testimonial-content p[data-v-2c05e654]{font-size:12px}}@media only screen and (min-width:500px){div.testimonial-content[data-v-2c05e654]{height:212px;padding:0 75px;margin:40px auto 0}}@media only screen and (min-width:959px){div.testimonial-content[data-v-2c05e654]{padding:0 calc(25% - 140px)}}.header-anchor[data-v-2c05e654]{display:none}.testimonials[data-v-729b0721]{padding:20px 0}@media only screen and (min-width:959px){.testimonials[data-v-729b0721]{display:flex}}.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-moz-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;animation-name:sbx-reset-in;animation-duration:.15s}@keyframes sbx-reset-in{0%{transform:translate3d(-20%,0,0);opacity:0}to{transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 012.966 2.966V20.5a2.967 2.967 0 01-2.966 2.964H78.988a2.967 2.967 0 01-2.966-2.964V3.897A2.961 2.961 0 0178.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 00-1.574-.199 5.7 5.7 0 00-.897.069 2.699 2.699 0 00-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 01-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 01-1.471-.636 3.085 3.085 0 01-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 011.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 011.82-.185 8.404 8.404 0 011.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 00-.384-.73 1.784 1.784 0 00-.724-.493 3.164 3.164 0 00-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 00-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 012.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 00-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 00-.814.24 1.46 1.46 0 00-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 01.233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 01-1.471-.635 3.085 3.085 0 01-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 012.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 00-.109-.875 1.873 1.873 0 00-.384-.731 1.784 1.784 0 00-.724-.492 3.165 3.165 0 00-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 00-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 012.073-.177zm-8.034-1.271a1.626 1.626 0 01-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 01-1.128 1.906 4.986 4.986 0 01-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 01-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 01-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 011.15-1.892 5.133 5.133 0 011.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 011.753 1.216 5.644 5.644 0 011.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 00-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 01-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 01-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 012.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 00-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 01-.582-.271 13.67 13.67 0 01-.55-.287 4.275 4.275 0 01-.567-.351 6.92 6.92 0 01-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 01-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 00-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 00-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 00-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 01-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 00-.978-.977h-2.28a.978.978 0 00-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 011.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 00-1.382 0l-.465.465a.973.973 0 000 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 00-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 01-4.49-4.482 4.488 4.488 0 014.49-4.482 4.488 4.488 0 014.489 4.482 4.484 4.484 0 01-4.49 4.482m0-10.85a6.363 6.363 0 100 12.729 6.37 6.37 0 006.372-6.368 6.358 6.358 0 00-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#292828}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#07aab4}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#07aab4}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #07aab4;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#07aab4}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#292828}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #08c1cd}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#292828;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:480px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#5f5d5d;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#5f5d5d}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:480px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page,.page[data-v-22624a70]{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#292828;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#07aab4;border-left-color:#07aab4}.sidebar-heading.clickable:hover{color:#07aab4}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#292828;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#07aab4}a.sidebar-link.active{font-weight:600;color:#07aab4;border-left-color:#07aab4}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}} \ No newline at end of file diff --git a/assets/img/contributors.b5942013.jpg b/assets/img/contributors.b5942013.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6c9fbffa1a5b186ddc22236c7877ce8440c954b GIT binary patch literal 241791 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�!iVt&94}yS z5-4-(iPB0(WX&NzqUWpY3*k9<{zZ2A&pO1SQv`B zbwL8scBrY&({e-Q9-$+8o!SRWpX;OLFY+LHNyy3*w!$R;0N!$;AK+)xUFmhu2aXWf z!HKT^-_n%|8b6`Z=-5;2l}_l92Xyk(yt(14`q%hk%nEps+KFMkU6XKa!%y9r*p&TF zJ+ic4;`popGv8Z<7`?N&0z2lYr6De9>KC++$zp$C6BDSz-l7bN-)52bP}{)5{iSA< zgF`HUHxVUpil>4}F$hS_J=(9i4FOz1!$}RN(s+lrt?VooUN;)GD+UAGJL+B?^na&r z{SN?^?_734_H3oUkaW)0k&NXP7#b}of!PC1*feiMF2@95`u+0Ua`JsERK^CY`1!g8 z)2YpTld0~0=9-p}-Mfl{v4ogbD7^gdyHPIS3S3_>PS? z5BVk_rdWA9`pVW++|%D?q-^Lu;EJ2wkvf&xjx|ZQdvaEIIjjix6dL@Qo0CV<6odW5 zrfO9*_z?GMJ-#{WicM;SO@}*j*sgw*o%+q~AAo@!LVS>rGZ=4)f{6-DfGeU~G=HYw z_&WA*x`Beo)1jGqsv(kEBr)CNL5-=Q#Nrz(ahn+Ti^(OI_0N%jWRI)Ly2&#H%h)4b z@Axg2-AFtWYX&m!|LVqtT(^+JQeG9w{YO4|J>WiJHZmmoxw6gnkkCcFD#(X*ACxe| zGan$TZ|w&PS9`fnRSlLD7#0AnQ3KZ)cM+4#IxdMV;n@A|Z*EEEqGyY*XwKgR6HZI5 ziyZ5m>kXkHZBV{hXeeZ{AUn#ca`ZhNl&#+Uz_)Lj^{D|MKS< z&}L%V$X$wU+nh^k)?Z)jbp7-nV2sI%OgIBKc{Umi z(?>W#W^s7(`)+M3UyTg#x~kC~jSbsvpNU+FV0Pr^c-rqKz!f3-ZrmKb9>15NITW%# z*biIusUES>%N<&lz1V2drkH{El(^R(HT%s)rUq)xAU>R|r|DCKp+{B%J=Ttl8%U(3 z-7|^k#pEvNtZ?qxOSO+VExD&mhI-bGYVbygo)$^Ajh zzhU`dP1i^{@O-tITZDhE#3)eh>6@!od-(ASkq*PRuL5u1Z$EF`-4dQ3diww`MV+`N z`X4{X@g8~uQ173ZD`Wix+4AL$PqJj;iQ;#s;iy4I`S0ALZYjw#h;(yk@|(gkb)y z#O8g7)=vBLlsvMGjYtpey}OLU&B;_{c=F1~VgH;^lG$T~stTFhgMakY<8KcWJh5$K zB;j}X*@5xcKh5O)MfT5}>}2NN$A`KH^nFoQgkM&#$~|$&Ni=fH8VbmgM&g}NcKJ7M zpFnp10Sq&f_$lq4a3Da*22sbe(mm0ctMN#x3qZ&NVr|et*D-L{;mPXY#R|(F&ABdM zo^?7f;p@;x@8xYgP`tKZQI9d}#Oae**|=57*NL&Vq?53H6_W~p(HUhL9U{N7Sb=(3 z8OVULQ1>sT7#A;n;_Zp^!?s;QP}Ht?lQ=e4|91g09K0pH{xgRZpOk6A!M>)nzcUGj z0XNxLqe2YHwXc7Z@6oxsA-HT&s-{?@0GHxavPj*OQrLvRmp^=Wy|s+peLE{IFj-xR4MkBQz&yUxV|pl1vf_n zL*;xmKk!Ian!X2TzqVC#;=3WIv$ORQ+6%R4xul!CCUN2iH;G!kc#ShDdQ8N6*V#}P z1@eWQnAF?rynAr%!5Bk3Nx#m6Xm3a3cy;)3C)~x`xfS}BslTbK4%Z`$lpZR6vAL+s zvKflsYxdw9(@_nbP-1yp{X9wjE|STTrl>(S#NXA$lq)CHhoeoQi`z+O>|GGI=61@4 zLslWL)G+VSmNXjgRRA(-l#6G@z6ZhGoB zsO{@u4;ffO)`T29je2O^f$IiBR)QUE{;AxP(;)Y4_NU^4a~vS@m=Iii^Kc+ad+*(( zGCgj0C;T7abAIPF^0xPY4p*WIzZ?66q4q?v}@Kml7=*j_Unm_nO)0wNA@?H>W3Y?WGhiG>sS< zY3{WZXE(`#57E^O#McmJv-BX{tR1O_y+BR%T47dtg;cpr&&O|<>Xm0%lfmrPJ4@}RD;Bd9w$O;^*= z8nt?=%7G>orl97gkBzT%=+7F_Sa=}hwM;ZU>gK*>Uk7>*i0ds%5s$}X|E9s#ypqx;BN7ieKy}crVI#V}BdTs@d;knx+ zqI{`I*$V?H!4pj8B29`G7dm?xpux+XPNbHTbd}4gpkWd&n+e=JsuN8`i_TAXr8G6g zqDc%Wf6p_(5!cMVrsq<6$Lhv(O-&cg`*Qa`(dw&NrJrQ~h2U;XRXjPBOKlv5c@)s~ zyr*L`VLpbP0^DCA0F{4Mk#YR5Nm*<#VNHpLlKBEg?}gZ$7{~%%y&T{$pE*t56Yu5ePEKP^~b%UBi*^eQrQ$4 zLZ%_mmH@({yHsvo`gQ7gk5YP~8PPYb8Njvxd zs+a@qc)H-|+Q%C;{+X-2AEQ=&|GwuF2MxWTsZ2lssak<@!48&KWq&gH24Y-;bo^Uu zb%dfOKlDa#I;{GFi0|sZ73OyKt2YUf~#w zR+$E-F?>9clVtQ)U5fw;$wUo}6b}tIJ1G0i-b15EGDLu#^ht3}M2SlZO~@&sP@l|C z<&-#a7%w!yZ8|!7zDQuj*1yg*I{o;XqYjLJ1d;Cb(6#sBY_r#Lf1E)9#a6_}q3-C) z;;XaEQ{Z4Jl?i07oE7Pv^T*i4J!%<9SJl&EKx==n9Ebc+5zlKz0oEQInw4pmk=0xJ z2|!eH@6E?$DzH_v-_U#t6Q|TzKmDGGb~gH8g5i*%j^JA%v;TmqDVjqlnbk{L_5*s} z3L8GV?N&eJD3vcU6k9mn3eGfpgP@rdr$73!nxKQyD}r&RsCO6dn8|$ivvRfH1@;%y z0htRGiJ)terpf*83sWdOsREZBz9V>b23mAvPcMzn+#=j%ssQ4ME%H_?8==oPc>fM6 zo%<{uVC`^6_Cou@Ruiji-tuMDbPG^+{&W_CzRGnIeT?`gkMLKDi%2w9VtE%}B~=ai z^v>;6x7m+!q*MYLsX^8&$~5Kq27-ZV$At(9&yh7F*}OpQ|;D9`+E6Dmyp$=dr)29TW6{$8EKL>WquOEZuF1vxYo?^r%cp za%z9_U(r~8mW*F)U1I2@66Ly#4o$la1574r;+8!|$hsYv9M@d798)356?pYaJc1C2 z7m)5lU-9jD?7{e8w*_mZJ+pq7?*n711Ip8zbnw5L1ZO^>gF!~h@%)29pARFY6hlu% zQ_X}39}hDBke|F5&3Jt?YLy7w;)*SwsvWI-PaS^^X^S1XQcIOhv8nXU#hE?zxxLgU zg>&i7$gAeSIULvj04#1{!&GMl3V+kfZL~{6n=kwS2D!H+r7Cm{92<4-`;GJN%hQ(o zRVBJRUT2{od1PpBuW$%|aMQE2_QPS$K@JdwMVcIW{o{ujOdY)eYX>1AdpMExt~Os4 zr*{~++)C}S;L|>C$LFT1y2;%{%_whnZJ7R)0%?zOeErvn`K#>i`7F$}{)ZJ*yOe*Nb7@3FV3 ze5Riu=JUsGVgY_3=FaRVZ_Bu;Sh+kJs|B;IGf+f7{A$rD2B+KBlX+-cPa-;N-IWiZ za;?dLpM+q^V0YR3YbZa})KX@HR*3(jt&jgxOB?R^pTEP7Pd({6pxLhh=dL1$H%8x- zqH;`MT^(th-Y{OI>|I_-E9qke@A*0qgph+V{vlsHM8|Tge^P-OGM4Z zzo$o(dfIG;$B#HLl+J`%fGi0_C`VZ^IrrVTg(rxeiT$ zV$P&Yx{WVzTz=}B3a25C2aKy%*FkCf9XGEE_h;9eSA(MKyU|(&%7&BtB@zO~*CGa+ zML+AD-X33zq1jKZ9eh;hdc{SULPCI2ANOwEqZ=wI@KZyp04!QTsWhU3I&M8R;8o3h zfMl;yy%y`RAkS#t0?OT1mTGu0j6JIj&6ugPEz*FY_~0~!d}B01qfu6A3gs;URMY>^eujU1?|xW?VcD_j2&RQr)`{gdz3 zbjv9Y+O;E_<-V6KP&qh70ev0*HwoSON z%4VI~%Hc!Y-`vBG6Nga3$!Owm2dpj-ZJy^(398Rm^ck~#>aKAK*45z!HOzfmS-5sL ziy&`*=d7Z|Rik0g(V&2YLa7wM=Pi=K$CXjbbDmYWRVmj|&geemIbEnSjrRp=<=tYG zx3HvVr#()e61x+pd~5ybYi@O~P;%Z-o{NS(Cx|X!dG?$LT6~0sdZQERRT7U(j~F-!zD23JBpf zPtjV!zz45-eGAw|xzkR{Vo5xfmiDa+UiBp{NJ2j! z0=_(9$>&#UPx@D*^zO3N?l)FNx)1Uv5Z#K_p@^wnzMs3K{aV5xvoWXvb{6B7!b2XX zV_95N%?~~5YheJdqcJAj(WGVu@1Y_TB=rW33akRH7ycPz8QQGzJ79t)bYfAyynG{e zqFI&DZTzyt0irFbf^^J>ytNHIV0X!Wbea@za%sMXg&;G@k_4LCh1g29>F0eLfBS^^ zB8!&t)fNX5{^b2*>RjCy!p-)65&Cj1Pe@?t8`2x%}y$#W27)_m+|v^kDEtIPZuO? zT81*P+fWIYuFHegMR{{TE`3A;yk)P>#q8FqNRiD;Bf4kZY>@Ppf(|Z@oLJ^a2oMvc) z_^yJwM8O=1&y&UOG4W5$y$vo!^Y#4WjZ6+Oo$brn{idvB+Tbz;#&%o z8Dw$#mAR|)k7@fEl^0DO;h=#xQqc-LT~{v1U%C52=EUWC%OOmbk9-w~`TEC&A(b4} zXb?-_&1Yo|r_4B1h2^d@W(;CS%OuGYA(l#Qi`)ErF#YoNlS4AXW#V2%<-1=F35QC> z7yH<1>u~~3mQZ0=0mrQ)1(9iQIj4eV_>&0uE77KJ7hsk=FGqwhRD7}iR-xD50Y0F8J6+WD9&T1 z%ZYR-lq$2Ilzls5tS08;J^kaloT;VBKlsYUxgEVQPhDGj#h^#~>{x>~VH-g!CV&8l zjWv~6i##yQ?P-l}2}GHudrwu#ykwI(q}D3?xrLl7J#60&)a>Ej z_(oyh$7T39@tX?6wS@(4aC_p!CSd&?emYQ4s@d%DQK_>SG&~= zLM0fQ-)}S6#E8LwV(II?!nqNl?jKLOFQ}1+1&cAoQ%OIu+zmTG4Zi%X{A%7N{q~E* z#X#iuUhk9pN9*4d{i$b#!dQZiaNQQ)(4U{OcUzJjJh@6DHC%K`;|8s6m`qYSJgZ!UJOU_-#XCCXXbxy zt#vAsGqXZI#V6(~5Lz8I*}xy>i93N;iz{~zVLB2QnhFLXX@uLQlkSB#&+jYiN}j|p zbO$+-X_NQfP_B7-oc?&2n{N^_-W!3jraP<_Y2{?Ocjqw2g+w%!`yUvnua*f7mm2BO zI1!cp#<|f0kRaXbKg41^wVVloJR&1N26&IrDRbi`vcpDirl8pp+1Irre$0Hx$f%6& z7Lb)>eny^bh3089@$&J`DaY3h&=e4BeBT1RM3`htT>Q8mysacuz|f4P(7VOBSKreT z3Ie%F6d9x|R5NH=iLaEE5@5?!11M$+K;v^M@NpUKNovTz$@`aZ=H{ zW0{&ixLwRMkactV#K9%-f|w4=oEN)0@iIGD;2Res)JeXB)ObMUf_lXtK^Ek)~Y_4$<_&j+>ew#H+A+8U*K(dUO(9gC4dJnyyhkl`9{1MI~Sv*pqx)}=UxC}`#;HqQ!;!jdyL%I-S9P1Sj|&9Z4TSdcZa zv+O;V3PTS3GyP+h*8_3Rv97c5?ENeAp@bR#Skw%t2X&J&nvM-p#MEUA{3pAcRi{11 zGptTTVij@XRn&o+_O2AFnHxCF!;m>G(W2Px{qE72Otp8UG&H$eom|1DmT5Bbgh}3X+(;b#H87O&SiGK}d+!=-_r6`9#)w@o;XK@_Y&$Ft zb%HNMmP5`uY(VfSN{;^v@%(Qzu6{xuO5=@H9_~Y)-#YAZyKF&KE`jN&$PbQ@s>DDm zA(~NnIB!Phc+^kg8--XBZjZ z$m9(pcy*LXNP4{JJkN$~tpwEY--4^IZnM$#SBo~C7%`R&SBKyK2S`cT$VWM2QrqRlVB9vc zxylWYC;l*;k1F%fJ?fEPOL;)XKl8uEI#$2Chl@~ExN+w?7(^|8Nr8|0FM9nosvi9F zuVC zJ9RkRe?Swd%cCnn@8mpN*vhNdpIl z4hf5{rf(-yXLKyU0X0q2p!ia|IsJN2gML9ivZe$ik9i&`L%Dt~PKmk&T?publnr`p z7#v&~MC=W?+I-J)%ox6pKM|*--gH@5+r*9nJw=AP{AHkL@FmTU)B{WQ9p0-dSO2+@JR%*3gzjm6o@_ZqF4=wkC| zy$AXLfytXDZ=pQ~#a9{j{bXwxBt*hklII_!cza^|M5+^-?)&9X;@aS2)_3R#75s=q zm5Piy#hG$ZnnNuslZBEM{c)>Z+XZ4ro#EPsi1)G>1PX*Yoqz!NfaY%LsUY8DwV7{( zuA$a9B_Vl_C8dN$3zM(SDRAwE83n`zt)3d%`W6y30WO`1l`E?ocR)?q^k@Npj7|jc zN4LW>lCPEqZaXoL8WvBYQa+jh2?O`L1Z03UvOuihuvBY;^O^hHYwZ@e%$P{eD~-1r zDT=ZIqI+*2C3?v2xX!PlCPhrEi*B4|6lj{G{7QEHJX|#x+sHWvXno51tce3@)GCx!`0ngVw_NVOsJCKby-6xkI^hX^JBA~ z!qqy}o_~*445{w``9LBMS`sS6d3g0gYwR6lYXeQVcciTAS?*8(&M zKk86Y)92#XE??GX@SJ|=1C~)dHq^w)Q|xbh6$^~qmk$wah}yQRsMJOD-wt&CTyct` zH2;Z{cxCElOkl;Nv0dCCG9WVKc1u7}Z}s zU84X49dhxNY$-lI?k_wgh#)7B+Bkv-3)Bm!GeM~=dJ^7J%1lp?8DsrOrzlL`DzNrv z+=3?i?VoeQlGcm-pg=<>kL>9w;;s})YgZ29%&;Y7KO!C|Xs?XSX+H>K3yQU$y66|Z z%g!V&kibVBc_kKAxp?i^D8|{fd5-H3#7PqI$dk{pS0YYQMERgD(J$L{U8$@1=az_C zGxp(6$|bB0)e1E%G^nIW{@8`|YAYWit#~UNPx{fQCkGW65S&$ED44QKxTl%hb9la;3P;bB_6kzP9ZpS@ zbPDWUC&$xu*IUS#szB>j7UnLx3)qlFQbDT)t?Fam$r$H9;6QoVu=YW2#L1HU23aOL z*@3#Ms1W#2mI(4ajMRn`vfP4`ubD0OiI5_1x9`6(CnkZ7kJxjyVW1mV&Zp{o(*EG1 z>$f=@xBmpUD@Z1WaP?*8Q-qh_R{h~5n67P6k(%{wS@D(tT_S+!nkUT<*TFvzvAbhBdP3i&*B~ zoXhqSPHWk*0NMb^rsLIAKy7Yyl--0hUCrxB0mqO4_?H631}5$Bf-j37 zATntD)jL^r$o$C*B&+Gi{O&>I9X_e*i7-i5$XHpt63w!6d;8m2dkKtM3u5wF5KAuUH5af_uAn zUYXV{Pt3?O?ls9fjODyGHeLBa0+b|x-KlkCIE4fu56K_fUBs$mhnG;!vd#z3aG$8u)pB)_RWE(biv$M zPSD3cV+d>%IUmy?6@|fn+PtxHta!)%LC0U_2<6S(k#Jqd_Xk>pNI&7|rF_lRM`GHt zSKku%Vlo!3i)bT=Fk|D~m%()-@y8LuwWE&IS7fn>2n_{67jwO3U~X@fzDr*N?@L^XD|#VEA-=T6kVi%_9)TxlE!6u0i)Yja^vy!2N~W;q(9|v5yPNj z1%AHJ)d!?Wfm!n^z*|TxZdw#97Vhk5Lq3n7GQ2(bBvcOhx!M#BrQleBM) zpv1p(;E+sq20`PCuR2i}YDsDSH?&aV8nD%LiwcK4$XOuW#s(EgFR<9rnV4v%PE38e zXK*Ky(*W+t{M0;MAZ9y7q#`_?IM{3&w}dB%MMkxb3Z)kuwbH?hDEau-yTVBw`L|sA z8`T6~N)-mz#zUHRd4T@AKt0E6@4hEMf6*(=@9%WJ3ty(|jKD)dNEgDKT4K6JKxXyE zQWRU=6rCyEuju$p*zb_69R-0%FhD>%jTFRBsJ+5I0l zjnWa@az*yduOclVLxt5d#YSAuhe#`3qgaLe^j&;;1E)OZ1#$vI`W%$>ETiI5+2&oV5sEy|yW4;F}DX^UJARN^@ji7Dcpe=I= zz1yBlcL~(<-DYNJ;MG~8!ryNL#-VwHC9H+1Ww1Yj^MFs8$-IG^2zc>JjM5T zO@Y^Y@p|%!qaO5{F=JV@Ad61rq&%{A%stwag0=U7oDFjk$fDh6e!G}l_v7os-$EAx@YKM3nZF`x{T?Sm`-?_G;y_2|B;jCI+7cH_-yW%Lx`nDI}avMCfQ zb%d1#_5@Jdos=C?og%d^WR1pF>dDA_N&mquU%t!`DB6%`bD?TczeDRHbH{%iahJhT zvSVmHwSXki(TCKyks7DDw|tDDn;Y%r_rYV5r+obr)z@gcKxMLR+DYN^arcHB$jEJ zqlj*G4vE`JNSc=dL59tL08H=xHXAlg>B15911o{0k0T3LSC#MQ+n&Ny zz$WOZh4${DZRmx?jiBxz0U6$(foI%TgS^uc%`>VEpvCkG+VR&DS6^q^ysX}iPC^(F z`i^xhxe~-H-?>4Qe!K1I(!p|y@%lqcYe7Ky(q=QC)*!8z1~*w$M6qhYnEKR(+G!?fjrVte9R*j`S#)WWRdU(_C${ChBq} zwhY*;?o+*qZ{ru@sDJ)j*C0&HCL&g3H*KFX1><7uQWZ5{iFiK%6<*MG-?qJKuP3DR z9Or3me$+3Y=H$mdM&LZkLT)}MM9ZD;&@=K4cTluM3yQ>w56y))4*eN07rK1eKUL;X zmT$-0uC!yJBuT1?)qhx2{%KW*`RXBZ)Kf&npv^jxG>+5Fwmtix#X8O7OCC|{oAbUm z^D4DN<-PqwfP1;aAp1;8HAA@eHK!Nh@pw%eGP3t6}Oq)$@{No&)7k!*Gdl>LQ_D}LPeB<-)T%U_iD2;%Dd zfSrG#l1(ux&BV*3n8I+uNeuDzy;RD?+3F-w*5eIBt7Jzz04D0;~Q#XV2C~f9WCUpA)%S&n^y~F8Mb0HXIz+t8H~ZS#T;KUNpN2-RnbeKbST7t@!=TJ_%2R3Y;au`I`o|%$Kb7f}yc)O0 zFl$t*<29Dd$cYC&s8#uVpI_nf|HOr%7V;O=iAT~~YJpK>`bo)rd*;Gmw`m@r>;@&7 z{0x34L`(}Bx2eRe5o}U&v&>$B9y5-F!-b-u7DKC)_xgC9-W1ZzJ~5#Lay6^1Vj%Ch zIXZp2YzyTk=^;{xn%Tfi#i5XrpJ!Y8Fc`@e*Y#tL}%(kNw}Shx}Li-^xd&bfBH$S~~24`>1gdIlNHkpH8mxmkHtT=s#Np z#iIYnX4cXPau%x%sb%vHNgY_+mD$6{{8ua=U*A#S=1?=riAUZro&M~m^^xK)ng^X{od1zR`>!Zlc^7dB z-dwx%lY(X$2fa;_1QG)OhOA(gd1Z%voIEg{>II%IN zgFuFU6TIz~^i?}`7>j%G_nQhHwMkN=#*%cL)7Ou4PM}*8Y-w^z%DTo#XF?9nAUzPK680lpu{0NR(ra8!uD*87tu+R2VTM5;qX&W4mRKl;UlYDo}IhM~iM z5TJv7Da@dN;JPSLNU}ru*<@Fs(%JBlkpHL+DcQWT)}Qrc1h?UzQqd_PXMaC$R@IFB zE1TbohP560g$b+cHlhZ|+zS+40XExjq-L(d=ZCUlsN&j_lOnkt?Aea))IOg#BC~>7 z^R?IX&wL5ZS^h@{bCN=a?vGr{a`PDJ)n7_E-MzmmC@>vgXZ?I3bD~$~*ReecavS*( z=lV*3Dmmbfg6J53K<$nPxlThCi*eM|`;=B3&MZ`TdJqHh7sh}9xW&=_&*b_4dOiPN zde;9A?;u$)W3b03*s8$Z#b!slV<4z915%w@Cef)emH*-7`I4EMWVyqD5-6w!Nn6Y0 zo1gn@n1GNkHtch811wIhRGDEi&s+`Opn$3mveaLFN##m8adeQWn4`X?P7TEaE9O%JdnfGXM7!_U!jdB?B5wY`&>%0Uq?QwJ23u4zZ_L(G!_^?|3o z`{@hs zfkC(w3rmg)Gr@?@=Y#_R1M5jJ7E!6O1h!ypEwd#-0SiNtF)s44WLaMYpzx8!{Kj&F zLbyY>`)v5N%Do9wP-p(wZYLeDV32qJ#n|Da-rwGjYIZg41+99&^l5*5n<#5??IC$} zAx`Ccd32-a%*4B&pIKewa4l#lZ`@0; zs?)wYAL_DLD%dY2osKqy-|FaRMb;gWMdd0s)YMo<$d_aIO-NJ!KZLziSes$DtqrAx zQYf?(_oBs%yBD{jf#3vp2<|QJ4#nNw9oizn-3cziHMsQ8x7NS*wf50I;PB-nZ=O7J zj4|&)qHorBIDGOt4YL&0EjDqFf(ysDr$*I))6V^+3v&}@Wm5sPTHv{mw5#m91VZ}; zw$nDBx1@-^PbJhQBcmZUizWUl>9cOz$&cOe`0&5k?TY%aIGVzHRN9%^Z?CkG#*-H( z>#3QP6#@SF*0~c0L2QfG7Eqp8^Pd}3y-8TGAq&JA)xM^u>lP^7Ra16e&0^5eAulj2 zA{YCP7QQe`PWfMklDCHc;le)C9yzQzRPEJ1*KdzpY?iy3V$Y9%s{324e>m`o>J|8z z#`XcQcv87M;}?R;Mp)HHaaOBYarV~sT(S70O@B|c6nRc1D36hM(xmLaudH3|8omAW zYbO3vtI)G$X5tc-vy!bBI|r+0<9 z0LH_p0iuFJ3ivr92tyQSEKYWtb0zqBn%6hVQC8Sd1H_#mFeUvKBn3%779b0>!o@7% zE;Mn~a9G73xSAku)WaHwDNedXmNaKmoS^<(HWVFnx@?fn(<8l><4lIA0D*PZ;|B95 zLVY1ZPn{vuKLT@h70sjS#Om-LwT%cU7_;vOz-O_;@l^TcvFv#IvQS>k?C977CCorz zYxdSyfv2GfT<;t)gkR-ix7b{P=MWcp6i$uF#x4NGGX7U(Nwg6*eiRfMXB(jFq52)o z6zj*7{SXI?eXxE%m@e7eEbK$cFcSDsfTB;6S;@3bBdbg5c)Kgw(j?|>!WU}UE%D%Q zNN>mk-t{-HE_q`YB8!o6`=$FJoa@+yZlAjKJAxOniT_?ixxC2fL$r4oKC%7kMyQ?e9{1IOFwnkd!9khO>&qI=`x^q>fG*4|Y`h5ga|P5BS0 zspIL5FRMCM5gEpJ$C0X&Z8mM zb`oomR_k~!`@DuH3yblJFx8uH4`DlAhyR*O63EUP0X@uKb6Ghbs?bD!8HQ^y-2-wW zfd$ilI*PemtJN!?7RLEsN4fNSm1MfUkovQ*041Xr$Njo&Qu61rlJqOx0EWwSyCyBN z)s!e_L{5qDexoG2GH6@I)P)w%4pB5R;; zXz0uGhGL^kvIgiIhjxBVcxkN7@>MwEqOuRhYxfJytXRIUO3^oIX%}M?Y&L- zFq}!QG6qlrH#(0S3}5QzkluMM+bLgDL;Fkoe4h%vd$!<%>N4s}^1A>-c z>v7-2h{{`OyNd+e1tYdo5Jl+ChDUn8);FKVM-haG|7xB_- zE%y0~MdW|oLVc2E8b095h6@KEl$I&ecPC5uxzlGQ5OhLeCG_VCpsJY-wCO?ma~Qr{-Wj_2M*3*Vz;` zMp`nql&ZbT+=Hb!N}pb-r8a(TmBjme^mH6@LD&4vGKOU`*UU?v=ed|2hPT0=jN>IR0l0|n4O_4~*JuL^{n>Q7O2i;C?4wx=Rad!IdCu?R1 z)jPc)_VkGlCND{Bq)EjgaU+Sfa_2MdT0fP3TwD zp`sRpB?4Mi?xo1jd9F0ha*)qFaTRw)FRm`jcc6OyBL;nW-G+IRB1;qLzX4n;MVJM< zOtIK&)&{tUM2R0{_z|!yGIP~TU`cosap$9{ZRE7JRy|*LB+XjI^zDk`^^@`36MH^F z%lva=mu(|=C8k>~2wU#*@yD7R(7dVdo`>#~L?q$G=AL$XykMt3azb+bZ9#~pP_bAS zKb^ zM~fM`xCN%3VHo~h{D*X*d94ssJEG~|^MX8dJ@1l2T(lnP;@je9xa{-SPrS)dR1^sN zyL;Zd&2M!ADtFD?U(=tcAt>@q7Xn|onOilVd7JxDV(ygv6XoZ9l5>vvq zdp19JHP3CdUJ)D{zsOdtSfXd*5$;gb&SaFYNEWO#$kLBazWxNIbL zCPhnyL9X_E8&Odk&o)zI48tDs@j$L>W0eF>wVzYZ`=?wKm`Wu_egvH<9G_FwTeOQc zH-5~?U9S>t&!Bdj7jtBDzL&4R%K$w2Bl4wx2Ec}^BFW_(?~wL{5GN&N?0+WG_FBU} z0mmMq-i1o9&tiz$aM2x{e@Opr5Nh$>uJUj?So?BJpIEIzKy5FuL3rlxg85@_ zyYI;JZ7|}v?c@_J<-VBPJU$#IOS@_H%AQWLSS99EAZ1TY{}zp=1r87;9%4GSUIsQW zsrF0~avTz*TbzB!yD}Hk@s3eZ_6N>?C|z$&iWwcDFdX45BTL%hNyv!&fh@c&d6re2L`m) z!g!@49Tmb+U`&N`p?m(#7_D(rk+Rr{wmgr8hJ_1{_Erqv zu=I?mWLJ0|FM_(05?W_TY@Stm$H-(e#=5-xWEXELE5VMmgX2A0e63OPE`T(YD04nF-M3 z9<20qH9Mhowu!br^VFKvoeTI^Q!7#%BJ%9{q8%Q|QnKPJ82k#y%K zHwxIP$TrU!H@7xx{XE$=P^)>UdW^^!DDWb?4YFhzIQ=`wrutLWEw4A=Z9*GH}U5r7)jdD+|@BW?7i8 z@uCbQ>bdONdB@2)4=efA;oR@*J(W3o7Z84%NcEdpl{Z;4;veI`?w}d}+>UK0xRcwN z*DD7IGWs1zEU)T6AIJ8wFXzUrJ&fymSG4gkHwV9s?;-Wy?!8yvF&(fUE1)`4WIP0@ zIIt5~rR-^ZU;BqdCnu`sQZkrwJm6Y1*=xrkXl}(yqhr`;nL%af+eVY)M!$lWpU@oQ zXFEJwJPwwVfB3L8E0Q3i@JnS|U+6`e=d&GmFA{ASY%NCsF9H~xP3bsVjTc82$~O`` zv1ggs&XwDBVO!8q-!7F!EDK&~lF(NX*Vq+Q61iT)lYOh^T5s)3-EsWtTyaegM{O!1w<1l>q2U&B4(-QJSx#O}9&(^#SpEFV=Xb6N>gluK zOqQ?r3U+bX|{=MKz$`@s)$bU zCuLt6zRMaDf$~k@8qdVAFrsMPJHFpDEs6RIxN7Qb$F*Fdq`_v@BJ3`>hC)3|TDuP_ z6By(D!o91uyDNMwnOXk%MnLMMFPt)gL+&x57PI8x`=J!ZqDD&Pbu6lf#Lc#e-a2Fb zt71ZE2dPDmc#hrz88G7IP{3H;DU_?3vVEFcSQNtJ2B-s8I!n`81l8S(54{QB35;=M zkn3II2@mBg?I6$Dbg_xFDx~Pt|NSY3bAjkd%FC0Kl$u|pSxEVFdC?bfm!5swu38AD z%p><10|n0%R&;@fsQP(TO_+nr7;|LUwkP3A?_~$b&Cj4Cye2zYb~-XM8!{#T1TAhV z2^HdZupxtg)sZx1XFY2e=+=h#r^fV*XIfwVkyBVTU3HiZnRj^ihY@%{HLoyee6<}x zIO{3PKlJxGhv=osP#H7_z)m_1x~9rK9iL95ifCtA(FzEj~7tB7#` zE)Eh}oGf|ME~xa8*kFDYaD6H5;rVi#oJA3gYv@6u@)g<{bAGHXD?u&1Kr8n*7V@fD zWBR9iTT;U1>unKIE;zA*^hw_N+Dv@@z(kQq((&H@*sw8+(x;W?>GyNFZE z>nJ3-8@wa+dMJE2y$X^{C^piX$zhSzb)amuA0vM?lgtU;bPwN}epxBBR;$!<@5759 z$LALS$MpF#UN(?2SJ0~E^z~3TFbqgyi^$ikTI3xr4@FA!Hym)5tZtYt|DO< z;iw9(lF*W4>su(CMA$)@l6R$Q_*1X_R;Sgbbxpl53v(|v_ZU%*wt08!)8dXF^+7ne zkmT%(9BnfO!)a*XT~y+?I&iN{Hsj6gUPbcMDD8-9<8r;txzIl(nTu~)DO)qcOvEU4 zVFPO%;Bf)iCHMCBcF?G`x1P{F-K~n0zj^~(h$utBv6IGgAr;(dZe`3~r8rU{Bc-Dq zKbp%HhasP`R(%qF@5z1DbnX$wJ)79@So4r0Cqoj_S22~~pR?M=&Wobnmj19ulErs{ zNr$APEG_3S5xc8HmxL32-`>3kZ82lf?bp&mN389=jr^G>@<I>&zbjOzcZ z+Kg|wYvmv>%9=rI4n7J0CB(9MkC>OlOSOSND%)6Srg=w4tHn{8zw(hMl>k!em97~J zlT0(#U?Gy0x-zYuG95vun))J@0WATAI5R5wvk2-D8H@rXgbwD5A1W^Atpbpz#0b+&~vGj(S>gx&ob#*=Eg6RhqfFu-m&NbvVFz zJn8~`dLcd3Inx=@(kKT&y_cxs~fIW)z(ez(Fkh>exKR%ctlvhwSTPjx*}UYgRZ zM-pbV7G*ohhuK6_;+)kx5z>a=3nKus)-1 zQ;1Hic43DTt$#>YYiy6lfW+ZP@^vongo29d9ix#$EGZ`K!m~ORV7C${qO>uQ#5k%& zwB$%)7CYTX($@-1HeXmI4*_2p|1hUCigMY`#7cX1?u6be*SJc<-q^ZC87P3QZ{0a@ zQf@K>I9J17#O50`@$$2?bTak09ZtC$W!bpAQ6rebnbpoK?bDDywi0R4#6hnP?#$Z` zFUM}{x_G~^aJ5C(NE)R&*xH+=pN%cs@AyKDMf+5Q+gA7P8J6W-0l)w0}6XpObPsy7PPS zeE&>h2`!%>m!dt<)=B^>_=hHALQ3TVUU*qVjD->8$-J6uVJoIYL+N#1A#E;gn zCq1E9nC@Ioq965A?UO3VMr4n4@_*#bm>BYvQGS{Pl_CBqwZvnD=1CpwtF}%0Ztp6F zLPwbyKS%urMc;)!!@xTTXJ^(Dd@l3rXS;*j3DxELWL?1zu&U?|7W}=f#fdN4m2v)6 ze*cifXVa&%_~)&t%v5Ex>|}8En-{2tUO{O)IQe($#i`L+HqQ*QNV%vT)YFUPtW6Gi zU-aP@%R;JpxH6jY&U9+Is1HBiJ~55;&p4GX9T+n{hU4f!pF=)*`@Ps58Gj^bqYpML z>zCqdKGxT{HizEg==LSzi!vJDMdq+`n6R9)@KP*g9mP zWYs-4ys=zanyn49CNIOS_9Jv#=bw({l0~W;k>?F0T6hwFBbf6VrlJz;Vx$fs+&r`P zo&2yBsJKfyI1OKRod2UUp_w)X==#rA08gXtul$}1>II7jfLayykj(;*MUKMt4l(d#a`c{E_Zl3zsUmq2{?_G$?3=r~$^4kt=HMf2!4ea; zV3mt$-V$*&AV3~zcBSp%h21okm?=AG5{!Q8mPYuDi(nQz;cUFK z+tgkEWUV&BHH|@H#=?aEn+C4>kaNkD@lj`BQn&u#%*AUVw3F9~AUut0g+!YxlF7(C zV}#_Ctl=_*pPq1t==XND4W=P8Rc@2*LGFsXxlErZ7WxluD#f-5#Scs|83LK=LJyB} zIZCG5gwoFwPVgETbOQd8$-Np{!o}%3-_4PXw4DWV9FuRCCrL3pC|5kf=oE3c)lufu z>GJIRPNmL&hO$#PF-q;3x7wm5!fOxF$I+TR@0Pz;oC|7qvT`mlX#lQ>wgh#O?RPC# zMr`AHNG2g|k^4n+J;)x<{U;+7R^FQX?e_Xl$ zox4VyN&&Z*6B|zx6Jz9r>6h$G(o>(Vn7Y?TxLrw_LmQL|CuFCNm5W?bckeP&;(de*b#=6P{)T-7JjV&7pB9mMrj5h3gn9>ve?p4>;KmSd zZ7Ch2otML(hMpOV1REG5h9QYZZ~PleD1G-<@2`OUtE36Qq~vZR@LFj`_WJqF^y-r+ zLwg9n79YUU^?l&bn8#vxkL9t~tY!hO!~TPC;j%nbc1DVxS)Ya)g}!d91_Mt^Nsh?m zNItnuMemVXR@{u}S}6U7*+YwzYq~EwLfC1*vi4qv1Z`*^t!>~7mKyrWiLo5!Okbw) z596oOcHL<47E=$AHZ!;7v+ydH5#BcZOFUG3Di;qOR_0KGS%u zu(Q%TDu4uDlbR4{M-DgB7v}~kotb^bkJzYie(m!?xZOfDT7%#1+pK1lCw4d@78VZ6 z>iyQCJTLSk%6+T))=gR-(Q4iT>b~Rj=6WGZA3q3kZw4R)rit@UZ7MaN8`9^$?`Fl2 zTX2t#7xeGiooMM~i;v5vY|Lv1mY@rEkdt`Upg*bmR!R@>)Hbq9j}}%&?!E7=5sG6+ z(8oU{lvuekcFDGf_vT@>Y$56$8&GticHeL~|7QG+?xjZAgTORu51)p@x7L{gf#m(0 zSvD$jyG@BI?Q-I-f>@dm;n@v@Stt>yxSg38$s^=cTAfp^tF-gs*r&(?dP;MS#aLo` z&F7h+SGqHnT~aP~qgr1nn5OV`Xtj0cVw{Npbv4R2!z+`uYV&b~u=4$H8>?Z$>F+3* z3@hvBe7Dt%Wq$$9Q4geeQfle38s>+~rmrSRnp1RZa|Eemnle^aj&ueb^47m7)LVQe zm2ELwQxwa^X5Ov=#{*kR(gL;IO?fUM+?(S>j&f-6^WpS_t3+V1EaIK$x=E|jUY08n z1GWDANFx2A96L3ut9`*FSVm^`&?7Tma|c!-xUv{9n_QRREPAngU<2h;Sr;MqMz?3{ zZ~Q>JGcC7UXp~h?T1py43O><`PXIP_m9Ts~TGk59d*Z6qeO$CVb-m{p{zUtE;vCYN z_~UtdsG7KGSMw4An(Eywcr(U1AS6`|g=o;)D$B7aQ`HP@mepx~L8@!r1aySf`xh1S`IvHSc{6;SeOxk>9LP)(IJ)^2 z88k#Xui=$va&46b`~MjocyRg=geLwUN{38@+tIDebQ*lb*pd)&c9RNI?_s6(_FQbN zUr!?TW)yFn5lvt|V**$k2oX%EV@vcY%J8P&zsmdG;oQ$c*f7kZx96Vd(@UGM5adpj zUF|Mbqb5f{0wEON>8dS6KWDPjnDfUD@2czzM?25-KJxRdg}lp3ThcxR0O?YxR#qFu zlkv4;Nm_+KS0@J2)Mzq9Y8+)G%QtNrPTUOo>TYclhT%;h=Jt5}ss-&bQj^!i%){Ldif4|ByKFsR}6%45h)-BRm=9dW3Uw_MQej*~$B~ z#I*qamD=WyA2}R`cYX}k*h5O_^G>tbE;7^UqHV}yY3w`&U&|5Nf2`)G0Wjw8vM5qk zj~l97>{W3A(958bV4N%jB31kPSP(J602DOTV+vp1U6j^`c$h67=jMtYKLEI`dE9wb z_oP=R!u#4?YQL#|3&=?=GJDJQ=Z`DFAK)ml@AX(gt0pszgl_ezO>vQkY1#<41sKrR z^MUJ8cIPL9VvENX?(4*}Oe3#(r`%I+H_zmqy$6uc=#u@;O?BVBi{!3Iel^GcR{T*$ zDpeks|5JLck4h$U_?=}wOUUkdS{zOtFE78}Iy|O*<-pD%ZbZ^r&Cf)h%uhxhxXaRw z@v6&FS=ojYKwUqLO9J{#$n10n(0^M*lI=$2klx=yIuGL>%ryU@S9!Qvit)?oka?^T z4P~|rFDoW6{VsMZtx*LN+SRdj=ns_;-<2b6+2Fj}D%!8MB3#Yk#?b93%07Hcld_De znf{#vw;9nSlt;BP--o|)&0rjzWI_KKAdj0MS7O?W+;RfMwQ_K8zQHIVxS zyt_P}nsM>U`O(PJbe`4GY5RI9iGjj}eUKs6 z^*1`7TN40{Q^;7RWjZusbc4jSc+?yLb!bAc<&Lk{IEji!1!~{@ieoaWMdHbZt!tdP zp^E_5fj?1E0RpbiOy!O+;kUC%T=B7GDx_7MTt6V1G!L`=TsZ0Rkaa`srmuw5C3tgW zG4B#?qYOW;t*)t1EW;Aar2g6qAs>HHsLPV$ZNp03@f@{q|4zWv_zE2^GRIA#An`tO zOwA^Yd~WAk@F2@Bc9I>vgRpmc*q1KFWlP98Sy%Ex6xT0q$(M+$Ql=J1x0g56Xq3&9 zzTpS+jXWY*?Z3oP2EBg#zUD$6OKb}_k)x-XM6{UOW(YU5`DUX<)W(Oxktp4(XUXnph%lHYYse2S3 zyl-%|Z-6_o%wArGr~i#Qv=JsU9#r!0twM+05|PJ7~${y(JDBUNb*fMR%Kfm7I;#&_78 zNYk9(zTR6+UeI}w!&rnskcwFJZndlB8tJ1y@RDDfC3m(8b=D*U0GE zUjPZ7I&Ev7yzAk7NjB>Kb?9jyWf5B*>0C4_{hfzGKe0swJdJ#ntvX@-dzdfebpXlY z)dK)a6q|T9YrX>1fCkh!q-nOWu<_f&V-#0ICaU>W5|PQJcuOA|wYo&Q;C%nP{xmAK zD?2CHLSS6^xOG}i2gAXg^_G^WL_9HbPNFmSG+2O9el!v=`!Z27!4<^pln07IMJf@v zs+`q@{+f!W9Rq#3@jqYe{_$i}F?dUyylL9Pc54!bgF1CK=IcfrWjUi7A>#f~OVb=0 zYg--oX)jWrEy0cSu)FV{NOoy*4KJsEhC4zzLS=y6Y z_x?}xHcA>b8R_;+vG>J+L6rS`NtT3aN0b{vr~MnRcbHAt&>Z7jpWhK;;-?vnvEk*| zT7}D>NM>DEoIK%kUJ_+bsnIldDr?`DVXU7l48+(9m*ChC7n2_citPKY+qM1V|HpvHZhAmMww zN{rHVcB`m!`JimKHZ<}L7#?GRO>$Q97n&NJvsjn?jiyOhSVg5`sQA>GREevgvV!Odf}oIyGcml3`!G+EcvheX`_a zCq~W6>cQS9)bj!3ZUA5xXGh7uXvJiTsKd;ga1S|yX5k^?9UK>`mEa%ZLsQV*sS zv8anJxFSm9Ga?0vuyTl*1$XrWz8nICvgNoJhu=Lxf^5yOjKyyj>p_e8sgf*d8RgR{~{PKiNYgw%noU{Qi>A6mEzDN9uQ@sE{?;_BfTb41c70V0 z&*=h|QA4QO7;kT}>{+wCh~AQ7n<0Ixio$}C)0wPE?$a4z{^ zY({p;LlJXF-ibxgIprESSng+O|ZL*RU%4GReBw=8QuR-Y}oHK4@Dj(K3o8jU$so zwn+Rfpz+>k?A%J5fe}d`?#w3sm7><{3u?P98A==(y?OM8JcwHa1=15QK}6A9<*EJJ z@|Rb#-N2tZ8Pu6KBwpV0gin%rxYJN=#&-<~zE~MsyuF^COg8wrsTZqDX9x<=XBjmQ zQq#cud2L&h%6mI=eOspDwwk;_NseSRKGY6oF!Tno)3cw0&BDADs^-C+(RjJ+xt$<} z!lR5jgNU654$)lqn=x>qv2593c%J6#<4><)n5wt^{54W1aw#IVO(uB$MNMBi#-8lm zGdI|A>_ZfYLfEiTqPYaU=1I7xL0{qqy)rn-z;uXsaJLUcgWa)!V1`87R!DUaw%d`i zSc_lR{ME;r(VE@WUGW!zj$s;dl3FnDxWZ!^i?m!alE~7|F5YODsYj8wXU~=Sh@Lw& zg1rmHcQ8Mt`n7En3WIeuAY0au1h5@BNd>><(wI#)?)iEU+&fEpU8WfU;%`$2f3+}i z%&XmCGic+xt)V9f%~J)>M;|+clo@6$O?fqBwAY8K)&p8>F!*Sq;=i`1z4-mMPyBHx zpWP*xgIY7YUBn2?O3dce9+tMap+gXNmvM9tQVu9^XrYM?LK|UoL-d5gVms*rjgFTM zQJN12FXr!x1@cv4^`Gb9vFHOA1|Fdb&23lB5VBd~q(dTae3G;f4iCs3pyfy3ch#LB zPoJjyi4&m)@ZGkg!#MbQy~!J8Qi!P`N!J||7UtBmlX8QWx}rbud>$~;;XBSEly}Ki zX4NVnGh6zQ*^|~^pM5I@Vgy_U{F(~Y&8Gh{K+aBg#K}Lw)lHw)uEuC|in=xu1@0+nUz<@EOgClGD|Y{uVBtB5 z|8+%A8f%LfIL*Ec>)Ln7Fo*2+UC+mr`HpS%RB4ao zbLd$*@!R=Zo;;zQ_}39+=%gGEv8q4@=te>kSz&DYPS(RIcW|uH!4rxzU3+_oekBho za)=kHKM>Y;oVF0;mMC4cdW?U&BrDmT{i@2CusLQ(Bf^WiX6i|XY%PZ_38eC6;Lh_` z&8Uo`%f`mlf%@=#|D(pOfMKwklboMv0xn}UE?Mr=+T8o5TxcSYLjK^U!pflzgKSjq zlz%5P{Vd261R5+u5DIlFC=mjazo{r8q}oSF0QWM`Kff)CL8uW^;qw#L?h{(oSK;b& zq-lIj6BA|*0R+P0ru0>7T~`n?YVK%3{`ij`gZHKf-BIoYLvth{?M>o`ahWg0sWd!<1Se}!~!IxnKUD0=_oiGLw@m6+o7eMR@+qWAM^3uECm!dKMg zPAYKIGb=7;tpRuIh3q8WMa+NXD5HugmDIvU)Pd^LsUrgHJh~=ZtDPG2P;w zS^6k8hgnrBamxdi!mYxLDP)d7X7u$eOVUVAbIb^8%XjW3pCiY>ZO+(B;CZ|8lRf5b z4XZ-(Qa0inrV&q9P&nrAfM{4nTs9r3dFI|~Q~ea%w^r-kt4jcq`}*gP(C(-hm-TYh zUG&)4lU-tSm)9$f=POmKw$H*07b+WRer4pO5F}x4Y_l$s2N17g<2#v@yBvE9sTO{a z!8Kx}3PzL&qP}s(WdO#8||*ln1^VdrAM zJHKglfn<(bB#t7zubLr3Ohd;4%0=XP#EjHsA45h=0)z%$rXM%g!I&?fu)@dTMK~BOu0P%Ln84ghYSGij(`Ukj3Euli~LKyjvSqnX!$njm0qq* zf7=B=Vu%39LlKNA$dhDcmhu*FaIuuevLvs8UnBAlvuzSNo^WbYk%D;H_h$39)h4bH z#;q|Skw3JyzSYK))zxot#-9qj{Hpe<(9Pm9o2<&$?rO-XZH)gms!b!$vy+*4FyAl@ zQ;xQdUgEmjNLte?HXE2cb^h)3%Io`6&{~LFp8MYETj-Yo8SwhUeB<2GgqD_+4I->| zpij?Gh$SUE!96R&x%`b#+e%$tX4R?){XXEmXWa3_#IztH$0X$bEb~ZSa%8Beu1R01AvvS6=V4_;+1O}!&i9xm441z zPTIdac6p9{P97?nL&jk8MMG7sIW$$RJ*iFkdiM`?8@!q>oIlIi$NGKXBKCAOlNhss zN2KEUrA>o?#4VG*-&vE04@Ni^`cvq(;rIO24szzg#JVfXNsF`S=&~(M@P%%jMAD4Os;PCqcLG8AI6F1 zEzWVjUi9r;PDyzPerm>_ur{?eI%W54 z0*LJawfZa*jBT9>H|B{$Sw(RvMs+Rf3sHdA2TCKL$r819f*ET#(|c{RCsK>-kiA!> zkQDxHk)Q3B8@u*iA(~DKn?Fvbb)>*3RgD2TwS9HmwDL$=QU5qem#f_S# zGthH7*uI)*{gIjSn-8rNLX_WV$g(ytOVO2w=%$1ptc(XtppX;EP_?=U)9f^fTRGjN zurKKfFuA(FM!vt!-?tme0Qk{0pO1BZHP~+^IB%Uu6F{|v{~0`Z;a(BvmsthW!L|Th z6+BN&r5-i|YOB&O_)T*8QS7MP61}-dG2WU7Y~iH!(e05Ufg8oG9@I8j94@r)nEQh5 zpWW4V0^f|`<<$ylmbTmBe{lKzyvP0k$gWd@^Qziz2$|IkSrx1mbbeivjmj&qO)|mu z2TrGujq6>B?b;FTtPx-NNRB}D$*R%s?$AAh*G*(qqV#e?nb?u;rewwl0Xquf_* zu<5j=FMf?XW6{u-wqw+7{ug}8t_GcMkdCWQo}uZ|Y_hu`qG}g!aZwbfp4=|oOV<)6 z2CHdV!!W=ear*KXLo})OZV5XnFd^{WEC-ARF1t2ald|5M`W32DFUjs)${{T_;M-bN z#ytWW8IUT|TRS(5G)h#hZwxo!H?=GAmk=)3i2rF(w4{9CUYdq(s`z!nIA(UGt|)f= z+&Un8UX*_jj^`N5`N@qHgW!-LVosg@7u+ytIU4?PO$s+es>ReSLRo`hT=q$<@^JIM zV6>e~+g723RpHd@P~5+))4}V2R5C7tJ*Ubnv{#_MUciYj#|+DgbiIFZn&dqr%|21x z{kxlTDT#MXpx;5zy4~q4w05IHXm%jxL1ZVz1N) z(S$YVs)8xE*`@q&s<2Pav~=71frf7*5z?aaTMG;%o=VP&xW!R&az$IRmw$tD_C@H0 zJ3$a+leG{kvcg4M*h4EmzRn`8vcb?n%+-$nWS2j&MKfdf)UWWRkYi$E6hesP_oloI zQU)>bH?1hsg;-NY;4Oz`;CdnJl7@I^Gaw)5;EC=4D6UsU4#6#=8qK-B{7)^>jED{IivS!Ul1x*&wc#$PPXD1h>n#8RPaEK8e zoj?=ynoP>FBIbqEx0~DOs)~U`A96kGFm)bFk%vT2Z~zB0M=)idX?~}hXqt`&2vutw zeM$hn5bA*LK9iSbVJfr#MmAG~SHl@BCjy4DW9N%u4a}grpMe^TifIiY38LC{jq9Qa zMIgakl;kh}?n$*osStO3#PFGdW#>NPlXt>?a*B~@&(WoP(c0oS6DPTZjhcwK`Fxy` z=d>t8$@a*7ud7Y104x&6;ZTzkAiq=7>cJ;HVE0Pg>f)AEU6(Eu$or@iP zbj^9y+kK~h@!EsIVJo|D^^c2Yw;T^g{f-xDV9s=B)C|+ZEt6Vk{VG^27mC9I};;M;FNhkwDiqx=h0_1*6dF zrM*3((D{3{=mb9E>j|#i<1?Dp1io|>N5~%LCB-kJ0MQ%ZlbXh?Ygg=?M%GhIVs9DP zYU^#v`RDkV&jgtX03`RbC@*YlSYl-GhF(!|H7x(ma!t<0aX~TCu3;pg{6w%`g%XDk zk+$ltAe`*fx6J*k(Ri-|T<`m670V2`;6dN~z167Eb~5btXs;4BGb025F?Z`nu`#s> zYO+uC6xkdDq2VT<7PowqZnC_!_^NWghGo7H{k2!@oQ$xX$I9r{fbg$75x70y zQ4fUvmOGb-@`@^l6gww`f6}XL^DbF4_`)#?`a!tyH}_K}miJ9*uo+(d?AR6OAzN6_ zC7b_>*-O)nj{k+9jL^-0k{;C1{Ai)ZdxG2(L*|vXHcDh^BqVP&B+8FJk;&mm>nx(J zJ;{Q#Lag0|zv1iuX|?-b;g4wJx(jXloq4o3ecpFQukEf3p&Qs2m9(00!O!BrOOCUe zomR}YcZDvhKXjVc_J$b+$rk?VCekLwe~^thF|`-uGE?@K-|J^{Ir`huR5Go@T@2ql}%p(js|o`W{-;SyGu@34P*^ z%h>65ON~gaL+AMtCg}Dly^bEC0WZax^x%;`-Io@N=u$HA0bz)Iwm|`3q#cQRPm7%G zaZw5{4TI`!*ikHSPt|sAh&q4DkHES;km=AJy+i`wBzZLydn7=hz)4Z+MDE^6>5bgT5szCnBuqMs$@<1$iaBrXVP{BPohR{t^{t8Aw z0Gco2<{pjV1;!lOrlJR*GSR!aTv4OQ-q|?S989kP$8J2MMsxXwTl`Cp5c5KHyQ4Ee zXn6X2{KV1PhXoVwo`4krjP|rD`H0 zY@9PjK3g6~ncHB?O*N}81>1ZTU;B)Vi5qF{W6hspOW`Y~4Ye)Jks^BRl{Sfq0blu_ z5H$Q%ak_~i7(G9~@RE6D;+2hIcaFwfHJg1_)C|uSc+w4J5$lVCZhDbPlC`t2uam4B z`IOzz!CG>NmuPQJSc?~P+~VQq(@MWBcaMo&VMtvyrt~X3LoOE!J51BE$ND+4lD-#OLnV+~{Yo1EDL}?{8Y4&6hySj?q3S+G03J?iwlWf5q`6plF?)T|&lsmk zwFPO*vHxA3IN!*x5FXQtE8EigJ5?Hq zd5tz_yZwDLj#K|id0Elto-A9c&OJ0S{||5~Ar~u?dH>7UJBoN8CEX_eb2!$s+?U8_ z(}?8`3E6}q<~W;ypLXTS8gt|Zl}DTwyc=doYNlo+bcZ~o2Xu8fMM1F_`n2zfNX>1D#n z!0g6%`}vDH-spaRlGQ;p`Kr}?W&6k6KzKv{716zjrToUXE?iY7FfuzqDpONh3V2n9 zcAlxG>cT8D@w!y!WF_#Bb6oC#*zq8}maB>vrNh3}fbPlvd&v>8gOZ6|@k*j1i{~l( zgy-Z!+8vcOBM_B&Y1@z62$magPhGOz0r>wF%e87a)l(R_i?7l?jO}&FZ?;(3L)Z$W z_WK6+sLtso`J?s0i6;5BL*DHLmcJ^Vq)(9P)7U*Ig4UlxHfx?{cWDxT6o>%7w}p)!L6te*TTR zvC+Fv%IK|P)OJF{xN*~ClQcf)OtWP!tE)sPn|`&js~PrU{afh0Lt$FqN`_(1o!I949bw>V(nM z@TG644*mf?_)R|{Cf!cEjE+9y*K{g>f<;w5MN{yR!hj`yv)Z#rZxd6uhr;L+*E`pY zV&wjnFGg4TZKYbPR`)$R-#wFz%y3Y)smV8;K)KZ00fIg2q*vn+x_N`tr6Q(uHnGpx z3r~uO{{V;&ykF}VjFY6>r-~eINEooLb1)_&f%vwzT!*(nG=2LH%qrovHlOOVPe02r zD`GgoLEsmFGcj;*5>K<=9{*qwia?)v)Auz7aGvkyk%Jj3y3FIQWzsrDVW>d_-mOwP zFANa+@zkA!Vu)6LA!O0UKcS26${jioaW6I9$yw)3BE26dW1-4Q{gq)`#Vxc)4{1;JI zZP;#wEUXvX%&1D!z-k7?Fg1&n4O8Xb=Bu9}R^R;kV5(MJ={3x~x@-Vua`kKvZSWY) z%%f(T6cZ&r$RbdhvvODI|KcS~HDemiQuLTFM2+?yXfyN8VU460+0{7)*zOgDA@qE5NR1T_#4jN>p$p?8I z**482Rn0e=ZcFU;YobEOy4AEijFCK!lt<-8+GBzlutw(#k_k*dF@pKHNr*cn!#SQc z@Oj&6)N9*BmO>fZP^p6yUD&@yQ=gB*z0QJj9Kp~lHIt!7@`L%=I-gM!f_nvjoOLOO zOPx_$o5$!$`R+wm^5(ZLS=puSL%DtVs$sYQdl+Gn+{y*= z$HOCGNA2drQ8L>vZGK8iO?EhM>@i zEuWgx8_Vx65U?<{EbgAnL$sHea&)Pc96b2wvOvP}YP#IoqJ2?;GQwbR4WS}(x{ut$ zZ<8&HbLLYy4S_a82CUXhey4nLVbMg`HGorT-X9_40YAR^c91zW@4ZCs&b<{IAH_d_ zYym>%klNn3dCi1}_PMvF3X zHKQe`(vvVaeyYZ#RR3s!o;eXRB^~xD&ne$eP4c7p6cFXbedffg1LR zYpImoVKVA90YdC@0I*8CU`Zx74fxsB<|bMekXOWalT12=?3&Lz(j^Oc!i0s8<$u4< zy_9I74JiT+0flT7*h5GGxW@kguKo<_Uup?bdICg6D_(F*8m`A0x94FCZg!F~sN`=E zF=yN&*aciWD_=XCiGH}C+3iGyC`AYSd=d#gD3V<#wCL5c8e2V|*yt4)>EG7D$^W&~ zo(JA)239g0e_b_`SjsH=U3vS;!**__(;{L-){L0q6+24~9Vodub#ZRaI0$PuE7UuV zD)?##|`AY$w#g^R`V8)^wj-zA+wgN&YVFcZX;|2QzJ2C@Jo=MqPCUc zQv7S8WyzP*a3&%|BvpVU8|Lhj3zxu$q%tuTivr6nUnzx+JN~o%sAhV~pM>5e2!0JA za*SRT@>EJx=b|wD#}MZml4ym4$$y^4nyy}c;;U%tTdwEdw^jK%K(WUE{wrvJo7Ts? z18`l>#x;ih)1iM%l?fb-7jnGW6?VhD^c9^A!F$1SF|(0mPYO0#p1scTnQXa1bjU9H zpAr!AY)n5eE}PPKdbtfWwnyh)!ceRf0>CnoOS)*eWS3ryt@(D&-t3?w{CDuSq{$?e z3>4N$aGX~5I6Gid(fw$a{we)1(_cu#jEPzHw>2v#aZ1Xd?f3OhmkA;`=^&l=>EY@` zzgMLX;@eGf4v{`aY+#4nxpb__^cc6CENc@JJl!=|I-~qlz2?PAVYT4=h3G({Ba?HXPPfnH{|Tw{>Uf##HsO` zwQ>0NZ4570P18@#M={o@;)5mh+~(6e;VkJ!?N6%H$9P#%UZ7kvA}F&Iu;pjtfq_?kG@3 zI>(Os0bEO*4?}b3>I|f6)7D27I}=SKzaht%ZvD0+gykrOtsq`?yez+N8KXXe=F4+@ z6<|W~`G51=E(S5agbS{#^D;`lxTUwYF0!Dzb!^Q7BL zB(cQG>qlmZg|n`Z((zrFMSTm{aEZnV3A*k$c@Q7&u5f@MA;7ICJ($X_vb~$ik;!$N9Nl#PK%76QqH8!X1`)~$#PIcJ}&sb%X9xvhmMH2 zzU@3O*mrT@1}ZH2DSIM-ia{G0jiX;dq@x%<^&u8#)VydFK*TYc;kpV39D)q(_f_EX z+oMy`{c_m>Ba8;dgF6!$owI)5PoFYg>%lKebU%Tmj(SJk5UOK+f)AYXGeuX|L{U&< zB};}HUnxg~q|V})rs)LX3SA8+8lv_vCK`5Kk~^+uTir)94PN2*-{s#;eYHDz-zoG5 zt&W%G`z|^QUe-%=fssCE+Fp1kxnhu0Y@T^8ZTgQJ7+I-fYnQ^5kMtCNwo>@9OpoT|wT;vAc6^KStk2Y}OR8!o0?#Rv_8PpU7wBvWXeRrpfBV$)(XuLGGp! zV`f3@c8#{mKR0B-$^lALLJR?TNbscaah&sYWy%hg5_+!J`r6iqIC1gv7XJXe_gSvn z7s2XYYsb2W_DJz;XvrU#O#48kJA|U4SWSM`Dt!}*MMW%6u$u;i!-DWk8c%C~4j_gP zRzp+9_o`#0BemL3O^Enm&vKqGHPDJrff4TUEh>ZKW#XE5?-`|;Y>gZ1!$19`L5t1# zt8|FymLFHkr(?U8aKiRKEG5kM+f}_}tlM%hRBiv+Ypo^`5n>s|s)3!moyx2|P(@x4 zZnYanr<;`hv*wOsL|zWS5KT-5R<-nzx@jXo3kjq{o@xK)>1J*M8!G<&xXzYZ^g~CU zh4wx5rdjyln)u0V{NG8x#Fdbq)`?d*+8-~PQ)lh$#q=}G1z_V%_RE2)0|^Mzqev-?(=UjLZ5>D**HhyRBmA zBv;Lx?`;!i9c+rt#614+(J(RtSU~H|zWT_i)tt2bny>bmbET=k5+ROs#s2G(5Xm-U z8HNB?cP!6O{#^~cybB92wj~m(ZPL5ApZEiq4pw={t7Our!%)$1_ojJUvT}5?P~IkS zjVcx9J0Z?Nj@4u0TF+~)+MT$8rkqo-uAJQrN#UXdo+A~$XW`b>3xx|%*-?$woG>eP zbM(ZPO0g*kF)>)nxVZm2{EBeRxbtvZda*u_NHu0rZslymUtL9H{vGT0nL6^J>r;i_ zjwc9r_PSvO@pl7>FQa5-f;~5s05?jzA5UoMi8Ws^Y>5V5MODO)ZFQbhsw=IQ*9M)l znSbc|PfBZvrr`By!X!sP{0H}*R+w~?rd>o8vs+!u2|xUHCwoutx{T1yqo#MFuo&h# z!t`OBsbF?Lj%$Ff!>z={R&DZ&M(^p~^vS#kka1ncfa@U8XpBK?lS1Z>NcNS!3{Q*P zFWEVj7&`4u!Zf3J3F<$swFBP992|5KDGSn=Cor{~6!`8-YBczU05eN#*DLj!Rj5aTDOU2p2P;|CZY1`ue4H5 zQ%HJMO@ywZS&q@Ul|mAab_}Apf@=n9O?6$f?Z0Sd{zSsiPwnNpfsoA_7@Wp)(z%so z=-M8*(OdG+b9cU=l&k{&@rA|g_o(}$*skd{d*ngJk5)*9!eF-YM8Wjo8`+%x4CE6( zHk(maig1_En`?JSwlFX9)Jb_JL+KwLS~e?zz&O-dLqv3=W^~SlLo0}lYior5)uhLu zLe@!lYiMRs&w{8?A~(_^@=&0bseRE{SE4nl)dK8pu(HyD7<&wzfB8e`CueXw^o7Ht z${EY=JGs1SOQjQZE7LUTn(&8)e$MRgy5_VN2!;}i?Hnz?`08Edq*Z~SgtVlUC zG;u(^K;`cK<46-6GYR>x6B||$ohD#_`42D{6+*t1{G?p_Ks_-Ek3hoL?P0C_%P4}rvp*kB~UXT6y zmO8h>k49T`W5eYy*jwpRSOj5)*Wft$4~c^>sMr453LR2+5vueRf9!kl93-hixuTFI zBmh`FwRX>GG`8WNVaKWn->PRFgZT!VJr)+Z59I4|29!ICF=zh(?BE zgN<7zb=okx?J}qVOlmPyy-e#Jj$8;4^cTt=X)W%(cTOHUC}Z_w7YT|k!avHgh?Dh! zgkX|gJBbE+%@BWHr;nJ&ML}y@a6I6%aeRbJOU{+9EBcVsZ>K|&?&v)0{x!SGU?70j zEE0b2)aZ3L8sJAK8nYiy1o9U5i8I>u2^fX!1`QsiC2@-5vh_1%a}0SR|A94(Pj=D} zbkvq}FndX7u@Byef1heFI1G;HGO|yg?mXh^DCys`<17#UIZO+V)6S8R)|cTwsFFRF zuM?yi7y9VMJsF->Fg1!Ica7uwy_EG$;7^{XZUH2a&R1g_qI)h);{v#aQwn@_)-3W0 z%VY3K(TQ%W({tYT!QsQC>cFOTzRpJ@YTH2s3#e87x><%m?{#gBAjC`eoRSjf4dmHW z>$*~SabN8j8JiJ`M&sblGIP{jNgQh&WCZK>Y}M~5G9r9M+eHk&{a zCAZE>cZ%lZYG~vWR#KH5;0%Y`taGqdGeST(!bP$}l zO*H_D5Q*7U;3mm4b+h{zo#RL1v44CowvesemRYrnc=lcrA8Ytt74AOpU?WnsF&0x8 z%wg+f-9{fBR!$d>ZlZOdf+rRf)cpv?(q~^tn>cI(a(BDg_Ka!n`3HmRw-cfCHSrtm zXDuml{<146zu()tGI?u}hE6zVIi~?G>OnxQUw0?18rdRip~tHs=H%r?@FF|-!$M3t zQzxPH1s9Y$RpA^umir4|1GoHBeE-$1e>@|)((l!p&AS{7 zA$<+hBuQ1hq9DWbR(mHzJdd2@q5i>PgKvj=N9Zjqf^cc}NS*!osbU=Z5_RWWeocCf z7au1QL2_GytuU(BHqA|fVIXI!6O6fq@~GyHk0Ryx#&ybhn;%mu!v|19zxD^?&2uLn7Tdc^0+q;;4)@!4B`h$aXy$c6-hf{X6tqxu>75bj~T- zgS9`0$0~JC;ESDX9O?0;N;-l{hT|CC<~7=)B4J`;*(Y8E({94OxnwY9% zaAlD;ZBuS?!$R^9EhZ4>+cq1CUaIO{x9)?Q-&^P*Nl59>FZa!!>ea|j>*`#FdyQ~$ zGrdg^e&1gip=`*kD>z6>-jR&>|sXjn=nze+hQ|g zhh**Nlw$kj`OI6S#M5xoww5@&(C^{;u()0e1(uQQsN;>GW~dO-W2jUChlDG9Y?`r& zXd*ib2As*sl1&v?9+j@-0zoZYt7fQ{`*lhf5*N)8L2bWX}Z#-}{mhw_$1 ze%N+|N>!0Y0A}Xw8ps$GbP`gkaS#MMZLTiF$fN?GlZ~L-9aNW^BnCcoVF`ebI;J!L zSI(@3-JKa7Tk-W9_I2zwId14>KV0m3EdC7x_is6!?2D5I&P z4bnKm4Sm(ANguD3{2mFB;^P(zkmgQ(voBjWlx@kEJt}^GiRj@4pl4oWAL#E3 zP;YzOWx?CA^MIey@a1dPc3Qo$o>RW3&}_W2h?Z2VLm~-z)b#cb@wO)V2$G+qpSF_h z>V*lhkJstJdh#}Q_MbGKV=J9N&S&$9gtKon?$)P9zsgh|T=19I?gUePSj!d{CpnLJ z6}5HZYDMGJK7d6Mk9s;tiY33R43fOn1S< zV@fH%im^n5zq4KK?Bw)Q;7CKaz4nu3d$LkPWGOE%nWSUJ({_g}wqs#De<6(JX|Iq* z(jmPvmNUqZKyi=g?aL?`zM>+qFXM8O+!!03iv6flC}qr;VlO%zIdst}d`}8CGA&t)7!oS}2Y|&_J{p;NEcCm+-!A_Q z@I;+Gwm!V>+Vq(OlD!zjOokZp{-%Px@jLWM}C$%q;pJCY;qRWCnfzTS8#?m84u3ROQPeB9&d~cnv-T}VR=vF`{%8P;bJMm%! z`$h;DOs6I9BHP$EVT9uj!M}9<&LC%7e~iwox}lhA#FT+bv7JcA6EU*;FdvLO3lucT zg?LsGo0rIE%mlbLhrI{F95ftR)oL4b$E*Z6?6#Ju#%@Q-7|sBgoci%h40mZwS4+2` zKVwE*fV6C&U;4$8D=X5n{ygd#MCOq+f5u`mS7iAy$A{w|V1wE?cREPDrl>L7d7%^6 zM;am|UnY`Rw$fvU%~j%vvN9DJs-O83>C2eZfR8v9WeIU|GcVU*uSqq^u@vyx_7)bH zr|%L8hR+ zfqkIX5)11>$FenmBzw51ZKVkQd*=cF@*oVf5i$flN?3ZDz&*Dpa z)A~gu?t|AtdUy%SsNSRjd_b8x>4ijRfdQU};v`w$7E2Hl^9`46C>4U&Jl>W5wUoS1 zBLk*_*WEO^X4t41g3p+jMrAah9*is=f1=??KofS>7>#Q(rqqHdKs-^a9AxqvvRzS> zw7gA!mhVv%-aAN1%E88uK;B2ZhkbAG7Z};7FEX<=0}an>y84D17WGTX4FF>&XT6Tx z?ScgW-pv0Erx1X~4L3rQb>jQ3YkQGzE^xb|z)p@O59IIZ->3J%JN>wYINYB?a;RQS zp6}mp{PZ}6yDS*HUS0hzJQmG#-Qr2@oa9DF9lshc1}w#cOW!8L88nzVsDT)QHFqV| zen|X)8S^?gFbU0rWXcZzUim-#h{Amf?Seh?Hf8;<@RR3YzX;0bSn>(s5MZ5tBogv( zA64X6pCTB<=lgNJXsqwhVTf0?ZcY4mNY=)k>+D&RZ}vbZ+i!QhSH0z-Ex+4(Q{E6rf|fQIz|SizQ^<5j2O1U#c>LV?CYKyLCn|DmJrO zGn)hEio(~L!`D_vL%RPqT!W=37u4NXUv#^4PR{q^4Kh*`IS*$ ztkYcl6PDD@&Bm=_%5SuX(fu6vQc;E`90zmhfZB@j+MKz3^+wCuQbnU&*W-k`cINhP zU60!({Sb}>h#UKPyZFb&m%lWbTHx7f8RYrKqM(G-aTVMl-%2rINo$DEG*8vN)Sg7Y zsb>Sss+{?MuquE0|G8k1yaPhB4?xbSDzV4e>1hq)m%O3^PmFBixav#5A-i;5<@IgfisgDsIIqSBsiFI!@$tI;`$(}m~Es2Db$!sBKCqG0Qez0VoSFMKo8 za+O>lQ$;nD_p2nlVp3`K+-TZWkL8Mmt5N)Y<9?{}m!ORptUdjY^Yjz+>I$#ZYoB>8 zkX)XAgcVyM=zIK>P9t&Nm#`-i(X_u{=bI1~P?|`bqki=t0)MyWaYVnH$JLjMjpn#k zk4+{rr(1csud0U)gKD>SP>)YN2*bT)CzKW^n`@Hzam<#?a6cf}@I7t9B<)H%h(z8u z(aaMsBF+(c=RLM7orUZ1@RX1JmDEw4M~{xsl?D6?rbY&#;jWXR+fV(3iQJQT3o6Ud zHGQ3CbntGZd4)%%oxKVTO1Bm{>-OQSDl>s8FS!Lfm?yD&veQeW+5v;0?bcgq)-M zUC8PwzG|(qIURFM!&(YT#|#ip{i0L@ywVNId-PuGWhBbT+Wph@jr- z(Txl%we_FfIH}Le%aPI0l}$Gd6UdH6c)`KzE1CUkY2)@3hLwdB6}Ybh@Q*;pp-M9+ zSkSe9k~F!1A~7F3GvaKR@et&MDd`Q()gliOBGZ!K&5g1t1c)D8=C)-jcFQu1CmFX{ zhkek|CP>Jzqi@Fgs~#Jve_g{~K*yr?{^_G=-Gwdn22Gz5r@tHR3WP)|}QMSG^-M%w> z;RUxt6qBx__D54{?jSoVzX}v!>T8`kC8H;dDD*a?6xWrzm$>fJ{J$1H?bnWHtv)*G ziR`J6FUDk?V!S$tYG1K)lWDDGg93ZYg}L!xIp$OOqC^y%mEtBxiq9R_Tc|6&6y0D! z($b+f!CB_BR8~&93o5rElkg9Li)PY8N3nWbJ3zAw%Y%ErqI7+gr~X_^PuS34$Th*s zr?s%e(y8_+UW!@++uk4{@Vc7fN~dH#LV;OsFHuNXhHqTJ{*ue3gYmTP*g^Yi9%h8%n@w~77S!ANOK~W6^zF0-_;6XV6P-7=viBy% zbe$o)LkQ>d^3Y-PbWl}~!3GT;#TdCY!;b)Vb?@q-BnIr?6Y4IEFl z>V9N1+qXkczBjWn=QTGZ(*6{0(ZdwS-x*iA$ve7m2uZKOx9*8* zSwDDRex$L?{F0T#bD!t90&$~SRbj!6T;S51mi+lMK%~2+Lq||By=CgrL2{-M znGc>eGsO9?tFN}Ny-I6WE1gf&HLDqD3x2tkA~ACJheCKAjq`vbG&hH?=8cafl7G^LOa(s*@w1_YtQ$Df6=vfe7{dEPW54a@)*>3p;Wn$dB$7&VT?toHH z&q4*u-v2tNZT2wJ7ylaJ)*=X$@SxMNb?$Xrh&MSS&2K(xc7Kt?+R>ejW~`|l(x2rr`4dri`b*0>jgpHTt@}uo5 zoLg&z`3#R{qnT$|DlVagC9($CTMo_@k2b!-$fN&I<3-SLHKVl8xLQ{XI#w zebi&>MP2hg8T0R!oPxMV)%vL~+?`5F^a{%(e=|#g8rg@^arT;}R{g$SXT%9OFGe~Z zGisoAkW6J+#OQw~ZT(p%dj{W#oKc{8gmedQB{n+LG)gRd%Z1pE^YpO2IeU|MSf(6y33!?6JMd0n=HxS4f%UI>f$L4(woo+wTeQ_fPyLCS0 zk>^of)Q>|BH31{Y(tlUl;wRj0{&MXg;-(YnZO%9@R z{4rVDkkb8}%Dln7A=8Gs#2Eos?iwmXn3%#@=^s`EOr^W3nBD)f*oNL+C~*?6r8>jZ z%=}#=J|VCJMsmlXj?yn42pI~L+02r6vzu^KHm;L|BkJDFaL3z4xsDF!`C#FPdF8$| zt??|S8C8pizR#C&dvar6sjsg_x9a#%?z31eAXHOtmkc;#@Sp%MLW^4)CMwl4Q%{nV zXnz+RRZ9mht2E518o>d1gu6KPU9ttuOHiJ<;)Pjzm*ud~t!ZjGLjF?k0(L|42h%Tqjbx{lY6AX+JI&6t>X-9lSi3C^eSf zSTA(7Mt^fdVUNLZB@H!$D1(~cyYnA?TE^On&)!qm7LwY&?{Qhs_f?UVp_m)-xvc$D zFbpFHV1YR|;6)np%~qv~A6DMPy6)!uD{Ozh(GA@?ZS44fkvg0=gsr#?nElia1vMsl z&VADDb{bjlHLm}hY8ch{xBhqHcO&`uT=uBs_R&0cVJchOy%QOR+~tIMdw#rqY0q%K z5|Ii@^(Wc&Va>5z?uvl&*)XSRY}}`Uak$Ae?*PvFwe<@fHQN(bS>nnn((R08V{fb)<Sk7CBZH=;-(h;`1)aC?RQ(Z2oWTqp zk3q+Wg(@LC@(;TaZESZO>Gx42YYNXA*B9l>QkXpQn9j|ClfZTO8`7r*1oqLi>v>k! zy;mDhb)*L4M&4(xk4^5_-DV~jJF+9WZr8iFgC_HN93y%7XRteQ*aa8M$TJiw>r?41v6BmM9`|TuP=+mT85Ye)H!sfPDEzg# zgxEHLZ?33X*$BG=)bi)<$Rc|+E95rxyyi17CJ&G6gid8qp%%4zqoU4|I4RF@ph?t6 ztJ0mBPOk>75&4b@O!FGilrLZ@GL&+BscJ~-RY%R}B&@`CTh%I2bIo!o$tjJkmwP>6 zy3{ngaGB#yg5OEQBqmqPN7e#UU@6AvN+>mI?Cje!iv*Rt94(@L*h1C6Zp5m39B1RP z`O)aHWZv{sN_3FY6o%_DQO9_m<_glNV;nU%V;VDlUB>-6Qch5FR~rFoQTgqr1I+1z zhx}+o4_^FlZw}ukRN4W5{2vtbGdyJaABuhSbbIvrN27sTAT;DzsUAR}*dmMS&uN*DK&Xg09Gb7o*ZS!J#$aVzIM&tIjm zdX}l&v#zcwhzfZml0|AuQ#QZginA8)ll(eEkAbB+?^*h&pyvwVSZpZYi-eJYLv~+? zfaod%|`mD5>@fQ zw%z`;q`^{co@_v4fX`cEzXc3|lCi3Fw0Fsz;bAcj55H%0U6uL@9$atbcvAc1Dhw{K z46(8;4eOsfBA;%^@c`d{`FSh|WFmrv&{`Oz93L05BS%Y2Xo%FFd0#+M@Tv2E2OJCR zy*3yL$NE$1NaLKWI~ZZtLw4t}PB>l+(KSEp!nXpIV&e2Y#mzoW)*4s1GRY2Ik zz@J9O{dgAd*i!rDc!)L4@MgP4o-;OSq$y&gC?cTRosrkLjm0NM4}s^KM?cn~@@ZEUGLIX;% zge1c-Io<*N@QA`$Mummg|9T$rMKvnUe=d@=*aB?2j(c8UZndmICv7I2-q!Zgyh~6h z+1u>A?~0IZ5vlLlW(cwnqX0MXrtwE_G8HqB;Zxlpkmg{jLw|~sFrv!J7i^*BkPL!D z^3D7re!bwGZ0+47V&`NIk!;j#rQWR_NyRz5ft(xQ+FEH*+u55-XVvG5-=6aXb@hoI zN`kMo-x18zEWT#&s10+mcpQ}k7bI(x)k~wq>39-+XWR5yV$VKOEt9u&q6_#dD>Dd6 z^&ZgJhIc0nc?mP-iLJh%3;g?--03_al6W|9#0ca?CaIqkfTVPc;^dkNt9hX<%X5L0 zD>D4dZl$G(9QZ|`i48>OZ}^QXq)NN7A0BH_hR;27qsT3<$o=cBq+UF-WjMU<)joW$1LcSM+Fy1Fe>ii&{V$Fs*e+&+$p6r{B$J2fg=Ml2@ zi4abC%{c;gj0HVs@RfOhEw`uqcpZ1ckTNGZz~tCEu91M7dnqgFBYP&|2viEuakC0% zxs`GdVXK*`qQ^U96XtHX*$Ye){`I3?+uaRkp*xGZ{jbNLM&%U+ofu(B&TkH!-no<9 zd1RRr_dVHIXIv$I(;gevtr#tO3+GRU8os2|md8-@sEDy59qB{x_2)|fe8j2H{HSz2 zjt{QB<8AlMmHowTW|mt<(85b_bBYE;mUeG zX!fcbuL(JIDWkV@W&E`jh*xJXELDARTO<%$L~hweQ6TGTHj3!xp(}6@R@E*c)T*9{ znIUZ$c`Er2;Lx&Mw21Z)xtJHhhv76gGsp8`TZ35x1#>A(m=ZS4y>fRwfM%N}Z zAPyobrsK*287YQEkzgmR<_b&o5=mXiT1tk>YJOw<;&RiS=}r4pI5~A|bKEyiv@Q3z z@A$yA34S^vK(uwT(fi+R^cogmFBniJ%FIe@9HyhV{h+ zjo&6d4#Y=UL)2P;(y4P}-BIy?hUePSRjzqVoG_C!U&UN*8fG_yk7E`;woYUQPl4ED zLM9OBS;?>jm7zJ^u^+sZjL9WDw~$Q7i<($6?rS69r=yEs$;w0)*Jt*Tko(qhELf-6 zFQJ81E-NhCB`@TVgLDcyui8^MW%8Vi79+j`z~6tLy{fYQFD1Rd-Svz2ZvdIEI3Sw2 zb$0L{07cVan>@Bg6t=zdNH#Arf&_eix5zEVpRYNcCW%(c0lUanh94GT^|;mM>zM(gd;@ASm0rhQL)%SPcJU_^h*}12Hhzhe(;&D4+Dl;53E8P zXxo!?N_5|_OarD=;36aC1vE$x^ zGIa7(BYlHO?!F+SP>cO2)6j2mJi8njK@ST`0WVX?`{~D=V}B*H*{td85)MR%kfjO1jl$3ET~8yTgOD zF9T{De5GVNbVk1cMNW|n9FOUBHTd~6l1$|OyrnyhTa5Sz$3DQIM7c-54n z^01j<(g`_Ps1-9+&G+XSVY3OmJ57=`{Y;l8UhAh`gwmIY#)j94`2zPzEK!6Id=qSJ(d@Z`nxo5lq@eC(FNea z?LaTGncUxC&4mB&0MKp@I{-8#{{y_=X9bJy!q6_Z8c#E@G0z81tSz5O(JIv|EQ9D* z?N>w(R_9}ao*ANTl_sQ4_Us~Yyav=It|i&5lIYQ*8*V7SN(Tx|S`7-^Mp^kNn!Ky? zpypyS3oA7mZw`41zYK7%!{BdMrBe4+QWY0t)FyWPg9V%@6plY*p6Dj3c_Kap7vAI zDz0b{Jf^l;3}eEn2x8skAMRlHCYDj$VzWs1NxAIH%9d@WN2N?54#)ji6ZHTc5Fxy& zT%amuK;Yk!pjL)_Pp#<(FUiy`DLWbpa&L&dD{uZ2`N^gM*1EO=wLlP)6=ya1MwFRz zsk-c-PUV{R07YjiCG8X^Dj`7CBtEMrbak0sf7@Ne@uB!B`qv($Dz`CCGue1K-=CB4 zud#vvlz*_f>PrGYmB~njN|uHssJnw)rlIdyl_eB!7&G{TSC**2%mSy>*PZv1w=FAi z@T8_{Y%RCReXNfk{{hZwVNaOt0oWLE-wk$K(f>$pt}lKDyUF-ZkAevB(tt7Z0bQ@| z_PY%yhW=qULb`)6?(-(^^bU4mK$d8iM~4BhdnyN4y?N2+C`PZQi%S| z3kCxGShv!+WA;~DRJQ;b80#+Ri<|qm5eB6_bCrUJRH1mxKYi$cO5~d=WiSU$ZAqSp z22m{Jw^Q$N8)}J1+!Cec?cYgOcPfCI+JFi;0cyH=Ezkhu_IGtVcB-{Y`f^QL!!NSm z-XcG|maQe5U@86uZ5Xg=sQPEQCB5v3ZME-4g7|j;XHRtYiC#TB3sw^7>%ooOAN=iO zW%alhP&uM6+~aWOHilEL*sN*C93A$zyui7Pr_bk>%bOnaRae$;I4Fg+&j>tEHhmc9 z--iR7NFw2e$fE3_mLus2ygUVnF1yU7gIw6nW*+GefkWK8@_cQ=lky_HEai=oN_e*1 z>4vGavD*iiR=Rrc#ogi1;`)HrCN;>&u~{jVk*pmos?NrS%dLkljoBpa{6aNhjS$L^ ztLK?tU$P$I>h#)+vb-dspp6A)7<<7-!u4e>)L&zI@-cci#ihc0K(oN!w1c}BkL#EG zrrmQ`t6miC@#O*z`b*D~tXX!oatyXIZD;o`p5+o(hG$preR_S#7CCnw5O68y@Y$O4 z>*?w*o3=E*;Lev{9Gm41UMFs_K0GfZ4X^bZiH@ts4&{lRwgTN+h~)zUMMKI@vyjol8Zai=xU zcqZ?u#f#2y^mo*d{riKOTdW>ovW7LCXVD`ex`UyP400bDvwwhqvp4R<@!xEECHA+`=vq007SbhlddQ~c)*3R*F?S!(GoMX;)R|Sw5Sr_5;t{d((yV{JYC+bbmOU;J>Q~}IIjE+N6)-6)us#9 zC_9;ULlpOz)}<<_R}APC^mwb!(9!jl0JIc4igIW9;;cK)sF>pWw7Ob({Wfao=B@ooJ5YF&o-^0nywRfe$F z;2%7=l?To@an}EqQ(qdWT= z)&J=j*3V)jc>%>9Y0X+)b$akAtMcobW>3k?q9 z9PacJGmg93EL6*?<>L4}gN%_WTwjjk;(lAqC(OjjU0>iY>#+Vhr>g&{VxQSvXcK#; zMzqc=u)E?`GiK$~jg)7j$f9}^?bS>#%d}VadB9?Mie-A_C z#f!VN1TRqBy|}wWixhYF7K*!j(BOpP4lM+i;O_43lAb*8dB^z9kMIA^$cXH<*S*%9 z*E|G@50lC<%SfOKRDIIF@$lQvBKTkC3(JR9pv(3KO6Ly*Dh>Eu&<}6HhhqkvQmoiun0RckC5E7d1S< zinYf30_q+8suA$kKYQf~^!rHazj?-AyJOW95wXphm*}gY`Q9M98VpVt``|t2Is93i zX_udnkDi{6V8)nz9}X7#rAx(ySJtZxHDnqAa@OscY^}e#&fczfg@X0B0RwP`5RMsWNaF6D8!aW#1O#`Z=K zQfjk}&~*K@)fJdCv$wr)yIZV+Z_;A3i^O0ShX_tBvp)IC0YA3J-lxDbf}Fn)|%a zaCPVc*YE@?;XcXuRR4aGPBbjo(^b7*Hgd(xkL0~)S-(UM6ut+KO<6JfF05s3WPD9E zN9IgW#D1j8Qwt&+cVVO3-ol80OxiwWbsj!ytP&%tR^stL>Ds0?e|9;sz%sZR-^pNb zX8@9SYT_{@LkuF@gAY{t3YiDp?)8J9$7;s$LG2Comx1Ay9v>5|e$vNDKM%^GzC^he zkX5SpR2JU|UmVI?R#i8SX3*VX{BrF*{yTV@IP<-wK%%GgQ(RkW07wXOpxKj@@Ml$y z_<0~`|NhvET!_ME)yVciRMs?IjafvYbsGlL{9WU!eer7#zgffHBEDtAHz+U_jM`>A zEc>QoZ@j@3o?ga~<50a)BKi#P_ER>=&#-P}-iI2y4MF{{4fvBRZO%Vjq7+#9aMf|Y zZ?MRDE8q_k5ui$Ol|GBoO!2f7!_zYkvO9nn38A+21I%P`TMrNWy^o_N_3f2F4DEub z4HC6E4N2ID!e5`!ONPD>-E$t^)9YDqbeId=KF#D?l^l@$@@>kd9Q}&&4DMdFcY8U4 z*l7LNmQbl)a=~OwpTFjf&bOxrq3(I8KghiB!hOEEV#mqTqhcY~=-p_?+8a3q|GAIk zn$*_qbUq{qN5H;MpjcpxPoMU=XqGcFm`_18W0JbIUz9%yRxQ_@PSQn?OgOISCi$G^ zOvhv`^vSThrOkfY{a~;vc}n7t*Jr>~ouQC@Acd)OrIKXCCPxhk$|&_r3szTN&Bn9k z9n6+)mn$t(`z$6n+&^x^8sp;;(cMsxwT5U<`<8U*@wWses-s;+Ymb+6&dzHZQA zw?ZBJS=p;OhV@A^aH%AZ?nlF%@d8mdZ32tc@j`t(#wB?Ry-A->0|A&SpA3KEpFVvt!sf@X_nKl@0t zq-Dv8Gdk7Ok47`BJ6*sdDX3-2KgqIsa+lB)be&TpgS& z&748+!!g&fRlS@172^qL!x%tkOzf!@A(46_K4@Y-VJoo!v=9mooz4LfkB^5#AiVi(^h;|N zl60R`w1@`8B0)0P4&uWe0wO!EL~As&H|%)wMNJ?#vSFpBT@`|zoEYj9V8_#ZxAHUp z7388)lE-3~r@W@rUwlrbojzxt!zj0)h_eTQf!aL*^}2f2MsL?!j?WzGeomrjvk9n6 zlg;8uZCbi9%AwqOxRT4f%SYo`hk{P75qnu*xi??#&chr8-e@7jlaHqi>ASL zgLVa_`n4E!h4SWTpRPaE?wYY^*^Z^d$h}h=;_?4nbuF-&^VTIVa14q8S?Vdn?`AsY zig#P$zv-J=6`U-A8fTiI1Yh@5`1hk88&wVSOqOd$yn~OZ(HDH0bB4X6-aAiGU)=H> zY#s=X4_un{lx7fK-MPe>0Peie?N0a z9iB&A?ZAB;zz(^?+3jin*wwK0g(`+?@F`HHqeDiOlttq?Zb<-?caFZ4R@ZhO^)X&H z!ARDN^W(d}$eC|g-eBXH&#!f<_yiabzNYFeF|E(dHE%ysb#T0guz3sR@vYi=@u5q& zmd6m75MR}3Ys$GnRQ&2PJdxk4*jAalc;)Qe7xppXV+>soD6>sYIPnvTj(M^#wHxek zDqK;t6VaFh_R6JMBT~+|j+GL9Zn zQVnv)&8!IwhCY7ol_a)v71bS(IyLy__DP0FG0Al2TkNoN%lTGs^;tuZFK3NXTn%n} zN)3>EEAiRR7;@2%v3D0Xjc$oW zlKq=sfdZt$5S_Ql{3~2jwJA;ozqZE;PP%cpE042vX1>mHcM7igcX+xD4*U@7jN>wq zVb%hPs+3(_VyBdj_{kId>uxc0U$~!K6{{_Ud_eED_IdM}T3S#{B{Qwc8q*1Bp* zT)rbH9lBP#d0wZt{8)V#!jkwihLIw90u$DFJX=<-wU>P0>tV~REl_+@dqBn>o~$^X zr`g@oM2tJo1khRWGOwBI$XZC(Fd0W%1d7;eRrIP+hnUH4@s&r z0qy1tNj~&#(}L4tGNLqat^qyH)0x-}5%`52GFsdH=9ZuAT=-8uj>3iMOEjE{buI?` zWj789!Uc8_Kgg9{qQWFT2hF?uL&$H`A>R7#z5dfT2g?iiRSgy7%?^`34!Y0#hakzb zZzdK2HN|)Vn7@3TQOVt4l^W6Uv3i4yG}{^Q8_SY%JjK5QTvGw z%aO0!fazSyzQv<5Ev5E|=!dv*hSY|a*XkYZSVA~!=ZCmS*W)3S@V#rD=7H9!-+&wL z#EJw3m!kK4LC-rQ%IGA7d&&UjIp9@eM7^)bn1I6xD?3}m_c%n_x658EDE;EX?{R8u z`xG=3N;hn0G@W1MZs`M1)fFAsb_uE9t|X|qtjCxGcjC~-nG0WwDT)=1lIq}DFKJtS z4u#!(WFW{Wz}<|X^1TmjFsGnrd2oF)<0ew`&Xb34)NY|;k_k>^kfsr=%bdXQkO6%&7|G17zxiuWAdtHvNH(1 zDcg@LT`DZTX?2b(wcD(DYj|kL&Lco%GwC|K@Gei)wAy7{`5-Q$Sa1Htr{r+5K?jqa z4HeN`?BlCp_oiAoU#p`H)mW)4&+b^~Z>?*K4-zJ8d#%%MHmr*w);Hx2QydNsN#-$Z zB9|t&bR(45HnyXNt#gX~n1S-S*RTWQ?zy(YYHBI^vvH?B-mi+K+_fBGbYG|YIfrsv zkiAUMM4tR+#*?aD3$&-a4x~y8bxP_^0ZMXeXV}Pwna?5-{4{qoYN$e+r=I(&o${$QAbN_ds|Cl^vZQ_)YN77O^~3F_=Jr?*DJhoq^S*tJQoN3%M7;%?alF0J-0;$WVc zSvdS*lzBss5GI_!HHP4}WEy#P`l9V)ZYSg&t$oFNIGG+BTGtSRmbktBO)EBYd-lQG% zpytXut9h7b<0GeFZaNLyue7^w^ZMDrN1tB21a~Mnlb>9zY;JjO5Sx+IZc~^~gM7GM zR2o%nSPgii)uWBa#iTFOV;i#N+2H+Ey}yJ*H;%|}THD0I53=S*Vq`a+oy=<|H-Q%A z{3q5A(OXpI^fB=^n+KLNif{3JM%6jFhEtLArpmvWkL@_zM(SN3ywFzLkwMzx>YeUZ zE$_OMN=L$GU9QeW;+;DKeCG&V664!ZEnn@wp2PW=lW;~nmrU)-(FrX&;n!a&p$OXu zx_oo_xu;%x^w~lpD6==OAJ^7oaRB1r^MUw%qtr@)u|Wb29^h#-BivN_%2=SImU_k{ zt#?xck1`o#fi2-2o4^=0gioLkVqCFcr2YTsF^mZRi3M@cf(BW;kIP|_?HB8a=ev1- zAM=2pGF=Qh%3QjpYZeh3jDL=ooOp<>u*KiI zBLTrTb0P6lP41_K9NO!eDKj4BY$ZUw_2CX!dLG^2PLg&hT5qH2#@?Me1>D5$xtEh0}>PtLZ5PL zUf|E1tkSAnUqL7?XIZ;Ari z@*O`d!Sn-TL5i%ED=andu%5doJ5XC)>JO#JY_`fA|34Nn<~8LN_r8SXxjq}|Gwz4` zz{~vBh=4*XPdZa?ObHP$IP$%eO(%hIU9;iAYGX`Ht}*Em%zE}~5NMi5f{i0!38i`O z8`zkuzy8IT$6@@Iid)EhxxpnA5OiBfscanY(A7EJkb$`rd)k;o@iIMJTXX!=@R@`{ z*NU#@Mdm^$(PG}sE=?DGBs6MDf;%?mGIU&w0)1>V*%wPbkMKo){#00c>r_hP_w-h6 zZA(IG7)SgAzUR=9OTS$S?rv;k=O}#m?OmgLab`BX$BIu8vCI!GE6?Q-89UU?WsP3y zj=vqV9jpGHszJONYz6Su>W?uyGgi_%V&O~=bF#k~a~wWbuOs{QUJl@=N&lB#@Qt%K zw9yW*Qx#{I_sv^q>pbK|!tPyX8=1&6KMF?7DQYbqVzbjc;n3~(w$xEy&s>qz8!E>< zH>@6PuP>Y7B3x0R@DRy%5^-AOHzLPniCqRkE%1_2WRbt)k~ z?(`g2D)zWleu%B8n^LZZ*&Tcq@b;4~zyV+(T|GQMh8d_qE5G|#r`Sl47bx55fGHZL z&9O?xTQvKjQ7uW)Ex?&|HI;SiBf$JmF9p)XmFfigS&@XSPCOTGWUexM!Sn+6Qb3R0 z^rtjp-30I#hFyI{{5F&Ens!oT!sP)9oyIbm=H$;sCR!bn=8$z%5pCXy6~oHP zwqaFiRA$}oQNgU8P*O?Htj@Rr4ZL`6O0aX_=PZm^N;a~`Bx&ao2~q+7pADAY2!6?b z4#(V|d3QbCo|OgEsS?Y~jXLZCyxuiEe44AIamw~mE}|5QBIKScqf=j(k=UZt5a0=r z*=%gKfwP-QPPLttd`@yass->2N!{8PZqK9mnyKw|+arbex`D>|3L?I|PzB0>Ef8GY69#xthY z*Qcf$_@g?D&P6d%N2Mwwnqk!@KGy1Xnbl_3W}dPuC>zc`)#b~%w4|#t`(7LD(PTBD zr}@o9bIrUH?fg2*RbC$CVIo2y#zXpa6FW&7D$ltXFLIZtQNqejE;cTN)m{G(1Xy#2 zYld-<@6YvT_DUYp2KS#DK%jHi``#dIaJ&^;dwE55FWUjUYW{pjktgZ$7+}{^V*oo* zbq!^)9VZ^hy6rFZ@$nH1u8pnTxDY|Tt#-bdww}iomE#)a1{%8IxvuR0*8xNUK^S$X zUbN#F9B^lVCVXyQ8Q1S>kVS^bY`NlGz%Ov%%JDSkfl=zV*70FWgrz6zd$yfLB-UE- z(f8c2?X)x5eAJ)Q*F4)ZZsqh(v@4|wx%|cVR;7jyKEl@lD5cImE^unX@MeG} z&mDBrddiM33N`chd3&A#m-2*-!Y4`TxdF6Ch4Kc)^6pVQthqOu%td_^VSdsbSLV|J`t%n9UFCv=ucy zJ`R5S9Ot+}6{`6)iGI1I8UFA_BrzHW2hY{`vBGdh_bV?kAN~_9d<>drD24A%Q1_Tk zagS23_vJSlZ})Kz{~=%n?U*LRy2u|{y#?|v(+j2*H$^#!KV!UYR^_9cD2OKF|e0kz0&P9cqN`{sVy7rp*$el!CO z%azSaGX+w6qaW&PENv}_sU?fu(pN5x5uf5SQ~wer___tv>WFs!i#fbLp?1{V>Qe5I z@%JK_XJE1M??>#Y$qm?7IH!4 zdakbMl0pwYA0PkT7Eg0Vd=?LKrvB0-Q1c$%P)NZL#H!)5M^)PY9Iin43lbvWf}Ba+ zO-$lT6=19C*Uid~$6nCI`HMH-tGn2sE~`_-?QgN(N1&69yT%-CJq^u4K>5lN!~hK9 z_Vqs{`yq~T1Eroz$%Zp7hA8+Jw}9@~#9f?%^Fp$|R)$u{?_~-Jv;iLHQRBU>)uqR{ z%PXLqJid$t$xaE;uGvne?=~)`Z|7Q_ic-xxSj7wknFU+NAq=6l$Ad|qMpzhQ@Q;elsa1SRhjlrSd9S6diN-IxEUrnHe{@`+QbL_L<#w%5%{=CwM3%FaQ|w2bJKPMk#_j@bya->niT(^x?;o1% z@<0gz?#%abrP(V-uA-ZymQ;JqyS2&LAAW0c|G|^z=3vzamD}uj&n93E`_05cW+(lr z0ZA)TpPDfI00O~GfJam3LFQiJC#!D4A;Fg=wlED(j-B6ja(@*wNZQP#k?0Tv&f~mK z4IUT9U$J=``9zvk9}+=p)=fw{?N?4|!YW;wy!#Z6kGd4w{FGdAGYIfntI{C^-wjj0 z{A7S<2>cgPZ2~_p=EuXtlm8(^<|D!IYv6+C33!#Hk^hGPnLvbds^`Ol4rt-G5dglo zwtf@Wx;;k6om~W4^J(tmzdgnpp0kh{=Cy2p}Z@6i5JYJwY?VuroMFN)Au|A5x(6S*L z-#RNhq?{S;(7AAJviNMxsq8J}Ynvp)CEmXNd74{FvHn&8KyK#3QAq>G4TfQPNN4S+ zh2=tyxeF4~OtP}XxB}z2Ho?aosPRSoLe;k4J7b+K3N(TXy~Ld7{TDlMHLCn!?Vcut zxvg{Txac`kY*lQymRFcvF1PxmY52=Gm{Dy%YG9BmWa4b`@T*z!e)1Kg9bcEdeSUCh z&Kv$$)#lP;Wmc8pStm+fSf{SzdSti*{bB|$_6h&?#SKq!YGSW~%@};sZ=6|N+mMY! znU6bvb$3HZEa*eN{&cw0Mta`lcZpGpj^@xyk@M=J)1WJ0c|Io5eSFTQ4~73UE>uV| zl|U7o%?Gu)u$d!+I>RD|reEk<`y`KHD9&O7Q*bv_DIuu(Ro~a^-Z`(& z{o6x`M*C&w^Mh)SPnvw7;z;8zP0WSQZNHs;JzH{8rKV#T$%%zIwG|dL|AnKdH{Y69 z(6|huGx>`O)?FRI1TVdRE)-Y2q$fX}?9F(*!`)WTaBGE9uTsExHu^&x52>|w8N9)z zKmElog|qhB-TYNYJ}l$m!@wWl?&zmvlTbks$X=OLnoyc3c6Z(-v8sHwy=GO~%H1_? zLSPk^V`0+nnTw8VSSO9 z3@TNYlLy|cu_u#oxdMd)v#(rN`1aVayuPfr3HCC@wE%l>|GGgU-ak9?d?9q;1d zIODh-ScRhGq=kgcY>Lvoh}K^QL<{DJJ<6D8V9VCtRWXZTXRy@wQujRNg`BCEdRQ^o zGViw+L#bc5uCDn8P@DrIz zbzhUQoQ1Q9f!JNQ`=US9FTby7$f0hSPCDXCADKwTau`MMXGUjbJ%T0wzEeKM`e}RC zlatdaA@BFHWZV1*UtN8~3~T^Zzm^?Opj{W>)PS0$WBfn;cMFV?U~QEtg*5fQH1)W* z<<810Al`Jw=W|TB4{{e=<6&57!FUGYv40;}tZ4+VN9(&5e=yhnvQxtql zEtPj@L~3DJ?$-Rd!N#z4o5%$+uQRDg6GiluN)m0U^{plROFUWN4}ffx{SG2u z7@~E*{d^JvJp}0)j*ylljn4_$K)MX#xm-^@7~fPNKkw}CSEPX5rVD3Ui_Z)%>08Z< zkLQZ?eaxG1&zqg-Moqpu_wDre(U>Df9IY)R=l5N{uEs~bFp0#adf16f6DIL^vXj#6 zBZDQN^OVo%{heYqsQCV@UXm5%3m5Rb8KfhkrkXd64WT)l_BLvU*F%3_*LR_vKKMoI z2A5Xtzs78)DvsO(Zdt`bozB=c^@;?4sR%cldqWB2Usn_H7NGDLg{p1zq|PFzM1o6q zv*MLDn}QO6GD>Q`KYqtTHJQri^B7UkcZOUSl>t&-yLn zj{%&DLdqKR0X>iO5{z%?97!WjLx)I@oQ38q8e~(9R0$3lH83=}EAkOEh~A-^k^Crj zS(p(_G?xADL&5G%OYX42asZ%x(q3bTSmj$8z9g#UjV)d`T{V20Ms95F6EUbFgmOQzD43k@LM8;J@p#S?$U*a@SO}mmX=&jH(A@d z(5g?+FTt`N@(3dk-%V`?UKqpjgsHX%x*@M+zz1&f#$iIDKHs+VtOGZuGzgfS@r z9G+iA9*XxDmOUy&LN){A9jF?y;ZcmS@t zP{J7t3ZvrfzCevW<>?gKM|*CMK>Guvy-$FNhb;WCM!Lc2rJ|d9aoe=^2*O?kObnMI z@MmjeohabU+VM{f)V0+Vx z@fB2f)E1(N%_&to^;6>$`d!+2G_1BzS@oV!F9)X&eT1Ru@|~8;l!}k z#!u{Ug#irrfaehSVTWgnTE(ji<^Pi}cTzC?y%x6rFT;!Sw{DT!U~R9zY@N+Vc?+?F z=Z zup07Icncj>HJB71$!RZHG&;hGP;a`ocV-66cri1Ln8C_z@fO61Jy-A$j>ni)*IIef z+a}W;Ey!{k9IHU4XNkcq-~lqx`4V+P$mH^0!1Q2kA6c50`Hy^8d2YmgGElu7;F9R4 zJD|4H_?Z%WG=A%rbl}*;1Fq7U>xE-}%ZpxQ>Kp3Qm1Yz3QykT*p{S)|u?iuLlYz4g zRs|3vZ}7B2b9>X2`87jkT>nn$(5XRBvTr?emj0^I(50X7o*4)0NR<9!*x(SreW^sxf!{oefExqk8uuxo zg`A6$J_Psndihr0mPh7)gT=kGVjADy{=FU7Y5k`3M~7S4gXC^#7ej4oJ!?G>?H0AR z1hw5-j8K@XqNl`gwl?E7?!W;qBKIqJIY3H&=)A;NXuo)Q;*EDsPc}-Z8=_{6!uGvq zKmsB7@cnG?@mME3ocmn<0i=_#eb!(4Dd>Y7&hPi%#Pi?g<7Ag11@&gVw0S_{-Q3&< zHEly(T?X&-vFjD)-8)@(mX176{SY*1qK#xm-c=Xj<};N4fp47X zwnSWwWln^Ni9gbkNP>5)l7U?3;v`y#J*(b)hSP(1`s11WZ?R=;DJKm$u@q0+P%`h9 zQ&UOFkp<0xGb~N?;SWNlEtgU&nX@T>#7XV1f?g%-Ye2E^T*vlF`nGyHGqVxa+;3$&Uc5%7=<+ zx#nay7S3F-k3EIO8@ud9-spY#95|&o#(_QU(V;}wPsJzRnSYSJ-o@EB%UIsp>_HQ9 zT@{B_aLr=VRqp;r70D4EIxmD+g2A z89;5Dr~FGJ`Zp^TwVyF@K}d&sv!2mj3ri`pQ`Q%U(>l|QWg5?V-Fl~I3qDZVVP^;? zBLgMZ?Rla?%HwPsp-wt&+lN`UrDaHytBpbKKZIP`R(!6MKP3IS09yPkj0z;f|64;a1dbIi(9oWSCt&g_3shMqpiclJEfot5 z_OdE8T4|{4$gRbP$JSG8o*JR_L^o&|*ZdI}aRCZWiyJkz_&p3m{+b;oQ(eI)hZEEc zHIX2j!sZ4~oDXQ%6#Jru?XYT<6hq$}syR0+_vGb8MYft^E<(U;Hcx4(ym0yoCmzm$HjhJuUKw-@0*))khs#CAUVKq zzAW&!h8Ij!MY&xeSU&eF6&S9)ZESHUsOSU0h(yFVLLjB@uqR}<5$a5I^_0y%j%y}z z?WMQ05Pi*_dW>8l?v4k3Uzm(e85;mtt{{s`bRnim3 z?48(n>#hptZ0_f3ewL3N$tEkyK_#PI3NaCd#!-P?4cl)iBg=K%R)In;&e@34=8Rb~ zYN%?EOPH@&+uWRhPIZ&rgXfi@-Y$Nj&mWftx11QZz=o+>JTDRIKW)2>{iT$RSLBV& zy4EtQ3jr;IFIL$(R-Q=(EYGgoPU7qiiJwg1`W6jlxMR z@9ZM<6hAewyh5+fzskQ~a;380+1V}@Sd7i}jJ<@B=}6E3?jQvS@FdS1%gbsG`#WqE zrn@d2)TOs2GXZLIPN`Sn^sxdo>1zu9w#lR&>7cjX=eiRNKOL*O776UpA1kEt{~=g* z5AaNFfZArRovaFOOhPZ&drdxuNdwQ6d2P(!O|1I=jIY0Wxzr#3RlQ2qUuCl2=QAcz zP*W`3c+vZ|6>gO)NwII_O6CFI7b}?W+-^0dL1?AKyIZC#466ktlSPrfxsor$mxIuT z*)Gwf72Q0Y2p^^(60C>Mc&$QaR|M=Pr~)tbx?>t}-^JDJ>RSJPTqE=}mqnsQD#d#T z9>>R?qN}X$CM~*0Fk3vi|68Wc2=fE-PE!!H)74PZ^^410ri!TEU;Y=yBhl~)^bO1; z1j^%4Ar&!59`21XmB23z@ut}dF;fM7}4*Fc=s1+nd)|uup}J$+;eg2cpo!-B2hWXtX>0Y zNfaKt3>G_X3!*ik%v8OEDP11PPXBL61>DJW-xKsm1V;kY!0l)gI+@q{-Iw#FkIBYs z18>q&XJuQfSlyuZyF5;~@wpD^{M0_(Jq=pV$zu+2x)8ek+|iB(4Jy@dgCHH^u&@+M znETs3Y?QgTQWt<0y#i%sG^C-P~JYut2n4wA{6Z510L^ z@PlZy3Kbzez2O|^( z&1gxSh$}LLAr_aZW&{+W1O5nD7&ls?Jly9uK)7c|deB=uT+&{h`P~*~nyMaY1V%x# zx8gq)r>ck-r>53DvfBUo{~Eqcdqr`d9m;+w(?QNSb%=2b!E(IQKcHy zikgv6c_RD+YgPpZFpB!gQ{3~d`m7z-9y+!P5k67i-g6_f6Yat)M1%57RL zpLCjI2z`3;L4eKK|i=!v$>8W5%@+Cg=B@w|7{@f z;n0XACwKW?1*SBA?Een|PXM*0CDI~FO?x86(kV5(mT=i>Ixi4=zN}{#HsZto{F3c@CIsO7{Fbgs;nj+H?MQCeb z!r=8e5N+5wiDOpZOX7T)>IGaI4dm-j+ZWGxU?|F=KQ?n#v9w%ZyhjNVR9-Y9DplMN zV83a%X_RiVaW5}5vmFsS*f&i9cTs`3mI8C*OZ;?A?+Gy&va=akY+3kQV!Yl#WRKmX`9<(3At2w9?FQxtvHMP;5l@^MB z%mUa@(E(W4MD4L5m_QL0(!Y+ev z=Hb)OakLMz3?gE=9vXdRQj0C6$K@{Nf*O0jvTg({UUU2{I)$}M%@5fhw5~UoJIZCx zgwk9xr1f>v*Jxp5FplJqtz02$`JkS7hwzYl8`(2@{Vq}4scMF6E3XUPP3j0yD(|>s zweA`BQyKCy;qZ4?Ecq+sw9IbPC9-o-Euk9170jaH1f>EaS*}hq_dL&qtwTgV#JIt_ zdr&$XE(_L*GncE~z=nx2@?+VsHGy#@y5J;Pr5(4&i3!ek4ynb;=et#Tv|<)6_wqOU z)tFdzuW*sIcGUQ^4p5%1F@>IDXTu9xV>*>^_FYDCsO$?4Crv6!P^=!stFvApeY7o# zWv}Zyk})~3^@AtI$g0e{PZHN&C@cIJXR3|T3jdKJ$TUOB+4O+NPMp$cNisbj)99N7 za6~UrBb=PrUW&tXO%x#2wFJKPUfhT=mNR;UOg3+xzU9E5ItbO=IP7U`plfYx9UkS% zEQDY??X)je5xi&u+z97&nV$;~-~6D{Qgki0G**!?c_-SMk7M@Wwas{22A3F~?`Y2y znWi*T`NqLfn(NoM`R`~R44T81mbRRm$`Eslgj>(vesk;8l$G74#`dZ@uN$@a=~Co52GtD?ltG$adf^$+&Kabf~!jmaIJP zr+X@kWDkKMI2Acw6a61tTnL7|sV#VP^%>|C!sEA-!IUx@Uu+r2@!<3hx~u-Tck7L=}8!&Gp}axGF+zMqFj z#ycO8THR%+hL9`(6H~2rwoq93J|A=?3N%Vj=V>~IJ8wsKLCOh3I|JlWty0WGt?w{V z5T8fZORN3l@9C?{dsLWQ4?+J4@gK>F*U09$2hBS>YTM#g@^g&~uFaEaP7(j`Kf3g~ zjeYrE(g5p{(YoZ$-ruV?Sgc$MF zj4ta5_+$o@ccgb}wp2|k@IpK{2pVtbw~39@nWACLKCJ7nne(Kp2ySHr%$l|!lQ zR=ba-f=n;`M%?JeBjzrJ$ETDrcT+Kvla9mzc&>5-fc=l1{*_ThGD)B)<%WiU*Pzi$ z7ZPkAH}S`!J_DZJy^3o?nV2yC0X9_Tj`;DeC*C^YR(9_{Gu)Iqrc63K3yBr4moru` zHd;}hzqgiDwr?mI^rjl^{03gd#_zO>_>Z4OP|wmESK|3 z2aC6hAC7xbmkU&+bf;o*rK)1vZr-0N!8vAXIM-F{Twbm6bz?Q*w|1@o4lt?<^OX9T zk>xN{=C_?4+=Q%)!V+Sg*Us#6m&imnj>0eX^X5rs<7W^t1@`QvRE=Gf zQd!r26btF1CVH&n#IhH(>kmsND+fBb@A`Wzgfvv|m+lR)pwYJ=?G`HXRy=R>7 zG<0ImkKC6!vKv`~{~@rC{lLlJe$sK*&aZMaGxVSw59vJ;tJ`$Q=QYfM(|eM-`=PQ} zFWlC1^gC{U347jV63$Tk@FR0cjw{QQmN$^231)F$L}zAm`+5AOc;~E#LtQ6IjFSX- z6Gi)7ARqaQ*8$@jIsXIDDsnu<&>*86|6M*7^(o79#+|Y0no{0s()VwV_~LkxUu+@H z?*qU8K;oT`M0@^yeaoMZe(XHbD!)U4f5Y(d79oJ}LS;az9sbaX4C(BzbqEiKe%1Qn z)+&1+7W4^snkQ7R<+OHEMg9rcS}jWn!6DyHH1gmPq%GJ2vRwc)RHoT>k?+7B^sy9L z@xpUAdfbZuP9cSlq-H8UBBJE7%~0 zt7FUV*fJj*?m2|{w@hlc+N}I%&rF-_O1DkVP_dZzZss93c(L-4kY!)B@-CA zJC;8O4B}j0fgmQm_s*_32J9}biz)km)UPSFL5h}zZD05glgA~>WMZC<`vh}bhbXLf z}O$-mF+wwZd)HIGf(z8;$}rz>?oi)53SNs|)`BSxL2nA6n`XUk?hl&U4`&F^&N zAbzUIe@@_d33Z=P;MkSTjgEHRXL{E}i`BY10J0s|Hs?~y9;!?Gyu+x0$N+HBCAAg( z5;wj158>>Lrf1)_03p8g2JA2GJ*^^h<6K|4(+*6;ml~QrxA+;q7Uuu0d&ATnMx#5_ zkDJ$5aB3U5lO*@`+Nq!=#FOLG`)1S`gm+>;-?TGndNo*NvL4o+H>(Y~yw}@L!j@S1 zVO67Icl-^`$OC)FXtg(ay-S9S>g6N;9lEhcv5F<;Ui^LbM!~t#vwoI;(aKC z(KIHh{ZuFFHE)k9^7SF`**~(blFjCzfzN!S%hz+3W`#f)i)Y5jt4m?>~g?lGfvy z-8#M^dG5tKO8f6{vIz=(?PfNm!SyMhGJmqQY2ptO>QKcfD@#ld1>Bv`D*D9DXiDY_ zqh;E>Y+T68l>wmoTY{I&g#_fpCAB-$MDaOxNBUt+28k=H7 z7j$j(t6MnA?ejxB5k9h~enu^ENfsw&D{PkY8VPQJ!q+rUvnkCrtPp!-bZ;Z`k3R&2 z(o-$bF-rDHOfo22UagV5BwNyHy7>nT;NeTr6P{pk(Xbz)X>gaq|C$y4d;cAb=w87v ztc3N?Po6bj_P9V|YyE=LZxqSXqD~oHAQ`+Vu zv+U#2ptm7} ziviG=UKn9qC_J#$sr&rsAHpTKA4&Mr->8$Web_hnre;7Aexhk!zrPK7$P$T>di~nx zY3lY5;WJ$AYhDlpH9UWQ>V8qC>i+=yZPw1-`VS#n0B>qItbuS`y{g*)x-Hx;tUU9$btZ+ll9NaE^fn+?EAexuD>a;TCm~pdjwY(@n(J^& z>lAT6a-!QtM;iaRqicx{6#UdR{7Zz_QwWkWJ9#ljAa&ckIQoR5iXnc1De;DEXIFI&A9PE3s5;GqcH9T#=Df;wqw?FBH<1~! zOgJ7Qa)52RDeigBSQ}D&kkQNhbe$mJxx8mwH_xWeQtZ;qYT_I8J*@)`lg3k8LQwab ztI=7DsWU5jy?V7WimS;4DNxp1>bgj#>(Vx!kbGEf4NtLG&>6S(@bn-upYDa;eQ~(f zqltwds@K;rM}BWdW=k3+F9-|K8ZNo{zz>gF_{(%3=b}`EiR~&@Tf1OfKNw5wdO}Is zhEKnS>YvT%zZ+Ok<$r&B2iPO?X1Q>_wi9F!EC8s37t?%(Hqc8p+kZaXdP51MR`>D^>(ZDmX-&W0C5u{pWO6J51)@?r5bd36QQ|69c1IBIbJ zH&@d`q3EY`v6<6NqBr~OG@Y#`f^uYwc&iuhSbvX=-YW19Vvu_78T|%T?uY}Ccn;GHX|A`V zWtNT-Uodp5#jGuKXt^SH-buJ>K8||7>Kc%`-tS>E7>;6bB;AjzTD6IURf)QZ`s}1QIlkUEZlUFTFk$HI zA9(kwo1)DSGGWV0jLg9|E6+{%LQ#TV0@e6PPn-q#HU)r4TDd9QDL7hI?8YM~wDKQl z`$?C;mrtqpIQf*q%P7z`@1(|8*n7?FC0e|C@v5JDYh>VCw(HFKg!7GP!$rG6nphpr zE$XG7n>G%|AioJVeJzk{e$lhIinnW{k{_Y@MTJ?qM9Df&pq}Z$Q1ylzLM(ip+ii0p zP^ZSgC5n^o<)Fs!rWgtpC`|Te5$72JK3`EGM_j_LSD91Zzw~{Y0(V!@tUd$Jn1!^? z&1r+|aRa7Qd|(k2Ef*i{@O)Q1nz7kiq;r1&EO2bA9aw8QgOE{zL)gbVNM1X zN%d$mPDaOcrbTa!Ai2>3@Zj#rXt)%@a!0n)!(@rG9`qh7W}fOSXxCuebz(~+KQVZ$ z6*?S2I>OsO)xj&l?Ds78%E%z)92it#J!DKQGx!IP7%XtRFkc@4#>^~0oX{x>tifqj zS~08s1LzQQ6z44NganCR^LW4eRS;Q<`=d@|HM2KnOqG2}oNC%nvO1Gto-7v2ms|1@ ziB3+ty~-2SMqJROr5@O0pV&}&ll&$?zLt7zyi-H^NE2r2S z{S-sp)qMw;F80_mX4o1E~um#M$z2F-u+tg&98HSrn74kqA;AqpHGtl655pehceKtjM3k z`&v@LxXZA;c>VWYG5XS5|8muNI|(}>A>VC1MUqnN#+T?xn0wVA_LulFtNR5~Y!eWMh3-h`%F}%MMqPb>YW(r#}5mS)3C``U!JHhS^u8!V@yoUicSFloBE4^{}3<; z{9Di8>KGBslFrh#=ybGz*K^~&F!OM-YTdU9wv+_Z3*kB!uQXf!fN<=pVb~CmPlE{A zkdgw9?QylnkFj(Dc@7(X%zy^~jVlS5mx;U<+#05qutIWtY%pS@%H_;G;GL>vytp9c z6h!h;4@(QPuXnW0kjJ)jpm^gvX z$`SNj?Bu_A{AGYwk4KmMYx&ocZ;4c)E+-K3=Gu&0XY2L1j4_$KhVOQYRH?~KM&sC6 zs!e8VBE=`NtmouN8d~(^XY2afLP90*7Gfd?R^>@!V|%Uj_Tl_|5li$bYiCB|$mAJE zm-czkHQ=Mv&Z7JTrs;QPL*9$N&NsdQD!sUD%&X8+?T1S3Io!&3^$dszH-i!{sqWvq zp*RW_db)v0Euq6z$Ks5211OkM7^EXigjW3Cx*C{p+XN|iH-QJYKCmw-Mw^60wU4bU z1BhiB%O`y*yTO?X8BYCPf=&Jg1v$NIj$C&(nTDt{ThphhG+4Id6 zT0to8?uPk<6lOuxt`6TN;tgrU-#=ccz2v7F2+9de_t}U5`^z%3F0qcFPJC%w+P$h^ zp06ukQt}cRYx@OE5ov^hU(=t>{eY(VGtJjptlZSHEEm<=sqKv`6{?`f-RU(=2BT#O z+#T?nTewO>aN1i)(7bB-J>7gEBw;hmgzX$SoTj_&A3*mLjxZqOtn2 z33lb@nVM1e)(G!tQ$I0^*R!$$WkaahDeVt!>a^c67v738*x1h!*Hdb6Yl|%J5;;9U zF@ryRjQvXZ9%&_O6n5?)UMgMjX+0E-Os>-K5p!FF9Y z{le^|Y^#zYV)2JpHedy&yT@Hg0oAwr+qq{Wadh zQ?5pKM%YisEnYEy{B6E?zQ#Y1G(q`8dkvjxYUtp85^x-l->?5GIwq;vW(71FgB|t;YY#Ys<7GP()NCL!2l0A%fkJJ#A&k+BIhT= z3{NPv#6MTTQ@h+wBn>1={#F?+kde{5)lR0Lia*6OB-P8VJb%T^nF(TASnzRrEPEa; zxaItqUuPHp8}qP3Rs}%WZ2A_rd0H-r^AlD!O%Yd z)`Gn|D_L1@*k+9hhr#aJVeC1SFD;aJ^QVlxLu&))y1Vvt3-BGk{=T1w4(^+YQ?Lq0>PV z=Mb;gV1CJ$&aPa_EqRi)ZTSr8IqlL>t#;MF#jawiVv^e2QS10>N5KRx88aH<+GLdB z<*c~57LT+^B%U!lF#R=^F7Tr)Kb8FX=O9_TsR$0g0>UTs%k>U;#ze|>8GB_Naq{sT zvRkRC*ilIN*aBgsjI!YpJ624+u`So^U|Yr>Yj}R7o#fTT%sp6?ydq_QJjcr;FK!&& z`@GC>abzxq)MvbU_>z)2xcO81Yfur<{YNrN2Z6OYiiXUs(Qs=#eId$1S@6@j5-mv{ z#GmJRSx3t!wr&WcM`{Z->SXUOsCl;uDwiheH02jq!^~KpmO;_uT5hbiJ-lZZh&#^X z#qPj3rf-XF+kDgKMhVMDlt9{xh2v5!A#)8B#`~EVEJE|#$KhTr@T3z z!f#`YQ*`$2PTFdUNJ4KUV)xTqtn+L0pRuY{iakB?&AATsy$-NM+gIlkJ@mk1Zw!ms zQ^Q*0=IH8iA-U+i=S?a&=%TzKqa798pa7k=x#Z>`TMT{o^fhO==uXc7oE|(J93>a! zn`?o)zX3h-(GOlJ9~l`IXJ4zpuV#73!>5ljUtDFsv&^^xtdu#Xz$2`GO9hmXLk`G2 zwg6Op058{n&5pH;LGMB)(W69-L~zqGQ7|pZmZ0ryppq{Lp_3icH*<%Yy}Ei6<~?=G zZ1p5uc5R;85MA2V)Rq0+Jg(LnE4Q*T90qGCyU|1V$Bi};*35l`n$NNCwCe;OKz z*-uI;heF*Pi(DFP@#!-fN;YZTxvfZ}CVB)@5m&~Ysfqn6WuMJw`Zhho36s8z=gG{a z`a(r-E(ylOEUk2)GqNLJqCw}SCpvc%7Y|@|J~=i6>N2hA0>pkr1$QsXswd=T_jUpm zPF&|u6(Kn?6bH&fEw%kV*~60kZ?v)wvt(D1!3XtCy}?j%mp<14yTyB@J~t)PO!D@| zPr)&N0M0K5+u+W?lH*S)zxAmfx$ER92?4g+GRZh~^J86yle1&XbZ8%%0kO-jmJrg+ zW%bXQ9B8rPed@S&h@{abaKAc$UNe~_Q=da;`mkdT8wOv8+}?u$?hT0Ey|3L<0XIa9 zHyLNBtHO{!fckP>!t(jn<{PRpA^4I<**o}YlKHIVg^5UP0`0cPB%^F};yb@bS(h-) zKutO1Wl)YL7me|+-BpaE#aDs=i6axZE-T~2-A&08qgc~z{Zq1V^^7PoSnQJzX*T+t z)PI6T{)+$z5Js*%g4LNQ3_?D(Rvku3omE}kHwwhITS+8k&*c2rp+e^1qO%WWR=!s> z89@%VPsj&P{Tf>M=Bk2E8vSDYRliDdm?LcV*ZVohcx}%*%Ix)`;wHNqUC2Ndbr;_a zk&Ii62C=lUyY<;JvI;14W0mVuRkR+lyMA4xgY?38`wqslhO*q%a{wU+CJor0m{#xNUN9 zqoCHM?_aIB(qRy%E^B3Vbd)2)MmmHV&{-S#fKH*`ZHGQ=W8%L`GzreZKi^L5w|*jZ z(p^t`c>w;_cs4Tz-l!0tKHL)s>AgD8+RKNHXRX|yU)~8?Vnp$!|9y!E*!C2@t|$g4 zAlVPt^Tf}I4Ub#DU_nA)kRYS?DQttCvoAfDY1X`Sdj>ly4acD;A=!<(ACYR4B5RKtneCw%F!YiXQTJd{U4A>=@x>`-Q0&gQG{NoGZ_m-+9M||tlcrWWK=8Dh~eu@`~ zN~5=RvbVSbTDoq=+toLf;t@QyR-QOYsWSBjS@R4L^SKpu&15v^-rL~7oq%)p#!(b{5&}|zi&&nzMgMgU9?y$l;W?> z+2`;*MlZ6kp{U0E`Jp?A@f;w^(3``@hEP5Wb`XB%^h25)e6oieRa*oxZMKS9?BuqtyJkx8og0sR9S7Tc?PUIbNBxlK2hzL5M0#|7~o%CsQRk?X0 zvEggJs@{N))$rt$uR;biZfCPbGc_#D=8`}U=qmEc6lmT}JYJ-1Y!5;81@N&?I8d_# z0cFgPLM4(CKI%Of4V1HYR+_!Jo8G`QN=Y?YvsUxCPB5MGK3{r}j!DK;Rk9r&|J}d} zmME+v`cDq}-_r<&`(8Z~DQ!~37?r=G56?8kXy)bXCcxtQ18{-6Q!yiz8^AxFoU>-T zBcp!f-D+7bOlBjzhYN8v&4KPL8gU+z*KkX71svANk%$V7Z>b--*KHl^k~-mw+OFYR zX^!xxl{Rjz9FDOVnM@?Qd5LFtM#(i2=pa6$e5j`Lgz;tgsuqVglR3m;Q}Ow;_}|z2 zLinZeQFKVtlqS7^<_}-rRjscMm^=90ip`1e8eWVYUgO?ET3BT4GKr1EEt@Np9w*di z_(bCBY->y5KOy1ls@_hRt#=SxYae;U+hW*lYpC51H}LrWFV7%cevL#h7&*K#iZJ>P ztNY1Dkmf9ddVLJ2Sk0EM9G|ov8T8Z5ax9zCgLH)?CP=9cZUrIM8^t{{!5o1mLRZv& zZft)tY{yLTcyjB>5vw38s_s79sb0UjIYvP1eXnuk9oCX6VT+iy6W=J23V1!Owqti4 zvK$$;xne#N*f48x!fJ63KqB=LcXww0i6CXW6S29l;jV&BlHQy@Cwg`L{N|h}Ol^qn zY`-zYN`h59I|24}V63#8%CyfZFGZ*jDdkQ-y-O7@$&(WHy}6icVWF*}eNgEvcMOe5 z_bTqd8)n?)RXQhC*N~vE*RAWBc9kRQ8UjS-r9aGj4asd58E>0k2TAH+HOK8=Q{A~e zsJcRq@faXvtsxj|PWfN#U}LE!8ZBnh^*i`+Hv44l5}wm`J=X^xH2W5g3tg0yTO%5V zuv)RKMZ{k{n@?uPmx{4=Lzasu8U?Itr6Z*F#jH_kN1u)&q?u1A?RBN{E1Yu$w7ZLp zn#n@XJC?9ws?cx^DoN^P_!YurtT>WGKHe05K~nR_g-QT3Q1`hi9Em;-EAaP&ru}D- zgx4~o&YXKcEFMlB)JXJCA7LTNA%DVqIN04a z$zS0WyWYF*^K3=!9BNW)W0?Jnad6SpZRJydd6O&zH-uR+x z+6Z3JY=G3qp&D(!mhG@C`h7rEnXp=LxLfB}!{ZbZw2 z8)zHase zPuzw`M5FY`19s!@j~O{N026O*v9y9ChM~ z5mz8y^Z>S|TrtBS=g-=cJ87LBZmLlj9OP28Ibv*xd95U_^W>m=j&%6F$fko;)!05+ z1!Zk%)Ce(*}V3V1jKFV7qpS~?BQSod2Jr?SQhau=V8Qq`x%J) z78g7A*CpCmkcZA%!h3Eb`cXr4nE2{`Gl`;rRBU=3@Q!1X|5BS?jChW^6{PnP&!LfobY=aUwI#tC6X zNp}0udv{*vr?APPSdqJS`DyLH)_G=xJ0hXfnSTHi7c0CPyI=yBBMH32S$x@_0pvLD zoo&0;)}lC#Oh>$VG0`{s=KW>7GI_^URqa%rWY|3yx5@gi1l!z{8BC8XsYNo6GBs6x zAhk9Fg?}h-SuSPO+1)AZ0^vN6H`~#Bm(i+O(h&3FQ!K3rgJ1wYhc}vXW)u5S8@p6g z3Vln~TSe(KnTg7iEwr@YdxMr?A2H`^qx%Z5SB2;0tKes?>$-@rz?$YAa#+#m9l7zQ z+1wA{o&A7=0C6)eaLv5>R&p#klcCLSELXWa;p}WmlsT!wBJH4{)?HA>k!mgK+(A%3 zKju#tNHK2U&%$w#wg@-rEI8g6fadAMQWkRK1$Bmv1I|P->N^dV(po)Jd@tw-%h&nn zIYI2#Zi&zAd&vh)*x_&%G@;O?ctZ)t+xkjFt$&*yrG^`obxW}8^-H^H8Hp8wYIWJB2t#I>ea zI)8td`2*;*{R8lXX^*2Sl`nW;uC6jyA^_doG6jN9%ZFM|ey}=Sra+riArnQgzMw9ybG`ci%QH9Ub4;X}!nh z)roNBc=c*R0spMmc_Xtd>w8=M&X3KRFvxvD^<`jt`LDy&wui_(=EU9atFlZVom7Yb za6Yst>kmW+WaXyX{SUf)dwy9Qf<0PMr!SBQHcPslR%b zLuB(Cx_GewargN9c5xApgmZcYiWI~!9wR>nLzOnT_xuPKR>wDlAz+0f0~ZVBMk9n< z|E&(e3}v#FSxYA#IW%b1K5Kd4H+xe~Op&s{0ez(XpT&Zcsng@P;_RP~u~K=o<>WNG z5n|}RJIis5JK##gEVoOB6K~wY9S^V6y{O#vXdM8;}QA18NmPej&BpQ!)8SLRn&sG}0qyBOtSR(6QG+xd=!p-UjU~p?~JJL4oMdT^8KIihNR{N1Csn)P!x)B3?T*|5w zMk<{7qRHsCMwFtN<>Dh%#>Qq7=ba*m;Nn-A(>IidX>F2N%?5IwB+r(YT+}Pc7F+i| zSTiQZBohmqxbIb3B{0XDlIDmN*$>qN`c=~NK!jz@$PAp}F)>gU#3x#b)`(Od;>3c@ zj!YF%rRV}qt0x+AvIcxmvFSQ>pb7reXXb`3zMq#?*BcH*yt75N%L9pbyDyuMnkL(! zTzUSM5twiEZU+xjoydA5mb|_nuCSY`$z;}Uc+y-9d;tgIU}|lC|MuRX?s*c4>tI6m z>cohC?6|hrnuS{=@qSHcXsc=Bqn0ZF!2;G&^M-}!kkI=&2ed5|omsRElACM>euHc< zg>trNadT0XmB%}AG<1zixxx?s_i8WCV#70u0L}QH4hJ?_0pWKmK^gKFtW_u5Si85) z23fZuaFl0QSL#j}zo|-Pm!0@5_L$ToY19Hd-B;wA_5^5_q@4@<*wg!Y$9Sk65mN*% z>WrB0-s@fzg|$5|o+ON(5%1P$NM59@quiw#m$-PHcxkC3oIm5B;CtgGPo9cuZ1HtKLXy$pg3hj0NHKjzuN)H>CRyZ?Ad^x?zVjZ|m@1m| zmpr6k<>lRz$`?@HBGeYTz*JC{zre}ZKt(z}OLm_1(r(iqo}pR1qI94t5O1PAk|vjW z>1D)-)lq)AHd4$cZ~C}w)T8Y1hkjR>rAJE z<5qC(G1L=5H86tJG(g)rMsqW;rJUf)JSxd#*sNvqQ@n^x)n69T1q}G&F{;tRy{yjj| z_RU_qy}oI)`2Jy!ihM%B?A0A6tegG$_FfJDyd|?@h;p^~0t?X8bp=ppt-*Afz4TPP zri}6EaN5gKO1)vKOUGK@iwi9;<)x1i2;1b>6pNQEFaxVb%-$KWwB|EO92#4X5@b!_EG+k3;Ha&Ef7*Q<#3NU0_Q;(mV*EK+ z_UK0>!k0tM+KI38^+FTW1Ek!4d054f$VLV&P5QA|(r|wx3!qupQfkwsc(0XnGy9Hm z5?dO-o9%X}u%g0wU=|5fgE;mZcZ5FR8HAO;HNs&kr8OzR{>*snqz7PWNBv6vUF-K~ zq`Qpy2%bpkefk;i{8-^PEUMbYC*(~_E2l`DX^7z}$9E2SH7_!+djCA)aA^4UEo@BJ zNA~*@c5@;^#-t!{voFW0%e^n=>RB_9z_lS+Dxlot#jPY z&h`asN-8$LS>JBHf@XR*=F+pTpOVJyebIHFN2;KfzeVt*jsJswaceBApTs7w zgkGnG8c{=F8pxa! z?)QM9#X3UGSpZ8hNm*E~A3OVIGgOy;EbN17EsZ1_SfvrF1k0l(3tt&`8I_xZ=|(GL zm-711t)q#m#zWN72gJ_xcZwB~et zp7C2KGTSIWKleJNo_ZVP)*52@dkkI4vPF0KGV0!J!{Kl_11Bo(wpql?cTVfN6ZMI` zZJzA1O?t=pt@l*Hz*mFD=E^T{@jZc+mrRvm_EW@b#ukayuC{wt_G9jnYQHH95%w^3 zG>v1N5OP+uR)Y`rj9hj4za-+gK2+YR&by#<{ke(0F=8wuu%B`!j3P^$he*U zl6O_GHR)uSRZw4&EDx_!l%obEUv?QZ#?>!6MYnNbZ)3*v-C1+Z^z>+mFn!ckZmmEg zP`IQ0&AX)UR1--`U_~s2c1;E6q851qRi3WE5x|Y}dCCZR@oXri0lvF3Zk|Gcg%+{O3~_S{dgl zP2}NK^Ng@_tYMlViZ32T@Q?(Mtkx78j7XSDfo-(*pxeFwvJnert^}TD-~RWH3fIe- z!q+9KZkFL1p3Q-;caX8~BV}QRa<_VI@E9q60ujgwKO$ZupfiqJF9j8*a;8>x*cp5O z|KHO!$_HUeP{H45Gv1vrLGs_e6E>a`zeCKPRaa^zXZkoCyYD||!1)W-h(=wRbgGEe z@6v-as8gr$zb-aiho7OdcuJ&IRG-=|FdtNd>Q0IoqW z@fGnwCSrqF6a1b+ie%^ks^DF;d=Jk^r}awsxb>(*o_I5lxk2P5w*OhUO_buQRW8IG^QL@ugS6as|jqO!|B z%c>X|T2l9?w(?D%{61kQ$e0)-#TJZkI}Z(&Bo^HnJsFEazpGW94A$f=WHL@RypOx! z7erB3&Uu%X)1MbPaPam&GJlSW-y`&jr^h(-O#iRU|G%WMgJSP^ysJJ%!tYjkmZN`4 z|94MEhaBM33;xUT;r5eSQ(KBdY%UA6uz&fuJ9n7(o2 zWxQb5%A`f5Bg(|G;{Ujvt<82SG*k-4NJ}IB4ZnyrpXM4?T4nRkr$n0Utekl=AMH1o z6ST|Rn>OMm=+$T-mAHbv{RWm(KvOs)oVho%4yhH`;*qL{ZS~t*!?=D?f zQW=@ZkDM&x=K}L4>DQ!r@0ajCZLma1K?@L7BJ%4&qr1a}*qwESM+KD=B`bHW-HDfX znqYMX2qeRj+$7dBO;sq!+@q8Sf0|3fwpHRXFRFA8dwq;`$7PS>_EXliEX#T?%*8E` zpoRjj^@v@{?C?x{bUZ$IlJq?ADy(oH=nVkavfc$gxQqVSeI7RQ1-$lkf6S_I#qif( zk+z?-vs4>tO=E?lqF)WaF4dEYe1{rVk1nh(N1F%}X zDn!j_(NSP7G-7S3baAgHOrojQ z2qMW!6kRZ3S>0^rLU7soVwD5ie(yYYrte;R!P8PS={4Mg*z7W>YNHBz$_7^P1x@*yR`4 zh}h2bZChwwbj{c~O)KsJt*0ynZKbQ8tBR)C3?$!#V?@>+XCHmjTpqCBNUm>#;_a&|@aVtd@uq z#)1pRn-h0uOE2~(bgO5X5ZL=CH&5!>f6uxcstGhl ze{wZa#+Wqp6$FmgDt}1gpU`(LFOr#wcUGNT?Q9@+{*okW55CoQ&7n;hy5e40 z$t>bi9r_T{3w@Z+D;IctEOG=oG50V|qS4MMNb7&7jt5W@?#&m2ieAQ95j&{VVaEXU zBqtFLcFLasOW%EHttzUYsN4kCe`kX1@PoOYN)x8ys;!nu-H-?INQk18z@D!NIR}Wu z>4CpHAcL>#raV(%QO|`zrq4*ZQiG&r0&I4K;pghh{f!-4>b6}^`(I2ZTV_*gw4nODNvR>~tC)*dCC!oqnS`CeWu^-*%-j@wS9`@T^#j3vcbjf5Jk_>0ifo0`R{C+H zRW|!>{d;dbQT0kG^COH!6z1_WLpEgKv^$mTKRTU>&9F$u%0b@RtCq;{;?G2Anw48T zska9G%*3smnYR{HXl?>g<`{ixj^su05yV&H9k1jRmHk|-C|$CG>a5%|DP1eTKfyhXW?=1xwVYH60Vean4sw7Lw$AYabZ4HVZIqOm(CA~~tU07Rub zg(05H%%fF&8=cql4J=JN)!YZNJy;69Sw1 zE$UJ%aEsxD3n*vcvSZA9LUtxI75-dfUiUI>X>;uuwJcH%g~Fee`Q@%lN+e}2-xUZr+wJVOUHHVX`7(E{x|Zh!N~^+b zwHmcNn#pTC%=W99v?e|M!`RfBnv@iE?1Hk6^a3l20s5^X`xQ-qUi)yThXqlJjnfaM zN)ckFc)!j<4+Jkye%+pT_SZf1$?oc^6fDBv*JsQr4)Ut3Mxr|f2ZP>Jcyay%{8GLD#K7d&aYLF0Tn>>V(ai(uajYv=zw z%=9`mW3;18y2`tUHXp`IwR->RhbaUEs+F2NRg(-<`^O0gj2ashs~IHT#Le!t8&Pxf z)|v0L#vR{EYIiuc) z4qjXU20!UJZN(gaOnZYCEy~>9dQgY zrg%|~beD)(Dc0cuv#U+?4_JR$OAUBGmfV51plP~u%} zZ{zaL42a^;U5t#rN$>%uq(q^*V%!Fe>p=K~6;o+M_=&lw#9Ft@n`Z=0W~fNi170vV<1(jt7ene`kD zTWTA&LZgQ(Su~EsOHZYm)%o8XxYn+qWSV`{hlx3K!akHtHt7*=7Au8+EExa1f4`b8W#B5Hp7&C zFxCpD>{GZlLAWsjGQlprRwIuv$`s}TqI#%{dOm>7vdn>DRvNFKQ$V9r zGe^1AJ}^^nL8He2C42d&?DEK#kE9}e)q>p7){a+4rhVG^4ns>?9t#RX7m`h!P6nxm zOX|30Yr{8IG1^f~A2Rr9scDP!rxv0RG$cxgNFlC$u5!4WM^jJ`DmEmzl8-1Oa9J#h zki$;e{icXeUl)U==a&J8H?o!(oj7JI(AyR6Vtc*}3!yo!XGmk9Xa$|Lr%>>;K``kK zoJ8rWb!D(PaE`iNb@*P=k}sx4gk-pZBN}PqP}{|YT4WjoPhu%2?v_{rA5*v-=E=qf zW@S=au;&nL>s=6;O)M8Cilj@KH%@zlxeIq0xyT=BFM&FSBdYcp)hV=)9 zwUw9alT83iliunjZGV_uUWz$I7-{Q>YzznaRA0tB|Bdk4NiIBKfZ!R*8L~dtMmV+dU4!baI#r4pps0kET^CtjXdp9QWCGv z{RhYpw~LEwMK$>9r}{r#HdUU6veDT4@O15|AlRDYfC;*&^6W(ifZO;-~K!3Hp|Ym8VmDD+ziJ*xZ+fwRKX zjW?`RSO5mGABtm#Y>XG|*iSJ&u@;Y%E&uc^p=*fiIjd70u42vZ?y08FY_HYmks-yq zXs{~$@jI*&iOo5TsC->0An{};P@Q0BHGE6Z0T>@upk(#%Av4LCm7(?bz%)HZ;dCrc zOC*AP!SYwVSds9J%S*xsJV5-rUm`pn%*c;F(3ii#b1e&He>Cvn zaM+9uYhRq5t7GL8+=_VR7&aRT{Y}b54XE8ZasPBGm(Ys90_pjO!?g1F_qgU5zb) z8W7W{h1-wJz~Vqo^%w|SSOAKw64w|eIP8n{7q{y;rJ2oC6KoNAY=q*idJpI=0Vw-e zfx;GNzGOEBg;8Y+S#fsW2C>)IPNJ3@Az4~j+c$7uVD{a8?;yK$Au88p3fEy_ugl4bqSzO>(r$LGui2{G_I z#ttH)!(p?g{BGOOLD=F*9xYK6ah&i1O0BHu^KJI%5AaKH%9;W}XV8Z<+YV5}6{uwY! zxbGtnWbl~_h}FWJEt2H#?GlmG&rII^e}7E0Igb{8d)5*p-1k3Jg{DFU4a;swer|sG zDC3x~f`S768jimbZTyLWHy2295%g3#oa;Zm~6j`a$(!?;fPTk$?Y+ zgPY*8V=Jkk5vIM^bj6kX7fUlk<|M|;XjutZaTwBRD;r4_6Q`jWyu+r0A0m6T>Qug% z;w@?aW>@t&qDLuc(nSv?B6_y!;~H zIUonYk79a-e~_q@q6l#v{~irP(aEX@uYz7Zak8#ha3>EnC#aJD?fdZEN`9bTajer< z`w$%$4Z}~&_jX);x-D@M{`zLTUQ@JXQR|J|$K&2Tje$e>1Nwq>ZQs7ityuGARiIIy zNc$%4&D=2jd=qn^T?3*YGa)CCqz#{^#}3OC5@N@u%OJ-+RNUl^%O6GRCP@hWT8(wI z@1>6G#m+%=q!9&fk&TVJ&h{9sNj>i3(yO?W7jQCJ*CbyR&?@lV6Qr&ng^m5-sY_71 z7|eSPGJihs{wwwHS_W~>n%<}S=;_z+N`X@?aO_=UlTgEL%q3=RRYCk(bTlKW!ls47 z=A3DGc8dcPAuzN>zaSuh+FrC(J%d8`hN$wk;NNks+OZ76fjuk9;@F@rcmP8`e{Yxl z1FSalm?}n4UG!dP^LtNW3a$c&>m`P&C*F;qR1FPFMw>JW!{+F4r$wMWAOMYB_7o;- zEiK${$}>18p%IR=?UqGQhP+XxB8V>6QvkV4{NX^3+k{-`uv2npnw>ZthL7LMli4ht z0S`n2C#N})0V8;Ah`6xC#BgnlKt0up%n+ebD{HudMV*$FR4+95E3)$s!?)|E65a1Y zaS+!3p8&`eH|o6pbJOKxXS;`uh@}@lBN93M4>dgEXU;zn{5;x6h-A36fXAoYxp?-E zl@C&%pHFJm61oJ_dK|DH=@I9q@%-wFWh`Li8f1>g%1@;LYifQW)HO>>TNjnq&fOL` zZIGR#0~z;Y>+eRyt0TPld*DrzMXBrXD=Pf)S~2g~xc>mze?Lme)Yiymrl)7FTRhX~ z_$*UmC~ccEK`c6Rz!l2}9;UNTp{1zm9w&ukpGPeP`-s+Aq;(;JsL3Sfsn6j~@#-r| z)V2n8B5H?In*n z-JWs(0PC)b9Q3{T^%d=*&Dr=D`%g@c^<$RaHb2Bi%soe6*A?kTrBxfu>7fNtYH3B` zTU{{(aDvhi%Qsq;QOW9ddo>lIG&&MSxs-)m=cRghTpaNltr5pwylCmvwlteFv;7@e zl;kn{!{~cgwG66?R%+*!R}m>YoVSVm8uHI2-k%{Q*t^915=qJ0dVUqjiOKC7(ff*q zEBVpnwc;L#Pys*%02BaF0YC)+eIKf8dX>bReD$^q{1F@M)LYN@`0G=yIPnnqFDRM&T-G5*3#&oJ-iWX%d#z6=1 zt+zO1?nOwG`$5(+6ADkK2e+kX$=vAr!?vH-(8&uondHW`K9v) zc;uW64l;hULQ7+V9fzOs7OVRI05fLy;+NRgShQ1}sTJCIhn#q;#M;Kc zEN4}^GbCh`P@zKS&;dXh`hD@Wo6JVW><3afY5?@V4S35>xB}kcgfak1miwpipbYI_ z;sdOXxD0H0DWUX0iX^$;zxkA-y3MsTil|q#hsyHY?^D$M%N=nH3d%=Da(>x`k!(pY{qHP~M znE9k`qr*L?e z?s-^AK1T<f-rAX3{BCsJWhPs!$EDl| z+F+w97ub6W){gJcP5aP)-bc+>XJQ#TY&rZYt$i8q&GN2d=9zL}xNkQNZ!g~-{m_I;sQp-%5GqK1cDVoA@xzPz&eD*M2OB8Y>WD}gQ zu34z;&WO%SRBT6RscN?B6d)KIMM73qLvnI=VvAtB75PU@RbIrL#FsaAI>hO3Ya_)g zhAig_yaAumxgH^@*(0q{grJ@EBk>FPl0g3e*zxJ|TZPWaBw*}+EDz4RDb<6~oRWm2 zs=gG=t` zmiz;^jfvY87vM13>wk6H*yk^H|(ybvb2iUD@g>_NoE$Jcf%Kv)mE0e^tZ;XlEcUQGvP%gG)j?o? zP%C9SnYh^dsXiy(f;Z{54gUadg+KN~Tl*uGS1l*R^T(T~>BH9=w0ZqhQsiYS$b6p= zbgRV)d8EZS{^+~3lz-#W3S5kS)fFzay%JKtV(^qrkV`R!-MQl!*yrE!sFIS{rBW=$ zI;n#mcZ3q+KH@DZNk5PQNB#7EwVL*whs_@5jn=!NM`q!CJ^h<@gg2QUnA=%%^95rN zA+eLnjz%+7`I_5NsYc;ps`y+4mTgMZU2VfX)cBLHOtufV(zsy+`&o`(9VMp^nm2^>E zPW%)evS$fAFkR?y&2>1p7n1K`5^i@1@*o2s1ppJ0d;3+olD{k!+34AB%a;BNhf(nC znw^c?!5nRo_N5pg9A_(>epSajbEjL_&0YC_!8BC4qs)$D#F`c6i8{x935>YPkaDf` zHQ7TE3h}%doS@?MGHhWFs9K|RX;VLo0b3Gwz9mGH#+r0E8#aPRu1jb6RY@kvS|cA( z)}GT>yoTH4k8p=Sduk}g277hlp~YW8rtE!7DyU9XN%bPUl+KgSJZq!K*K+DHk2Ej= zhB-_OaqUUAZB4D2!ud|OVrUpE^k7E~RedbYxpllv`zWraba^I<);#^?%Q5;6DlZgV zqd92V^f$qq7%gq)XbEWw25raYIqpxsD(K!*<}t)22q>e`C%<@AnXRNDdXdmqL!G)D zYBw1Mtptp!=`2j&bUNdA(weB4IJ8=~yN2U%hCszm7zl8P3V~50xE`xqX7`QS($JxNh{{Vpj z^)vzNdT)#TH>tq0Y5M+^a~pJMuH$d(KnA7a{{Ri?kTlwczolD7y;@ti*ZR;0l6d#_ zm++p443PM3W!JC3!juL$6#KauKkyKKqJTb4_=n@|f5-a2+x$a!<^;%s-Z8cq0ql$Y zPD$=)1C*c-(_K!&9ZK8CxGocLZGVEWlCJpGJoL_)4#uQ{{VfD@T@+m z4>PCh^?Z(m3;+je>NrfDPeHWQu6+B3m_E?ID*!M*3dW@f)OTl1EL7=7mLh4o1*V;J zCxNCe0Ut90Is7S8!^WHDL01<#vE`AkTb#!|{{RS%o&Ecd`|N*(a{W>sXLr}?`5M|@ zpAMUBV7D$%v2UE@=lqJ^oi$Ba9Mx*dthuCl#_?TNIBsHiyGAFBKEK!H7cp z^NeDJWP?_8Iv0gxd6rAy0{;MVv8h|6O{vl9&c9Q-vCwqV^6iaJ0aS9w&nB<8s%2(L$3G}LB0|_)r4&$b&+x# zf!B%^*1*!1=<^%@00moE-@Mkbx0byN*3{<9qp<#T0oqUjKp!_y0#F3j*ArUF=3B_ozA=^bpbq0p@q)pp+r>TP z{$i*N@{`Q~GgESeMxs+wvVp#nE z70*>_bW(aAmuYGphTq~D2C?NgxuqqpSxYVgjw$ksnC1Q^_+~wO!t<#LE^SoL3!mX5 zsQM9_acwdrl#%6L4Ax)6c<`I&u+H3isA*977mOu2sy0U zv0I-Z1DMy^v_%NRJkn?dPy?xD3;_hG;1TJ?9H3mWzn0nLXGVDNIv=~n0MFzr8kCfc zsa0?xySNCiT6|{~S8b)CIg6%m3cjC2- zm8^0&>vPJV!2T>fJTt9z{{WvUKf;~R>^eULc(Xt9Eo)!+1t<7Z=0ReA_(FVE5dQ$h zH>`|v{{S9Re}z7DD;K;y;jau%a#y|q+Bz@fT#(C%P z6`XH-$hj>vIzNQI5Y|tMbQ`PPBT=$zOQn&__HK$)BlEm~JqA9WrnPL%D>Lc20CZ(N z7+}y*No??B`N>ws2lsL5#bGQwWf?`kh_yW;lGx4Fv>iI))_=6v+sciGU?Nh)j{P|` zP@@=ZDO7u$)$f2b0TOCa+QzcS7w+%|4&pJM_^pz$7r88+9@APPk7X0Y<7=rxRQ|Mz zIWH6ZHqdn&8HK&5x49$ac;6U5P1Ie5k?5KZfomRzqIuS~?R{x$5-jE=-WWy{kb3h| zIJrfoqZg^S4Xlc=nHw&jc!7X^oYyR{oZimw;Wc#?(nLXkdCoZW{{T3zHW25Mk8`2Q z%IBXUAOq0jHSQ>+td2JBb>0~9z21iqx0W$;YB^PA!C#^NmC0WT8jkBmbkf91nzrcB z*8U@1-`g}6FpE&*4B@vnJ-sR^V51j#YE?{Bq^z_!reb+xo_VhO9G5Gkg-6ZMs8$}h z;(_i>ZK=x~Xo|;bfB?@OXi_D_^bd@ysz-Yt+HG1Gf^3Rhe4)Da_vv3fgtCU4o%4j_ z@gtwGNEFEsW_uf~1!8~I$&CJ7@${~u3w{Ay$#ajqm_kQ#GJmaOQ*(G7*~>-{jGp)v znPxYMZpF5Za>J9fs^hsle_CsBI6VVGxz(mY8U;JB@?-#mrU5*3DoufxNr9(rkjRRA3*aIV8bC!dmMdI?|Wy_Lq>} zTaFXW+Sngc&+A;Wp>}mbwBoIECs}V4>ajFBzO0tk?baBuyS=cu&*Et+2@X}~J=q?S zrD@tx{nUzNBL+q}WBvlRj8sgnUf&ZqB%$;tnzYGe;M%5H9u4EMBNb`bRy>DIwQHG2 z2Vgw=*9ACpJDoC>j)6j3O=^RoY-h3Jy0)>2VVf75I|R?`NrAE8y)<3xh{S)YVJQ3< zR`^KXcQUOjM#s8e>GrpJeZ+T>M=0Ty88Qz5e?n`%OPfZnj#TZf&oTIrAh(xJj@<-s zta5EZ&}4)CYnv0Lk-Z&m&K}N9_YT|zRpaqL{c7V|oeZxOpS!q_^fD^{0OP`t&Amo_ zUh7R`eQ*vUYmb`Yh&`1+2OphrsG{X2agxC~&=Yi4u}JqNgq&vqKl=WaVR9X6-saZk zQXH0<0x3_rP5@wk40QIahL3Cbf2T(#lM$L9FDR^|uG4{$`PVf5BhaUQRdcFxKeH}X z4hT{Q;ej5Y=CFEhY?^x?No(3gzPDrcOT!?Gcznh{IUi7c zYeC`h62s4)8=UX_E1etudS3qk-^Kp`;%Ga6wd?j@*UUfRT9eui1ZJF#iCBbEALHOW*tWzx+)B{jXoL{=Q-V01D?u z{{WtszxVNf_?iRzUcY7ie8c_~&W-;7JuiRn;{O2gGza#*e#`p#oeqJcTWEGIYi824 ZWz3n7f^t9|fb^i^#9}3gmpu1B|Jilw+#mn| literal 0 HcmV?d00001 diff --git a/assets/js/21.1cdd24eb.js b/assets/js/21.1cdd24eb.js new file mode 100644 index 000000000..f807d8d20 --- /dev/null +++ b/assets/js/21.1cdd24eb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{282:function(a,e,n){},347:function(a,e){a.exports=["epoberezkin","spaced4ndy","erikbrinkman","dependabot[bot]","jasoniangreen","PBug90","blakeembrey","sambauers","gajus","meirotstein","Tyharo1","igor-savin-ht","b4h0-c4t","willfarrell","boenrobot","yume-chan","GrahamLea","franciscomorais","asaid-0","domoritz","imbstack","pithu","realityking","efebarlas","brendo","pcwiek","rehanvdm","farrago","SoAsEr","kroky","Delagen","YChebotaev","bhvngt","t7yang","teq0","wuweiss","zekth","egfx-notifications","awlayton","HotelDon","donaldpipowitch","mummybot","G-Rath","HolgerJeromin","monkeywithacupcake","ktrueda","lucassaid","marshall007","mattpolzin","MichaelDeBoey","Nonemoticoner","ahmdsolmn","carlo-quinonez","radekmie","merlindorin","Romakita","rbuckton","ryanmeador","mighty1231","simon04","SirLich","krenor","stuartpb","TIBCOeddie","bearmini","not-an-aardvark","thernstig","m00s","mbroadst","MattiAstedrone","MikeRalphson","tyok","MrJithil","mychaelgo","natflow","nwoltman","nimerritt","nicksrandall","Noam3kCH","eventlistener","Opticsponge","orgads","papb","philsturgeon","jsdevel","oldmud0","ossdev07","pskfyi","qwertyforce","rek","sahilda","schokotets","superfaz","tridium","vlbee","aladdin-add","wyfo","duxing","anchnk","ChALkeR","TommyDew42","koba04","isTravis","cvlab","vargaeric","villasv","aristov","billytrend","byr-gdp","cjancsar","dfeufel","ehmicky","fpicalausa","franrolando","fridays","jonganc","dalcib","dannyb648","dancasey","rotu","FunkyDck","darcyparker","daveisfera","dsanders11","Delapouite","dimitropoulos","keyten","thetric","rubiagatra","forivall","ecwyne","EtaiG","Alexsey","avanelli","anslzo","asprouse","andyscott","kulakowka","vendeza","benasher44","bradjones1","eventualbuddha","cbrwflo","cpillsbury","ChuntaoLu","delavara","smithc10","caub","gj","justinpowers","kapouer","lehni","platinumazure","kpping","laurens","johanlelan","leonardovillela","LinusU","alazyzombie","jsbrain","Eomm","VIEWVIEWVIEW","mduu","dzuremar","mxsgx","rgeerts","garrows","hadrien-toma","seriousme","hans-kinnek","handrews","is2ei","idangozlan","ivansieder","P0lip","JamesJansson","mrjgreen","jrr","jonasfj","jonathanGB","jboavida"]},348:function(a,e,n){"use strict";n(282)},379:function(a,e,n){"use strict";n.r(e);var r=n(347),o=n.n(r),i={data:()=>({contributors:o.a})},t=(n(348),n(14)),s=Object(t.a)(i,(function(){var a=this,e=a._self._c;return e("div",a._l(a.contributors,(function(n,r){return e("a",{staticClass:"contributor",style:"background-position: "+100*r/(a.contributors.length-1)+"% 0",attrs:{href:"https://github.com/"+n}},[a._v("\n "+a._s(n)+"\n ")])})),0)}),[],!1,null,"074475b8",null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/57.fde3de3b.js b/assets/js/57.fde3de3b.js new file mode 100644 index 000000000..782e8f2ef --- /dev/null +++ b/assets/js/57.fde3de3b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{407:function(t,a,s){"use strict";s.r(a);var e=s(14),r=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"modifying-data-during-validation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modifying-data-during-validation"}},[t._v("#")]),t._v(" Modifying data during validation")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#general-considerations"}},[t._v("General considerations")])]),a("li",[a("a",{attrs:{href:"#removing-additional-properties"}},[t._v("Removing additional properties")])]),a("li",[a("a",{attrs:{href:"#assigning-defaults"}},[t._v("Assigning defaults")])]),a("li",[a("a",{attrs:{href:"#coercing-data-types"}},[t._v("Coercing data types")])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"general-considerations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#general-considerations"}},[t._v("#")]),t._v(" General considerations")]),t._v(" "),a("p",[t._v("Ajv has several options that allow to modify data during validation:")]),t._v(" "),a("ul",[a("li",[t._v("removeAdditional - to remove properties not defined in the schema object.")]),t._v(" "),a("li",[t._v("useDefaults - to assign defaults from the schema to the validated data properties.")]),t._v(" "),a("li",[t._v("coerceTypes - to change data type, when possible, to match the type(s) in the schema.")])]),t._v(" "),a("p",[t._v("You can also define keywords that modify data.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("NOT possible to modify root data")]),t._v(" "),a("p",[t._v("It is not possible to modify the root data instance passed to the validation function, only data properties can be modified. This is related to how JavaScript passes parameters, and not a limitation of Ajv.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Non-portable functionality")]),t._v(" "),a("p",[t._v("This functionality is non-standard - this is likely to be unsupported in other JSON Schema validator implementations.")])]),t._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[t._v("Unexpected results when modifying data")]),t._v(" "),a("p",[t._v("While pure schema validation produces the results independent of the keywords and subschema order, enabling any feature that may modify the data makes validation impure and its results are likely to depend on the order of evaluation of keywords and subschemas.")]),t._v(" "),a("p",[t._v("The order of evaluation of subschemas in keywords like "),a("code",[t._v("allOf")]),t._v(" is always the same as the order of subschemas in the array.")]),t._v(" "),a("p",[t._v("On another hand, the order of evaluation of keywords, while consistent between validations and not dependent on how schema object is created, is neither documented nor guaranteed, so it can change in the future major versions (and, in rare cases, it can change in minor version - e.g. when there is bug that needs to be fixed).")]),t._v(" "),a("p",[t._v("It is strongly recommended to always put user-defined keywords that can mutate data in separate subschemas inside "),a("code",[t._v("allOf")]),t._v(" keyword to make the order of evaluation unambiguous. The exceptions to this recommendation are pre-defined "),a("code",[t._v("default")]),t._v(" and "),a("code",[t._v("type")]),t._v(" keywords - they must remain in the same schema as other keywords.")])]),t._v(" "),a("h2",{attrs:{id:"removing-additional-properties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-additional-properties"}},[t._v("#")]),t._v(" Removing additional properties")]),t._v(" "),a("p",[t._v("With "),a("RouterLink",{attrs:{to:"/guide/api.html#options"}},[t._v("option "),a("code",[t._v("removeAdditional")])]),t._v(" (added by "),a("a",{attrs:{href:"https://github.com/andyscott",target:"_blank",rel:"noopener noreferrer"}},[t._v("andyscott"),a("OutboundLink")],1),t._v(") you can filter data during the validation.")],1),t._v(" "),a("p",[t._v("This option modifies original data.")]),t._v(" "),a("p",[t._v("Example:")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("removeAdditional")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additional1")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// will be removed; `additionalProperties` == false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"abc"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additional2")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// will NOT be removed; `additionalProperties` != false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": 0, "bar": { "baz": "abc", "additional2": 2 }')]),t._v("\n")])])]),a("p",[t._v("If "),a("code",[t._v("removeAdditional")]),t._v(" option in the example above were "),a("code",[t._v('"all"')]),t._v(" then both "),a("code",[t._v("additional1")]),t._v(" and "),a("code",[t._v("additional2")]),t._v(" properties would have been removed.")]),t._v(" "),a("p",[t._v("If the option were "),a("code",[t._v('"failing"')]),t._v(" then property "),a("code",[t._v("additional1")]),t._v(" would have been removed regardless of its value and property "),a("code",[t._v("additional2")]),t._v(" would have been removed only if its value were failing the schema in the inner "),a("code",[t._v("additionalProperties")]),t._v(" (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Unexpected results when using removeAdditional with anyOf/oneOf")]),t._v(" "),a("p",[t._v("If you use "),a("code",[t._v("removeAdditional")]),t._v(" option with "),a("code",[t._v("additionalProperties")]),t._v(" keyword inside "),a("code",[t._v("anyOf")]),t._v("/"),a("code",[t._v("oneOf")]),t._v(" keywords your validation can fail with this schema. To make it work as you expect, you have to use discriminated union with "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword (requires "),a("code",[t._v("discriminator")]),t._v(" option).")],1)]),t._v(" "),a("p",[t._v("For example, with this non-discriminated union you will have unexpected results:")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("oneOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v('The intention of the schema above is to allow objects with either the string property "foo" or the integer property "bar", but not with both and not with any other properties.')]),t._v(" "),a("p",[t._v("With the option "),a("code",[t._v("removeAdditional: true")]),t._v(" the validation will pass for the object "),a("code",[t._v('{ "foo": "abc"}')]),t._v(" but will fail for the object "),a("code",[t._v('{"bar": 1}')]),t._v(". It happens because while the first subschema in "),a("code",[t._v("oneOf")]),t._v(" is validated, the property "),a("code",[t._v("bar")]),t._v(" is removed because it is an additional property according to the standard (because it is not included in "),a("code",[t._v("properties")]),t._v(" keyword in the same schema).")]),t._v(" "),a("p",[t._v("While this behaviour is unexpected (issues "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/129",target:"_blank",rel:"noopener noreferrer"}},[t._v("#129"),a("OutboundLink")],1),t._v(", "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/134",target:"_blank",rel:"noopener noreferrer"}},[t._v("#134"),a("OutboundLink")],1),t._v("), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way:")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("oneOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("The schema above is also more efficient - it will compile into a faster function.")]),t._v(" "),a("p",[t._v("For discriminated unions you could schemas with "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword (it requires "),a("code",[t._v("discriminator: true")]),t._v(" option):")],1),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("discriminator")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("propertyName")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tag"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tag"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("oneOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("tag")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("tag")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("With this schema, only one subschema in "),a("code",[t._v("oneOf")]),t._v(" will be evaluated, so "),a("code",[t._v("removeAdditional")]),t._v(" option will work as expected.")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword.")],1),t._v(" "),a("h2",{attrs:{id:"assigning-defaults"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#assigning-defaults"}},[t._v("#")]),t._v(" Assigning defaults")]),t._v(" "),a("p",[t._v("With "),a("RouterLink",{attrs:{to:"/guide/options.html#options"}},[t._v("option "),a("code",[t._v("useDefaults")])]),t._v(" Ajv will assign values from "),a("code",[t._v("default")]),t._v(" keyword in the schemas of "),a("code",[t._v("properties")]),t._v(" and "),a("code",[t._v("items")]),t._v(" (when it is the array of schemas) to the missing properties and items.")],1),t._v(" "),a("p",[t._v("With the option value "),a("code",[t._v('"empty"')]),t._v(" properties and items equal to "),a("code",[t._v("null")]),t._v(" or "),a("code",[t._v('""')]),t._v(" (empty string) will be considered missing and assigned defaults.")]),t._v(" "),a("p",[t._v("This option modifies original data.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Defaults are deep-cloned")]),t._v(" "),a("p",[t._v("The default value is inserted in the generated validation code as a literal, so the value inserted in the data will be the deep clone of the default in the schema.")])]),t._v(" "),a("p",[t._v("Example 1 ("),a("code",[t._v("default")]),t._v(" in "),a("code",[t._v("properties")]),t._v("):")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("useDefaults")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"baz"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": 1, "bar": "baz" }')]),t._v("\n")])])]),a("p",[t._v("Example 2 ("),a("code",[t._v("default")]),t._v(" in "),a("code",[t._v("items")]),t._v("):")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// [ 1, "foo" ]')]),t._v("\n")])])]),a("p",[t._v("With "),a("code",[t._v("useDefaults")]),t._v(" option "),a("code",[t._v("default")]),t._v(" keywords throws exception during schema compilation when used in:")]),t._v(" "),a("ul",[a("li",[t._v("not in "),a("code",[t._v("properties")]),t._v(" or "),a("code",[t._v("items")]),t._v(" subschemas")]),t._v(" "),a("li",[t._v("in schemas inside "),a("code",[t._v("anyOf")]),t._v(", "),a("code",[t._v("oneOf")]),t._v(" and "),a("code",[t._v("not")]),t._v(" (see "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/42",target:"_blank",rel:"noopener noreferrer"}},[t._v("#42"),a("OutboundLink")],1),t._v(")")]),t._v(" "),a("li",[t._v("in "),a("code",[t._v("if")]),t._v(" schema")]),t._v(" "),a("li",[t._v("in schemas generated by user-defined "),a("em",[t._v("macro")]),t._v(" keywords")])]),t._v(" "),a("p",[t._v("The strict mode option can change the behaviour for these unsupported defaults ("),a("code",[t._v("strict: false")]),t._v(" to ignore them, "),a("code",[t._v('"log"')]),t._v(" to log a warning).")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/guide/strict-mode.html"}},[t._v("Strict mode")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Default with discriminator keyword")]),t._v(" "),a("p",[t._v("Defaults will be assigned in schemas inside "),a("code",[t._v("oneOf")]),t._v(" in case "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword is used.")],1)]),t._v(" "),a("h2",{attrs:{id:"coercing-data-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coercing-data-types"}},[t._v("#")]),t._v(" Coercing data types")]),t._v(" "),a("p",[t._v("When you are validating user inputs all your data properties are usually strings. The option "),a("code",[t._v("coerceTypes")]),t._v(" allows you to have your data types coerced to the types specified in your schema "),a("code",[t._v("type")]),t._v(" keywords, both to pass the validation and to use the correctly typed data afterwards.")]),t._v(" "),a("p",[t._v("This option modifies original data.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Type coercion with scalar values")]),t._v(" "),a("p",[t._v("If you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value.")])]),t._v(" "),a("p",[t._v("Example 1:")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("coerceTypes")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"boolean"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": 1, "bar": false }')]),t._v("\n")])])]),a("p",[t._v("Example 2 (array coercions):")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("coerceTypes")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"boolean"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\nconsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": [1], "bar": false }')]),t._v("\n")])])]),a("p",[t._v('The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of "anyOf" and other compound keywords).')]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/coercion.html"}},[t._v("Type coercion rules")]),t._v(" for details.")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/62.bbc8aa45.js b/assets/js/62.bbc8aa45.js new file mode 100644 index 000000000..1acc3d08b --- /dev/null +++ b/assets/js/62.bbc8aa45.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{409:function(t,a,e){"use strict";e.r(a);var s=e(14),r=Object(s.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"json-schema"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-schema"}},[t._v("#")]),t._v(" JSON Schema")]),t._v(" "),a("p",[t._v("In a simple way, JSON Schema is an object with validation keywords.")]),t._v(" "),a("p",[t._v("The keywords and their values define what rules the data should satisfy to be valid.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#json-schema-versions"}},[t._v("JSON Schema versions")]),a("ul",[a("li",[a("a",{attrs:{href:"#draft-07"}},[t._v("draft-07 "),a("Badge",{attrs:{text:"default"}})],1)]),a("li",[a("a",{attrs:{href:"#draft-2019-09"}},[t._v("draft-2019-09 "),a("Badge",{attrs:{text:"NEW"}})],1)]),a("li",[a("a",{attrs:{href:"#draft-2020-12"}},[t._v("draft-2020-12 "),a("Badge",{attrs:{text:"BREAKING",type:"warning"}})],1)]),a("li",[a("a",{attrs:{href:"#draft-06"}},[t._v("draft-06")])]),a("li",[a("a",{attrs:{href:"#draft-04"}},[t._v("draft-04")])])])]),a("li",[a("a",{attrs:{href:"#openapi-support"}},[t._v("OpenAPI support")])]),a("li",[a("a",{attrs:{href:"#json-data-type"}},[t._v("JSON data type")]),a("ul",[a("li",[a("a",{attrs:{href:"#type"}},[t._v("type")])]),a("li",[a("a",{attrs:{href:"#nullable"}},[t._v("nullable "),a("Badge",{attrs:{text:"OpenAPI"}})],1)])])]),a("li",[a("a",{attrs:{href:"#keywords-for-numbers"}},[t._v("Keywords for numbers")]),a("ul",[a("li",[a("a",{attrs:{href:"#maximum-minimum-and-exclusivemaximum-exclusiveminimum"}},[t._v("maximum / minimum and exclusiveMaximum / exclusiveMinimum")])]),a("li",[a("a",{attrs:{href:"#multipleof"}},[t._v("multipleOf")])])])]),a("li",[a("a",{attrs:{href:"#keywords-for-strings"}},[t._v("Keywords for strings")]),a("ul",[a("li",[a("a",{attrs:{href:"#maxlength-minlength"}},[t._v("maxLength / minLength")])]),a("li",[a("a",{attrs:{href:"#pattern"}},[t._v("pattern")])]),a("li",[a("a",{attrs:{href:"#format"}},[t._v("format")])])])]),a("li",[a("a",{attrs:{href:"#keywords-for-arrays"}},[t._v("Keywords for arrays")]),a("ul",[a("li",[a("a",{attrs:{href:"#maxitems-minitems"}},[t._v("maxItems / minItems")])]),a("li",[a("a",{attrs:{href:"#uniqueitems"}},[t._v("uniqueItems")])]),a("li",[a("a",{attrs:{href:"#items"}},[t._v("items")]),a("ul",[a("li",[a("a",{attrs:{href:"#items-in-draft-04-06-07-and-2019-09"}},[t._v("items in draft-04, -06, -07 and -2019-09")])]),a("li",[a("a",{attrs:{href:"#items-in-draft-2020-12"}},[t._v("items in draft-2020-12 "),a("Badge",{attrs:{text:"NEW"}})],1)])])]),a("li",[a("a",{attrs:{href:"#prefixitems"}},[t._v("prefixItems "),a("Badge",{attrs:{text:"NEW: draft 2020-12"}})],1)]),a("li",[a("a",{attrs:{href:"#additionalitems"}},[t._v("additionalItems")])]),a("li",[a("a",{attrs:{href:"#contains"}},[t._v("contains")])]),a("li",[a("a",{attrs:{href:"#maxcontains-mincontains"}},[t._v("maxContains / minContains "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1)]),a("li",[a("a",{attrs:{href:"#unevaluateditems"}},[t._v("unevaluatedItems "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1)])])]),a("li",[a("a",{attrs:{href:"#keywords-for-objects"}},[t._v("Keywords for objects")]),a("ul",[a("li",[a("a",{attrs:{href:"#maxproperties-minproperties"}},[t._v("maxProperties / minProperties")])]),a("li",[a("a",{attrs:{href:"#required"}},[t._v("required")])]),a("li",[a("a",{attrs:{href:"#properties"}},[t._v("properties")])]),a("li",[a("a",{attrs:{href:"#patternproperties"}},[t._v("patternProperties")])]),a("li",[a("a",{attrs:{href:"#additionalproperties"}},[t._v("additionalProperties")])]),a("li",[a("a",{attrs:{href:"#dependencies"}},[t._v("dependencies "),a("Badge",{attrs:{text:"deprecated in draft 2019-09",type:"warning"}})],1)]),a("li",[a("a",{attrs:{href:"#dependentrequired"}},[t._v("dependentRequired "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1)]),a("li",[a("a",{attrs:{href:"#dependentschemas"}},[t._v("dependentSchemas "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1)]),a("li",[a("a",{attrs:{href:"#propertynames"}},[t._v("propertyNames")])]),a("li",[a("a",{attrs:{href:"#unevaluatedproperties"}},[t._v("unevaluatedProperties "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1)]),a("li",[a("a",{attrs:{href:"#discriminator"}},[t._v("discriminator "),a("Badge",{attrs:{text:"NEW: OpenAPI"}})],1)])])]),a("li",[a("a",{attrs:{href:"#keywords-for-all-types"}},[t._v("Keywords for all types")]),a("ul",[a("li",[a("a",{attrs:{href:"#enum"}},[t._v("enum")])]),a("li",[a("a",{attrs:{href:"#const"}},[t._v("const")])])])]),a("li",[a("a",{attrs:{href:"#compound-keywords"}},[t._v("Compound keywords")]),a("ul",[a("li",[a("a",{attrs:{href:"#not"}},[t._v("not")])]),a("li",[a("a",{attrs:{href:"#oneof"}},[t._v("oneOf")])]),a("li",[a("a",{attrs:{href:"#anyof"}},[t._v("anyOf")])]),a("li",[a("a",{attrs:{href:"#allof"}},[t._v("allOf")])]),a("li",[a("a",{attrs:{href:"#if-then-else"}},[t._v("if/then/else")])])])]),a("li",[a("a",{attrs:{href:"#metadata-keywords"}},[t._v("Metadata keywords")])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"json-schema-versions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-schema-versions"}},[t._v("#")]),t._v(" JSON Schema versions")]),t._v(" "),a("h3",{attrs:{id:"draft-07"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#draft-07"}},[t._v("#")]),t._v(" draft-07 "),a("Badge",{attrs:{text:"default"}})],1),t._v(" "),a("p",[t._v("This version is provided as default export:")]),t._v(" "),a("code-group",[a("code-block",{attrs:{title:"JavaScript"}},[a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("code-block",{attrs:{title:"TypeScript"}},[a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("draft-07 has better performance")]),t._v(" "),a("p",[t._v("Unless you need the new features of later versions, you would have more efficient generated code with this draft.")])]),t._v(" "),a("h3",{attrs:{id:"draft-2019-09"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#draft-2019-09"}},[t._v("#")]),t._v(" draft-2019-09 "),a("Badge",{attrs:{text:"NEW"}})],1),t._v(" "),a("p",[t._v("Ajv supports all new keywords of JSON Schema draft-2019-09:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#unevaluatedproperties"}},[t._v("unevaluatedProperties")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unevaluateditems"}},[t._v("unevaluatedItems")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#dependentrequired"}},[t._v("dependentRequired")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#dependentschemas"}},[t._v("dependentSchemas")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#maxcontains--mincontains"}},[t._v("maxContains/minContains")])]),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/guide/combining-schemas.html#extending-recursive-schemas"}},[t._v("$recursiveAnchor/$recursiveRef")])],1)]),t._v(" "),a("p",[t._v("To use draft-2019-09 schemas you need to import a different Ajv class:")]),t._v(" "),a("code-group",[a("code-block",{attrs:{title:"JavaScript"}},[a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv2019 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/2019"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv2019")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("code-block",{attrs:{title:"TypeScript"}},[a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv2019 "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/2019"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv2019")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),a("p",[t._v("You can use draft-07 schemas with this Ajv instance as well, draft-2019-09 is backwards compatible. If your schemas use "),a("code",[t._v("$schema")]),t._v(" keyword, you need to add draft-07 meta-schema to Ajv instance:")]),t._v(" "),a("code-group",[a("code-block",{attrs:{title:"JavaScript"}},[a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" draft7MetaSchema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/refs/json-schema-draft-07.json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\najv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addMetaSchema")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("draft7MetaSchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("code-block",{attrs:{title:"TypeScript"}},[a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" draft7MetaSchema "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/refs/json-schema-draft-07.json"')]),t._v("\najv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addMetaSchema")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("draft7MetaSchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),a("h3",{attrs:{id:"draft-2020-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#draft-2020-12"}},[t._v("#")]),t._v(" draft-2020-12 "),a("Badge",{attrs:{text:"BREAKING",type:"warning"}})],1),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("draft-2020-12 is not backwards compatible")]),t._v(" "),a("p",[t._v("You cannot use draft-2020-12 and previous JSON Schema versions in the same Ajv instance.")])]),t._v(" "),a("p",[t._v("Ajv supports all keywords of JSON Schema draft-2020-12:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#prefixItems"}},[t._v("prefixItems")]),t._v(" that replaced array form of items keyword")]),t._v(" "),a("li",[t._v("changed "),a("a",{attrs:{href:"#items-in-draft-2020-12"}},[t._v("items")]),t._v(" keyword that combined parts of functionality of items and additionalItems")]),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/guide/combining-schemas.html#extending-recursive-schemas"}},[t._v("$dynamicAnchor/$dynamicRef")])],1)]),t._v(" "),a("p",[t._v("To use draft-2020-12 schemas you need to import a different Ajv class:")]),t._v(" "),a("code-group",[a("code-block",{attrs:{title:"JavaScript"}},[a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv2020 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/2020"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv2020")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("code-block",{attrs:{title:"TypeScript"}},[a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv2020 "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/2020"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv2020")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),a("h3",{attrs:{id:"draft-06"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#draft-06"}},[t._v("#")]),t._v(" draft-06")]),t._v(" "),a("p",[t._v("You can use JSON Schema draft-06 schemas with Ajv v7/8. If your schemas use "),a("code",[t._v("$schema")]),t._v(" keyword, you need to add draft-06 meta-schema to Ajv instance. This example shows how to support both draft-06 and draft-07 schemas:")]),t._v(" "),a("code-group",[a("code-block",{attrs:{title:"JavaScript"}},[a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" draft6MetaSchema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/refs/json-schema-draft-06.json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\najv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addMetaSchema")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("draft6MetaSchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("code-block",{attrs:{title:"TypeScript"}},[a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" draft6MetaSchema "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/refs/json-schema-draft-06.json"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\najv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addMetaSchema")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("draft6MetaSchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),a("h3",{attrs:{id:"draft-04"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#draft-04"}},[t._v("#")]),t._v(" draft-04")]),t._v(" "),a("p",[t._v("You can use JSON Schema draft-04 schemas with Ajv from v8.5.0 and the additional package "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv-draft-04",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-draft-04"),a("OutboundLink")],1),t._v(" (both ajv and ajv-draft-04 should be installed).")]),t._v(" "),a("code-group",[a("code-block",{attrs:{title:"JavaScript"}},[a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-draft-04"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("code-block",{attrs:{title:"TypeScript"}},[a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-draft-04"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Ajv cannot combine multiple JSON Schema versions")]),t._v(" "),a("p",[t._v("You can only use this import with JSON Schema draft-04, you cannot combine multiple JSON Schema versions in this ajv instance.")])]),t._v(" "),a("h2",{attrs:{id:"openapi-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#openapi-support"}},[t._v("#")]),t._v(" OpenAPI support")]),t._v(" "),a("p",[t._v("Ajv supports these additional "),a("a",{attrs:{href:"https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenAPI specification"),a("OutboundLink")],1),t._v(" keywords:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#nullable"}},[t._v("nullable")]),t._v(" - to avoid using "),a("code",[t._v("type")]),t._v(" keyword with array of types.")]),t._v(" "),a("li",[a("a",{attrs:{href:"#discriminator"}},[t._v("discriminator")]),t._v(" - to optimize validation and error reporting of tagged unions")])]),t._v(" "),a("h2",{attrs:{id:"json-data-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-data-type"}},[t._v("#")]),t._v(" JSON data type")]),t._v(" "),a("h3",{attrs:{id:"type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type"}},[t._v("#")]),t._v(" "),a("code",[t._v("type")])]),t._v(" "),a("p",[a("code",[t._v("type")]),t._v(" keyword requires that the data is of certain type (or some of types). Its value can be a string (the allowed type) or an array of strings (multiple allowed types).")]),t._v(" "),a("p",[t._v("Type can be: "),a("code",[t._v("number")]),t._v(", "),a("code",[t._v("integer")]),t._v(", "),a("code",[t._v("string")]),t._v(", "),a("code",[t._v("boolean")]),t._v(", "),a("code",[t._v("array")]),t._v(", "),a("code",[t._v("object")]),t._v(" or "),a("code",[t._v("null")]),t._v(".")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number"}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("1.5")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('"abc"')]),t._v(", "),a("code",[t._v('"1"')]),t._v(", "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("null")]),t._v(", "),a("code",[t._v("true")])])])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "integer"}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("2")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('"abc"')]),t._v(", "),a("code",[t._v('"1"')]),t._v(", "),a("code",[t._v("1.5")]),t._v(", "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("null")]),t._v(", "),a("code",[t._v("true")])])])]),t._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: ["number", "string"]}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("1.5")]),t._v(", "),a("code",[t._v('"abc"')]),t._v(", "),a("code",[t._v('"1"')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("null")]),t._v(", "),a("code",[t._v("true")])])])]),t._v(" "),a("p",[t._v("All examples above are JSON Schemas that only require data to be of certain type to be valid.")]),t._v(" "),a("p",[t._v("Most other keywords apply only to a particular type of data. If the data is of different type, the keyword will not apply and the data will be considered valid.")]),t._v(" "),a("p",[t._v("In v7 Ajv introduced "),a("RouterLink",{attrs:{to:"/strict-mode.html#strict-types"}},[t._v("Strict types")]),t._v(" mode that makes these mistakes less likely by requiring that types are constrained with type keyword whenever another keyword that applies to specific type is used.")],1),t._v(" "),a("h3",{attrs:{id:"nullable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nullable"}},[t._v("#")]),t._v(" nullable "),a("Badge",{attrs:{text:"OpenAPI"}})],1),t._v(" "),a("p",[t._v("This keyword can be used to allow "),a("code",[t._v("null")]),t._v(" value in addition to the defined "),a("code",[t._v("type")]),t._v(".")]),t._v(" "),a("p",[t._v("Ajv supports it by default, without additional options. These two schemas are equivalent, but the first one is better supported by some tools and is also compatible with "),a("code",[t._v("strictTypes")]),t._v(" option (see "),a("RouterLink",{attrs:{to:"/strict-mode.html#strict-types"}},[t._v("Strict types")]),t._v(")")],1),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"nullable"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("and")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"null"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("nullable does not extend enum and const")]),t._v(" "),a("p",[t._v("If you use "),a("a",{attrs:{href:"#enum"}},[t._v("enum")]),t._v(" or "),a("a",{attrs:{href:"#const"}},[t._v("const")]),t._v(" keywords, "),a("code",[t._v('"nullable": true')]),t._v(" would not extend the list of allowed values - "),a("code",[t._v("null")]),t._v(" value has to be explicitly added to "),a("code",[t._v("enum")]),t._v(" (and "),a("code",[t._v("const")]),t._v(" would fail, unless it is "),a("code",[t._v('"const": null')]),t._v(")")]),t._v(" "),a("p",[t._v("This is different from how "),a("code",[t._v("nullable")]),t._v(" is defined in "),a("RouterLink",{attrs:{to:"/json-type-definition.html"}},[t._v("JSON Type Definition")]),t._v(", where "),a("code",[t._v('"nullable": true')]),t._v(" allows "),a("code",[t._v("null")]),t._v(" value in addition to any data defined by the schema.")],1)]),t._v(" "),a("h2",{attrs:{id:"keywords-for-numbers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-numbers"}},[t._v("#")]),t._v(" Keywords for numbers")]),t._v(" "),a("h3",{attrs:{id:"maximum-minimum-and-exclusivemaximum-exclusiveminimum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maximum-minimum-and-exclusivemaximum-exclusiveminimum"}},[t._v("#")]),t._v(" "),a("code",[t._v("maximum")]),t._v(" / "),a("code",[t._v("minimum")]),t._v(" and "),a("code",[t._v("exclusiveMaximum")]),t._v(" / "),a("code",[t._v("exclusiveMinimum")])]),t._v(" "),a("p",[t._v("The value of keyword "),a("code",[t._v("maximum")]),t._v(" ("),a("code",[t._v("minimum")]),t._v(") should be a number. This value is the maximum (minimum) allowed value for the data to be valid.")]),t._v(" "),a("p",[t._v("The value of keyword "),a("code",[t._v("exclusiveMaximum")]),t._v(" ("),a("code",[t._v("exclusiveMinimum")]),t._v(") should be a number. This value is the exclusive maximum (minimum) allowed value for the data to be valid (the data equal to this keyword value is invalid).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("NO support for boolean keyword values")]),t._v(" "),a("p",[t._v("Boolean values for keywords "),a("code",[t._v("exclusiveMaximum")]),t._v(" ("),a("code",[t._v("exclusiveMinimum")]),t._v(") are not supported.")])]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number", maximum: 5}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("4")]),t._v(", "),a("code",[t._v("5")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("6")]),t._v(", "),a("code",[t._v("7")])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number", minimum: 5}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("5")]),t._v(", "),a("code",[t._v("6")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("4")]),t._v(", "),a("code",[t._v("4.5")])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number", exclusiveMinimum: 5}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("6")]),t._v(", "),a("code",[t._v("7")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("4.5")]),t._v(", "),a("code",[t._v("5")])])])]),t._v(" "),a("h3",{attrs:{id:"multipleof"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multipleof"}},[t._v("#")]),t._v(" "),a("code",[t._v("multipleOf")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a number. The data to be valid should be a multiple of the keyword value (i.e. the result of division of the data on the value should be integer).")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number", multipleOf: 5}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("5")]),t._v(", "),a("code",[t._v("10")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("4")])])])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number", multipleOf: 2.5}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("2.5")]),t._v(", "),a("code",[t._v("5")]),t._v(", "),a("code",[t._v("7.5")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("4")])])])]),t._v(" "),a("h2",{attrs:{id:"keywords-for-strings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-strings"}},[t._v("#")]),t._v(" Keywords for strings")]),t._v(" "),a("h3",{attrs:{id:"maxlength-minlength"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxlength-minlength"}},[t._v("#")]),t._v(" "),a("code",[t._v("maxLength")]),t._v(" / "),a("code",[t._v("minLength")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Grapheme clusters will count as multiple characters")]),t._v(" "),a("p",[t._v("Certain charsets have characters that are made up of multiple Unicode code points. These "),a("a",{attrs:{href:"https://www.unicode.org/reports/tr29/tr29-17.html#Grapheme_Cluster_Boundaries",target:"_blank",rel:"noopener noreferrer"}},[t._v("grapheme clusters"),a("OutboundLink")],1),t._v(" are counted as multiple in length calculations.")])]),t._v(" "),a("p",[t._v("The value of the keywords should be a number. The data to be valid should have length satisfying this rule. Unicode pairs are counted as a single character.")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "string", maxLength: 5}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('"abc"')]),t._v(", "),a("code",[t._v('"abcde"')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('"abcdef"')])])])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "string", minLength: 2}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('"ab"')]),t._v(", "),a("code",[t._v('"😀😀"')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('"a"')]),t._v(", "),a("code",[t._v('"😀"')])])])]),t._v(" "),a("h3",{attrs:{id:"pattern"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pattern"}},[t._v("#")]),t._v(" "),a("code",[t._v("pattern")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a string. The data to be valid should match the regular expression defined by the keyword value.")]),t._v(" "),a("p",[t._v("Ajv uses "),a("code",[t._v('new RegExp(value, "u")')]),t._v(" to create the regular expression that will be used to test data.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "string", pattern: "[abc]+"}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('"a"')]),t._v(", "),a("code",[t._v('"abcd"')]),t._v(", "),a("code",[t._v('"cde"')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('"def"')]),t._v(", "),a("code",[t._v('""')])]),t._v(" "),a("h3",{attrs:{id:"format"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#format"}},[t._v("#")]),t._v(" "),a("code",[t._v("format")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a string. The data to be valid should match the format with this name.")]),t._v(" "),a("p",[t._v("Ajv does not include any formats, they can be added with "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv-formats",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-formats"),a("OutboundLink")],1),t._v(" plugin.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "string", format: "ipv4"}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('"192.168.0.1"')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('"abc"')])]),t._v(" "),a("h2",{attrs:{id:"keywords-for-arrays"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-arrays"}},[t._v("#")]),t._v(" Keywords for arrays")]),t._v(" "),a("h3",{attrs:{id:"maxitems-minitems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxitems-minitems"}},[t._v("#")]),t._v(" "),a("code",[t._v("maxItems")]),t._v(" / "),a("code",[t._v("minItems")])]),t._v(" "),a("p",[t._v("The value of the keywords should be a number. The data array to be valid should not have more (less) items than the keyword value.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "array", maxItems: 3}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v('["1", 2, "3"]')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[1, 2, 3, 4]")])]),t._v(" "),a("h3",{attrs:{id:"uniqueitems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uniqueitems"}},[t._v("#")]),t._v(" "),a("code",[t._v("uniqueItems")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a boolean. If the keyword value is "),a("code",[t._v("true")]),t._v(", the data array to be valid should have unique items.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "array", uniqueItems: true}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v('["1", 2, "3"]')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[1, 2, 1]")]),t._v(", "),a("code",[t._v("[{a: 1, b: 2}, {b: 2, a: 1}]")])]),t._v(" "),a("h3",{attrs:{id:"items"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#items"}},[t._v("#")]),t._v(" "),a("code",[t._v("items")])]),t._v(" "),a("h4",{attrs:{id:"items-in-draft-04-06-07-and-2019-09"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#items-in-draft-04-06-07-and-2019-09"}},[t._v("#")]),t._v(" "),a("code",[t._v("items")]),t._v(" in draft-04, -06, -07 and -2019-09")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("items keyword changed in JSON Schema draft-2020-12")]),t._v(" "),a("p",[t._v("This section describes "),a("code",[t._v("items")]),t._v(" keyword in all JSON Schema versions prior to draft-2020-12.")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a schema or an array of schemas.")]),t._v(" "),a("p",[t._v("If the keyword value is a schema, then for the data array to be valid each item of the array should be valid according to the schema. In this case the "),a("code",[t._v("additionalItems")]),t._v(" keyword is ignored.")]),t._v(" "),a("p",[t._v("If the keyword value is an array, then items with indices less than the number of items in the keyword should be valid according to the schemas with the same indices. Whether additional items are valid will depend on "),a("code",[t._v("additionalItems")]),t._v(" keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "array", items: {type: "integer"}}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1,2,3]")]),t._v(", "),a("code",[t._v("[]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('[1,"abc"]')])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v('[1, "abc"]')]),t._v(", "),a("code",[t._v('[1, "abc", 2]')]),t._v(", "),a("code",[t._v("[]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('["abc", 1]')]),t._v(", "),a("code",[t._v('["abc"]')])])])]),t._v(" "),a("p",[t._v("The schema in example 2 will log warning by default (see "),a("code",[t._v("strictTuples")]),t._v(" option), because it defines unconstrained tuple. To define a tuple with exactly 2 elements use "),a("code",[t._v("minItems")]),t._v(" and "),a("code",[t._v("additionalItems")]),t._v(" keywords (see example 1 in "),a("code",[t._v("additionalItems")]),t._v(").")]),t._v(" "),a("h4",{attrs:{id:"items-in-draft-2020-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#items-in-draft-2020-12"}},[t._v("#")]),t._v(" "),a("code",[t._v("items")]),t._v(" in draft-2020-12 "),a("Badge",{attrs:{text:"NEW"}})],1),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("items keyword changed in JSON Schema draft-2020-12")]),t._v(" "),a("p",[t._v("This section describes "),a("code",[t._v("items")]),t._v(" keyword in JSON draft-2020-12.")])]),t._v(" "),a("p",[t._v("The value of the keyword must be a schema.")]),t._v(" "),a("p",[t._v("For the data array to be valid:")]),t._v(" "),a("ul",[a("li",[t._v("if "),a("a",{attrs:{href:"#prefixItems"}},[t._v("prefixItems")]),t._v(" keyword is not used in the schema, then each item of the array must be valid according to the schema in "),a("code",[t._v("items")]),t._v(".")]),t._v(" "),a("li",[t._v("if "),a("a",{attrs:{href:"#prefixItems"}},[t._v("prefixItems")]),t._v(" keyword is used in the schema, then each item with the index starting from the size of "),a("code",[t._v("prefixItems")]),t._v(" schema must be valid according to the schema in "),a("code",[t._v("items")])])]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "array", items: {type: "integer"}}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1,2,3]")]),t._v(", "),a("code",[t._v("[]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('[1,"abc"]')])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("prefixItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1, 2]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v("[1, 2, 3]")]),t._v(", "),a("code",[t._v('[1, "abc"]')]),t._v(" (any wrong number of items or wrong type)")])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("prefixItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1, 2]")]),t._v(", "),a("code",[t._v('[1, 2, "abc"]')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('["abc"]')]),t._v(", "),a("code",[t._v("[1, 2, 3]")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('\n_valid_: `[1]`, `[1, "abc"]`, `[1, "abc", 2]`, `[]`\n\n_invalid_: `["abc", 1]`, `["abc"]`\n\n')])])])])]),t._v(" "),a("p",[t._v("The schema in example 3 will log warning by default (see "),a("code",[t._v("strictTuples")]),t._v(" option), because it defines unconstrained tuple. To define a tuple with exactly 2 elements use "),a("code",[t._v("minItems")]),t._v(" and "),a("code",[t._v("items")]),t._v(" keywords (see example 2).")]),t._v(" "),a("h3",{attrs:{id:"prefixitems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prefixitems"}},[t._v("#")]),t._v(" "),a("code",[t._v("prefixItems")]),t._v(" "),a("Badge",{attrs:{text:"NEW: draft 2020-12"}})],1),t._v(" "),a("p",[t._v("The value of the keyword must be an array of schemas.")]),t._v(" "),a("p",[t._v("For the data array to be valid, the items with indices less than the number of schemas in this keyword must be valid according to the schemas with the same indices. Whether additional items are valid will depend on "),a("code",[t._v("items")]),t._v(" keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("prefixItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v('[1, "abc"]')]),t._v(", "),a("code",[t._v('[1, "abc", 2]')]),t._v(", "),a("code",[t._v("[]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('["abc", 1]')]),t._v(", "),a("code",[t._v('["abc"]')])]),t._v(" "),a("p",[t._v("The schema in example will log warning by default (see "),a("code",[t._v("strictTuples")]),t._v(" option), because it defines unconstrained tuple. To define a tuple with exactly 2 elements use "),a("a",{attrs:{href:"#minitems"}},[t._v("minItems")]),t._v(" and "),a("a",{attrs:{href:"#items-in-draft-2020-12"}},[t._v("items")]),t._v(" keywords (see example 2 in "),a("a",{attrs:{href:"#items-in-draft-2020-12"}},[t._v("items")]),t._v(").")]),t._v(" "),a("h3",{attrs:{id:"additionalitems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additionalitems"}},[t._v("#")]),t._v(" "),a("code",[t._v("additionalItems")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("additionalItems is not supported in JSON Schema draft-2020-12")]),t._v(" "),a("p",[t._v("To create and equivalent schema in draft-2020-12 use keywords "),a("a",{attrs:{href:"#prefixItems"}},[t._v("prefixItems")]),t._v(" and the new "),a("a",{attrs:{href:"#items-in-draft-2020-12"}},[t._v("items")]),t._v(" keyword")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a boolean or an object.")]),t._v(" "),a("p",[t._v("If "),a("code",[t._v("items")]),t._v(" keyword is not present or it is an object, "),a("code",[t._v("additionalItems")]),t._v(" keyword should be ignored regardless of its value. By default Ajv will throw exception in this case - see "),a("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("Strict mode")])],1),t._v(" "),a("p",[t._v("If "),a("code",[t._v("items")]),t._v(" keyword is an array and data array has not more items than the length of "),a("code",[t._v("items")]),t._v(" keyword value, "),a("code",[t._v("additionalItems")]),t._v(" keyword is also ignored.")]),t._v(" "),a("p",[t._v('If the length of data array is bigger than the length of "items" keyword value than the result of the validation depends on the value of '),a("code",[t._v("additionalItems")]),t._v(" keyword:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(": data is invalid")]),t._v(" "),a("li",[a("code",[t._v("true")]),t._v(": data is valid")]),t._v(" "),a("li",[t._v('an object: data is valid if all additional items (i.e. items with indices greater or equal than "items" keyword value length) are valid according to the schema in "additionalItems" keyword.')])]),t._v(" "),a("p",[t._v("The schemas in examples 2-3 log warning by default, use option "),a("code",[t._v("strictTuples: false")]),t._v(" to allow)")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1, 2]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v("[1, 2, 3]")]),t._v(", "),a("code",[t._v('[1, "abc"]')]),t._v(" (any wrong number of items or wrong type)")])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1, 2]")]),t._v(", "),a("code",[t._v("[1, 2, 3]")]),t._v(", "),a("code",[t._v('[1, 2, "abc"]')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('["abc"]')]),t._v(", "),a("code",[t._v('[1, "abc", 3]')])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v("[1, 2]")]),t._v(", "),a("code",[t._v('[1, 2, "abc"]')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('["abc"]')]),t._v(", "),a("code",[t._v("[1, 2, 3]")])])])]),t._v(" "),a("h3",{attrs:{id:"contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains"}},[t._v("#")]),t._v(" "),a("code",[t._v("contains")])]),t._v(" "),a("p",[t._v("The value of the keyword is a JSON Schema. The array is valid if it contains at least one item that is valid according to this schema.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "array", contains: {type: "integer"}}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1]")]),t._v(", "),a("code",[t._v('[1, "foo"]')]),t._v(", any array with at least one integer")]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v('["foo", "bar"]')]),t._v(", any array without integers")]),t._v(" "),a("h3",{attrs:{id:"maxcontains-mincontains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxcontains-mincontains"}},[t._v("#")]),t._v(" "),a("code",[t._v("maxContains")]),t._v(" / "),a("code",[t._v("minContains")]),t._v(" "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1),t._v(" "),a("p",[t._v("The value of these keywords should be an integer.")]),t._v(" "),a("p",[t._v("Without "),a("code",[t._v("contains")]),t._v(" keyword they are ignored (logs error or throws exception in ajv "),a("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("strict mode")]),t._v(").")],1),t._v(" "),a("p",[t._v("The array is valid if it contains at least "),a("code",[t._v("minContains")]),t._v(" items and no more than "),a("code",[t._v("maxContains")]),t._v(" items that are valid against the schema in "),a("code",[t._v("contains")]),t._v(" keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("contains")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minContains")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("maxContains")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1, 2]")]),t._v(", "),a("code",[t._v('[1, 2, 3, "foo"]')]),t._v(", any array with 2 or 3 integers")]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("[]")]),t._v(", "),a("code",[t._v('[1, "foo"]')]),t._v(", "),a("code",[t._v("[1, 2, 3, 4]")]),t._v(", any array with fewer than 2 or more than 3 integers")]),t._v(" "),a("h3",{attrs:{id:"unevaluateditems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unevaluateditems"}},[t._v("#")]),t._v(" "),a("code",[t._v("unevaluatedItems")]),t._v(" "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1),t._v(" "),a("p",[t._v("The value of this keyword is a JSON Schema (can be a boolean).")]),t._v(" "),a("p",[t._v("This schema will be applied to all array items that were not evaluated by other keywords for items ("),a("code",[t._v("items")]),t._v(", "),a("code",[t._v("additionalItems")]),t._v(" and "),a("code",[t._v("contains")]),t._v(") in the current schema and all sub-schemas that were valid for this data instance. It includes:")]),t._v(" "),a("ul",[a("li",[t._v("all subschemas schemas in "),a("code",[t._v("allOf")]),t._v(" and "),a("code",[t._v("$ref")]),t._v(" keywords")]),t._v(" "),a("li",[t._v("valid sub-schemas in "),a("code",[t._v("oneOf")]),t._v(" and "),a("code",[t._v("anyOf")]),t._v(" keywords")]),t._v(" "),a("li",[t._v("sub-schema in "),a("code",[t._v("if")]),t._v(" keyword")]),t._v(" "),a("li",[t._v("sub-schemas in "),a("code",[t._v("then")]),t._v(" or "),a("code",[t._v("else")]),t._v(" keywords that were applied based on the validation result by "),a("code",[t._v("if")]),t._v(" keyword.")])]),t._v(" "),a("p",[t._v("The only scenario when this keyword would be applied to some items is when "),a("code",[t._v("items")]),t._v(" keyword value is an array of schemas and "),a("code",[t._v("additionalItems")]),t._v(" was not present (or did not apply, in case it was present in some invalid subschema).")]),t._v(" "),a("p",[t._v('Some user-defined keywords can also make items "evaluated".')]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("unevaluatedItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("anyOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"boolean"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("[1, 2, 3]")]),t._v(", "),a("code",[t._v("[1, 2, true]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(":")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("[1, 2]")]),t._v(" - the third item is not present")]),t._v(" "),a("li",[a("code",[t._v('[1, 2, "3"]')]),t._v(' - the third item is "unevaluated"')])]),t._v(" "),a("p",[t._v("See "),a("a",{attrs:{href:"https://github.com/json-schema-org/JSON-Schema-Test-Suite/blob/master/tests/draft2019-09/unevaluatedItems.json",target:"_blank",rel:"noopener noreferrer"}},[t._v("tests"),a("OutboundLink")],1),t._v(" for "),a("code",[t._v("unevaluatedItems")]),t._v(" keyword for other examples.")]),t._v(" "),a("h2",{attrs:{id:"keywords-for-objects"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-objects"}},[t._v("#")]),t._v(" Keywords for objects")]),t._v(" "),a("h3",{attrs:{id:"maxproperties-minproperties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxproperties-minproperties"}},[t._v("#")]),t._v(" "),a("code",[t._v("maxProperties")]),t._v(" / "),a("code",[t._v("minProperties")])]),t._v(" "),a("p",[t._v("The value of the keywords should be a number. The data object to be valid should have not more (less) properties than the keyword value.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "object", maxProperties: 2 }')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{a: 1}")]),t._v(", "),a("code",[t._v('{a: "1", b: 2}')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{a: 1, b: 2, c: 3}")])]),t._v(" "),a("h3",{attrs:{id:"required"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[t._v("#")]),t._v(" "),a("code",[t._v("required")])]),t._v(" "),a("p",[t._v("The value of the keyword should be an array of unique strings. The data object to be valid should contain all properties with names equal to the elements in the keyword value.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "object", required: ["a", "b"]}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{a: 1, b: 2}")]),t._v(", "),a("code",[t._v("{a: 1, b: 2, c: 3}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{a: 1}")]),t._v(", "),a("code",[t._v("{c: 3, d: 4}")])]),t._v(" "),a("h3",{attrs:{id:"properties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#properties"}},[t._v("#")]),t._v(" "),a("code",[t._v("properties")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a map with keys equal to data object properties. Each value in the map should be a JSON Schema. For data object to be valid the corresponding values in data object properties should be valid according to these schemas.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Properties are not required")]),t._v(" "),a("p",[a("code",[t._v("properties")]),t._v(" keyword does not require that the properties mentioned in it are present in the object (see examples).")])]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v('{foo: "a"}')]),t._v(", "),a("code",[t._v('{foo: "a", bar: 2}')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v('{foo: "a", bar: 1}')])]),t._v(" "),a("h3",{attrs:{id:"patternproperties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#patternproperties"}},[t._v("#")]),t._v(" "),a("code",[t._v("patternProperties")])]),t._v(" "),a("p",[t._v("The value of this keyword should be a map where keys should be regular expressions and the values should be JSON Schemas. For data object to be valid the values in data object properties that match regular expression(s) should be valid according to the corresponding schema(s).")]),t._v(" "),a("p",[t._v("When the value in data object property matches multiple regular expressions it should be valid according to all the schemas for all matched regular expressions.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Unexpected validation results")]),t._v(" "),a("ol",[a("li",[a("code",[t._v("patternProperties")]),t._v(" keyword does not require that properties matching patterns are present in the object (see examples).")]),t._v(" "),a("li",[t._v("By default, Ajv does not allow schemas where patterns in "),a("code",[t._v("patternProperties")]),t._v(" match any property name in "),a("code",[t._v("properties")]),t._v(" keyword - that leads to unexpected validation results. It can be allowed with option "),a("code",[t._v("allowMatchingProperties")]),t._v(". See "),a("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("Strict mode")])],1)])]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("patternProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"^fo.*$"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"^ba.*$"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v('{foo: "a"}')]),t._v(", "),a("code",[t._v('{foo: "a", bar: 1}')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v('{foo: "a", bar: "b"}')])]),t._v(" "),a("h3",{attrs:{id:"additionalproperties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additionalproperties"}},[t._v("#")]),t._v(" "),a("code",[t._v("additionalProperties")])]),t._v(" "),a("p",[t._v("The value of the keyword should be either a boolean or a JSON Schema.")]),t._v(" "),a("p",[t._v("If the value is "),a("code",[t._v("true")]),t._v(" the keyword is ignored.")]),t._v(" "),a("p",[t._v("If the value is "),a("code",[t._v("false")]),t._v(' the data object to be valid should not have "additional properties" (i.e. properties other than those used in "properties" keyword and those that match patterns in "patternProperties" keyword).')]),t._v(" "),a("p",[t._v('If the value is a schema for the data object to be valid the values in all "additional properties" should be valid according to this schema.')]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("patternProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"^.*r$"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{a: 3}")]),t._v(", "),a("code",[t._v("{foo: 1, baz: 3}")])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("patternProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"^.*r$"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v('{a: "b"}')]),t._v(", "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", "),a("code",[t._v('{foo: 1, bar: 2, a: "b"}')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{a: 3}")]),t._v(", "),a("code",[t._v("{foo: 1, baz: 3}")])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("anyOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{foo: 1}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{bar: 2}")]),t._v(", "),a("code",[t._v("{baz: 3}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", etc.")])])]),t._v(" "),a("h3",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies"}},[t._v("#")]),t._v(" "),a("code",[t._v("dependencies")]),t._v(" "),a("Badge",{attrs:{text:"deprecated in draft 2019-09",type:"warning"}})],1),t._v(" "),a("p",[t._v("This keyword is deprecated. The same functionality is available with keywords "),a("code",[t._v("dependentRequired")]),t._v(" and "),a("code",[t._v("dependentSchemas")]),t._v(".")]),t._v(" "),a("p",[t._v('The value of the keyword is a map with keys equal to data object properties. Each value in the map should be either an array of unique property names ("property dependency" - see '),a("a",{attrs:{href:"#%60dependentrequired%60"}},[a("code",[t._v("dependentRequired")])]),t._v(' keyword) or a JSON Schema ("schema dependency" - see '),a("a",{attrs:{href:"#%60dependentschemas%60"}},[a("code",[t._v("dependentSchemas")])]),t._v(" keyword).")]),t._v(" "),a("p",[t._v("For property dependency, if the data object contains a property that is a key in the keyword value, then to be valid the data object should also contain all properties from the array of properties.")]),t._v(" "),a("p",[t._v("For schema dependency, if the data object contains a property that is a key in the keyword value, then to be valid the data object itself (NOT the property value) should be valid according to the schema.")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema (property dependency)")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dependencies")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"baz"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{foo: 1, bar: 2, baz: 3}")]),t._v(", "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{a: 1}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", "),a("code",[t._v("{foo: 1, baz: 3}")])])]),t._v(" "),a("li",[a("p",[a("em",[t._v("schema (schema dependency)")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dependencies")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", "),a("code",[t._v("{a: 1}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('{foo: 1, bar: "a"}')])])])]),t._v(" "),a("h3",{attrs:{id:"dependentrequired"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependentrequired"}},[t._v("#")]),t._v(" "),a("code",[t._v("dependentRequired")]),t._v(" "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1),t._v(" "),a("p",[t._v("The value of this keyword should be a map with keys equal to data object properties. Each value in the map should be an array of unique property names.")]),t._v(" "),a("p",[t._v("If the data object contains a property that is a key in the keyword value, then to be valid the data object should also contain all properties from the corresponding array of properties in this keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dependentRequired")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"baz"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{foo: 1, bar: 2, baz: 3}")]),t._v(", "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{a: 1}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", "),a("code",[t._v("{foo: 1, baz: 3}")])]),t._v(" "),a("h3",{attrs:{id:"dependentschemas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependentschemas"}},[t._v("#")]),t._v(" "),a("code",[t._v("dependentSchemas")]),t._v(" "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1),t._v(" "),a("p",[t._v("The value of the keyword should be a map with keys equal to data object properties. Each value in the map should be a JSON Schema.")]),t._v(" "),a("p",[t._v("If the data object contains a property that is a key in the keyword value, then to be valid the data object itself (NOT the property value) should be valid according to the corresponding schema in this keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dependentSchemas")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", "),a("code",[t._v("{a: 1}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('{foo: 1, bar: "a"}')])]),t._v(" "),a("h3",{attrs:{id:"propertynames"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#propertynames"}},[t._v("#")]),t._v(" "),a("code",[t._v("propertyNames")])]),t._v(" "),a("p",[t._v("The value of this keyword is a JSON Schema.")]),t._v(" "),a("p",[t._v("For data object to be valid each property name in this object should be valid according to this schema.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(" (requires "),a("code",[t._v("email")]),t._v(" format from "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv-formats",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-formats"),a("OutboundLink")],1),t._v("):")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("propertyNames")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("format")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"email"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('{"foo@bar.com": "any", "bar@bar.com": "any"}')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v('{foo: "any value"}')])]),t._v(" "),a("h3",{attrs:{id:"unevaluatedproperties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unevaluatedproperties"}},[t._v("#")]),t._v(" "),a("code",[t._v("unevaluatedProperties")]),t._v(" "),a("Badge",{attrs:{text:"NEW: draft 2019-09"}})],1),t._v(" "),a("p",[t._v("The value of this keyword is a JSON Schema (can be a boolean).")]),t._v(" "),a("p",[t._v("This schema will be applied to all properties that were not evaluated by other keywords for properties ("),a("code",[t._v("properties")]),t._v(", "),a("code",[t._v("patternProperties")]),t._v(" and "),a("code",[t._v("additionalProperties")]),t._v(") in the current schema and all sub-schemas that were valid for this data instance. It includes:")]),t._v(" "),a("ul",[a("li",[t._v("all subschemas schemas in "),a("code",[t._v("allOf")]),t._v(" and "),a("code",[t._v("$ref")]),t._v(" keywords")]),t._v(" "),a("li",[t._v("valid sub-schemas in "),a("code",[t._v("oneOf")]),t._v(" and "),a("code",[t._v("anyOf")]),t._v(" keywords")]),t._v(" "),a("li",[t._v("sub-schema in "),a("code",[t._v("if")]),t._v(" keyword")]),t._v(" "),a("li",[t._v("sub-schemas in "),a("code",[t._v("then")]),t._v(" or "),a("code",[t._v("else")]),t._v(" keywords that were applied based on the validation result by "),a("code",[t._v("if")]),t._v(" keyword.")])]),t._v(" "),a("p",[t._v('Some user-defined keywords can also make properties "evaluated".')]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("unevaluatedProperties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("anyOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"baz"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{foo: 1, bar: 2}")]),t._v(", "),a("code",[t._v("{foo: 1, baz: 2}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2, baz: 3}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(":")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("{foo: 1}")]),t._v(" - neither "),a("code",[t._v("bar")]),t._v(" nor "),a("code",[t._v("baz")]),t._v(" are present")]),t._v(" "),a("li",[a("code",[t._v("{foo: 1, bar: 2, boo: 3}")]),t._v(" - "),a("code",[t._v("boo")]),t._v(" is unevaluated")]),t._v(" "),a("li",[a("code",[t._v('{foo: 1, bar: 2, baz: "3"}')]),t._v(" - not valid against the 2nd subschema, so "),a("code",[t._v("baz")]),t._v(' is "unevaluated".')])]),t._v(" "),a("p",[t._v("See "),a("a",{attrs:{href:"https://github.com/json-schema-org/JSON-Schema-Test-Suite/blob/master/tests/draft2019-09/unevaluatedProperties.json",target:"_blank",rel:"noopener noreferrer"}},[t._v("tests"),a("OutboundLink")],1),t._v(" for "),a("code",[t._v("unevaluatedProperties")]),t._v(" keyword for other examples.")]),t._v(" "),a("h3",{attrs:{id:"discriminator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#discriminator"}},[t._v("#")]),t._v(" discriminator "),a("Badge",{attrs:{text:"NEW: OpenAPI"}})],1),t._v(" "),a("p",[t._v("Ajv has a limited support for "),a("code",[t._v("discriminator")]),t._v(" keyword: to optimize validation, error handling, and "),a("RouterLink",{attrs:{to:"/guide/modifying-data.html"}},[t._v("modifying data")]),t._v(" with "),a("a",{attrs:{href:"#oneof"}},[t._v("oneOf")]),t._v(" keyword.")],1),t._v(" "),a("p",[t._v("Its value should be an object with a property "),a("code",[t._v("propertyName")]),t._v(" - the name of the property used to discriminate between union members.")]),t._v(" "),a("p",[t._v("When using discriminator keyword only one subschema in "),a("code",[t._v("oneOf")]),t._v(" will be used, determined by the value of discriminator property.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Use option discriminator")]),t._v(" "),a("p",[t._v("To use "),a("code",[t._v("discriminator")]),t._v(" keyword you have to use option "),a("code",[t._v("discriminator: true")]),t._v(" with Ajv constructor - it is not enabled by default.")])]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("discriminator")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("propertyName")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("oneOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"x"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("a")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"y"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"z"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("b")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"b"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('{foo: "x", a: "any"}')]),t._v(", "),a("code",[t._v('{foo: "y", b: "any"}')]),t._v(", "),a("code",[t._v('{foo: "z", b: "any"}')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(":")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("{}")]),t._v(", "),a("code",[t._v("{foo: 1}")]),t._v(" - discriminator tag must be string")]),t._v(" "),a("li",[a("code",[t._v('{foo: "bar"}')]),t._v(" - discriminator tag value must be in oneOf subschema")]),t._v(" "),a("li",[a("code",[t._v('{foo: "x", b: "b"}')]),t._v(", "),a("code",[t._v('{foo: "y", a: "a"}')]),t._v(" - invalid object")])]),t._v(" "),a("p",[t._v("From the perspective of validation result "),a("code",[t._v("discriminator")]),t._v(" is defined as no-op (that is, removing discriminator will not change the validity of the data), but errors reported in case of invalid data will be different.")]),t._v(" "),a("p",[t._v("There are following requirements and limitations of using "),a("code",[t._v("discriminator")]),t._v(" keyword:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("mapping")]),t._v(" in discriminator object is not supported.")]),t._v(" "),a("li",[a("a",{attrs:{href:"#oneof"}},[t._v("oneOf")]),t._v(" keyword must be present in the same schema.")]),t._v(" "),a("li",[t._v("discriminator property should be "),a("a",{attrs:{href:"#required"}},[t._v("required")]),t._v(" either on the top level, as in the example, or in all "),a("code",[t._v("oneOf")]),t._v(" subschemas.")]),t._v(" "),a("li",[t._v("each "),a("code",[t._v("oneOf")]),t._v(" subschema must have "),a("a",{attrs:{href:"#properties"}},[t._v("properties")]),t._v(" keyword with discriminator property. The subschemas should be either inlined or included as direct references (only "),a("code",[t._v("$ref")]),t._v(" keyword without any extra keywords is allowed).")]),t._v(" "),a("li",[t._v("schema for discriminator property in each "),a("code",[t._v("oneOf")]),t._v(" subschema must be "),a("a",{attrs:{href:"#const"}},[t._v("const")]),t._v(" or "),a("a",{attrs:{href:"#enum"}},[t._v("enum")]),t._v(", with unique values across all subschemas.")])]),t._v(" "),a("p",[t._v("Not meeting any of these requirements would fail schema compilation.")]),t._v(" "),a("h2",{attrs:{id:"keywords-for-all-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-all-types"}},[t._v("#")]),t._v(" Keywords for all types")]),t._v(" "),a("h3",{attrs:{id:"enum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enum"}},[t._v("#")]),t._v(" "),a("code",[t._v("enum")])]),t._v(" "),a("p",[t._v("The value of the keyword should be an array of unique items of any types. The data is valid if it is deeply equal to one of items in the array.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{enum: [2, "foo", {foo: "bar" }, [1, 2, 3]]}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("2")]),t._v(", "),a("code",[t._v('"foo"')]),t._v(", "),a("code",[t._v('{foo: "bar"}')]),t._v(", "),a("code",[t._v("[1, 2, 3]")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v('"bar"')]),t._v(", "),a("code",[t._v('{foo: "baz"}')]),t._v(", "),a("code",[t._v("[1, 2, 3, 4]")]),t._v(", any value not in enum")]),t._v(" "),a("h3",{attrs:{id:"const"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#const"}},[t._v("#")]),t._v(" "),a("code",[t._v("const")])]),t._v(" "),a("p",[t._v("The value of this keyword can be anything. The data is valid if it is deeply equal to the value of the keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{const: "foo"}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v('"foo"')])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": any other value")]),t._v(" "),a("p",[t._v("The same can be achieved with "),a("code",[t._v("enum")]),t._v(" keyword using the array with one item. But "),a("code",[t._v("const")]),t._v(" keyword is more than just a syntax sugar for "),a("code",[t._v("enum")]),t._v(". In combination with the "),a("RouterLink",{attrs:{to:"/guide/combining-schemas.html#data-reference"}},[t._v("$data reference")]),t._v(" it allows to define equality relations between different parts of the data. This cannot be achieved with "),a("code",[t._v("enum")]),t._v(" keyword even with "),a("code",[t._v("$data")]),t._v(" reference because "),a("code",[t._v("$data")]),t._v(" cannot be used in place of one item - it can only be used in place of the whole array in "),a("code",[t._v("enum")]),t._v(" keyword.")],1),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$data")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1/foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("{foo: 1, bar: 1}")]),t._v(", "),a("code",[t._v("{}")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("{foo: 1}")]),t._v(", "),a("code",[t._v("{bar: 1}")]),t._v(", "),a("code",[t._v("{foo: 1, bar: 2}")])]),t._v(" "),a("h2",{attrs:{id:"compound-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compound-keywords"}},[t._v("#")]),t._v(" Compound keywords")]),t._v(" "),a("h3",{attrs:{id:"not"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#not"}},[t._v("#")]),t._v(" "),a("code",[t._v("not")])]),t._v(" "),a("p",[t._v("The value of the keyword should be a JSON Schema. The data is valid if it is invalid according to this schema.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(": "),a("code",[t._v('{type: "number", not: {minimum: 3}}')])]),t._v(" "),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("2")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("3")]),t._v(", "),a("code",[t._v("4")])]),t._v(" "),a("h3",{attrs:{id:"oneof"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oneof"}},[t._v("#")]),t._v(" "),a("code",[t._v("oneOf")])]),t._v(" "),a("p",[t._v("The value of the keyword should be an array of JSON Schemas. The data is valid if it matches exactly one JSON Schema from this array. Validators have to validate data against all schemas to establish validity according to this keyword.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("oneOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("maximum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1.5")]),t._v(", "),a("code",[t._v("2.5")]),t._v(", "),a("code",[t._v("4")]),t._v(", "),a("code",[t._v("5")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("2")]),t._v(", "),a("code",[t._v("3")]),t._v(", "),a("code",[t._v("4.5")]),t._v(", "),a("code",[t._v("5.5")])]),t._v(" "),a("h3",{attrs:{id:"anyof"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anyof"}},[t._v("#")]),t._v(" "),a("code",[t._v("anyOf")])]),t._v(" "),a("p",[t._v('The value of the keyword should be an array of JSON Schemas. The data is valid if it is valid according to one or more JSON Schemas in this array. Validators only need to validate data against schemas in order until the first schema matches (or until all schemas have been tried). For this reason validating against this keyword is faster than against "oneOf" keyword in most cases.')]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("anyOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("maximum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1.5")]),t._v(", "),a("code",[t._v("2")]),t._v(", "),a("code",[t._v("2.5")]),t._v(", "),a("code",[t._v("3")]),t._v(", "),a("code",[t._v("4")]),t._v(", "),a("code",[t._v("5")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("4.5")]),t._v(", "),a("code",[t._v("5.5")])]),t._v(" "),a("h3",{attrs:{id:"allof"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#allof"}},[t._v("#")]),t._v(" "),a("code",[t._v("allOf")])]),t._v(" "),a("p",[t._v("The value of the keyword should be an array of JSON Schemas. The data is valid if it is valid according to all JSON Schemas in this array.")]),t._v(" "),a("p",[a("strong",[t._v("Example")])]),t._v(" "),a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("maximum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("2")]),t._v(", "),a("code",[t._v("3")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(": "),a("code",[t._v("1.5")]),t._v(", "),a("code",[t._v("2.5")]),t._v(", "),a("code",[t._v("4")]),t._v(", "),a("code",[t._v("4.5")]),t._v(", "),a("code",[t._v("5")]),t._v(", "),a("code",[t._v("5.5")])]),t._v(" "),a("h3",{attrs:{id:"if-then-else"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#if-then-else"}},[t._v("#")]),t._v(" "),a("code",[t._v("if")]),t._v("/"),a("code",[t._v("then")]),t._v("/"),a("code",[t._v("else")])]),t._v(" "),a("p",[t._v("These keywords allow to implement conditional validation. Their values should be valid JSON Schemas (object or boolean).")]),t._v(" "),a("p",[t._v("If "),a("code",[t._v("if")]),t._v(" keyword is absent, the validation succeeds.")]),t._v(" "),a("p",[t._v("If the data is valid against the sub-schema in "),a("code",[t._v("if")]),t._v(" keyword, then the validation result is equal to the result of data validation against the sub-schema in "),a("code",[t._v("then")]),t._v(" keyword (if "),a("code",[t._v("then")]),t._v(" is absent, the validation succeeds).")]),t._v(" "),a("p",[t._v("If the data is invalid against the sub-schema in "),a("code",[t._v("if")]),t._v(" keyword, then the validation result is equal to the result of data validation against the sub-schema in "),a("code",[t._v("else")]),t._v(" keyword (if "),a("code",[t._v("else")]),t._v(" is absent, the validation succeeds).")]),t._v(" "),a("p",[a("strong",[t._v("Examples")])]),t._v(" "),a("ol",[a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("then")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"baz"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(":")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("{foo: 10, bar: true }")])]),t._v(" "),a("li",[a("code",[t._v("{}")])]),t._v(" "),a("li",[a("code",[t._v("{foo: 1, baz: true }")])])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(":")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("{foo: 10}")]),t._v(" ("),a("code",[t._v("bar")]),t._v(" is required)")]),t._v(" "),a("li",[a("code",[t._v("{foo: 10, baz: true }")]),t._v(" ("),a("code",[t._v("bar")]),t._v(" is required)")]),t._v(" "),a("li",[a("code",[t._v("{foo: 1}")]),t._v(" ("),a("code",[t._v("baz")]),t._v(" is required)")])])])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[a("em",[t._v("schema")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("maximum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("then")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multipleOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("then")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multipleOf")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("em",[t._v("valid")]),t._v(": "),a("code",[t._v("1")]),t._v(", "),a("code",[t._v("5")]),t._v(", "),a("code",[t._v("10")]),t._v(", "),a("code",[t._v("20")]),t._v(", "),a("code",[t._v("50")]),t._v(", "),a("code",[t._v("100")]),t._v(", "),a("code",[t._v("200")]),t._v(", "),a("code",[t._v("500")]),t._v(", "),a("code",[t._v("1000")])]),t._v(" "),a("p",[a("em",[t._v("invalid")]),t._v(":")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("-1")]),t._v(", "),a("code",[t._v("0")]),t._v(" (<1)")]),t._v(" "),a("li",[a("code",[t._v("2000")]),t._v(" (>1000)")]),t._v(" "),a("li",[a("code",[t._v("11")]),t._v(", "),a("code",[t._v("57")]),t._v(", "),a("code",[t._v("123")]),t._v(" (any integer with more than one non-zero digit)")]),t._v(" "),a("li",[t._v("non-integers")])])])]),t._v(" "),a("h2",{attrs:{id:"metadata-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metadata-keywords"}},[t._v("#")]),t._v(" Metadata keywords")]),t._v(" "),a("p",[t._v("JSON Schema specification defines several metadata keywords that describe the schema itself but do not perform any validation.")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("title")]),t._v(" and "),a("code",[t._v("description")]),t._v(": information about the data represented by that schema")]),t._v(" "),a("li",[a("code",[t._v("$comment")]),t._v(": information for developers. With option "),a("code",[t._v("$comment")]),t._v(" Ajv logs or passes the comment string to the user-supplied function. See "),a("RouterLink",{attrs:{to:"/api.html#options"}},[t._v("Options")]),t._v(".")],1),t._v(" "),a("li",[a("code",[t._v("default")]),t._v(": a default value of the data instance, see "),a("RouterLink",{attrs:{to:"/guide/modifying-data.html#assigning-defaults"}},[t._v("Assigning defaults")]),t._v(".")],1),t._v(" "),a("li",[a("code",[t._v("examples")]),t._v(": an array of data instances. Ajv does not check the validity of these instances against the schema.")]),t._v(" "),a("li",[a("code",[t._v("readOnly")]),t._v(" and "),a("code",[t._v("writeOnly")]),t._v(": marks data-instance as read-only or write-only in relation to the source of the data (database, api, etc.).")]),t._v(" "),a("li",[a("code",[t._v("contentEncoding")]),t._v(": "),a("a",{attrs:{href:"https://tools.ietf.org/html/rfc2045#section-6.1",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC 2045"),a("OutboundLink")],1),t._v(', e.g., "base64".')]),t._v(" "),a("li",[a("code",[t._v("contentMediaType")]),t._v(": "),a("a",{attrs:{href:"https://datatracker.ietf.org/doc/rfc2046/",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC 2046"),a("OutboundLink")],1),t._v(', e.g., "image/png".')])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Ignored keywords")]),t._v(" "),a("p",[t._v("Ajv does not implement validation of the keywords "),a("code",[t._v("examples")]),t._v(", "),a("code",[t._v("contentEncoding")]),t._v(" and "),a("code",[t._v("contentMediaType")]),t._v(" but it reserves them. If you want to create a plugin that implements any of them, it should remove these keywords from the instance.")])])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/81.48e48c0e.js b/assets/js/81.48e48c0e.js new file mode 100644 index 000000000..723d9d51e --- /dev/null +++ b/assets/js/81.48e48c0e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{427:function(e,t,a){"use strict";a.r(t);var s=a(14),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"security-considerations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-considerations"}},[e._v("#")]),e._v(" Security considerations")]),e._v(" "),t("p",[e._v("JSON Schema, if properly used, can replace data sanitisation. It doesn't replace other API security considerations. It also introduces additional security aspects to consider.")]),e._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#security-contact"}},[e._v("Security contact")])]),t("li",[t("a",{attrs:{href:"#untrusted-schemas"}},[e._v("Untrusted schemas")])]),t("li",[t("a",{attrs:{href:"#circular-references-in-javascript-objects"}},[e._v("Circular references in JavaScript objects")])]),t("li",[t("a",{attrs:{href:"#security-risks-of-trusted-schemas"}},[e._v("Security risks of trusted schemas")])]),t("li",[t("a",{attrs:{href:"#redos-attack"}},[e._v("ReDoS attack")])]),t("li",[t("a",{attrs:{href:"#content-security-policy"}},[e._v("Content Security Policy")])])])]),t("p"),e._v(" "),t("h2",{attrs:{id:"security-contact"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-contact"}},[e._v("#")]),e._v(" Security contact")]),e._v(" "),t("p",[e._v("To report a security vulnerability, please use the\n"),t("a",{attrs:{href:"https://tidelift.com/security",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tidelift security contact"),t("OutboundLink")],1),e._v(".\nTidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.")]),e._v(" "),t("h2",{attrs:{id:"untrusted-schemas"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#untrusted-schemas"}},[e._v("#")]),e._v(" Untrusted schemas")]),e._v(" "),t("p",[e._v("Ajv treats JSON schemas as trusted as your application code. This security model is based on the most common use case, when the schemas are static and bundled together with the application.")]),e._v(" "),t("p",[e._v("If your schemas are received from untrusted sources (or generated from untrusted data) there are several scenarios you need to prevent:")]),e._v(" "),t("ul",[t("li",[e._v("compiling schemas can cause stack overflow (if they are too deep)")]),e._v(" "),t("li",[e._v("compiling schemas can be slow (e.g. "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/557",target:"_blank",rel:"noopener noreferrer"}},[e._v("#557"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("validating certain data can be slow")])]),e._v(" "),t("p",[e._v("It is difficult to predict all the scenarios, but at the very least it may help to limit the size of untrusted schemas (e.g. limit JSON string length) and also the maximum schema object depth (that can be high for relatively small JSON strings). You also may want to mitigate slow regular expressions in "),t("code",[e._v("pattern")]),e._v(" and "),t("code",[e._v("patternProperties")]),e._v(" keywords.")]),e._v(" "),t("p",[e._v("Regardless the measures you take, using untrusted schemas increases security risks.")]),e._v(" "),t("h2",{attrs:{id:"circular-references-in-javascript-objects"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#circular-references-in-javascript-objects"}},[e._v("#")]),e._v(" Circular references in JavaScript objects")]),e._v(" "),t("p",[e._v("Ajv does not support schemas and validated data that have circular references in objects. See "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/802",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue #802"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("An attempt to compile such schemas or validate such data would cause stack overflow (or will not complete in case of asynchronous validation). Depending on the parser you use, untrusted data can lead to circular references.")]),e._v(" "),t("h2",{attrs:{id:"security-risks-of-trusted-schemas"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-risks-of-trusted-schemas"}},[e._v("#")]),e._v(" Security risks of trusted schemas")]),e._v(" "),t("p",[e._v("Some keywords in JSON Schemas can lead to very slow validation for certain data. These keywords include (but may be not limited to):")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("pattern")]),e._v(" and "),t("code",[e._v("format")]),e._v(" for large strings - in some cases using "),t("code",[e._v("maxLength")]),e._v(" can help mitigate it, but certain regular expressions can lead to exponential validation time even with relatively short strings (see "),t("a",{attrs:{href:"#redos-attack"}},[e._v("ReDoS attack")]),e._v(").")]),e._v(" "),t("li",[t("code",[e._v("patternProperties")]),e._v(" for large property names - use "),t("code",[e._v("propertyNames")]),e._v(" to mitigate, but some regular expressions can have exponential evaluation time as well.")]),e._v(" "),t("li",[t("code",[e._v("uniqueItems")]),e._v(" for large non-scalar arrays - use "),t("code",[e._v("maxItems")]),e._v(" to mitigate")])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("Do NOT use allErrors in production")]),e._v(" "),t("p",[e._v("The suggestions above to prevent slow validation would only work if you do NOT use "),t("code",[e._v("allErrors: true")]),e._v(" in production code (using it would continue validation after validation errors).")])]),e._v(" "),t("p",[e._v("You can validate your JSON schemas against "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-secure.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("this meta-schema"),t("OutboundLink")],1),e._v(" to check that these recommendations are followed:")]),e._v(" "),t("div",{staticClass:"language-javascript extra-class"},[t("pre",{pre:!0,attrs:{class:"language-javascript"}},[t("code",[e._v("ajv "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("new")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Ajv")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token literal-property property"}},[e._v("strictTypes")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// this option is required for this schema")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" isSchemaSecure "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" ajv"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("compile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("require")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ajv/lib/refs/json-schema-secure.json"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" schema1 "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token literal-property property"}},[e._v("format")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"email"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("isSchemaSecure")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("schema1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// false")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" schema2 "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token literal-property property"}},[e._v("format")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"email"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token literal-property property"}},[e._v("maxLength")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token constant"}},[e._v("MAX_LENGTH")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("isSchemaSecure")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("schema2"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// true")]),e._v("\n")])])]),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("Untrusted data")]),e._v(" "),t("p",[e._v("Following all these recommendation is not a guarantee that validation using of untrusted data is safe - it can still lead to some undesirable results.")])]),e._v(" "),t("h2",{attrs:{id:"redos-attack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#redos-attack"}},[e._v("#")]),e._v(" ReDoS attack")]),e._v(" "),t("p",[e._v("Certain regular expressions can lead to the exponential evaluation time even with relatively short strings.")]),e._v(" "),t("p",[e._v("Please assess the regular expressions you use in the schemas on their vulnerability to this attack - see "),t("a",{attrs:{href:"https://github.com/substack/safe-regex",target:"_blank",rel:"noopener noreferrer"}},[e._v("safe-regex"),t("OutboundLink")],1),e._v(", for example.")]),e._v(" "),t("p",[e._v("By default, Ajv uses the regex engine built into Node.js. This engine has exponential worst-case performance. This performance (and ReDoS attacks) can be mitigated by using a linear-time regex engine. Ajv supports the use of a third-party regex engine for this purpose.")]),e._v(" "),t("p",[e._v("To use a third-party regex engine in Ajv, set the ajv.opts.code.regExp property to that regex engine during instantiation. Here we use Google’s RE2 engine as an example.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('const Ajv = require("ajv") \nconst RE2 = require("re2") \nconst ajv = new Ajv({code: {regExp: RE2}}) \n')])])]),t("p",[e._v("For details about the interface of the "),t("code",[e._v("regexp")]),e._v(" option, see options.md under the docs folder.")]),e._v(" "),t("p",[e._v("Although linear-time regex engines eliminate ReDoS vulnerabilities, changing a regex engine carries some risk, including:")]),e._v(" "),t("ul",[t("li",[e._v("Minor changes in regex syntax.")]),e._v(" "),t("li",[e._v("Minor changes in regex semantics. For example, RE2 always interprets regexes in Unicode, and disagrees with JavaScript in its definition of whitespace. To avoid regressions, develop and test your regexes in the same regex engine that you use in production.")]),e._v(" "),t("li",[e._v("May not support some advanced features, such as look-aheads or back-references.")]),e._v(" "),t("li",[e._v("May have (minor) common-case performance degradation.")]),e._v(" "),t("li",[e._v("Increases size of distributable (e.g. RE2 includes a non-trivial C component).")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("ReDoS attack")]),e._v(" "),t("p",[e._v("Some formats that "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv-formats",target:"_blank",rel:"noopener noreferrer"}},[e._v("ajv-formats"),t("OutboundLink")],1),e._v(" package implements use "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts",target:"_blank",rel:"noopener noreferrer"}},[e._v("regular expressions"),t("OutboundLink")],1),e._v(" that can be vulnerable to ReDoS attack.")])]),e._v(" "),t("p",[e._v("If you use Ajv to validate data from untrusted sources "),t("strong",[e._v("it is strongly recommended")]),e._v(" to consider the following:")]),e._v(" "),t("ul",[t("li",[e._v('making assessment of "format" implementations in '),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv-formats",target:"_blank",rel:"noopener noreferrer"}},[e._v("ajv-formats"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("passing "),t("code",[e._v('"fast"')]),e._v(" option to ajv-formats plugin (see its docs) that simplifies some of the regular expressions (although it does not guarantee that they are safe).")]),e._v(" "),t("li",[e._v('replacing format implementations provided by ajv-formats with your own implementations of "format" keyword that either use different regular expressions or another approach to format validation. Please see '),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/api.md#api-addformat",target:"_blank",rel:"noopener noreferrer"}},[e._v("addFormat"),t("OutboundLink")],1),e._v(" method.")]),e._v(" "),t("li",[e._v('disabling format validation by ignoring "format" keyword with option '),t("code",[e._v("format: false")])])]),e._v(" "),t("p",[e._v("Whatever mitigation you choose, please assume all formats provided by ajv-formats as potentially unsafe and make your own assessment of their suitability for your validation scenarios.")]),e._v(" "),t("h2",{attrs:{id:"content-security-policy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#content-security-policy"}},[e._v("#")]),e._v(" Content Security Policy")]),e._v(" "),t("p",[e._v("When using Ajv in a browser page with enabled Content Security Policy (CSP), "),t("code",[e._v("script-src")]),e._v(" directive must include "),t("code",[e._v("'unsafe-eval'")]),e._v(".")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("Cross-site scripting attacks")]),e._v(" "),t("p",[t("code",[e._v("unsafe-eval")]),e._v(" is NOT recommended in a secure CSP"),t("a",{attrs:{href:"https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-eval",target:"_blank",rel:"noopener noreferrer"}},[e._v("[1]"),t("OutboundLink")],1),e._v(", as it has the potential to open the document to cross-site scripting (XSS) attacks.")])]),e._v(" "),t("p",[e._v("In order to use Ajv without relaxing CSP, you can "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv-cli#compile-schemas",target:"_blank",rel:"noopener noreferrer"}},[e._v("compile the schemas using CLI"),t("OutboundLink")],1),e._v(" or programmatically in your build code - see "),t("RouterLink",{attrs:{to:"/standalone.html"}},[e._v("Standalone validation code")]),e._v(". Compiled JavaScript file can export one or several validation functions that have the same code as the schemas compiled at runtime.")],1)])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/app.d771025d.js b/assets/js/app.d771025d.js new file mode 100644 index 000000000..f95a744a3 --- /dev/null +++ b/assets/js/app.d771025d.js @@ -0,0 +1,16 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],l=t[1],c=t[2],f=0,p=[];f

'};function o(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var l=n.render(!t),c=l.querySelector(r.barSelector),u=r.speed,f=r.easing;return l.offsetWidth,a((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,function(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}(e,u,f)),1===e?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){s(l,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),l=e?"-100":i(n.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,o,i=arguments;if(2==i.length)for(n in t)void 0!==(o=t[n])&&t.hasOwnProperty(n)&&r(e,n,o);else r(e,i[1],i[2])}}();function l(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function u(e,t){var n,r=f(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},function(e,t,n){"use strict";var r=n(0),o=n(45).f,i=n(12),a=n(90),s=n(33),l=n(60),c=n(118);e.exports=function(e,t){var n,u,f,p,d,v=e.target,h=e.global,m=e.stat;if(n=h?r:m?r[v]||s(v,{}):r[v]&&r[v].prototype)for(u in t){if(p=t[u],f=e.dontCallGetSet?(d=o(n,u))&&d.value:n[u],!c(h?u:v+(m?".":"#")+u,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;l(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(n,u,p,e)}}},function(e,t,n){"use strict";var r=n(25),o=Function.prototype.call;e.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},function(e,t,n){"use strict";var r=n(3);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(46),o=n(28);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(47),o=TypeError;e.exports=function(e){if(r(e))throw new o("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(0),o=n(1),i=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e]):r[e]&&r[e][t]}},function(e,t,n){"use strict";var r=n(1),o=n(100),i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not a function")}},function(e,t,n){"use strict";var r=n(0),o=n(54),i=n(8),a=n(56),s=n(52),l=n(51),c=r.Symbol,u=o("wks"),f=l?c.for||c:c&&c.withoutSetter||a;e.exports=function(e){return i(u,e)||(u[e]=s&&i(c,e)?c[e]:f("Symbol."+e)),u[e]}},function(e,t,n){"use strict";var r=n(55),o=n(0),i=n(33),a=e.exports=o["__core-js_shared__"]||i("__core-js_shared__",{});(a.versions||(a.versions=[])).push({version:"3.37.1",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,t,n){"use strict";var r=n(0),o=Object.defineProperty;e.exports=function(e,t){try{o(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(28),o=Object;e.exports=function(e){return o(r(e))}},function(e,t,n){"use strict";var r=n(115);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(142),o=n(10),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){var r=n(9)(n(7),"Map");e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(162),o=n(169),i=n(171),a=n(172),s=n(173);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(4),o=n(43),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(11),o=n(10);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=n(5),o=n(24),i=n(96),a=n(26),s=n(27),l=n(48),c=n(8),u=n(57),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=l(t),u)try{return f(e,t)}catch(e){}if(c(e,t))return a(!o(i.f,e,t),e[t])}},function(e,t,n){"use strict";var r=n(2),o=n(3),i=n(16),a=Object,s=r("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},function(e,t,n){"use strict";e.exports=function(e){return null==e}},function(e,t,n){"use strict";var r=n(97),o=n(49);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},function(e,t,n){"use strict";var r=n(29),o=n(1),i=n(50),a=n(51),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&i(t.prototype,s(e))}},function(e,t,n){"use strict";var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(52);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(53),o=n(3),i=n(0).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(e,t,n){"use strict";var r,o,i=n(0),a=n(98),s=i.process,l=i.Deno,c=s&&s.versions||l&&l.version,u=c&&c.v8;u&&(o=(r=u.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){return r[e]||(r[e]=t||{})}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(2),o=0,i=Math.random(),a=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},function(e,t,n){"use strict";var r=n(5),o=n(3),i=n(102);e.exports=!r&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(6),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not an object")}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(8),o=n(109),i=n(45),a=n(15);e.exports=function(e,t,n){for(var s=o(t),l=a.f,c=i.f,u=0;uu))return!1;var p=l.get(e),d=l.get(t);if(p&&d)return p==t&&d==e;var v=-1,h=!0,m=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++v-1&&e%1==0&&e]/;e.exports=function(e){var t,n=""+e,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a79&&a<83||!i("reduce")},{reduce:function(e){var t=arguments.length;return o(this,e,t,t>1?arguments[1]:void 0)}})},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(24),o=n(6),i=n(49),a=n(99),s=n(101),l=n(31),c=TypeError,u=l("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var n,l=a(e,u);if(l){if(void 0===t&&(t="default"),n=r(l,e,t),!o(n)||i(n))return n;throw new c("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},function(e,t,n){"use strict";e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},function(e,t,n){"use strict";var r=n(30),o=n(47);e.exports=function(e,t){var n=e[t];return o(n)?void 0:r(n)}},function(e,t,n){"use strict";var r=String;e.exports=function(e){try{return r(e)}catch(e){return"Object"}}},function(e,t,n){"use strict";var r=n(24),o=n(1),i=n(6),a=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&o(n=e.toString)&&!i(s=r(n,e)))return s;if(o(n=e.valueOf)&&!i(s=r(n,e)))return s;if("string"!==t&&o(n=e.toString)&&!i(s=r(n,e)))return s;throw new a("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r=n(0),o=n(6),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(5),o=n(3);e.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(e,t,n){"use strict";var r=n(5),o=n(8),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,c=s&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:c}},function(e,t,n){"use strict";var r=n(2),o=n(1),i=n(32),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},function(e,t,n){"use strict";var r,o,i,a=n(107),s=n(0),l=n(6),c=n(12),u=n(8),f=n(32),p=n(108),d=n(59),v=s.TypeError,h=s.WeakMap;if(a||f.state){var m=f.state||(f.state=new h);m.get=m.get,m.has=m.has,m.set=m.set,r=function(e,t){if(m.has(e))throw new v("Object already initialized");return t.facade=e,m.set(e,t),t},o=function(e){return m.get(e)||{}},i=function(e){return m.has(e)}}else{var g=p("state");d[g]=!0,r=function(e,t){if(u(e,g))throw new v("Object already initialized");return t.facade=e,c(e,g,t),t},o=function(e){return u(e,g)?e[g]:{}},i=function(e){return u(e,g)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(0),o=n(1),i=r.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},function(e,t,n){"use strict";var r=n(54),o=n(56),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(29),o=n(2),i=n(110),a=n(117),s=n(58),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=a.f;return n?l(t,n(e)):t}},function(e,t,n){"use strict";var r=n(111),o=n(116).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(2),o=n(8),i=n(27),a=n(112).indexOf,s=n(59),l=r([].push);e.exports=function(e,t){var n,r=i(e),c=0,u=[];for(n in r)!o(s,n)&&o(r,n)&&l(u,n);for(;t.length>c;)o(r,n=t[c++])&&(~a(u,n)||l(u,n));return u}},function(e,t,n){"use strict";var r=n(27),o=n(113),i=n(35),a=function(e){return function(t,n,a){var s=r(t),l=i(s);if(0===l)return!e&&-1;var c,u=o(a,l);if(e&&n!=n){for(;l>u;)if((c=s[u++])!=c)return!0}else for(;l>u;u++)if((e||u in s)&&s[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(61),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=Math.trunc||function(e){var t=+e;return(t>0?o:r)(t)}},function(e,t,n){"use strict";var r=n(61),o=Math.min;e.exports=function(e){var t=r(e);return t>0?o(t,9007199254740991):0}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(3),o=n(1),i=/#|\.prototype\./,a=function(e,t){var n=l[s(e)];return n===u||n!==c&&(o(t)?r(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=a.data={},c=a.NATIVE="N",u=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var r=n(30),o=n(34),i=n(46),a=n(35),s=TypeError,l="Reduce of empty array with no initial value",c=function(e){return function(t,n,c,u){var f=o(t),p=i(f),d=a(f);if(r(n),0===d&&c<2)throw new s(l);var v=e?d-1:0,h=e?-1:1;if(c<2)for(;;){if(v in p){u=p[v],v+=h;break}if(v+=h,e?v<0:d<=v)throw new s(l)}for(;e?v>=0:d>v;v+=h)v in p&&(u=n(u,p[v],v,f));return u}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},function(e,t,n){"use strict";var r=n(0),o=n(16);e.exports="process"===o(r.process)},function(e,t,n){"use strict";var r=n(23),o=n(0),i=n(123),a=n(124),s=o.WebAssembly,l=7!==new Error("e",{cause:7}).cause,c=function(e,t){var n={};n[e]=a(e,t,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},u=function(e,t){if(s&&s[e]){var n={};n[e]=a("WebAssembly."+e,t,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};c("Error",(function(e){return function(t){return i(e,this,arguments)}})),c("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),c("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),c("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),c("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),c("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),c("URIError",(function(e){return function(t){return i(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},function(e,t,n){"use strict";var r=n(25),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},function(e,t,n){"use strict";var r=n(29),o=n(8),i=n(12),a=n(50),s=n(62),l=n(60),c=n(128),u=n(129),f=n(130),p=n(133),d=n(134),v=n(5),h=n(55);e.exports=function(e,t,n,m){var g=m?2:1,y=e.split("."),b=y[y.length-1],_=r.apply(null,y);if(_){var w=_.prototype;if(!h&&o(w,"cause")&&delete w.cause,!n)return _;var x=r("Error"),j=t((function(e,t){var n=f(m?t:e,void 0),r=m?new _(e):new _;return void 0!==n&&i(r,"message",n),d(r,j,r.stack,2),this&&a(w,this)&&u(r,this,j),arguments.length>g&&p(r,arguments[g]),r}));if(j.prototype=w,"Error"!==b?s?s(j,x):l(j,x,{name:!0}):v&&"stackTraceLimit"in _&&(c(j,_,"stackTraceLimit"),c(j,_,"prepareStackTrace")),l(j,_),!h)try{w.name!==b&&i(w,"name",b),w.constructor=j}catch(e){}return j}}},function(e,t,n){"use strict";var r=n(2),o=n(30);e.exports=function(e,t,n){try{return r(o(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},function(e,t,n){"use strict";var r=n(127),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){return r(e)||null===e}},function(e,t,n){"use strict";var r=n(15).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},function(e,t,n){"use strict";var r=n(1),o=n(6),i=n(62);e.exports=function(e,t,n){var a,s;return i&&r(a=t.constructor)&&a!==n&&o(s=a.prototype)&&s!==n.prototype&&i(e,s),e}},function(e,t,n){"use strict";var r=n(91);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},function(e,t,n){"use strict";var r=n(132),o=n(1),i=n(16),a=n(31)("toStringTag"),s=Object,l="Arguments"===i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?n:l?i(t):"Object"===(r=i(t))&&o(t.callee)?"Arguments":r}},function(e,t,n){"use strict";var r={};r[n(31)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(6),o=n(12);e.exports=function(e,t){r(t)&&"cause"in t&&o(e,"cause",t.cause)}},function(e,t,n){"use strict";var r=n(12),o=n(135),i=n(136),a=Error.captureStackTrace;e.exports=function(e,t,n,s){i&&(a?a(e,t):r(e,"stack",o(n,s)))}},function(e,t,n){"use strict";var r=n(2),o=Error,i=r("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(a);e.exports=function(e,t){if(l&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},function(e,t,n){"use strict";var r=n(3),o=n(26);e.exports=!r((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},function(e,t,n){"use strict";var r=n(5),o=n(138),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(o(e)&&!a(e,"length").writable)throw new i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},function(e,t,n){"use strict";var r=n(16);e.exports=Array.isArray||function(e){return"Array"===r(e)}},function(e,t,n){"use strict";var r=TypeError;e.exports=function(e){if(e>9007199254740991)throw r("Maximum allowed index exceeded");return e}},function(e,t,n){var r=n(63),o=n(141);e.exports=function e(t,n,i,a,s){var l=-1,c=t.length;for(i||(i=o),s||(s=[]);++l0&&i(u)?n>1?e(u,n-1,i,a,s):r(s,u):a||(s[s.length]=u)}return s}},function(e,t,n){var r=n(13),o=n(36),i=n(4),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return i(e)||o(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(11),o=n(10);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t,n){var r=n(13),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[s]=n:delete e[s]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(146),o=n(202),i=n(44),a=n(4),s=n(212);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(147),o=n(201),i=n(81);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(65),o=n(69);e.exports=function(e,t,n,i){var a=n.length,s=a,l=!i;if(null==e)return!s;for(e=Object(e);a--;){var c=n[a];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++a-1}},function(e,t,n){var r=n(18);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(17);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(17),o=n(37),i=n(39);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(67),o=n(159),i=n(38),a=n(68),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,f=c.hasOwnProperty,p=RegExp("^"+u.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?p:s).test(a(e))}},function(e,t,n){var r,o=n(160),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!i&&i in e}},function(e,t,n){var r=n(7)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(163),o=n(17),i=n(37);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(e,t,n){var r=n(164),o=n(165),i=n(166),a=n(167),s=n(168);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(71),o=n(224),i=n(229),a=n(72),s=n(230),l=n(40);e.exports=function(e,t,n){var c=-1,u=o,f=e.length,p=!0,d=[],v=d;if(n)p=!1,u=i;else if(f>=200){var h=t?null:s(e);if(h)return l(h);p=!1,u=a,v=new r}else v=t?[]:d;e:for(;++c-1}},function(e,t,n){var r=n(226),o=n(227),i=n(228);e.exports=function(e,t,n){return t==t?i(e,t,n):r(e,o,n)}},function(e,t){e.exports=function(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i=0&&Math.floor(t)===t&&isFinite(e)}function h(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function m(e){return null==e?"":Array.isArray(e)||p(e)&&e.toString===f?JSON.stringify(e,g,2):String(e)}function g(e,t){return t&&t.__v_isRef?t.value:t}function y(e){var t=parseFloat(e);return isNaN(t)?e:t}function b(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o-1)return e.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function j(e,t){return x.call(e,t)}function k(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var S=/-(\w)/g,O=k((function(e){return e.replace(S,(function(e,t){return t?t.toUpperCase():""}))})),C=k((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),P=/\B([A-Z])/g,$=k((function(e){return e.replace(P,"-$1").toLowerCase()}));var E=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function A(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function T(e,t){for(var n in t)e[n]=t[n];return e}function L(e){for(var t={},n=0;n0,Y=Z&&Z.indexOf("edge/")>0;Z&&Z.indexOf("android");var ee=Z&&/iphone|ipad|ipod|ios/.test(Z);Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z);var te,ne=Z&&Z.match(/firefox\/(\d+)/),re={}.watch,oe=!1;if(G)try{var ie={};Object.defineProperty(ie,"passive",{get:function(){oe=!0}}),window.addEventListener("test-passive",null,ie)}catch(e){}var ae=function(){return void 0===te&&(te=!G&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),te},se=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var ce,ue="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);ce="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var fe=null;function pe(e){void 0===e&&(e=null),e||fe&&fe._scope.off(),fe=e,e&&e._scope.on()}var de=function(){function e(e,t,n,r,o,i,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),ve=function(e){void 0===e&&(e="");var t=new de;return t.text=e,t.isComment=!0,t};function he(e){return new de(void 0,void 0,void 0,String(e))}function me(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}"function"==typeof SuppressedError&&SuppressedError;var ge=0,ye=[],be=function(){function e(){this._pending=!1,this.id=ge++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ye.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Ze((c=e(c,"".concat(n||"","_").concat(r)))[0])&&Ze(f)&&(p[u]=he(f.text+c[0].text),c.shift()),p.push.apply(p,c)):l(c)?Ze(f)?p[u]=he(f.text+c):""!==c&&p.push(he(c)):Ze(c)&&Ze(f)?p[u]=he(f.text+c.text):(s(t._isVList)&&a(c.tag)&&i(c.key)&&a(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),p.push(c)));return p}(e):void 0}function Ze(e){return a(e)&&a(e.text)&&!1===e.isComment}function Xe(e,t){var n,r,i,s,l=null;if(o(e)||"string"==typeof e)for(l=new Array(e.length),n=0,r=e.length;n0,s=t?!!t.$stable:!a,l=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(s&&o&&o!==r&&l===o.$key&&!a&&!o.$hasNormal)return o;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=mt(e,n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=gt(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),H(i,"$stable",s),H(i,"$key",l),H(i,"$hasNormal",a),i}function mt(e,t,n,r){var i=function(){var t=fe;pe(e);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Ge(n))&&n[0];return pe(t),n&&(!i||1===n.length&&i.isComment&&!vt(i))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:i,enumerable:!0,configurable:!0}),i}function gt(e,t){return function(){return e[t]}}function yt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};H(t,"_v_attr_proxy",!0),bt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||bt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||wt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:E(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return Ue(e,t,n)}))}}}function bt(e,t,n,r,o){var i=!1;for(var a in t)a in e?t[a]!==n[a]&&(i=!0):(i=!0,_t(e,a,r,o));for(var a in e)a in t||(i=!0,delete e[a]);return i}function _t(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function wt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var xt=null;function jt(e,t){return(e.__esModule||ue&&"Module"===e[Symbol.toStringTag])&&(e=e.default),u(e)?t.extend(e):e}function kt(e){if(o(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(cn=function(){return un.now()})}var fn=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function pn(){var e,t;for(ln=cn(),an=!0,tn.sort(fn),sn=0;snsn&&tn[n].id>e.id;)n--;tn.splice(n+1,0,e)}else tn.push(e);on||(on=!0,Ft(pn))}}function vn(e,t){if(e){for(var n=Object.create(null),r=ue?Reflect.ownKeys(e):Object.keys(e),o=0;o-1)if(i&&!j(o,"default"))a=!1;else if(""===a||a===$(e)){var l=Nn(String,o.type);(l<0||s-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!d(e)&&e.test(t)}function Xn(e,t){var n=e.cache,r=e.keys,o=e._vnode,i=e.$vnode;for(var a in n){var s=n[a];if(s){var l=s.name;l&&!t(l)&&Qn(n,a,r,o)}}i.componentOptions.children=void 0}function Qn(e,t,n,r){var o=e[t];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),e[t]=null,w(n,t)}Kn.prototype._init=function(e){var t=this;t._uid=Vn++,t._isVue=!0,t.__v_skip=!0,t._scope=new Je(!0),t._scope.parent=void 0,t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=En(Hn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Gt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,o=n&&n.context;e.$slots=pt(t._renderChildren,o),e.$scopedSlots=n?ht(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,o){return St(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return St(e,t,n,r,o,!0)};var i=n&&n.data;Te(e,"$attrs",i&&i.attrs||r,null,!0),Te(e,"$listeners",t._parentListeners||r,null,!0)}(t),en(t,"beforeCreate",void 0,!1),function(e){var t=vn(e.$options.inject,e);t&&(Pe(!1),Object.keys(t).forEach((function(n){Te(e,n,t[n])})),Pe(!0))}(t),Fn(t),function(e){var t=e.$options.provide;if(t){var n=c(t)?t.call(e):t;if(!u(n))return;for(var r=Be(e),o=ue?Reflect.ownKeys(n):Object.keys(n),i=0;i1?A(n):n;for(var r=A(arguments,1),o='event handler for "'.concat(e,'"'),i=0,a=n.length;iparseInt(this.max)&&Qn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Qn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Xn(e,(function(e){return Zn(t,e)}))})),this.$watch("exclude",(function(t){Xn(e,(function(e){return!Zn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=kt(e),n=t&&t.componentOptions;if(n){var r=Gn(n),o=this.include,i=this.exclude;if(o&&(!r||!Zn(o,r))||i&&r&&Zn(i,r))return t;var a=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;a[l]?(t.componentInstance=a[l].componentInstance,w(s,l),s.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return B}};Object.defineProperty(e,"config",t),e.util={warn:jn,extend:T,mergeOptions:En,defineReactive:Te},e.set=Le,e.delete=Re,e.nextTick=Ft,e.observable=function(e){return Ae(e),e},e.options=Object.create(null),z.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,T(e.options.components,er),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=A(arguments,1);return n.unshift(this),c(e.install)?e.install.apply(e,n):c(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=En(this.options,e),this}}(e),Wn(e),function(e){z.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&p(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&c(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Kn),Object.defineProperty(Kn.prototype,"$isServer",{get:ae}),Object.defineProperty(Kn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Kn,"FunctionalRenderContext",{value:hn}),Kn.version="2.7.16";var tr=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),or=b("events,caret,typing,plaintext-only"),ir=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return sr(e)?e.slice(6,e.length):""},cr=function(e){return null==e||!1===e};function ur(e){for(var t=e.data,n=e,r=e;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=fr(r.data,t));for(;a(n=n.parent);)n&&n.data&&(t=fr(t,n.data));return function(e,t){if(a(e)||a(t))return pr(e,dr(t));return""}(t.staticClass,t.class)}function fr(e,t){return{staticClass:pr(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function pr(e,t){return e?t?e+" "+t:e:t||""}function dr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r-1?Ir(e,t,n):ir(t)?cr(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):rr(t)?e.setAttribute(t,function(e,t){return cr(t)||"false"===t?"false":"contenteditable"===e&&or(t)?t:"true"}(t,n)):sr(t)?cr(n)?e.removeAttributeNS(ar,lr(t)):e.setAttributeNS(ar,t,n):Ir(e,t,n)}function Ir(e,t,n){if(cr(n))e.removeAttribute(t);else{if(X&&!Q&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Dr={create:Mr,update:Mr};function Fr(e,t){var n=t.elm,r=t.data,o=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=ur(t),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ur,zr={create:Fr,update:Fr};function Jr(e,t,n){var r=Ur;return function o(){var i=t.apply(null,arguments);null!==i&&Vr(e,o,n,r)}}var Br=At&&!(ne&&Number(ne[1])<=53);function qr(e,t,n,r){if(Br){var o=ln,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=o||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}Ur.addEventListener(e,t,oe?{capture:n,passive:r}:n)}function Vr(e,t,n,r){(r||Ur).removeEventListener(e,t._wrapper||t,n)}function Hr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Ur=t.elm||e.elm,function(e){if(a(e.__r)){var t=X?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),He(n,r,qr,Vr,Jr,t.context),Ur=void 0}}var Kr,Wr={create:Hr,update:Hr,destroy:function(e){return Hr(e,kr)}};function Gr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,o=t.elm,l=e.data.domProps||{},c=t.data.domProps||{};for(n in(a(c.__ob__)||s(c._v_attr_proxy))&&(c=t.data.domProps=T({},c)),l)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===l[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var u=i(r)?"":String(r);Zr(o,u)&&(o.value=u)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Kr=Kr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Kr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==l[n])try{o[n]=r}catch(e){}}}}function Zr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(a(r)){if(r.number)return y(n)!==y(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Xr={create:Gr,update:Gr},Qr=k((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Yr(e){var t=eo(e.style);return e.staticStyle?T(e.staticStyle,t):t}function eo(e){return Array.isArray(e)?L(e):"string"==typeof e?Qr(e):e}var to,no=/^--/,ro=/\s*!important$/,oo=function(e,t,n){if(no.test(t))e.style.setProperty(t,n);else if(ro.test(n))e.style.setProperty($(t),n.replace(ro,""),"important");else{var r=ao(t);if(Array.isArray(n))for(var o=0,i=n.length;o-1?t.split(co).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function fo(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(co).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function po(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&T(t,vo(e.name||"v")),T(t,e),t}return"string"==typeof e?vo(e):void 0}}var vo=k((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),ho=G&&!Q,mo="transition",go="transitionend",yo="animation",bo="animationend";ho&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",go="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(yo="WebkitAnimation",bo="webkitAnimationEnd"));var _o=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function wo(e){_o((function(){_o(e)}))}function xo(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),uo(e,t))}function jo(e,t){e._transitionClasses&&w(e._transitionClasses,t),fo(e,t)}function ko(e,t,n){var r=Oo(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?go:bo,l=0,c=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++l>=a&&c()};setTimeout((function(){l0&&(n="transition",u=a,f=i.length):"animation"===t?c>0&&(n="animation",u=c,f=l.length):f=(n=(u=Math.max(a,c))>0?a>c?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:u,propCount:f,hasTransform:"transition"===n&&So.test(r[mo+"Property"])}}function Co(e,t){for(;e.length1}function Lo(e,t){!0!==t.data.show&&$o(t)}var Ro=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;tv?_(e,i(n[g+1])?null:n[g+1].elm,n,d,g,r):d>g&&x(t,f,v)}(f,h,g,n,c):a(g)?(a(e.text)&&u.setTextContent(f,""),_(f,null,g,0,g.length-1,n)):a(h)?x(h,0,h.length-1):a(e.text)&&u.setTextContent(f,""):e.text!==t.text&&u.setTextContent(f,t.text),a(v)&&a(d=v.hook)&&a(d=d.postpatch)&&d(e,t)}}}function O(e,t,n){if(s(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(Fo(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));o||(e.selectedIndex=-1)}}function Do(e,t){return t.every((function(t){return!I(t,e)}))}function Fo(e){return"_value"in e?e._value:e.value}function Uo(e){e.target.composing=!0}function zo(e){e.target.composing&&(e.target.composing=!1,Jo(e.target,"input"))}function Jo(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Bo(e){return!e.componentInstance||e.data&&e.data.transition?e:Bo(e.componentInstance._vnode)}var qo={model:Mo,show:{bind:function(e,t,n){var r=t.value,o=(n=Bo(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&o?(n.data.show=!0,$o(n,(function(){e.style.display=i}))):e.style.display=r?i:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Bo(n)).data&&n.data.transition?(n.data.show=!0,r?$o(n,(function(){e.style.display=e.__vOriginalDisplay})):Eo(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,o){o||(e.style.display=e.__vOriginalDisplay)}}},Vo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ho(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Ho(kt(t.children)):e}function Ko(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var r in o)t[O(r)]=o[r];return t}function Wo(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Go=function(e){return e.tag||vt(e)},Zo=function(e){return"show"===e.name},Xo={name:"transition",props:Vo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Go)).length){0;var r=this.mode;0;var o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var i=Ho(o);if(!i)return o;if(this._leaving)return Wo(e,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:l(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Ko(this),c=this._vnode,u=Ho(c);if(i.data.directives&&i.data.directives.some(Zo)&&(i.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,u)&&!vt(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var f=u.data.transition=T({},s);if("out-in"===r)return this._leaving=!0,Ke(f,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Wo(e,o);if("in-out"===r){if(vt(i))return c;var p,d=function(){p()};Ke(s,"afterEnter",d),Ke(s,"enterCancelled",d),Ke(f,"delayLeave",(function(e){p=e}))}}return o}}},Qo=T({tag:String,moveClass:String},Vo);function Yo(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function ei(e){e.data.newPos=e.elm.getBoundingClientRect()}function ti(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,o=t.top-n.top;if(r||o){e.data.moved=!0;var i=e.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Qo.mode;var ni={Transition:Xo,TransitionGroup:{props:Qo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var o=Xt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,o(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Ko(this),s=0;s-1?yr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:yr[e]=/HTMLUnknownElement/.test(t.toString())},T(Kn.options.directives,qo),T(Kn.options.components,ni),Kn.prototype.__patch__=G?Ro:R,Kn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=ve),en(e,"beforeMount"),r=function(){e._update(e._render(),n)},new Vt(e,r,R,{before:function(){e._isMounted&&!e._isDestroyed&&en(e,"beforeUpdate")}},!0),n=!1;var o=e._preWatchers;if(o)for(var i=0;i=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),c=t&&t.path||"/",u=l.path?ji(l.path,c,n||o.append):c,f=function(e,t,n){void 0===t&&(t={});var r,o=n||ui;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(ci):ci(a)}return r}(l.query,o.query,r&&r.options.parseQuery),p=o.hash||l.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:u,query:f,hash:p}}var qi,Vi=function(){},Hi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,f=null==c?"router-link-active":c,p=null==u?"router-link-exact-active":u,d=null==this.activeClass?f:this.activeClass,v=null==this.exactActiveClass?p:this.exactActiveClass,h=a.redirectedFrom?di(null,Bi(a.redirectedFrom),null,n):a;l[v]=yi(r,h,this.exactPath),l[d]=this.exact||this.exactPath?l[v]:function(e,t){return 0===e.path.replace(pi,"/").indexOf(t.path.replace(pi,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,h);var m=l[v]?this.ariaCurrentValue:null,g=function(e){Ki(e)&&(t.replace?n.replace(i,Vi):n.push(i,Vi))},y={click:Ki};Array.isArray(this.event)?this.event.forEach((function(e){y[e]=g})):y[this.event]=g;var b={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:g,isActive:l[d],isExactActive:l[v]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)b.on=y,b.attrs={href:s,"aria-current":m};else{var w=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=Ji(u.path,s.params),l(u,s,a)}if(s.path){s.params={};for(var d=0;d-1}function ka(e,t){return ja(e)&&e._isRouter&&(null==t||e.type===t)}function Sa(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function Oa(e){return function(t,n,r){var o=!1,i=0,a=null;Ca(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,c=Ea((function(t){var o;((o=t).__esModule||$a&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:qi.extend(t),n.components[s]=t,--i<=0&&r()})),u=Ea((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=ja(e)?e:new Error(t),r(a))}));try{l=e(c,u)}catch(e){u(e)}if(l)if("function"==typeof l.then)l.then(c,u);else{var f=l.component;f&&"function"==typeof f.then&&f.then(c,u)}}})),o||r()}}function Ca(e,t){return Pa(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Pa(e){return Array.prototype.concat.apply([],e)}var $a="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ea(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Aa=function(e,t){this.router=e,this.base=function(e){if(!e)if(Wi){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=hi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ta(e,t,n,r){var o=Ca(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=qi.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return Pa(r?o.reverse():o)}function La(e,t){if(t)return function(){return e.apply(t,arguments)}}Aa.prototype.listen=function(e){this.cb=e},Aa.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Aa.prototype.onError=function(e){this.errorCbs.push(e)},Aa.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(ka(e,ya.redirected)&&i===hi||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},Aa.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!ka(e)&&ja(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,c=o.matched.length-1;if(yi(e,o)&&l===c&&e.matched[l]===o.matched[c])return this.ensureURL(),e.hash&&aa(this.router,o,e,!1),s(((a=wa(i=o,e,ya.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=ha&&n;r&&this.listeners.push(ia());var o=function(){var n=e.current,o=Ma(e.base);e.current===hi&&o===e._startLocation||e.transitionTo(o,(function(e){r&&aa(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(ki(r.base+e.fullPath)),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ga(ki(r.base+e.fullPath)),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Ma(this.base)!==this.current.fullPath){var t=ki(this.base+this.current.fullPath);e?ma(t):ga(t)}},t.prototype.getCurrentLocation=function(){return Ma(this.base)},t}(Aa);function Ma(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ki(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Na=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Ma(e);if(!/^\/#/.test(t))return window.location.replace(ki(e+"/#"+t)),!0}(this.base)||Ia()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=ha&&t;n&&this.listeners.push(ia());var r=function(){var t=e.current;Ia()&&e.transitionTo(Da(),(function(r){n&&aa(e.router,r,t,!0),ha||za(r.fullPath)}))},o=ha?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Ua(e.fullPath),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){za(e.fullPath),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Da()!==t&&(e?Ua(t):za(t))},t.prototype.getCurrentLocation=function(){return Da()},t}(Aa);function Ia(){var e=Da();return"/"===e.charAt(0)||(za("/"+e),!1)}function Da(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Fa(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function Ua(e){ha?ma(Fa(e)):window.location.hash=e}function za(e){ha?ga(Fa(e)):window.location.replace(Fa(e))}var Ja=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ka(e,ya.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Aa),Ba=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Xi(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ha&&!1!==e.fallback,this.fallback&&(t="hash"),Wi||(t="abstract"),this.mode=t,t){case"history":this.history=new Ra(this,e.base);break;case"hash":this.history=new Na(this,e.base,this.fallback);break;case"abstract":this.history=new Ja(this,e.base);break;default:0}},qa={currentRoute:{configurable:!0}};Ba.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},qa.currentRoute.get=function(){return this.history&&this.history.current},Ba.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ra||n instanceof Na){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;ha&&o&&"fullPath"in e&&aa(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ba.prototype.beforeEach=function(e){return Ha(this.beforeHooks,e)},Ba.prototype.beforeResolve=function(e){return Ha(this.resolveHooks,e)},Ba.prototype.afterEach=function(e){return Ha(this.afterHooks,e)},Ba.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ba.prototype.onError=function(e){this.history.onError(e)},Ba.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ba.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ba.prototype.go=function(e){this.history.go(e)},Ba.prototype.back=function(){this.go(-1)},Ba.prototype.forward=function(){this.go(1)},Ba.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ba.prototype.resolve=function(e,t,n){var r=Bi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ki(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ba.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ba.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==hi&&this.history.transitionTo(this.history.getCurrentLocation())},Ba.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==hi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ba.prototype,qa);var Va=Ba;function Ha(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ba.install=function e(t){if(!e.installed||qi!==t){e.installed=!0,qi=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",wi),t.component("RouterLink",Hi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ba.version="3.6.5",Ba.isNavigationFailure=ka,Ba.NavigationFailureType=ya,Ba.START_LOCATION=hi,Wi&&window.Vue&&window.Vue.use(Ba);n(95);n(122),n(88);var Ka={"components/AlgoliaSearchBox":()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,372)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,254)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(40)]).then(n.bind(null,241)),"components/Home":()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,299)),"components/NavLink":()=>n.e(42).then(n.bind(null,240)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,265)),"components/Navbar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,369)),"components/Page":()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,300)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,255)),"components/PageNav":()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,267)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,301)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(41)]).then(n.bind(null,302)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,266)),"components/SidebarLink":()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,256)),"components/SidebarLinks":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,253)),"global-components/Badge":()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,390)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,373)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,374)),"layouts/404":()=>n.e(7).then(n.bind(null,375)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,376)),NotFound:()=>n.e(7).then(n.bind(null,375)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,376))},Wa={"v-0b4d4089":()=>n.e(44).then(n.bind(null,391)),"v-2216e8dc":()=>n.e(10).then(n.bind(null,392)),"v-094b9dee":()=>n.e(45).then(n.bind(null,393)),"v-7eb94829":()=>n.e(46).then(n.bind(null,394)),"v-29ebca8e":()=>n.e(47).then(n.bind(null,395)),"v-51aaf849":()=>n.e(48).then(n.bind(null,396)),"v-126ea6be":()=>n.e(49).then(n.bind(null,397)),"v-003ee409":()=>n.e(50).then(n.bind(null,398)),"v-4d7f1c8a":()=>n.e(51).then(n.bind(null,399)),"v-83a41dee":()=>n.e(52).then(n.bind(null,400)),"v-d1f646ae":()=>n.e(54).then(n.bind(null,401)),"v-49301ee2":()=>n.e(53).then(n.bind(null,402)),"v-464fd629":()=>n.e(55).then(n.bind(null,403)),"v-76cafeae":()=>n.e(58).then(n.bind(null,404)),"v-7cca31fe":()=>n.e(56).then(n.bind(null,405)),"v-f3391bf6":()=>n.e(59).then(n.bind(null,406)),"v-b5351e9e":()=>n.e(57).then(n.bind(null,407)),"v-62aa1369":()=>n.e(60).then(n.bind(null,408)),"v-5e92fa09":()=>n.e(62).then(n.bind(null,409)),"v-3ad539ae":()=>n.e(61).then(n.bind(null,410)),"v-8de1af1a":()=>n.e(63).then(n.bind(null,411)),"v-48953121":()=>n.e(64).then(n.bind(null,412)),"v-1f38ca2e":()=>n.e(65).then(n.bind(null,413)),"v-1dfe032e":()=>n.e(66).then(n.bind(null,414)),"v-c918a5fa":()=>n.e(69).then(n.bind(null,415)),"v-27531941":()=>n.e(67).then(n.bind(null,416)),"v-5a94ae89":()=>n.e(70).then(n.bind(null,417)),"v-67c77489":()=>n.e(68).then(n.bind(null,418)),"v-959a2c2e":()=>n.e(72).then(n.bind(null,419)),"v-2abeb1ab":()=>n.e(71).then(n.bind(null,420)),"v-7bf93309":()=>n.e(74).then(n.bind(null,421)),"v-07fb5e62":()=>n.e(75).then(n.bind(null,422)),"v-506a67bc":()=>n.e(73).then(n.bind(null,423)),"v-19f2c039":()=>n.e(76).then(n.bind(null,424)),"v-b99d2c2e":()=>n.e(77).then(n.bind(null,425)),"v-6731dec1":()=>n.e(78).then(n.bind(null,426)),"v-bb53a316":()=>n.e(81).then(n.bind(null,427)),"v-7f55ccc9":()=>n.e(79).then(n.bind(null,428)),"v-bf7e876e":()=>n.e(80).then(n.bind(null,429)),"v-20f55eeb":()=>n.e(82).then(n.bind(null,430)),"v-74774829":()=>n.e(83).then(n.bind(null,431)),"v-90fdf4e6":()=>n.e(84).then(n.bind(null,432)),"v-114a7465":()=>n.e(85).then(n.bind(null,433))};function Ga(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Za=/-(\w)/g,Xa=Ga(e=>e.replace(Za,(e,t)=>t?t.toUpperCase():"")),Qa=/\B([A-Z])/g,Ya=Ga(e=>e.replace(Qa,"-$1").toLowerCase()),es=Ga(e=>e.charAt(0).toUpperCase()+e.slice(1));function ts(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(es(Xa(t))):e(es(t))||e(Ya(t))}const ns=Object.assign({},Ka,Wa),rs=e=>ns[e],os=e=>Wa[e],is=e=>Ka[e],as=e=>Kn.component(e);function ss(e){return ts(os,e)}function ls(e){return ts(is,e)}function cs(e){return ts(rs,e)}function us(e){return ts(as,e)}function fs(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!us(e)&&cs(e)){const t=await cs(e)();Kn.component(e,t.default)}}))}function ps(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ds=n(86),vs=n.n(ds),hs=n(87),ms=n.n(hs),gs={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${ms()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=_s(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return vs()([{name:"description",content:this.$description}],e,this.siteMeta,ws)},updateCanonicalLink(){ys(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){_s(null,this.currentMetaTags),ys()}};function ys(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function bs(e=""){return e?``:""}function _s(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function ws(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var xs=n(22),js=n.n(xs),ks=[gs,{mounted(){js.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||Kn.component(e.name)||js.a.start(),n()}),this.$router.afterEach(()=>{js.a.done(),this.isSidebarOpen=!1})}}],Ss={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return ps("layout",e),Kn.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},Os=n(14),Cs=Object(Os.a)(Ss,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Cs,"mixins",ks);const Ps=[{name:"v-0b4d4089",path:"/api.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-0b4d4089").then(n)}},{name:"v-2216e8dc",path:"/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-2216e8dc").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-094b9dee",path:"/code_of_conduct/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-094b9dee").then(n)}},{path:"/code_of_conduct/index.html",redirect:"/code_of_conduct/"},{path:"/code_of_conduct.html",redirect:"/code_of_conduct/"},{name:"v-7eb94829",path:"/codegen.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7eb94829").then(n)}},{name:"v-29ebca8e",path:"/coercion.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-29ebca8e").then(n)}},{name:"v-51aaf849",path:"/components.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-51aaf849").then(n)}},{name:"v-126ea6be",path:"/contributing/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-126ea6be").then(n)}},{path:"/contributing/index.html",redirect:"/contributing/"},{path:"/contributing.html",redirect:"/contributing/"},{name:"v-003ee409",path:"/faq.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-003ee409").then(n)}},{name:"v-4d7f1c8a",path:"/guide/async-validation.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-4d7f1c8a").then(n)}},{name:"v-83a41dee",path:"/guide/combining-schemas.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-83a41dee").then(n)}},{name:"v-d1f646ae",path:"/guide/formats.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-d1f646ae").then(n)}},{name:"v-49301ee2",path:"/guide/environments.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-49301ee2").then(n)}},{name:"v-464fd629",path:"/guide/getting-started.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-464fd629").then(n)}},{name:"v-76cafeae",path:"/guide/schema-language.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-76cafeae").then(n)}},{name:"v-7cca31fe",path:"/guide/managing-schemas.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7cca31fe").then(n)}},{name:"v-f3391bf6",path:"/guide/typescript.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-f3391bf6").then(n)}},{name:"v-b5351e9e",path:"/guide/modifying-data.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-b5351e9e").then(n)}},{name:"v-62aa1369",path:"/guide/user-keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-62aa1369").then(n)}},{name:"v-5e92fa09",path:"/json-schema.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-5e92fa09").then(n)}},{name:"v-3ad539ae",path:"/guide/why-ajv.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-3ad539ae").then(n)}},{name:"v-8de1af1a",path:"/json-type-definition.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-8de1af1a").then(n)}},{name:"v-48953121",path:"/keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-48953121").then(n)}},{name:"v-1f38ca2e",path:"/license.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-1f38ca2e").then(n)}},{name:"v-1dfe032e",path:"/news/2020-08-14-mozilla-grant-openjs-foundation.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-1dfe032e").then(n)}},{name:"v-c918a5fa",path:"/news/2021-03-27-ajv-version-8-released.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-c918a5fa").then(n)}},{name:"v-27531941",path:"/news/2020-12-15-ajv-version-7-released.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-27531941").then(n)}},{name:"v-5a94ae89",path:"/news/2021-04-24-ajv-online-event.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-5a94ae89").then(n)}},{name:"v-67c77489",path:"/news/2021-03-07-ajv-supports-json-type-definition.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-67c77489").then(n)}},{name:"v-959a2c2e",path:"/news/2021-07-22-ajv-microsoft-foss-fund-award.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-959a2c2e").then(n)}},{name:"v-2abeb1ab",path:"/news/2021-05-24-ajv-online-event-video.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-2abeb1ab").then(n)}},{name:"v-7bf93309",path:"/options.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7bf93309").then(n)}},{name:"v-07fb5e62",path:"/packages/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-07fb5e62").then(n)}},{path:"/packages/index.html",redirect:"/packages/"},{name:"v-506a67bc",path:"/news/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-506a67bc").then(n)}},{path:"/news/index.html",redirect:"/news/"},{name:"v-19f2c039",path:"/packages/ajv-cli.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-19f2c039").then(n)}},{name:"v-b99d2c2e",path:"/packages/ajv-errors.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-b99d2c2e").then(n)}},{name:"v-6731dec1",path:"/packages/ajv-formats.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-6731dec1").then(n)}},{name:"v-bb53a316",path:"/security.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-bb53a316").then(n)}},{name:"v-7f55ccc9",path:"/packages/ajv-i18n.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7f55ccc9").then(n)}},{name:"v-bf7e876e",path:"/packages/ajv-keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-bf7e876e").then(n)}},{name:"v-20f55eeb",path:"/standalone.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-20f55eeb").then(n)}},{name:"v-74774829",path:"/strict-mode.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-74774829").then(n)}},{name:"v-90fdf4e6",path:"/testimonials.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-90fdf4e6").then(n)}},{name:"v-114a7465",path:"/v6-to-v8-migration.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-114a7465").then(n)}},{path:"*",component:Cs}],$s={title:"Ajv JSON schema validator",description:"The fastest JSON schema Validator. Supports JSON Schema draft-04/06/07/2019-09/2020-12 and JSON Type Definition (RFC8927)",base:"/",headTags:[["link",{rel:"icon",href:"/favicon.ico"}],["meta",{charset:"utf-8"}],["meta",{property:"og:title",content:"Ajv JSON schema validator"}],["meta",{property:"og:description",content:"The fastest JSON schema Validator. Supports JSON Schema draft-04/06/07/2019-09/2020-12 and JSON Type Definition (RFC8927)"}],["meta",{property:"og:image",content:"https://ajv.js.org/img/ajv.png"}],["meta",{itemprop:"image",content:"https://ajv.js.org/img/ajv.png"}],["meta",{name:"twitter:card",content:"summary"}],["meta",{name:"twitter:title",content:"Ajv JSON schema validator"}],["meta",{name:"twitter:image:src",content:"https://ajv.js.org/img/ajv.png"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["link",{rel:"apple-touch-icon",href:"/img/apple-touch-icon.png"}]],pages:[{title:"API Reference",frontmatter:{},regularPath:"/api.html",relativePath:"api.md",key:"v-0b4d4089",path:"/api.html",headers:[{level:2,title:"Ajv constructor and methods",slug:"ajv-constructor-and-methods"},{level:3,title:"new Ajv(options: object)",slug:"new-ajv-options-object"},{level:3,title:"ajv.compile(schema: object): (data: any) => boolean | Promise",slug:"ajv-compile-schema-object-data-any-boolean-promise-any"},{level:3,title:"ajv.compileSerializer(schema: object): (data: any) => string",slug:"ajv-compileserializer-schema-object-data-any-string"},{level:3,title:"ajv.compileParser(schema: object): (json: string) => any",slug:"ajv-compileparser-schema-object-json-string-any"},{level:3,title:"ajv.compileAsync(schema: object, meta?: boolean): Promise",slug:"ajv-compileasync-schema-object-meta-boolean-promise-function"},{level:3,title:"ajv.validate(schemaOrRef: object | string, data: any): boolean",slug:"ajv-validate-schemaorref-object-string-data-any-boolean"},{level:3,title:"ajv.addSchema(schema: object | object[], key?: string): Ajv",slug:"ajv-addschema-schema-object-object-key-string-ajv"},{level:3,title:"ajv.addMetaSchema(schema: object | object[], key?: string): Ajv",slug:"ajv-addmetaschema-schema-object-object-key-string-ajv"},{level:3,title:"ajv.validateSchema(schema: object): boolean",slug:"ajv-validateschema-schema-object-boolean"},{level:3,title:"ajv.getSchema(key: string): undefined | ((data: any) => boolean | Promise )",slug:"ajv-getschema-key-string-undefined-data-any-boolean-promise-any"},{level:3,title:"ajv.removeSchema(schemaOrRef: object | string | RegExp): Ajv",slug:"ajv-removeschema-schemaorref-object-string-regexp-ajv"},{level:3,title:"ajv.addFormat(name: string, format: Format): Ajv",slug:"ajv-addformat-name-string-format-format-ajv"},{level:3,title:"ajv.addKeyword(definition: string | object): Ajv",slug:"ajv-addkeyword-definition-string-object-ajv"},{level:3,title:"ajv.getKeyword(keyword: string): object | boolean",slug:"ajv-getkeyword-keyword-string-object-boolean"},{level:3,title:"ajv.removeKeyword(keyword: string): Ajv",slug:"ajv-removekeyword-keyword-string-ajv"},{level:3,title:"ajv.errorsText(errors?: object[], options?: object): string",slug:"ajv-errorstext-errors-object-options-object-string"},{level:2,title:"Validation errors",slug:"validation-errors"},{level:3,title:"Error objects",slug:"error-objects"},{level:3,title:"Error parameters",slug:"error-parameters"},{level:3,title:"Errors i18n",slug:"errors-i18n"},{level:3,title:"Error logging",slug:"error-logging"}]},{frontmatter:{homepage:!0,sidebar:!1},regularPath:"/",relativePath:"README.md",key:"v-2216e8dc",path:"/",headers:[{level:2,title:"Security and reliability for JavaScript applications",slug:"security-and-reliability-for-javascript-applications"},{level:3,title:"Write less code",slug:"write-less-code"},{level:3,title:"Super fast & secure",slug:"super-fast-secure"},{level:3,title:"Multi-standard",slug:"multi-standard"},{level:2,title:"Ajv sponsors",slug:"ajv-sponsors"},{level:2,title:"What users say",slug:"what-users-say"},{level:2,title:"News",slug:"news"},{level:2,title:"Who uses Ajv",slug:"who-uses-ajv"},{level:2,title:"Contributors",slug:"contributors"}]},{title:"Contributor Covenant Code of Conduct",frontmatter:{permalink:"/code_of_conduct"},regularPath:"/code_of_conduct.html",relativePath:"code_of_conduct.md",key:"v-094b9dee",path:"/code_of_conduct/",headers:[{level:3,title:"Our Pledge",slug:"our-pledge"},{level:3,title:"Our Standards",slug:"our-standards"},{level:3,title:"Our Responsibilities",slug:"our-responsibilities"},{level:3,title:"Scope",slug:"scope"},{level:3,title:"Enforcement",slug:"enforcement"},{level:3,title:"Attribution",slug:"attribution"}]},{title:"Code generation design",frontmatter:{},regularPath:"/codegen.html",relativePath:"codegen.md",key:"v-7eb94829",path:"/codegen.html",headers:[{level:2,title:"Safe code generation",slug:"safe-code-generation"},{level:2,title:"Code optimization",slug:"code-optimization"},{level:2,title:"User-defined keywords",slug:"user-defined-keywords"}]},{title:"Type coercion rules",frontmatter:{},regularPath:"/coercion.html",relativePath:"coercion.md",key:"v-29ebca8e",path:"/coercion.html",headers:[{level:2,title:"Coercion from string values",slug:"coercion-from-string-values"},{level:2,title:"Coercion from number values",slug:"coercion-from-number-values"},{level:2,title:"Coercion from boolean values",slug:"coercion-from-boolean-values"},{level:2,title:"Coercion from null",slug:"coercion-from-null"},{level:2,title:"Coercion to and from array",slug:"coercion-to-and-from-array"}]},{title:"Code components",frontmatter:{},regularPath:"/components.html",relativePath:"components.md",key:"v-51aaf849",path:"/components.html",headers:[{level:2,title:"Ajv classes",slug:"ajv-classes"},{level:2,title:"Schema compilation",slug:"schema-compilation"},{level:2,title:"Other components",slug:"other-components"}]},{title:"Contributing guide",frontmatter:{permalink:"/contributing"},regularPath:"/contributing.html",relativePath:"contributing.md",key:"v-126ea6be",path:"/contributing/",headers:[{level:2,title:"Documentation",slug:"documentation"},{level:2,title:"Issues",slug:"issues"},{level:3,title:"Bug reports",slug:"bug-reports"},{level:3,title:"Security vulnerabilities",slug:"security-vulnerabilities"},{level:3,title:"Change proposals",slug:"change-proposals"},{level:3,title:"Browser and compatibility issues",slug:"browser-and-compatibility-issues"},{level:3,title:"Installation and dependency issues",slug:"installation-and-dependency-issues"},{level:3,title:"Using JSON Schema standard",slug:"using-json-schema-standard"},{level:3,title:"Ajv usage questions",slug:"ajv-usage-questions"},{level:2,title:"Code",slug:"code"},{level:3,title:"How we make decisions",slug:"how-we-make-decisions"},{level:3,title:"Development",slug:"development"},{level:3,title:"Pull requests",slug:"pull-requests"},{level:3,title:"Contributions license",slug:"contributions-license"}]},{title:"Frequently Asked Questions",frontmatter:{},regularPath:"/faq.html",relativePath:"faq.md",key:"v-003ee409",path:"/faq.html",headers:[{level:2,title:"Using JSON schema",slug:"using-json-schema"},{level:2,title:"Ajv API for returning validation errors",slug:"ajv-api-for-returning-validation-errors"},{level:2,title:"Additional properties inside compound keywords anyOf, oneOf, etc.",slug:"additional-properties-inside-compound-keywords-anyof-oneof-etc"},{level:2,title:"Generating schemas with resolved references ($ref)",slug:"generating-schemas-with-resolved-references-ref"}]},{title:"Asynchronous validation",frontmatter:{},regularPath:"/guide/async-validation.html",relativePath:"guide/async-validation.md",key:"v-4d7f1c8a",path:"/guide/async-validation.html",headers:[{level:3,title:"Using transpilers",slug:"using-transpilers"}]},{title:"Combining schemas",frontmatter:{},regularPath:"/guide/combining-schemas.html",relativePath:"guide/combining-schemas.md",key:"v-83a41dee",path:"/guide/combining-schemas.html",headers:[{level:2,title:"Combining schemas with $ref",slug:"combining-schemas-with-ref"},{level:2,title:"Extending recursive schemas",slug:"extending-recursive-schemas"},{level:2,title:"$data reference",slug:"data-reference"},{level:2,title:"$merge and $patch keywords",slug:"merge-and-patch-keywords"}]},{title:"Format validation",frontmatter:{},regularPath:"/guide/formats.html",relativePath:"guide/formats.md",key:"v-d1f646ae",path:"/guide/formats.html",headers:[{level:2,title:"String formats",slug:"string-formats"},{level:2,title:"User-defined formats",slug:"user-defined-formats"},{level:2,title:"Formats and standalone validation code",slug:"formats-and-standalone-validation-code"}]},{title:"Execution environments",frontmatter:{},regularPath:"/guide/environments.html",relativePath:"guide/environments.md",key:"v-49301ee2",path:"/guide/environments.html",headers:[{level:2,title:"Server-side Node.js",slug:"server-side-node-js"},{level:2,title:"Short-lived environments",slug:"short-lived-environments"},{level:2,title:"Browsers",slug:"browsers"},{level:2,title:"ES5 environments",slug:"es5-environments"},{level:2,title:"CJS vs ESM exports",slug:"cjs-vs-esm-exports"},{level:2,title:"Other JavaScript environments",slug:"other-javascript-environments"},{level:2,title:"Command line interface",slug:"command-line-interface"}]},{title:"Getting started",frontmatter:{},regularPath:"/guide/getting-started.html",relativePath:"guide/getting-started.md",key:"v-464fd629",path:"/guide/getting-started.html",headers:[{level:2,title:"Install",slug:"install"},{level:2,title:"Basic data validation",slug:"basic-data-validation"},{level:2,title:"Parsing and serializing JSON",slug:"parsing-and-serializing-json"}]},{title:"Choosing schema language",frontmatter:{tags:["JTD"]},regularPath:"/guide/schema-language.html",relativePath:"guide/schema-language.md",key:"v-76cafeae",path:"/guide/schema-language.html",headers:[{level:2,title:"JSON Type Definition",slug:"json-type-definition"},{level:2,title:"JSON Schema",slug:"json-schema"},{level:3,title:"draft-04",slug:"draft-04"},{level:3,title:"draft-07 (and draft-06)",slug:"draft-07-and-draft-06"},{level:3,title:"draft 2019-09 (and draft-2020-12)",slug:"draft-2019-09-and-draft-2020-12"},{level:2,title:"Comparison",slug:"comparison"},{level:3,title:"JSON Schema",slug:"json-schema-2"},{level:3,title:"JSON Type Definition",slug:"json-type-definition-2"}]},{title:"Managing schemas",frontmatter:{},regularPath:"/guide/managing-schemas.html",relativePath:"guide/managing-schemas.md",key:"v-7cca31fe",path:"/guide/managing-schemas.html",headers:[{level:2,title:"Re-using validation functions",slug:"re-using-validation-functions"},{level:2,title:"Standalone validation code",slug:"standalone-validation-code"},{level:2,title:"Compiling during initialization",slug:"compiling-during-initialization"},{level:2,title:"Using Ajv instance cache",slug:"using-ajv-instance-cache"},{level:3,title:"Cache key: schema vs key vs $id",slug:"cache-key-schema-vs-key-vs-id"},{level:3,title:"Pre-adding all schemas vs adding on demand",slug:"pre-adding-all-schemas-vs-adding-on-demand"},{level:3,title:"Asynchronous schema loading",slug:"asynchronous-schema-loading"},{level:2,title:"Caching schemas in your code",slug:"caching-schemas-in-your-code"}]},{title:"Using with TypeScript",frontmatter:{},regularPath:"/guide/typescript.html",relativePath:"guide/typescript.md",key:"v-f3391bf6",path:"/guide/typescript.html",headers:[{level:2,title:"Additional functionality",slug:"additional-functionality"},{level:2,title:"Utility types for schemas",slug:"utility-types-for-schemas"},{level:2,title:"Utility type for JTD data type",slug:"utility-type-for-jtd-data-type"},{level:2,title:"Type-safe error handling",slug:"type-safe-error-handling"},{level:2,title:"Type-safe parsers and serializers",slug:"type-safe-parsers-and-serializers"},{level:2,title:"Type-safe unions",slug:"type-safe-unions"}]},{title:"Modifying data during validation",frontmatter:{},regularPath:"/guide/modifying-data.html",relativePath:"guide/modifying-data.md",key:"v-b5351e9e",path:"/guide/modifying-data.html",headers:[{level:2,title:"General considerations",slug:"general-considerations"},{level:2,title:"Removing additional properties",slug:"removing-additional-properties"},{level:2,title:"Assigning defaults",slug:"assigning-defaults"},{level:2,title:"Coercing data types",slug:"coercing-data-types"}]},{title:"User-defined keywords",frontmatter:{},regularPath:"/guide/user-keywords.html",relativePath:"guide/user-keywords.md",key:"v-62aa1369",path:"/guide/user-keywords.html"},{title:"JSON Schema",frontmatter:{},regularPath:"/json-schema.html",relativePath:"json-schema.md",key:"v-5e92fa09",path:"/json-schema.html",headers:[{level:2,title:"JSON Schema versions",slug:"json-schema-versions"},{level:3,title:"draft-07",slug:"draft-07"},{level:3,title:"draft-2019-09",slug:"draft-2019-09"},{level:3,title:"draft-2020-12",slug:"draft-2020-12"},{level:3,title:"draft-06",slug:"draft-06"},{level:3,title:"draft-04",slug:"draft-04"},{level:2,title:"OpenAPI support",slug:"openapi-support"},{level:2,title:"JSON data type",slug:"json-data-type"},{level:3,title:"type",slug:"type"},{level:3,title:"nullable",slug:"nullable"},{level:2,title:"Keywords for numbers",slug:"keywords-for-numbers"},{level:3,title:"maximum / minimum and exclusiveMaximum / exclusiveMinimum",slug:"maximum-minimum-and-exclusivemaximum-exclusiveminimum"},{level:3,title:"multipleOf",slug:"multipleof"},{level:2,title:"Keywords for strings",slug:"keywords-for-strings"},{level:3,title:"maxLength / minLength",slug:"maxlength-minlength"},{level:3,title:"pattern",slug:"pattern"},{level:3,title:"format",slug:"format"},{level:2,title:"Keywords for arrays",slug:"keywords-for-arrays"},{level:3,title:"maxItems / minItems",slug:"maxitems-minitems"},{level:3,title:"uniqueItems",slug:"uniqueitems"},{level:3,title:"items",slug:"items"},{level:3,title:"prefixItems",slug:"prefixitems"},{level:3,title:"additionalItems",slug:"additionalitems"},{level:3,title:"contains",slug:"contains"},{level:3,title:"maxContains / minContains",slug:"maxcontains-mincontains"},{level:3,title:"unevaluatedItems",slug:"unevaluateditems"},{level:2,title:"Keywords for objects",slug:"keywords-for-objects"},{level:3,title:"maxProperties / minProperties",slug:"maxproperties-minproperties"},{level:3,title:"required",slug:"required"},{level:3,title:"properties",slug:"properties"},{level:3,title:"patternProperties",slug:"patternproperties"},{level:3,title:"additionalProperties",slug:"additionalproperties"},{level:3,title:"dependencies",slug:"dependencies"},{level:3,title:"dependentRequired",slug:"dependentrequired"},{level:3,title:"dependentSchemas",slug:"dependentschemas"},{level:3,title:"propertyNames",slug:"propertynames"},{level:3,title:"unevaluatedProperties",slug:"unevaluatedproperties"},{level:3,title:"discriminator",slug:"discriminator"},{level:2,title:"Keywords for all types",slug:"keywords-for-all-types"},{level:3,title:"enum",slug:"enum"},{level:3,title:"const",slug:"const"},{level:2,title:"Compound keywords",slug:"compound-keywords"},{level:3,title:"not",slug:"not"},{level:3,title:"oneOf",slug:"oneof"},{level:3,title:"anyOf",slug:"anyof"},{level:3,title:"allOf",slug:"allof"},{level:3,title:"if/then/else",slug:"if-then-else"},{level:2,title:"Metadata keywords",slug:"metadata-keywords"}]},{title:"Why use AJV",frontmatter:{},regularPath:"/guide/why-ajv.html",relativePath:"guide/why-ajv.md",key:"v-3ad539ae",path:"/guide/why-ajv.html",headers:[{level:2,title:"Write less code",slug:"write-less-code"},{level:2,title:"Super fast & secure",slug:"super-fast-secure"},{level:2,title:"Multi-standard",slug:"multi-standard"}]},{title:"JSON Type Definition",frontmatter:{},regularPath:"/json-type-definition.html",relativePath:"json-type-definition.md",key:"v-8de1af1a",path:"/json-type-definition.html",headers:[{level:2,title:"JTD schema forms",slug:"jtd-schema-forms"},{level:3,title:"Type form",slug:"type-form"},{level:3,title:"Enum form",slug:"enum-form"},{level:3,title:"Elements form",slug:"elements-form"},{level:3,title:"Properties form",slug:"properties-form"},{level:3,title:"Discriminator form",slug:"discriminator-form"},{level:3,title:"Values form",slug:"values-form"},{level:3,title:"Ref form",slug:"ref-form"},{level:3,title:"Empty form",slug:"empty-form"},{level:2,title:"JTDSchemaType",slug:"jtdschematype"},{level:3,title:"Most Schemas",slug:"most-schemas"},{level:3,title:"Ref Schemas",slug:"ref-schemas"},{level:3,title:"Notable Omissions",slug:"notable-omissions"},{level:2,title:"Extending JTD",slug:"extending-jtd"},{level:3,title:"Metadata schema member",slug:"metadata-schema-member"},{level:3,title:"Union keyword",slug:"union-keyword"},{level:3,title:"User-defined keywords",slug:"user-defined-keywords"},{level:2,title:"Validation errors",slug:"validation-errors"}]},{title:"User defined keywords",frontmatter:{},regularPath:"/keywords.html",relativePath:"keywords.md",key:"v-48953121",path:"/keywords.html",headers:[{level:2,title:"Common attributes of keyword definitions",slug:"common-attributes-of-keyword-definitions"},{level:3,title:"Define keyword with code generation function",slug:"define-keyword-with-code-generation-function"},{level:3,title:'Define keyword with "validate" function',slug:"define-keyword-with-validate-function"},{level:3,title:'Define keyword with "compile" function',slug:"define-keyword-with-compile-function"},{level:3,title:'Define keyword with "macro" function',slug:"define-keyword-with-macro-function"},{level:2,title:"Schema compilation context",slug:"schema-compilation-context"},{level:2,title:"Validation time variables",slug:"validation-time-variables"},{level:2,title:"Reporting errors",slug:"reporting-errors"}]},{frontmatter:{},regularPath:"/license.html",relativePath:"license.md",key:"v-1f38ca2e",path:"/license.html"},{title:"Mozilla MOSS grant and OpenJS Foundation",frontmatter:{news:!0,title:"Mozilla MOSS grant and OpenJS Foundation",date:"2020-08-14T00:00:00.000Z"},regularPath:"/news/2020-08-14-mozilla-grant-openjs-foundation.html",relativePath:"news/2020-08-14-mozilla-grant-openjs-foundation.md",key:"v-1dfe032e",path:"/news/2020-08-14-mozilla-grant-openjs-foundation.html",excerpt:'

\n

Ajv has been awarded a grant from Mozilla’s Open Source Support (MOSS) program in the “Foundational Technology” track! It will sponsor the development of Ajv support of JSON Schema version 2019-09 and of JSON Type Definition (RFC8927).

\n

Ajv also joined OpenJS Foundation – having this support will help ensure the longevity and stability of Ajv for all its users.

\n'},{title:"Ajv version 8 is released!",frontmatter:{news:!0,title:"Ajv version 8 is released!",date:"2021-03-27T00:00:00.000Z"},regularPath:"/news/2021-03-27-ajv-version-8-released.html",relativePath:"news/2021-03-27-ajv-version-8-released.md",key:"v-c918a5fa",path:"/news/2021-03-27-ajv-version-8-released.html",excerpt:'

Ajv version 8 has these new features:

\n\n'},{title:"Ajv version 7 is released!",frontmatter:{news:!0,title:"Ajv version 7 is released!",date:"2020-12-15T00:00:00.000Z"},regularPath:"/news/2020-12-15-ajv-version-7-released.html",relativePath:"news/2020-12-15-ajv-version-7-released.md",key:"v-27531941",path:"/news/2020-12-15-ajv-version-7-released.html",excerpt:'

Ajv version 7 has these new features:

\n\n'},{title:"Ajv online event - May 20, 10am PT / 6pm UK",frontmatter:{news:!0,title:"Ajv online event - May 20, 10am PT / 6pm UK",date:"2021-04-24T00:00:00.000Z",more:!1},regularPath:"/news/2021-04-24-ajv-online-event.html",relativePath:"news/2021-04-24-ajv-online-event.md",key:"v-5a94ae89",path:"/news/2021-04-24-ajv-online-event.html",excerpt:'

We will talk about:

\n
    \n
  • new features of Ajv version 8.
  • \n
  • the improvements sponsored by Mozilla\'s MOSS grant.
  • \n
  • how Ajv is used in JavaScript applications.
  • \n
\n

Speakers:

\n
    \n
  • Evgeny Poberezkin, the creator of Ajv.
  • \n
  • Mehan Jayasuriya, Program Officer at Mozilla Foundation, leading the MOSS and other programs investing in the open source and community ecosystems.
  • \n
  • Matteo Collina, Technical Director at NearForm and Node.js Technical Steering Committee member, creator of Fastify web framework.
  • \n
  • Kin Lane, Chief Evangelist at Postman. Studying the tech, business & politics of APIs since 2010. Presidential Innovation Fellow during the Obama administration.
  • \n
  • Ulysse Carion, the creator of JSON Type Definition specification.
  • \n
\n

Gajus Kuizinas will host the event.

\n

Please register here.

\n'},{title:"Ajv supports JSON Type Definition",frontmatter:{news:!0,title:"Ajv supports JSON Type Definition",date:"2021-03-07T00:00:00.000Z"},regularPath:"/news/2021-03-07-ajv-supports-json-type-definition.html",relativePath:"news/2021-03-07-ajv-supports-json-type-definition.md",key:"v-67c77489",path:"/news/2021-03-07-ajv-supports-json-type-definition.html",excerpt:'

JSON Type Definition (JTD) is a new specification for defining JSON structures that is very simple to use, comparing with JSON Schema, less error prone, and it is published as RFC8927.

\n

See Choosing schema language for a detailed comparison between JSON Schema and JSON Type definition and informal specification.

\n'},{title:"Microsoft FOSS award",frontmatter:{news:!0,title:"Microsoft FOSS award",date:"2021-07-22T00:00:00.000Z",more:!1},regularPath:"/news/2021-07-22-ajv-microsoft-foss-fund-award.html",relativePath:"news/2021-07-22-ajv-microsoft-foss-fund-award.md",key:"v-959a2c2e",path:"/news/2021-07-22-ajv-microsoft-foss-fund-award.html",excerpt:'

Ajv was awarded a sponsorship from Microsoft FOSS fund - huge thanks to Microsoft and the engineers who voted to support Ajv development.

\n

This award will contribute to a long term maintenance of Ajv.

\n'},{title:"Ajv online event video uploaded",frontmatter:{news:!0,title:"Ajv online event video uploaded",date:"2021-05-24T00:00:00.000Z",more:!1},regularPath:"/news/2021-05-24-ajv-online-event-video.html",relativePath:"news/2021-05-24-ajv-online-event-video.md",key:"v-2abeb1ab",path:"/news/2021-05-24-ajv-online-event-video.html",excerpt:'

Huge thanks to everybody who joined, and to the speakers! The video of the event is available on YouTube.

\n'},{title:"Ajv options",frontmatter:{},regularPath:"/options.html",relativePath:"options.md",key:"v-7bf93309",path:"/options.html",headers:[{level:2,title:"Usage",slug:"usage"},{level:2,title:"Option defaults",slug:"option-defaults"},{level:2,title:"Strict mode options",slug:"strict-mode-options"},{level:3,title:"strict",slug:"strict"},{level:3,title:"strictSchema",slug:"strictschema"},{level:3,title:"strictNumbers",slug:"strictnumbers"},{level:3,title:"strictTypes",slug:"stricttypes"},{level:3,title:"strictTuples",slug:"stricttuples"},{level:3,title:"strictRequired",slug:"strictrequired"},{level:3,title:"allowUnionTypes",slug:"allowuniontypes"},{level:3,title:"allowMatchingProperties",slug:"allowmatchingproperties"},{level:3,title:"validateFormats",slug:"validateformats"},{level:2,title:"Validation and reporting options",slug:"validation-and-reporting-options"},{level:3,title:"$data",slug:"data"},{level:3,title:"allErrors",slug:"allerrors"},{level:3,title:"verbose",slug:"verbose"},{level:3,title:"discriminator",slug:"discriminator"},{level:3,title:"unicodeRegExp",slug:"unicoderegexp"},{level:3,title:"timestamp",slug:"timestamp"},{level:3,title:"parseDate",slug:"parsedate"},{level:3,title:"allowDate",slug:"allowdate"},{level:3,title:"int32range",slug:"int32range"},{level:3,title:"$comment",slug:"comment"},{level:3,title:"formats",slug:"formats"},{level:3,title:"keywords",slug:"keywords"},{level:3,title:"schemas",slug:"schemas"},{level:3,title:"logger",slug:"logger"},{level:3,title:"loadSchema",slug:"loadschema"},{level:2,title:"Options to modify validated data",slug:"options-to-modify-validated-data"},{level:3,title:"removeAdditional",slug:"removeadditional"},{level:3,title:"useDefaults",slug:"usedefaults"},{level:3,title:"coerceTypes",slug:"coercetypes"},{level:2,title:"Advanced options",slug:"advanced-options"},{level:3,title:"meta",slug:"meta"},{level:3,title:"validateSchema",slug:"validateschema"},{level:3,title:"addUsedSchema",slug:"addusedschema"},{level:3,title:"inlineRefs",slug:"inlinerefs"},{level:3,title:"passContext",slug:"passcontext"},{level:3,title:"loopRequired",slug:"looprequired"},{level:3,title:"loopEnum",slug:"loopenum"},{level:3,title:"ownProperties",slug:"ownproperties"},{level:3,title:"multipleOfPrecision",slug:"multipleofprecision"},{level:3,title:"messages",slug:"messages"},{level:3,title:"uriResolver",slug:"uriresolver"},{level:3,title:"code",slug:"code"}]},{title:"Extending Ajv",frontmatter:{},regularPath:"/packages/",relativePath:"packages/README.md",key:"v-07fb5e62",path:"/packages/",headers:[{level:2,title:"Plugins",slug:"plugins"},{level:2,title:"Related packages",slug:"related-packages"}]},{title:"Ajv News",frontmatter:{newsIndex:!0,editLink:!1},regularPath:"/news/",relativePath:"news/README.md",key:"v-506a67bc",path:"/news/"},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-cli/edit/master/README.md"},regularPath:"/packages/ajv-cli.html",relativePath:"packages/ajv-cli.md",key:"v-19f2c039",path:"/packages/ajv-cli.html",headers:[{level:2,title:"Contents",slug:"contents"},{level:2,title:"Installation",slug:"installation"},{level:2,title:"JSON schema language and version",slug:"json-schema-language-and-version"},{level:2,title:"Commands",slug:"commands"},{level:3,title:"Help command",slug:"help-command"},{level:3,title:"Validate data",slug:"validate-data"},{level:3,title:"Compile schemas",slug:"compile-schemas"},{level:3,title:"Migrate schemas",slug:"migrate-schemas"},{level:3,title:"Test validation result",slug:"test-validation-result"},{level:2,title:"Ajv options",slug:"ajv-options"},{level:2,title:"Version History",slug:"version-history"},{level:2,title:"Licence",slug:"licence"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-errors/edit/master/README.md"},regularPath:"/packages/ajv-errors.html",relativePath:"packages/ajv-errors.md",key:"v-b99d2c2e",path:"/packages/ajv-errors.html",headers:[{level:2,title:"Contents",slug:"contents"},{level:2,title:"Install",slug:"install"},{level:2,title:"Usage",slug:"usage"},{level:3,title:"Single message",slug:"single-message"},{level:3,title:"Messages for keywords",slug:"messages-for-keywords"},{level:3,title:"Messages for properties and items",slug:"messages-for-properties-and-items"},{level:3,title:"Default message",slug:"default-message"},{level:2,title:"Templates",slug:"templates"},{level:2,title:"Options",slug:"options"},{level:2,title:"Supporters",slug:"supporters"},{level:2,title:"Enterprise support",slug:"enterprise-support"},{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"License",slug:"license"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-formats/edit/master/README.md"},regularPath:"/packages/ajv-formats.html",relativePath:"packages/ajv-formats.md",key:"v-6731dec1",path:"/packages/ajv-formats.html",headers:[{level:2,title:"Usage",slug:"usage"},{level:2,title:"Formats",slug:"formats"},{level:2,title:"Keywords to compare values: formatMaximum / formatMinimum and formatExclusiveMaximum / formatExclusiveMinimum",slug:"keywords-to-compare-values-formatmaximum-formatminimum-and-formatexclusivemaximum-formatexclusiveminimum"},{level:2,title:"Options",slug:"options"},{level:2,title:"Tests",slug:"tests"},{level:2,title:"License",slug:"license"}]},{title:"Security considerations",frontmatter:{},regularPath:"/security.html",relativePath:"security.md",key:"v-bb53a316",path:"/security.html",headers:[{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"Untrusted schemas",slug:"untrusted-schemas"},{level:2,title:"Circular references in JavaScript objects",slug:"circular-references-in-javascript-objects"},{level:2,title:"Security risks of trusted schemas",slug:"security-risks-of-trusted-schemas"},{level:2,title:"ReDoS attack",slug:"redos-attack"},{level:2,title:"Content Security Policy",slug:"content-security-policy"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-i18n/edit/master/README.md"},regularPath:"/packages/ajv-i18n.html",relativePath:"packages/ajv-i18n.md",key:"v-7f55ccc9",path:"/packages/ajv-i18n.html",headers:[{level:2,title:"Supported locales",slug:"supported-locales"},{level:2,title:"Install",slug:"install"},{level:2,title:"Usage",slug:"usage"},{level:2,title:"Tests",slug:"tests"},{level:2,title:"Contributing",slug:"contributing"},{level:2,title:"Contributors of locales",slug:"contributors-of-locales"},{level:2,title:"Enterprise support",slug:"enterprise-support"},{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"License",slug:"license"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-keywords/edit/master/README.md"},regularPath:"/packages/ajv-keywords.html",relativePath:"packages/ajv-keywords.md",key:"v-bf7e876e",path:"/packages/ajv-keywords.html",headers:[{level:2,title:"Contents",slug:"contents"},{level:2,title:"Install",slug:"install"},{level:2,title:"Usage",slug:"usage"},{level:2,title:"Keywords",slug:"keywords"},{level:3,title:"Types",slug:"types"},{level:3,title:"Keywords for numbers",slug:"keywords-for-numbers"},{level:3,title:"Keywords for strings",slug:"keywords-for-strings"},{level:3,title:"Keywords for arrays",slug:"keywords-for-arrays"},{level:3,title:"Keywords for objects",slug:"keywords-for-objects"},{level:3,title:"Keywords for all types",slug:"keywords-for-all-types"},{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"Open-source software support",slug:"open-source-software-support"},{level:2,title:"License",slug:"license"}]},{title:"Standalone validation code",frontmatter:{},regularPath:"/standalone.html",relativePath:"standalone.md",key:"v-20f55eeb",path:"/standalone.html",headers:[{level:2,title:"Two-step process",slug:"two-step-process"},{level:3,title:"Generating function(s) using CLI",slug:"generating-function-s-using-cli"},{level:3,title:"Generating using the JS library",slug:"generating-using-the-js-library"},{level:2,title:"Using the validation function(s)",slug:"using-the-validation-function-s"},{level:3,title:"Validating a single schemas using the JS library - ES6 and CJS",slug:"validating-a-single-schemas-using-the-js-library-es6-and-cjs"},{level:3,title:"Validating multiple schemas using the JS library - ES6 and CJS",slug:"validating-multiple-schemas-using-the-js-library-es6-and-cjs"},{level:3,title:"Validating multiple schemas using the JS library - ES6 and ESM",slug:"validating-multiple-schemas-using-the-js-library-es6-and-esm"},{level:3,title:"Requirement at runtime",slug:"requirement-at-runtime"},{level:2,title:"Configuration and limitations",slug:"configuration-and-limitations"}]},{title:"Strict mode",frontmatter:{},regularPath:"/strict-mode.html",relativePath:"strict-mode.md",key:"v-74774829",path:"/strict-mode.html",headers:[{level:2,title:"JSON Type Definition schemas",slug:"json-type-definition-schemas"},{level:2,title:"JSON Schema schemas",slug:"json-schema-schemas"},{level:3,title:"Prohibit ignored keywords",slug:"prohibit-ignored-keywords"},{level:3,title:"Prevent unexpected validation",slug:"prevent-unexpected-validation"},{level:3,title:"Strict types",slug:"strict-types"},{level:3,title:"Strict number validation",slug:"strict-number-validation"}]},{title:"What users say",frontmatter:{},regularPath:"/testimonials.html",relativePath:"testimonials.md",key:"v-90fdf4e6",path:"/testimonials.html"},{title:"Changes from Ajv v6.12.6 to v8.0.0",frontmatter:{},regularPath:"/v6-to-v8-migration.html",relativePath:"v6-to-v8-migration.md",key:"v-114a7465",path:"/v6-to-v8-migration.html",headers:[{level:2,title:"New features",slug:"new-features"},{level:2,title:"Better TypeScript support",slug:"better-typescript-support"},{level:2,title:"Potential migration difficulties",slug:"potential-migration-difficulties"},{level:2,title:"API changes",slug:"api-changes"},{level:3,title:"Added options",slug:"added-options"},{level:3,title:"Changed options",slug:"changed-options"},{level:3,title:"Removed options",slug:"removed-options"}]}],themeConfig:{logo:"/img/ajv.svg",nav:[{text:"Home",link:"/"},{text:"Guide",items:[{link:"/guide/why-ajv",text:"Why use Ajv"},{link:"/guide/getting-started",text:"Getting started"},{link:"/guide/typescript",text:"Using with TypeScript"},{link:"/guide/schema-language",text:"Choosing schema language"},{link:"/guide/managing-schemas",text:"Managing schemas"},{link:"/guide/combining-schemas",text:"Combining schemas"},{link:"/guide/formats",text:"Format validation"},{link:"/guide/modifying-data",text:"Modifying data"},{link:"/guide/user-keywords",text:"User-defined keywords"},{link:"/guide/async-validation",text:"Asynchronous validation"},{link:"/guide/environments",text:"Execution environments"}]},{text:"Reference",items:[{link:"/api",text:"API Reference"},{link:"/options",text:"Ajv options"},{link:"/json-schema",text:"JSON Schema"},{link:"/json-type-definition",text:"JSON Type Definition"},{link:"/strict-mode",text:"Strict mode"},{link:"/standalone",text:"Standalone validation code"},{link:"/keywords",text:"User defined keywords"},{link:"/coercion",text:"Type coercion rules"}]},{text:"Learn more",items:[{text:"Extending Ajv",items:[{link:"/packages/",text:"Extending Ajv"},{link:"/packages/ajv-cli",text:"ajv-cli"},{link:"/packages/ajv-errors",text:"ajv-errors"},{link:"/packages/ajv-formats",text:"ajv-formats"},{link:"/packages/ajv-i18n",text:"ajv-i18n"},{link:"/packages/ajv-keywords",text:"ajv-keywords"}]},{text:"Contributors",items:[{link:"/contributing",text:"Contributing guide"},{link:"/codegen",text:"Code generation design"},{link:"/components",text:"Code components"},{link:"/code_of_conduct",text:"Code of Conduct"}]},{text:"Information",items:[{link:"/news/",text:"News"},{link:"/faq",text:"FAQ"},{link:"/security",text:"Security"},{link:"/v6-to-v8-migration",text:"Migrate from v6"},{link:"/testimonials",text:"What users say"},{link:"/license",text:"License"}]}]}],sidebar:[{title:"Guide",children:["/guide/why-ajv","/guide/getting-started","/guide/typescript","/guide/schema-language","/guide/managing-schemas","/guide/combining-schemas","/guide/formats","/guide/modifying-data","/guide/user-keywords","/guide/async-validation","/guide/environments"]},{title:"Reference",children:["/api","/options","/json-schema","/json-type-definition","/strict-mode","/standalone","/keywords","/coercion"]},{title:"Extending Ajv",children:[["/packages/","Extending Ajv"],["/packages/ajv-formats","ajv-formats"],["/packages/ajv-keywords","ajv-keywords"],["/packages/ajv-errors","ajv-errors"],["/packages/ajv-i18n","ajv-i18n"],["/packages/ajv-cli","ajv-cli"]]},{title:"Contributors",children:["/contributing","/codegen","/components",["/code_of_conduct","Code of conduct"]]},{title:"Information",children:["/news/","/faq","/security",["/v6-to-v8-migration","Migrate from v6 to v8"],"/testimonials",["/license","License"]]}],repo:"ajv-validator/ajv",docsDir:"docs",editLinks:!0,activeHeaderLinks:!1}};n(233);Kn.component("Button",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,377))),Kn.component("Column",()=>Promise.all([n.e(0),n.e(26)]).then(n.bind(null,378))),Kn.component("Columns",()=>Promise.all([n.e(0),n.e(27)]).then(n.bind(null,434))),Kn.component("Contributors",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,379))),Kn.component("Feature",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,380))),Kn.component("Features",()=>Promise.all([n.e(0),n.e(28)]).then(n.bind(null,435))),Kn.component("FooterColumn",()=>Promise.all([n.e(0),n.e(29)]).then(n.bind(null,381))),Kn.component("FooterColumns",()=>Promise.all([n.e(0),n.e(30)]).then(n.bind(null,436))),Kn.component("GitHub",()=>Promise.all([n.e(0),n.e(31)]).then(n.bind(null,382))),Kn.component("HeroSection",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,437))),Kn.component("HomeSection",()=>Promise.all([n.e(0),n.e(33)]).then(n.bind(null,383))),Kn.component("HomePage",()=>Promise.all([n.e(0),n.e(32)]).then(n.bind(null,438))),Kn.component("NewsHome",()=>Promise.all([n.e(0),n.e(34)]).then(n.bind(null,384))),Kn.component("NewsIndex",()=>n.e(43).then(n.bind(null,385))),Kn.component("NewsPost",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,386))),Kn.component("NewsPostMeta",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,387))),Kn.component("Projects",()=>Promise.all([n.e(0),n.e(35)]).then(n.bind(null,439))),Kn.component("Sponsors",()=>Promise.all([n.e(0),n.e(36)]).then(n.bind(null,388))),Kn.component("Subscribe",()=>Promise.all([n.e(0),n.e(37)]).then(n.bind(null,440))),Kn.component("Testimonial",()=>Promise.all([n.e(0),n.e(38)]).then(n.bind(null,389))),Kn.component("Testimonials",()=>Promise.all([n.e(0),n.e(39)]).then(n.bind(null,441))),Kn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,390))),Kn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,373))),Kn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,374)));n(234);var Es=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{}],As=[];class Ts extends class{constructor(){this.store=new Kn({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Kn.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Ts.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:cs,getVueComponent:us});var Ls={install(e){const t=new Ts;e.$vuepress=t,e.prototype.$vuepress=t}};function Rs(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var Ms={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return ps("pageKey",t),Kn.component(t)||Kn.component(t,ss(t)),Kn.component(t)?e(t):e("")}},Ns={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},Is={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Ds=(n(235),n(236),Object(Os.a)(Is,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Fs={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Kn.config.productionTip=!1,Kn.use(Va),Kn.use(Ls),Kn.mixin(function(e,t,n=Kn){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!Kn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(Rs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";Rs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";Rs(e,o)?r(o):Rs(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Es.filter(e=>"function"==typeof e).map(t=>t({Vue:Kn,options:r,router:n,siteData:$s,isServer:e})))}catch(e){console.error(e)}return{app:new Kn(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},As.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/code_of_conduct/index.html b/code_of_conduct/index.html index 071f8199e..31e0ea452 100644 --- a/code_of_conduct/index.html +++ b/code_of_conduct/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/codegen.html b/codegen.html index 72daf1123..963565790 100644 --- a/codegen.html +++ b/codegen.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/coercion.html b/coercion.html index a72f0ebb3..54fdc9485 100644 --- a/coercion.html +++ b/coercion.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/components.html b/components.html index f800c5979..cd59ffc30 100644 --- a/components.html +++ b/components.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/contributing/index.html b/contributing/index.html index 7ef11d588..d43f7fcdf 100644 --- a/contributing/index.html +++ b/contributing/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/faq.html b/faq.html index d71038129..41526c758 100644 --- a/faq.html +++ b/faq.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/async-validation.html b/guide/async-validation.html index b73f32852..582de4d34 100644 --- a/guide/async-validation.html +++ b/guide/async-validation.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/combining-schemas.html b/guide/combining-schemas.html index 72f27b7c8..3265b9c0b 100644 --- a/guide/combining-schemas.html +++ b/guide/combining-schemas.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/environments.html b/guide/environments.html index 19f0360b8..3e8323c4e 100644 --- a/guide/environments.html +++ b/guide/environments.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/formats.html b/guide/formats.html index 4255169f4..cbe777066 100644 --- a/guide/formats.html +++ b/guide/formats.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/getting-started.html b/guide/getting-started.html index 7a9c47f61..49c990c40 100644 --- a/guide/getting-started.html +++ b/guide/getting-started.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/managing-schemas.html b/guide/managing-schemas.html index 0d67f662f..848ed601c 100644 --- a/guide/managing-schemas.html +++ b/guide/managing-schemas.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/modifying-data.html b/guide/modifying-data.html index 27b27b506..24d73a61c 100644 --- a/guide/modifying-data.html +++ b/guide/modifying-data.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/schema-language.html b/guide/schema-language.html index 901decd83..ddf9c687d 100644 --- a/guide/schema-language.html +++ b/guide/schema-language.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/typescript.html b/guide/typescript.html index e37518bd6..b2a55d28b 100644 --- a/guide/typescript.html +++ b/guide/typescript.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/user-keywords.html b/guide/user-keywords.html index fa375fa08..f36ede9c8 100644 --- a/guide/user-keywords.html +++ b/guide/user-keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/why-ajv.html b/guide/why-ajv.html index 81146ae72..bfd75f02b 100644 --- a/guide/why-ajv.html +++ b/guide/why-ajv.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/json-schema.html b/json-schema.html index 38fdc6c13..40c67e520 100644 --- a/json-schema.html +++ b/json-schema.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/json-type-definition.html b/json-type-definition.html index 00cab0610..a6fd868db 100644 --- a/json-type-definition.html +++ b/json-type-definition.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/keywords.html b/keywords.html index e9deb6c60..2eca779e1 100644 --- a/keywords.html +++ b/keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/license.html b/license.html index e79c2d067..49eddd601 100644 --- a/license.html +++ b/license.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2020-08-14-mozilla-grant-openjs-foundation.html b/news/2020-08-14-mozilla-grant-openjs-foundation.html index 337dc14f4..3c87f829a 100644 --- a/news/2020-08-14-mozilla-grant-openjs-foundation.html +++ b/news/2020-08-14-mozilla-grant-openjs-foundation.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2020-12-15-ajv-version-7-released.html b/news/2020-12-15-ajv-version-7-released.html index d55fd536c..2673b5b2e 100644 --- a/news/2020-12-15-ajv-version-7-released.html +++ b/news/2020-12-15-ajv-version-7-released.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-03-07-ajv-supports-json-type-definition.html b/news/2021-03-07-ajv-supports-json-type-definition.html index ea88e6361..185be7a75 100644 --- a/news/2021-03-07-ajv-supports-json-type-definition.html +++ b/news/2021-03-07-ajv-supports-json-type-definition.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-03-27-ajv-version-8-released.html b/news/2021-03-27-ajv-version-8-released.html index f588eef7d..11ee8472f 100644 --- a/news/2021-03-27-ajv-version-8-released.html +++ b/news/2021-03-27-ajv-version-8-released.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-04-24-ajv-online-event.html b/news/2021-04-24-ajv-online-event.html index 05e7401ca..77a9ecaea 100644 --- a/news/2021-04-24-ajv-online-event.html +++ b/news/2021-04-24-ajv-online-event.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-05-24-ajv-online-event-video.html b/news/2021-05-24-ajv-online-event-video.html index 0bddd7637..51e693dac 100644 --- a/news/2021-05-24-ajv-online-event-video.html +++ b/news/2021-05-24-ajv-online-event-video.html @@ -18,8 +18,8 @@ - - + + - + diff --git a/news/2021-07-22-ajv-microsoft-foss-fund-award.html b/news/2021-07-22-ajv-microsoft-foss-fund-award.html index 4c233b721..f7dc1de92 100644 --- a/news/2021-07-22-ajv-microsoft-foss-fund-award.html +++ b/news/2021-07-22-ajv-microsoft-foss-fund-award.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/index.html b/news/index.html index 594ad84c0..44e5dbeb1 100644 --- a/news/index.html +++ b/news/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/options.html b/options.html index a030090d4..9fda3c1f3 100644 --- a/options.html +++ b/options.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-cli.html b/packages/ajv-cli.html index 6ba9c4ebf..69676aea7 100644 --- a/packages/ajv-cli.html +++ b/packages/ajv-cli.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-errors.html b/packages/ajv-errors.html index 645acd284..14bf2f474 100644 --- a/packages/ajv-errors.html +++ b/packages/ajv-errors.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-formats.html b/packages/ajv-formats.html index 35bd8cca8..3b36e0944 100644 --- a/packages/ajv-formats.html +++ b/packages/ajv-formats.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-i18n.html b/packages/ajv-i18n.html index c00b377c4..490621efc 100644 --- a/packages/ajv-i18n.html +++ b/packages/ajv-i18n.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-keywords.html b/packages/ajv-keywords.html index 0709a925c..b28edcb86 100644 --- a/packages/ajv-keywords.html +++ b/packages/ajv-keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/index.html b/packages/index.html index a718d8d37..f849c66ee 100644 --- a/packages/index.html +++ b/packages/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/security.html b/security.html index 94f806b16..42b381cda 100644 --- a/security.html +++ b/security.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/standalone.html b/standalone.html index ce602b6b9..5a0d5e0d3 100644 --- a/standalone.html +++ b/standalone.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/strict-mode.html b/strict-mode.html index b4583275b..da984e873 100644 --- a/strict-mode.html +++ b/strict-mode.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/testimonials.html b/testimonials.html index bae72c3ca..34e7eccad 100644 --- a/testimonials.html +++ b/testimonials.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/v6-to-v8-migration.html b/v6-to-v8-migration.html index 5b9125abf..50d6dcd47 100644 --- a/v6-to-v8-migration.html +++ b/v6-to-v8-migration.html @@ -18,8 +18,8 @@ - - + +