From 09a6ca3e27033b797a2b38cc22c78a5a199c2372 Mon Sep 17 00:00:00 2001 From: stalniy Date: Tue, 21 Nov 2023 10:11:43 +0000 Subject: [PATCH] chore(release): deploy ./v6 --- index.html | 2 +- .../{a.f6973802.json => a.5409590b.json} | 2 +- ...ntent_pages_searchIndexes.en.40e0a1d7.json | 1 + ...ntent_pages_searchIndexes.en.4b3e849b.json | 1 - ... content_pages_summaries.en.3ae7a070.json} | 2 +- ...trap.6cc06c45.js => bootstrap.ac7e646d.js} | 4 +- ...06c45.js.map => bootstrap.ac7e646d.js.map} | 2 +- .../ability-to-database-query/index.html | 2 +- v6/en/advanced/customize-ability/index.html | 2 +- v6/en/advanced/debugging-testing/index.html | 2 +- v6/en/advanced/typescript/index.html | 2 +- v6/en/api/casl-ability-extra/index.html | 2 +- v6/en/api/casl-ability/index.html | 2 +- v6/en/cookbook/cache-rules/index.html | 2 +- v6/en/cookbook/claim-authorization/index.html | 2 +- v6/en/cookbook/intro/index.html | 2 +- .../less-confusing-can-api/index.html | 2 +- .../index.html | 2 +- .../roles-with-static-permissions/index.html | 2 +- v6/en/guide/conditions-in-depth/index.html | 2 +- v6/en/guide/define-aliases/index.html | 2 +- v6/en/guide/define-rules/index.html | 2 +- v6/en/guide/install/index.html | 2 +- v6/en/guide/intro/index.html | 2 +- v6/en/guide/restricting-fields/index.html | 2 +- v6/en/guide/subject-type-detection/index.html | 2 +- v6/en/index.html | 2 +- v6/en/package/casl-angular/index.html | 2 +- v6/en/package/casl-aurelia/index.html | 2 +- v6/en/package/casl-mongoose/index.html | 2 +- v6/en/package/casl-prisma/index.html | 2 +- v6/en/package/casl-react/index.html | 2 +- v6/en/package/casl-vue/index.html | 2 +- v6/en/support-casljs/index.html | 2 +- v6/index.html | 2 +- ...trap.6cc06c45.js => bootstrap.ac7e646d.js} | 2 +- v6/sitemap.xml | 64 +++++++++---------- v6/sw.js | 2 +- v6/sw.js.map | 2 +- 39 files changed, 70 insertions(+), 70 deletions(-) rename v6/assets/{a.f6973802.json => a.5409590b.json} (99%) create mode 100644 v6/assets/content_pages_searchIndexes.en.40e0a1d7.json delete mode 100644 v6/assets/content_pages_searchIndexes.en.4b3e849b.json rename v6/assets/{content_pages_summaries.en.d03f4097.json => content_pages_summaries.en.3ae7a070.json} (79%) rename v6/{bootstrap.6cc06c45.js => bootstrap.ac7e646d.js} (99%) rename v6/{bootstrap.6cc06c45.js.map => bootstrap.ac7e646d.js.map} (99%) rename v6/legacy/{bootstrap.6cc06c45.js => bootstrap.ac7e646d.js} (99%) diff --git a/index.html b/index.html index 55b6ca303..d3698f7f5 100644 --- a/index.html +++ b/index.html @@ -37,7 +37,7 @@ - + \ No newline at end of file diff --git a/v6/assets/a.f6973802.json b/v6/assets/a.5409590b.json similarity index 99% rename from v6/assets/a.f6973802.json rename to v6/assets/a.5409590b.json index 22fede0ee..650f7f8ce 100644 --- a/v6/assets/a.f6973802.json +++ b/v6/assets/a.5409590b.json @@ -1 +1 @@ -{"title":"CASL Angular","categories":["package"],"order":115,"meta":{"keywords":null,"description":null},"content":"

CASL Angular

\n

\"@casl/angular\n\"\"\n\"CASL

\n

This package allows to integrate @casl/ability with Angular application. It provides AblePipe and AblePurePipe to Angular templates, so you can show or hide components, buttons, etc based on user ability to see them.

\n

Installation

\n

The latest version of this package is compiled by Ivy, so apps that do not use Ivy are no longer supported.

\n
npm install @casl/angular @casl/ability\n# or\nyarn add @casl/angular @casl/ability\n# or\npnpm add @casl/angular @casl/ability\n
\n

Configure AppModule

\n

To add pipes into your application's templates, you need to import AbilityModule in your AppModule and

\n
import { NgModule } from '@angular/core';\nimport { AbilityModule } from '@casl/angular';\nimport { Ability, PureAbility } from '@casl/ability';\n\n@NgModule({\n  imports: [\n    // other modules\n    AbilityModule\n  ],\n  providers: [\n    { provide: Ability, useValue: new Ability() },\n    { provide: PureAbility, useExisting: Ability }\n  ]\n  // other properties\n})\nexport class AppModule {}\n
\n

The 2nd provider provides instance of PureAbility, so pipes can inject it later. This pipes inject PureAbility (not Ability) because this allows an application developer to decide how to configure actions, subjects and conditions. Also this is the only way to get maximum from tree shaking (e.g., if you don't need conditions you can use PureAbility and shrink @casl/ability size).

\n
\n

Read CASL and TypeScript to get more details about Ability type configuration.

\n
\n

Update Ability instance

\n

Majority of applications that need permission checking support have something like AuthService or LoginService or Session service (name it as you wish) which is responsible for user login/logout functionality. Whenever user login (and logout), we need to update Ability instance with new rules.

\n

Let's imagine that server returns user with a role on login:

\n
import { Ability, AbilityBuilder } from '@casl/ability';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ provideIn: 'root' })\nexport class Session {\n  private token: string\n\n  constructor(private ability: Ability) {}\n\n  login(details) {\n    const params = { method: 'POST', body: JSON.stringify(details) };\n    return fetch('path/to/api/login', params)\n      .then(response => response.json())\n      .then((session) => {\n        this.updateAbility(session.user);\n        this.token = session.token;\n      });\n  }\n\n  private updateAbility(user) {\n    const { can, rules } = new AbilityBuilder(Ability);\n\n    if (user.role === 'admin') {\n      can('manage', 'all');\n    } else {\n      can('read', 'all');\n    }\n\n    this.ability.update(rules);\n  }\n\n  logout() {\n    this.token = null;\n    this.ability.update([]);\n  }\n}\n
\n
\n

See Define rules to get more information of how to define Ability

\n
\n

Then use this Session service in LoginComponent:

\n
import { Component } from '@angular/core';\nimport { Session } from '../services/Session';\n\n@Component({\n  selector: 'login-form',\n  template: `\n    <form (ngSubmit)="login()">\n      <input type="email" [(ngModel)]="email" />\n      <input type="password" [(ngModel)]="password" />\n      <button type="submit">Login</button>\n    </form>\n  `\n})\nexport class LoginForm {\n  email: string;\n  password: string;\n\n  constructor(private session: Session) {}\n\n  login() {\n    const { email, password } = this;\n    return this.session.login({ email, password });\n  }\n}\n
\n

Check permissions in templates using AbilityService

\n

AbilityService is a service that provides ability$ observable. This observable injects provided in DI PureAbility instance and emits it each time its rules are changed. This allows efficiently use permissions checks, especially in case we use ChangeDetectionStrategy.OnPush.

\n

Let's first see how it can be used in any component:

\n
@Component({\n  selector: 'my-home',\n  template: `\n    <ng-container *ngIf="ability$ | async as ability">\n      <h1>Home Page</h1>\n      <button *ngIf="ability.can('create', 'Post')">Create Post</button>\n    </ng-container>\n  `\n})\nexport class HomeComponent {\n  readonly ability$: Observable<AppAbility>;\n\n  constructor(abilityService: AbilityService<AppAbility>) {\n    this.ability$ = abilityService.ability$;\n  }\n}\n
\n

It also can be safely used inside *ngFor and other directives. If we use ChangeDetectionStrategy.OnPush, it will give us additional performance improvements because ability.can(...) won't be called without a need.

\n

This approach works good from performance point of view because it creates only single subscription per component (not per check as in case of ablePure pipe) and doesn't require our component to use Default or OnPush strategy.

\n

Note: provide this service at root injector level as we need only 1 instance of it.

\n

But let's also see how we can do permission checks using pipes and what are performance implications of that:

\n

Check permissions in templates using pipe

\n

To check permissions in any template you can use AblePipe:

\n
<div *ngIf="'create' | able: 'Post'">\n  <a (click)="createPost()">Add Post</a>\n</div>\n
\n

Why pipe and not directive?

\n

Directive cannot be used to pass values into inputs of other components. For example, we need to enable or disable a button based on user's ability to create a post. With directive we cannot do this but we can do this with pipe:

\n
<button [disabled]="!('create' | able: 'Post')">Add Post</button>\n
\n

Performance considerations

\n

There are 2 pipes in @casl/angular:

\n\n

So, when should we use which?

\n
\n

If you are in doubt, then use ablePure for action and subject type checks, and able for all others

\n
\n

According to Angular documentation pure pipes are called only if their arguments are changed. This means that you can't use mutable objects with pure pipes because changes in that objects don't trigger pure pipe re-evaluation. But a good thing is that Angular creates only single instance of a pure pipe for the whole app and reuses it across components, this way it safes component instantiation time and memory footprint.

\n

Due to open feature in Angular, we need to pass the result of ablePure pipe to async pipe. So, instead of

\n
<div *ngIf="'create' | ablePure: 'Todo'">...</div>\n
\n

we need to write:

\n
<div *ngIf="'create' | ablePure: 'Todo' | async">...</div>\n
\n
\n

ablePure pipe returns an Observable<boolean>, so async pipe can effectively unwrap it

\n
\n

For apps that mutate application state, we need to use impure able pipe as it can detect changes in object properties. Don't worry, checks by action and subject type are very fast and are done in O(1) time. The performance of checks by action and subject object are a bit slower and depend on the amount of rules for a particular subject type and used conditions but usually this won't become a bottle neck for the app.

\n

TypeScript support

\n

This package is written in TypeScript, so it will warn you about wrong usage.

\n

It may be a bit tedious to use application specific abilities in Angular app because everywhere you inject Ability instance you will need to import its generic parameters:

\n
import { Ability } from '@casl/ability';\nimport { Component } from '@angular/core';\nimport { AppAbilities } from '../services/AppAbility';\n\n@Component({\n  selector: 'todo-item'\n})\nexport class TodoItem {\n  constructor(\n    private ability: Ability<AppAbilities>\n  ) {}\n}\n
\n

To make the life easier, you can use AbilityClass<TAbility> class to utilize Companion object pattern:

\n
import { Ability, AbilityClass } from '@casl/ability';\n\ntype Actions = 'create' | 'read' | 'update' | 'delete';\ntype Subjects = 'Article' | 'User';\n\nexport type AppAbility = Ability<[Actions, Subjects]>;\nexport const AppAbility = Ability as AbilityClass<AppAbility>;\n
\n

And use AppAbility everywhere in your app:

\n
import { NgModule } from '@angular/core';\nimport { AppAbility } from './services/AppAbility';\n\n@NgModule({\n  // other configuration\n  providers: [\n    { provide: AppAbility, useValue: new AppAbility() },\n    { provide: PureAbility, useExisting: AppAbility },\n  ]\n})\nexport class AppModule {}\n
\n

Want to help?

\n

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for contributing.

\n

If you'd like to help us sustain our community and project, consider to become a financial contributor on Open Collective

\n
\n

See Support CASL for details

\n
\n

License

\n

MIT License

","headings":[{"id":"casl-angular","title":"CASL Angular"},{"id":"installation","title":"Installation"},{"id":"configure-app-module","title":"Configure AppModule"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates-using-ability-service","title":"Check permissions in templates using AbilityService"},{"id":"check-permissions-in-templates-using-pipe","title":"Check permissions in templates using pipe"},{"id":"why-pipe-and-not-directive","title":"Why pipe and not directive?"},{"id":"performance-considerations","title":"Performance considerations"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}],"id":"package/casl-angular"} \ No newline at end of file +{"title":"CASL Angular","categories":["package"],"order":115,"meta":{"keywords":null,"description":null},"content":"

CASL Angular

\n

\"@casl/angular\n\"\"\n\"CASL

\n

This package allows to integrate @casl/ability with Angular application. It provides AblePipe and AblePurePipe to Angular templates, so you can show or hide components, buttons, etc based on user ability to see them.

\n

Installation

\n

The latest version of this package is compiled by Ivy, so apps that do not use Ivy are no longer supported.

\n
npm install @casl/angular @casl/ability\n# or\nyarn add @casl/angular @casl/ability\n# or\npnpm add @casl/angular @casl/ability\n
\n

Configure AppModule

\n

To add pipes into your application's templates, you need to import AbilityModule in your AppModule and

\n
import { NgModule } from '@angular/core';\nimport { AbilityModule } from '@casl/angular';\nimport { Ability, PureAbility } from '@casl/ability';\n\n@NgModule({\n  imports: [\n    // other modules\n    AbilityModule\n  ],\n  providers: [\n    { provide: Ability, useValue: new Ability() },\n    { provide: PureAbility, useExisting: Ability }\n  ]\n  // other properties\n})\nexport class AppModule {}\n
\n

The 2nd provider provides instance of PureAbility, so pipes can inject it later. This pipes inject PureAbility (not Ability) because this allows an application developer to decide how to configure actions, subjects and conditions. Also this is the only way to get maximum from tree shaking (e.g., if you don't need conditions you can use PureAbility and shrink @casl/ability size).

\n
\n

Read CASL and TypeScript to get more details about Ability type configuration.

\n
\n

Update Ability instance

\n

Majority of applications that need permission checking support have something like AuthService or LoginService or Session service (name it as you wish) which is responsible for user login/logout functionality. Whenever user login (and logout), we need to update Ability instance with new rules.

\n

Let's imagine that server returns user with a role on login:

\n
import { Ability, AbilityBuilder } from '@casl/ability';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ provideIn: 'root' })\nexport class Session {\n  private token: string\n\n  constructor(private ability: Ability) {}\n\n  login(details) {\n    const params = { method: 'POST', body: JSON.stringify(details) };\n    return fetch('path/to/api/login', params)\n      .then(response => response.json())\n      .then((session) => {\n        this.updateAbility(session.user);\n        this.token = session.token;\n      });\n  }\n\n  private updateAbility(user) {\n    const { can, rules } = new AbilityBuilder(Ability);\n\n    if (user.role === 'admin') {\n      can('manage', 'all');\n    } else {\n      can('read', 'all');\n    }\n\n    this.ability.update(rules);\n  }\n\n  logout() {\n    this.token = null;\n    this.ability.update([]);\n  }\n}\n
\n
\n

See Define rules to get more information of how to define Ability

\n
\n

Then use this Session service in LoginComponent:

\n
import { Component } from '@angular/core';\nimport { Session } from '../services/Session';\n\n@Component({\n  selector: 'login-form',\n  template: `\n    <form (ngSubmit)="login()">\n      <input type="email" [(ngModel)]="email" />\n      <input type="password" [(ngModel)]="password" />\n      <button type="submit">Login</button>\n    </form>\n  `\n})\nexport class LoginForm {\n  email: string;\n  password: string;\n\n  constructor(private session: Session) {}\n\n  login() {\n    const { email, password } = this;\n    return this.session.login({ email, password });\n  }\n}\n
\n

Check permissions in templates using AbilityService

\n

AbilityService is a service that provides ability$ observable. This observable injects provided in DI PureAbility instance and emits it each time its rules are changed. This allows efficiently use permissions checks, especially in case we use ChangeDetectionStrategy.OnPush.

\n

Let's first see how it can be used in any component:

\n
@Component({\n  selector: 'my-home',\n  template: `\n    <ng-container *ngIf="ability$ | async as ability">\n      <h1>Home Page</h1>\n      <button *ngIf="ability.can('create', 'Post')">Create Post</button>\n    </ng-container>\n  `\n})\nexport class HomeComponent {\n  readonly ability$: Observable<AppAbility>;\n\n  constructor(abilityService: AbilityService<AppAbility>) {\n    this.ability$ = abilityService.ability$;\n  }\n}\n
\n

It also can be safely used inside *ngFor and other directives. If we use ChangeDetectionStrategy.OnPush, it will give us additional performance improvements because ability.can(...) won't be called without a need.

\n

This approach works good from performance point of view because it creates only single subscription per component (not per check as in case of ablePure pipe) and doesn't require our component to use Default or OnPush strategy.

\n

Note: provide this service at root injector level as we need only 1 instance of it.

\n

But let's also see how we can do permission checks using pipes and what are performance implications of that:

\n

Check permissions in templates using pipe

\n

To check permissions in any template you can use AblePipe:

\n
<div *ngIf="'create' | able: 'Post'">\n  <a (click)="createPost()">Add Post</a>\n</div>\n
\n

Why pipe and not directive?

\n

Directive cannot be used to pass values into inputs of other components. For example, we need to enable or disable a button based on user's ability to create a post. With directive we cannot do this but we can do this with pipe:

\n
<button [disabled]="!('create' | able: 'Post')">Add Post</button>\n
\n

Performance considerations

\n

There are 2 pipes in @casl/angular:

\n\n

So, when should we use which?

\n
\n

If you are in doubt, then use ablePure for action and subject type checks, and able for all others

\n
\n

According to Angular documentation pure pipes are called only if their arguments are changed. This means that you can't use mutable objects with pure pipes because changes in that objects don't trigger pure pipe re-evaluation. But a good thing is that Angular creates only single instance of a pure pipe for the whole app and reuses it across components, this way it safes component instantiation time and memory footprint.

\n

Due to open feature in Angular, we need to pass the result of ablePure pipe to async pipe. So, instead of

\n
<div *ngIf="'create' | ablePure: 'Todo'">...</div>\n
\n

we need to write:

\n
<div *ngIf="'create' | ablePure: 'Todo' | async">...</div>\n
\n
\n

ablePure pipe returns an Observable<boolean>, so async pipe can effectively unwrap it

\n
\n

For apps that mutate application state, we need to use impure able pipe as it can detect changes in object properties. Don't worry, checks by action and subject type are very fast and are done in O(1) time. The performance of checks by action and subject object are a bit slower and depend on the amount of rules for a particular subject type and used conditions but usually this won't become a bottle neck for the app.

\n

TypeScript support

\n

This package is written in TypeScript, so it will warn you about wrong usage.

\n

It may be a bit tedious to use application specific abilities in Angular app because everywhere you inject Ability instance you will need to import its generic parameters:

\n
import { Ability } from '@casl/ability';\nimport { Component } from '@angular/core';\nimport { AppAbilities } from '../services/AppAbility';\n\n@Component({\n  selector: 'todo-item'\n})\nexport class TodoItem {\n  constructor(\n    private ability: Ability<AppAbilities>\n  ) {}\n}\n
\n

To make the life easier, you can use AbilityClass<TAbility> class to utilize Companion object pattern:

\n
import { Ability, AbilityClass } from '@casl/ability';\n\ntype Actions = 'create' | 'read' | 'update' | 'delete';\ntype Subjects = 'Article' | 'User';\n\nexport type AppAbility = Ability<[Actions, Subjects]>;\nexport const AppAbility = Ability as AbilityClass<AppAbility>;\n
\n

And use AppAbility everywhere in your app:

\n
import { NgModule } from '@angular/core';\nimport { AppAbility } from './services/AppAbility';\n\n@NgModule({\n  // other configuration\n  providers: [\n    { provide: AppAbility, useValue: new AppAbility() },\n    { provide: PureAbility, useExisting: AppAbility },\n  ]\n})\nexport class AppModule {}\n
\n

Want to help?

\n

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for contributing.

\n

If you'd like to help us sustain our community and project, consider to become a financial contributor on Open Collective

\n
\n

See Support CASL for details

\n
\n

License

\n

MIT License

","headings":[{"id":"casl-angular","title":"CASL Angular"},{"id":"installation","title":"Installation"},{"id":"configure-app-module","title":"Configure AppModule"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates-using-ability-service","title":"Check permissions in templates using AbilityService"},{"id":"check-permissions-in-templates-using-pipe","title":"Check permissions in templates using pipe"},{"id":"why-pipe-and-not-directive","title":"Why pipe and not directive?"},{"id":"performance-considerations","title":"Performance considerations"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}],"id":"package/casl-angular"} \ No newline at end of file diff --git a/v6/assets/content_pages_searchIndexes.en.40e0a1d7.json b/v6/assets/content_pages_searchIndexes.en.40e0a1d7.json new file mode 100644 index 000000000..4c1d95c91 --- /dev/null +++ b/v6/assets/content_pages_searchIndexes.en.40e0a1d7.json @@ -0,0 +1 @@ +{"index":{"_tree":{"4":{"":{"1":{"df":1,"ds":{"m":1}}}},"16":{"":{"1":{"df":1,"ds":{"m":1}}}},"c":{"ustom":{"ize":{"":{"0":{"df":1,"ds":{"0":1}}}},"":{"1":{"df":4,"ds":{"0":3,"c":1,"l":1,"n":1}}}},"reate":{"mongoability":{"":{"1":{"df":1,"ds":{"4":2}}}},"aliasresolver":{"":{"1":{"df":1,"ds":{"4":1}}}}},"o":{"n":{"ditions":{"":{"0":{"df":1,"ds":{"7":1}},"1":{"df":3,"ds":{"0":2,"7":1,"a":1}},"2":{"df":1,"ds":{"n":1}}}},"tributions":{"":{"1":{"df":1,"ds":{"g":1}}}},"clusion":{"":{"1":{"df":2,"ds":{"h":1,"i":1}}}},"f":{"using":{"":{"0":{"df":1,"ds":{"f":1}}}},"igure":{"":{"1":{"df":1,"ds":{"j":1}}}}},"s":{"tructor":{"":{"1":{"df":1,"ds":{"4":2}}}},"iderations":{"":{"1":{"df":1,"ds":{"j":1}}}}},"verter":{"":{"1":{"df":1,"ds":{"l":1}}}}},"okbook":{"":{"0":{"df":1,"ds":{"g":1}},"1":{"df":1,"ds":{"g":2}}}},"m":{"mon":{"":{"1":{"df":1,"ds":{"7":1}}}},"po":{"nent":{"":{"1":{"df":2,"ds":{"m":1,"o":2}}}},"sition":{"":{"1":{"df":1,"ds":{"o":1}}}}}}},"dn":{"":{"1":{"df":1,"ds":{"9":1}}}},"sp":{"":{"1":{"df":1,"ds":{"9":1}}}},"la":{"ss":{"es":{"":{"1":{"df":2,"ds":{"3":1,"c":1}}}},"":{"1":{"df":1,"ds":{"8":1}}}},"im":{"":{"0":{"df":1,"ds":{"d":1}}}}},"a":{"sl":{"":{"0":{"df":8,"ds":{"4":1,"5":1,"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}},"1":{"df":9,"ds":{"7":1,"a":1,"c":1,"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}},"2":{"df":1,"ds":{"n":1}}}},"che":{"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":1,"ds":{"e":1}}}}},"heck":{"ing":{"":{"1":{"df":2,"ds":{"7":1,"a":1}}}},"":{"1":{"df":2,"ds":{"j":2,"l":1}}}}},"query":{"":{"0":{"df":1,"ds":{"1":1}},"1":{"df":2,"ds":{"7":2,"n":1}}}},"d":{"atabase":{"":{"0":{"df":1,"ds":{"1":1}}}},"e":{"bugging":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}},"fine":{"ability":{"":{"1":{"df":2,"ds":{"4":1,"8":4}}}},"":{"0":{"df":2,"ds":{"6":1,"8":1}}}},"p":{"recated":{"":{"1":{"df":1,"ds":{"4":1}}}},"th":{"":{"0":{"df":1,"ds":{"7":1}}}}},"v":{"":{"1":{"df":1,"ds":{"9":1}}}},"tect":{"subjecttype":{"":{"1":{"df":1,"ds":{"4":2}}}},"ion":{"":{"0":{"df":1,"ds":{"c":1}},"1":{"df":1,"ds":{"c":1}}}},"":{"1":{"df":1,"ds":{"c":1}}}},"mo":{"":{"1":{"df":4,"ds":{"e":1,"g":1,"h":1,"i":1}}}}},"o":{"t":{"":{"1":{"df":1,"ds":{"3":1}}}},"wnload":{"":{"1":{"df":1,"ds":{"9":1}}}}},"irective":{"":{"1":{"df":1,"ds":{"j":1}}}}},"t":{"ype":{"s":{"cript":{"":{"0":{"df":1,"ds":{"3":1}},"1":{"df":6,"ds":{"j":1,"k":2,"l":1,"m":2,"n":1,"o":1}}}},"":{"1":{"df":3,"ds":{"3":1,"c":1,"o":1}}}},"":{"0":{"df":1,"ds":{"c":1}},"1":{"df":2,"ds":{"3":2,"c":2}}}},"hrowunlesscan":{"":{"1":{"df":1,"ds":{"4":1}}}},"a":{"g":{"":{"1":{"df":1,"ds":{"9":1}}}},"ble":{"":{"1":{"df":1,"ds":{"b":1}}}}},"oken":{"":{"1":{"df":1,"ds":{"e":1}}}},"e":{"mplates":{"":{"1":{"df":2,"ds":{"j":2,"l":1}}}},"st":{"ing":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}},"":{"2":{"df":1,"ds":{"n":1}}}}}},"i":{"n":{"fer":{"ence":{"":{"1":{"df":1,"ds":{"3":3}}}},"":{"1":{"df":1,"ds":{"3":1}}}},"cluded":{"":{"1":{"df":1,"ds":{"7":1}}}},"v":{"alid":{"":{"1":{"df":1,"ds":{"6":1}}}},"erted":{"":{"1":{"df":2,"ds":{"8":1,"a":1}}}}},"t":{"roduction":{"":{"0":{"df":2,"ds":{"a":1,"g":1}}}},"er":{"faces":{"":{"1":{"df":1,"ds":{"3":1}}}},"preter":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"sta":{"llation":{"":{"0":{"df":1,"ds":{"9":1}},"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}}},"nce":{"":{"1":{"df":4,"ds":{"j":1,"l":1,"m":3,"o":1}}}}}},"tem":{"s":{"":{"1":{"df":1,"ds":{"7":2}}}},"":{"1":{"df":1,"ds":{"7":1}}}},"ssue":{"":{"1":{"df":6,"ds":{"d":1,"e":1,"f":1,"g":1,"h":1,"i":1}}}},"mp":{"lementation":{"":{"1":{"df":1,"ds":{"0":1}}}},"erative":{"":{"1":{"df":1,"ds":{"m":1}}}}}},"s":{"u":{"pport":{"":{"0":{"df":1,"ds":{"3":1}},"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}},"ed":{"":{"1":{"df":1,"ds":{"7":1}}}}},"bject":{"":{"0":{"df":1,"ds":{"c":1}},"1":{"df":4,"ds":{"3":1,"4":1,"c":4,"n":1}}},"s":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"afer":{"":{"1":{"df":1,"ds":{"3":1}}}},"hape":{"":{"1":{"df":1,"ds":{"8":1}}}},"e":{"t":{"defaultmessage":{"":{"1":{"df":1,"ds":{"4":1}}}},"message":{"":{"1":{"df":1,"ds":{"4":1}}}}},"mantic":{"":{"1":{"df":1,"ds":{"9":1}}}},"ssion":{"":{"1":{"df":1,"ds":{"e":1}}}},"rvices":{"":{"1":{"df":1,"ds":{"h":1}}}}},"c":{"alar":{"":{"1":{"df":1,"ds":{"7":1}}}},"ript":{"":{"1":{"df":1,"ds":{"9":1}}}}},"olution":{"":{"1":{"df":6,"ds":{"d":1,"e":1,"f":1,"g":1,"h":1,"i":1}}}},"t":{"a":{"tic":{"":{"1":{"df":1,"ds":{"4":2}}}},"rted":{"":{"1":{"df":3,"ds":{"a":1,"l":1,"o":1}}}}},"orage":{"":{"1":{"df":1,"ds":{"e":1}}}}}},"a":{"p":{"i":{"":{"0":{"df":3,"ds":{"4":1,"5":1,"f":1}},"1":{"df":1,"ds":{"o":2}}}},"p":{"lication":{"":{"1":{"df":1,"ds":{"3":1}}}},"module":{"":{"1":{"df":1,"ds":{"j":1}}}}}},"":{"1":{"df":2,"ds":{"7":2,"m":1}}},"rray":{"":{"1":{"df":1,"ds":{"7":3}}}},"c":{"tion":{"":{"0":{"df":1,"ds":{"6":1}}}},"cess":{"":{"0":{"df":1,"ds":{"b":1}},"1":{"df":1,"ds":{"m":1}}},"ible":{"by":{"":{"1":{"df":1,"ds":{"k":2}}}},"":{"1":{"df":2,"ds":{"k":2,"n":1}},"2":{"df":1,"ds":{"n":1}}}}}},"void":{"":{"1":{"df":5,"ds":{"d":1,"e":1,"f":1,"g":1,"h":1}}}},"bilit":{"y":{"":{"0":{"df":4,"ds":{"0":1,"1":1,"4":1,"5":1}},"1":{"df":6,"ds":{"3":1,"4":1,"j":1,"l":1,"m":3,"o":2}}},"builder":{"":{"1":{"df":3,"ds":{"3":1,"4":5,"8":3}}}},"optionsof":{"":{"1":{"df":1,"ds":{"3":1}}}},"service":{"":{"1":{"df":1,"ds":{"j":1}}}}},"ies":{"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":1,"ds":{"i":1}}}}},"l":{"iases":{"":{"0":{"df":1,"ds":{"6":1}},"1":{"df":2,"ds":{"m":1,"o":1}}}},"ternative":{"":{"1":{"df":4,"ds":{"e":1,"g":1,"h":1,"i":1}}}}},"n":{"y":{"ability":{"":{"1":{"df":1,"ds":{"3":1}}}},"mongoability":{"":{"1":{"df":1,"ds":{"3":1}}}}},"gular":{"":{"0":{"df":1,"ds":{"j":1}},"1":{"df":1,"ds":{"j":1}}}}},"dapter":{"":{"1":{"df":1,"ds":{"k":1}}}},"u":{"thorization":{"":{"0":{"df":1,"ds":{"d":1}},"2":{"df":1,"ds":{"n":1}}}},"relia":{"":{"0":{"df":1,"ds":{"l":1}},"1":{"df":1,"ds":{"l":1}}}},"gment":{"":{"1":{"df":1,"ds":{"o":1}}}}},"ttribute":{"":{"1":{"df":1,"ds":{"l":1}}}}},"n":{"ested":{"":{"1":{"df":3,"ds":{"3":1,"7":2,"b":1}}}},"pm":{"":{"1":{"df":1,"ds":{"9":1}}}},"ot":{"ation":{"":{"1":{"df":1,"ds":{"3":1}}}},"e":{"":{"1":{"df":2,"ds":{"m":1,"n":2}}}}},"ames":{"":{"1":{"df":2,"ds":{"m":1,"o":1}}}}},"r":{"e":{"levantrulefor":{"":{"1":{"df":1,"ds":{"4":1}}}},"quirements":{"":{"1":{"df":1,"ds":{"9":1}}}},"a":{"sons":{"":{"1":{"df":1,"ds":{"a":1}}}},"dy":{"":{"1":{"df":1,"ds":{"a":1}}}},"ct":{"":{"0":{"df":1,"ds":{"m":1}},"1":{"df":1,"ds":{"m":2}}},"ive":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"stricting":{"":{"0":{"df":1,"ds":{"b":1}}}},"co":{"mmended":{"":{"1":{"df":1,"ds":{"8":1}}}},"rd":{"s":{"":{"1":{"df":2,"ds":{"k":1,"n":1}}}},"":{"2":{"df":1,"ds":{"n":1}}}}}},"aw":{"rule":{"":{"1":{"df":1,"ds":{"3":1}}}},"":{"1":{"df":1,"ds":{"8":1}}}},"oles":{"":{"0":{"df":2,"ds":{"h":1,"i":1}}}},"u":{"le":{"of":{"":{"1":{"df":1,"ds":{"3":1}}}},"s":{"for":{"":{"1":{"df":1,"ds":{"4":1}}}},"":{"0":{"df":1,"ds":{"8":1}},"1":{"df":3,"ds":{"4":2,"8":2,"a":2}}},"to":{"query":{"":{"1":{"df":1,"ds":{"5":1}}}},"ast":{"":{"1":{"df":1,"ds":{"5":1}}}},"fields":{"":{"1":{"df":1,"ds":{"5":1}}}}}},"":{"1":{"df":1,"ds":{"8":1}}}},"ntime":{"":{"1":{"df":1,"ds":{"n":1}},"2":{"df":1,"ds":{"n":1}}}}}},"m":{"emory":{"":{"1":{"df":1,"ds":{"e":1}}}},"o":{"ngo":{"query":{"":{"1":{"df":1,"ds":{"3":1}}},"matcher":{"":{"1":{"df":1,"ds":{"4":1}}}}},"db":{"":{"1":{"df":2,"ds":{"7":1,"k":1}}}},"ose":{"":{"0":{"df":1,"ds":{"k":1}},"1":{"df":1,"ds":{"k":3}}}}},"del":{"":{"1":{"df":1,"ds":{"n":1}}}}},"a":{"tch":{"er":{"":{"1":{"df":1,"ds":{"0":2}}}},"":{"1":{"df":1,"ds":{"7":5}}}},"nagement":{"":{"2":{"df":1,"ds":{"n":1}}}}}},"f":{"or":{"cedsubject":{"":{"1":{"df":1,"ds":{"3":1}}}},"bidden":{"error":{"":{"1":{"df":1,"ds":{"4":1}}}},"":{"1":{"df":1,"ds":{"a":1}}}}},"unction":{"":{"1":{"df":1,"ds":{"8":1}}}},"i":{"eld":{"":{"1":{"df":2,"ds":{"0":1,"b":2}}},"s":{"":{"0":{"df":1,"ds":{"b":1}},"1":{"df":4,"ds":{"3":1,"a":1,"b":1,"k":1}}}},"patternmatcher":{"":{"1":{"df":1,"ds":{"4":1}}}}},"nding":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"p":{"ossiblerulesfor":{"":{"1":{"df":1,"ds":{"4":1}}}},"r":{"actice":{"":{"1":{"df":1,"ds":{"8":1}}}},"edefined":{"":{"0":{"df":1,"ds":{"i":1}}}},"isma":{"":{"0":{"df":1,"ds":{"n":1}},"1":{"df":1,"ds":{"n":2}},"2":{"df":1,"ds":{"n":2}}},"query":{"":{"1":{"df":1,"ds":{"n":1}}}},"client":{"":{"1":{"df":1,"ds":{"n":1}}}}},"o":{"pert":{"y":{"":{"1":{"df":4,"ds":{"4":2,"7":5,"m":1,"o":1}}}},"ies":{"":{"1":{"df":1,"ds":{"7":1}}}}},"videability":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"a":{"ck":{"rules":{"":{"1":{"df":1,"ds":{"5":1}}}},"ages":{"":{"1":{"df":1,"ds":{"9":2}}}}},"rty":{"":{"1":{"df":1,"ds":{"9":1}}}},"yload":{"":{"1":{"df":1,"ds":{"e":1}}}},"t":{"terns":{"":{"1":{"df":3,"ds":{"b":2,"h":1,"i":1}}}},"h":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"npm":{"":{"1":{"df":1,"ds":{"9":1}}}},"er":{"mi":{"ttedfieldsof":{"":{"1":{"df":1,"ds":{"5":1}}}},"ssion":{"s":{"":{"0":{"df":2,"ds":{"h":1,"i":1}},"1":{"df":3,"ds":{"3":2,"j":2,"l":1}},"2":{"df":1,"ds":{"n":1}}}},"":{"2":{"df":1,"ds":{"n":1}}}}},"sisted":{"":{"0":{"df":1,"ds":{"h":1}}}},"formance":{"":{"1":{"df":1,"ds":{"j":1}}}}},"u":{"reability":{"":{"1":{"df":1,"ds":{"4":5}}}},"tting":{"":{"1":{"df":2,"ds":{"h":1,"i":1}}}}},"ipe":{"":{"1":{"df":1,"ds":{"j":2}}}},"lugin":{"":{"1":{"df":2,"ds":{"k":2,"o":1}}}}},"u":{"pdate":{"":{"1":{"df":6,"ds":{"4":1,"a":1,"j":1,"l":1,"m":1,"o":1}}}},"npackrules":{"":{"1":{"df":1,"ds":{"5":1}}}},"s":{"age":{"":{"1":{"df":4,"ds":{"6":1,"k":1,"m":2,"n":1}}}},"eability":{"":{"1":{"df":1,"ds":{"m":1}}}}}},"l":{"anguage":{"":{"1":{"df":1,"ds":{"7":1}}}},"ogic":{"al":{"":{"1":{"df":1,"ds":{"7":1}}}},"":{"1":{"df":2,"ds":{"7":1,"a":1}}}},"t":{"":{"1":{"df":2,"ds":{"9":1,"m":1}}}},"ru":{"":{"1":{"df":1,"ds":{"e":1}}}},"i":{"cense":{"":{"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}}},"brary":{"":{"2":{"df":1,"ds":{"n":1}}}}}},"o":{"bjects":{"":{"1":{"df":1,"ds":{"8":3}}}},"rder":{"":{"1":{"df":1,"ds":{"8":1}}}},"fficial":{"":{"1":{"df":1,"ds":{"9":1}}}},"utput":{"":{"1":{"df":1,"ds":{"n":1}}}},"p":{"erators":{"":{"1":{"df":2,"ds":{"0":1,"7":2}}}},"tions":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"3rd":{"":{"1":{"df":1,"ds":{"9":1}}}},"yarn":{"":{"1":{"df":1,"ds":{"9":1}}}},"g":{"etdefaulterrormessage":{"":{"1":{"df":1,"ds":{"4":1}}}},"t":{"":{"1":{"df":1,"ds":{"9":1}}}},"uide":{"":{"1":{"df":1,"ds":{"g":1}}}}},"e":{"x":{"t":{"end":{"":{"1":{"df":1,"ds":{"0":1}}}},"ra":{"":{"0":{"df":1,"ds":{"5":1}}}}},"planation":{"":{"1":{"df":1,"ds":{"9":1}}}}},"nvironments":{"":{"1":{"df":1,"ds":{"9":1}}}}},"b":{"uild":{"":{"1":{"df":2,"ds":{"4":1,"9":1}}},"mongoquerymatcher":{"":{"1":{"df":1,"ds":{"4":1}}}},"s":{"":{"1":{"df":1,"ds":{"9":1}}}}},"as":{"ics":{"":{"1":{"df":1,"ds":{"a":1}}}},"ed":{"":{"0":{"df":1,"ds":{"d":1}}}}},"ind":{"":{"1":{"df":1,"ds":{"m":1}}}}},"j":{"son":{"":{"1":{"df":1,"ds":{"8":3}}}},"wt":{"":{"1":{"df":1,"ds":{"e":1}}}}},"w":{"ebpack":{"":{"1":{"df":1,"ds":{"9":1}}}},"ays":{"":{"1":{"df":2,"ds":{"e":1,"g":1}}}}},"h":{"elper":{"s":{"":{"1":{"df":1,"ds":{"3":1}}}},"":{"1":{"df":3,"ds":{"c":1,"k":1,"n":1}}}},"ook":{"s":{"":{"1":{"df":1,"ds":{"m":1}}}},"":{"1":{"df":1,"ds":{"o":1}}}}},"v":{"ersion":{"ing":{"":{"1":{"df":1,"ds":{"9":1}}}},"s":{"":{"1":{"df":1,"ds":{"9":1}}}}},"ue":{"":{"0":{"df":1,"ds":{"o":1}},"1":{"df":1,"ds":{"o":2}}}}}},"_prefix":""},"documentCount":25,"nextId":25,"documentIds":{"0":"advanced/customize-ability","1":"advanced/ability-to-database-query","2":"advanced/debugging-testing","3":"advanced/typescript","4":"api/casl-ability","5":"api/casl-ability-extra","6":"guide/define-aliases","7":"guide/conditions-in-depth","8":"guide/define-rules","9":"guide/install","a":"guide/intro","b":"guide/restricting-fields","c":"guide/subject-type-detection","d":"cookbook/claim-authorization","e":"cookbook/cache-rules","f":"cookbook/less-confusing-can-api","g":"cookbook/intro","h":"cookbook/roles-with-persisted-permissions","i":"cookbook/roles-with-static-permissions","j":"package/casl-angular","k":"package/casl-mongoose","l":"package/casl-aurelia","m":"package/casl-react","n":"package/casl-prisma","o":"package/casl-vue"},"fieldIds":{"title":0,"headings":1,"summary":2},"fieldLength":{"0":{"0":2,"1":12},"1":{"0":4,"1":1},"2":{"0":3,"1":2},"3":{"0":2,"1":33},"4":{"0":4,"1":53},"5":{"0":5,"1":6},"6":{"0":3,"1":2},"7":{"0":3,"1":57},"8":{"0":2,"1":42},"9":{"0":1,"1":31},"a":{"0":1,"1":22},"b":{"0":3,"1":7},"c":{"0":3,"1":17},"d":{"0":3,"1":7},"e":{"0":2,"1":21},"f":{"0":4,"1":7},"g":{"0":2,"1":19},"h":{"0":4,"1":14},"i":{"0":4,"1":11},"j":{"0":2,"1":33},"k":{"0":2,"1":26},"l":{"0":2,"1":25},"m":{"0":2,"1":43},"n":{"0":2,"1":30,"2":20},"o":{"0":2,"1":35}},"averageFieldLength":{"0":2.68,"1":22.24,"2":0.8333333333333334},"storedFields":{}} \ No newline at end of file diff --git a/v6/assets/content_pages_searchIndexes.en.4b3e849b.json b/v6/assets/content_pages_searchIndexes.en.4b3e849b.json deleted file mode 100644 index b1c1cd430..000000000 --- a/v6/assets/content_pages_searchIndexes.en.4b3e849b.json +++ /dev/null @@ -1 +0,0 @@ -{"index":{"_tree":{"4":{"":{"1":{"df":1,"ds":{"n":1}}}},"16":{"":{"1":{"df":1,"ds":{"n":1}}}},"query":{"":{"0":{"df":1,"ds":{"0":1}},"1":{"df":2,"ds":{"c":2,"l":1}}}},"c":{"ustom":{"ize":{"":{"0":{"df":1,"ds":{"1":1}}}},"":{"1":{"df":4,"ds":{"1":3,"i":1,"l":1,"m":1}}}},"reate":{"mongoability":{"":{"1":{"df":1,"ds":{"4":2}}}},"aliasresolver":{"":{"1":{"df":1,"ds":{"4":1}}}}},"a":{"sl":{"":{"0":{"df":8,"ds":{"4":1,"5":1,"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}},"1":{"df":9,"ds":{"c":1,"g":1,"i":1,"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}},"2":{"df":1,"ds":{"l":1}}}},"che":{"":{"0":{"df":1,"ds":{"6":1}},"1":{"df":1,"ds":{"6":1}}}}},"la":{"im":{"":{"0":{"df":1,"ds":{"7":1}}}},"ss":{"es":{"":{"1":{"df":2,"ds":{"3":1,"i":1}}}},"":{"1":{"df":1,"ds":{"e":1}}}}},"o":{"n":{"ditions":{"":{"0":{"df":1,"ds":{"c":1}},"1":{"df":3,"ds":{"1":2,"c":1,"g":1}},"2":{"df":1,"ds":{"l":1}}}},"tributions":{"":{"1":{"df":1,"ds":{"8":1}}}},"clusion":{"":{"1":{"df":2,"ds":{"a":1,"b":1}}}},"f":{"using":{"":{"0":{"df":1,"ds":{"9":1}}}},"igure":{"":{"1":{"df":1,"ds":{"j":1}}}}},"s":{"tructor":{"":{"1":{"df":1,"ds":{"4":2}}}},"iderations":{"":{"1":{"df":1,"ds":{"j":1}}}}},"verter":{"":{"1":{"df":1,"ds":{"m":1}}}}},"okbook":{"":{"0":{"df":1,"ds":{"8":1}},"1":{"df":1,"ds":{"8":2}}}},"m":{"mon":{"":{"1":{"df":1,"ds":{"c":1}}}},"po":{"nent":{"":{"1":{"df":2,"ds":{"n":1,"o":2}}}},"sition":{"":{"1":{"df":1,"ds":{"o":1}}}}}}},"dn":{"":{"1":{"df":1,"ds":{"f":1}}}},"sp":{"":{"1":{"df":1,"ds":{"f":1}}}},"heck":{"ing":{"":{"1":{"df":2,"ds":{"c":1,"g":1}}}},"":{"1":{"df":2,"ds":{"j":2,"m":1}}}}},"d":{"atabase":{"":{"0":{"df":1,"ds":{"0":1}}}},"e":{"bugging":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}},"mo":{"":{"1":{"df":4,"ds":{"6":1,"8":1,"a":1,"b":1}}}},"p":{"recated":{"":{"1":{"df":1,"ds":{"4":1}}}},"th":{"":{"0":{"df":1,"ds":{"c":1}}}}},"fine":{"ability":{"":{"1":{"df":2,"ds":{"4":1,"e":4}}}},"":{"0":{"df":2,"ds":{"d":1,"e":1}}}},"v":{"":{"1":{"df":1,"ds":{"f":1}}}},"tect":{"subjecttype":{"":{"1":{"df":1,"ds":{"4":2}}}},"ion":{"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":1,"ds":{"i":1}}}},"":{"1":{"df":1,"ds":{"i":1}}}}},"o":{"t":{"":{"1":{"df":1,"ds":{"3":1}}}},"wnload":{"":{"1":{"df":1,"ds":{"f":1}}}}},"irective":{"":{"1":{"df":1,"ds":{"j":1}}}}},"t":{"ype":{"s":{"cript":{"":{"0":{"df":1,"ds":{"3":1}},"1":{"df":6,"ds":{"j":1,"k":2,"l":1,"m":1,"n":2,"o":1}}}},"":{"1":{"df":3,"ds":{"3":1,"i":1,"o":1}}}},"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":2,"ds":{"3":2,"i":2}}}},"hrowunlesscan":{"":{"1":{"df":1,"ds":{"4":1}}}},"oken":{"":{"1":{"df":1,"ds":{"6":1}}}},"a":{"g":{"":{"1":{"df":1,"ds":{"f":1}}}},"ble":{"":{"1":{"df":1,"ds":{"h":1}}}}},"e":{"mplates":{"":{"1":{"df":2,"ds":{"j":2,"m":1}}}},"st":{"ing":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}},"":{"2":{"df":1,"ds":{"l":1}}}}}},"i":{"n":{"fer":{"ence":{"":{"1":{"df":1,"ds":{"3":3}}}},"":{"1":{"df":1,"ds":{"3":1}}}},"t":{"roduction":{"":{"0":{"df":2,"ds":{"8":1,"g":1}}}},"er":{"faces":{"":{"1":{"df":1,"ds":{"3":1}}}},"preter":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"cluded":{"":{"1":{"df":1,"ds":{"c":1}}}},"v":{"alid":{"":{"1":{"df":1,"ds":{"d":1}}}},"erted":{"":{"1":{"df":2,"ds":{"e":1,"g":1}}}}},"sta":{"llation":{"":{"0":{"df":1,"ds":{"f":1}},"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}}},"nce":{"":{"1":{"df":4,"ds":{"j":1,"m":1,"n":3,"o":1}}}}}},"ssue":{"":{"1":{"df":6,"ds":{"6":1,"7":1,"8":1,"9":1,"a":1,"b":1}}}},"tem":{"s":{"":{"1":{"df":1,"ds":{"c":2}}}},"":{"1":{"df":1,"ds":{"c":1}}}},"mp":{"lementation":{"":{"1":{"df":1,"ds":{"1":1}}}},"erative":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"s":{"u":{"pport":{"":{"0":{"df":1,"ds":{"3":1}},"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}},"ed":{"":{"1":{"df":1,"ds":{"c":1}}}}},"bject":{"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":4,"ds":{"3":1,"4":1,"i":4,"l":1}}},"s":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"afer":{"":{"1":{"df":1,"ds":{"3":1}}}},"olution":{"":{"1":{"df":6,"ds":{"6":1,"7":1,"8":1,"9":1,"a":1,"b":1}}}},"e":{"t":{"defaultmessage":{"":{"1":{"df":1,"ds":{"4":1}}}},"message":{"":{"1":{"df":1,"ds":{"4":1}}}}},"ssion":{"":{"1":{"df":1,"ds":{"6":1}}}},"rvices":{"":{"1":{"df":1,"ds":{"a":1}}}},"mantic":{"":{"1":{"df":1,"ds":{"f":1}}}}},"t":{"orage":{"":{"1":{"df":1,"ds":{"6":1}}}},"a":{"tic":{"":{"1":{"df":1,"ds":{"4":2}}}},"rted":{"":{"1":{"df":3,"ds":{"g":1,"m":1,"o":1}}}}}},"hape":{"":{"1":{"df":1,"ds":{"e":1}}}},"c":{"alar":{"":{"1":{"df":1,"ds":{"c":1}}}},"ript":{"":{"1":{"df":1,"ds":{"f":1}}}}}},"a":{"p":{"i":{"":{"0":{"df":3,"ds":{"4":1,"5":1,"9":1}},"1":{"df":1,"ds":{"o":2}}}},"p":{"lication":{"":{"1":{"df":1,"ds":{"3":1}}}},"module":{"":{"1":{"df":1,"ds":{"j":1}}}}}},"bilit":{"y":{"":{"0":{"df":4,"ds":{"0":1,"1":1,"4":1,"5":1}},"1":{"df":6,"ds":{"3":1,"4":1,"j":1,"m":1,"n":3,"o":2}}},"builder":{"":{"1":{"df":3,"ds":{"3":1,"4":5,"e":3}}}},"optionsof":{"":{"1":{"df":1,"ds":{"3":1}}}},"service":{"":{"1":{"df":1,"ds":{"j":1}}}}},"ies":{"":{"0":{"df":1,"ds":{"6":1}},"1":{"df":1,"ds":{"b":1}}}}},"void":{"":{"1":{"df":5,"ds":{"6":1,"7":1,"8":1,"9":1,"a":1}}}},"":{"1":{"df":2,"ds":{"c":2,"n":1}}},"rray":{"":{"1":{"df":1,"ds":{"c":3}}}},"l":{"ternative":{"":{"1":{"df":4,"ds":{"6":1,"8":1,"a":1,"b":1}}}},"iases":{"":{"0":{"df":1,"ds":{"d":1}},"1":{"df":2,"ds":{"n":1,"o":1}}}}},"c":{"tion":{"":{"0":{"df":1,"ds":{"d":1}}}},"cess":{"":{"0":{"df":1,"ds":{"h":1}},"1":{"df":1,"ds":{"n":1}}},"ible":{"by":{"":{"1":{"df":1,"ds":{"k":2}}}},"":{"1":{"df":2,"ds":{"k":2,"l":1}},"2":{"df":1,"ds":{"l":1}}}}}},"n":{"y":{"ability":{"":{"1":{"df":1,"ds":{"3":1}}}},"mongoability":{"":{"1":{"df":1,"ds":{"3":1}}}}},"gular":{"":{"0":{"df":1,"ds":{"j":1}},"1":{"df":1,"ds":{"j":1}}}}},"dapter":{"":{"1":{"df":1,"ds":{"k":1}}}},"u":{"thorization":{"":{"0":{"df":1,"ds":{"7":1}},"2":{"df":1,"ds":{"l":1}}}},"relia":{"":{"0":{"df":1,"ds":{"m":1}},"1":{"df":1,"ds":{"m":1}}}},"gment":{"":{"1":{"df":1,"ds":{"o":1}}}}},"ttribute":{"":{"1":{"df":1,"ds":{"m":1}}}}},"n":{"ested":{"":{"1":{"df":3,"ds":{"3":1,"c":2,"h":1}}}},"pm":{"":{"1":{"df":1,"ds":{"f":1}}}},"ot":{"ation":{"":{"1":{"df":1,"ds":{"3":1}}}},"e":{"":{"1":{"df":2,"ds":{"l":2,"n":1}}}}},"ames":{"":{"1":{"df":2,"ds":{"n":1,"o":1}}}}},"r":{"oles":{"":{"0":{"df":2,"ds":{"a":1,"b":1}}}},"e":{"levantrulefor":{"":{"1":{"df":1,"ds":{"4":1}}}},"quirements":{"":{"1":{"df":1,"ds":{"f":1}}}},"a":{"sons":{"":{"1":{"df":1,"ds":{"g":1}}}},"dy":{"":{"1":{"df":1,"ds":{"g":1}}}},"ct":{"":{"0":{"df":1,"ds":{"n":1}},"1":{"df":1,"ds":{"n":2}}},"ive":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"stricting":{"":{"0":{"df":1,"ds":{"h":1}}}},"co":{"mmended":{"":{"1":{"df":1,"ds":{"e":1}}}},"rd":{"s":{"":{"1":{"df":2,"ds":{"k":1,"l":1}}}},"":{"2":{"df":1,"ds":{"l":1}}}}}},"aw":{"rule":{"":{"1":{"df":1,"ds":{"3":1}}}},"":{"1":{"df":1,"ds":{"e":1}}}},"u":{"le":{"of":{"":{"1":{"df":1,"ds":{"3":1}}}},"s":{"for":{"":{"1":{"df":1,"ds":{"4":1}}}},"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":3,"ds":{"4":2,"e":2,"g":2}}},"to":{"query":{"":{"1":{"df":1,"ds":{"5":1}}}},"ast":{"":{"1":{"df":1,"ds":{"5":1}}}},"fields":{"":{"1":{"df":1,"ds":{"5":1}}}}}},"":{"1":{"df":1,"ds":{"e":1}}}},"ntime":{"":{"1":{"df":1,"ds":{"l":1}},"2":{"df":1,"ds":{"l":1}}}}}},"m":{"emory":{"":{"1":{"df":1,"ds":{"6":1}}}},"o":{"ngo":{"query":{"":{"1":{"df":1,"ds":{"3":1}}},"matcher":{"":{"1":{"df":1,"ds":{"4":1}}}}},"db":{"":{"1":{"df":2,"ds":{"c":1,"k":1}}}},"ose":{"":{"0":{"df":1,"ds":{"k":1}},"1":{"df":1,"ds":{"k":3}}}}},"del":{"":{"1":{"df":1,"ds":{"l":1}}}}},"a":{"tch":{"er":{"":{"1":{"df":1,"ds":{"1":2}}}},"":{"1":{"df":1,"ds":{"c":5}}}},"nagement":{"":{"2":{"df":1,"ds":{"l":1}}}}}},"f":{"or":{"cedsubject":{"":{"1":{"df":1,"ds":{"3":1}}}},"bidden":{"error":{"":{"1":{"df":1,"ds":{"4":1}}}},"":{"1":{"df":1,"ds":{"g":1}}}}},"unction":{"":{"1":{"df":1,"ds":{"e":1}}}},"i":{"eld":{"":{"1":{"df":2,"ds":{"1":1,"h":2}}},"s":{"":{"0":{"df":1,"ds":{"h":1}},"1":{"df":4,"ds":{"3":1,"g":1,"h":1,"k":1}}}},"patternmatcher":{"":{"1":{"df":1,"ds":{"4":1}}}}},"nding":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"p":{"ossiblerulesfor":{"":{"1":{"df":1,"ds":{"4":1}}}},"a":{"yload":{"":{"1":{"df":1,"ds":{"6":1}}}},"ck":{"rules":{"":{"1":{"df":1,"ds":{"5":1}}}},"ages":{"":{"1":{"df":1,"ds":{"f":2}}}}},"rty":{"":{"1":{"df":1,"ds":{"f":1}}}},"t":{"terns":{"":{"1":{"df":3,"ds":{"a":1,"b":1,"h":2}}}},"h":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"er":{"mi":{"ttedfieldsof":{"":{"1":{"df":1,"ds":{"5":1}}}},"ssion":{"s":{"":{"0":{"df":2,"ds":{"a":1,"b":1}},"1":{"df":3,"ds":{"3":2,"j":2,"m":1}},"2":{"df":1,"ds":{"l":1}}}},"":{"2":{"df":1,"ds":{"l":1}}}}},"sisted":{"":{"0":{"df":1,"ds":{"a":1}}}},"formance":{"":{"1":{"df":1,"ds":{"j":1}}}}},"u":{"reability":{"":{"1":{"df":1,"ds":{"4":5}}}},"tting":{"":{"1":{"df":2,"ds":{"a":1,"b":1}}}}},"r":{"edefined":{"":{"0":{"df":1,"ds":{"b":1}}}},"actice":{"":{"1":{"df":1,"ds":{"e":1}}}},"isma":{"":{"0":{"df":1,"ds":{"l":1}},"1":{"df":1,"ds":{"l":2}},"2":{"df":1,"ds":{"l":2}}},"query":{"":{"1":{"df":1,"ds":{"l":1}}}},"client":{"":{"1":{"df":1,"ds":{"l":1}}}}},"o":{"pert":{"y":{"":{"1":{"df":4,"ds":{"4":2,"c":5,"n":1,"o":1}}}},"ies":{"":{"1":{"df":1,"ds":{"c":1}}}}},"videability":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"npm":{"":{"1":{"df":1,"ds":{"f":1}}}},"ipe":{"":{"1":{"df":1,"ds":{"j":2}}}},"lugin":{"":{"1":{"df":2,"ds":{"k":2,"o":1}}}}},"u":{"pdate":{"":{"1":{"df":6,"ds":{"4":1,"g":1,"j":1,"m":1,"n":1,"o":1}}}},"npackrules":{"":{"1":{"df":1,"ds":{"5":1}}}},"s":{"age":{"":{"1":{"df":4,"ds":{"d":1,"k":1,"l":1,"n":2}}}},"eability":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"b":{"uild":{"":{"1":{"df":2,"ds":{"4":1,"f":1}}},"mongoquerymatcher":{"":{"1":{"df":1,"ds":{"4":1}}}},"s":{"":{"1":{"df":1,"ds":{"f":1}}}}},"as":{"ed":{"":{"0":{"df":1,"ds":{"7":1}}}},"ics":{"":{"1":{"df":1,"ds":{"g":1}}}}},"ind":{"":{"1":{"df":1,"ds":{"n":1}}}}},"g":{"etdefaulterrormessage":{"":{"1":{"df":1,"ds":{"4":1}}}},"uide":{"":{"1":{"df":1,"ds":{"8":1}}}},"t":{"":{"1":{"df":1,"ds":{"f":1}}}}},"l":{"ru":{"":{"1":{"df":1,"ds":{"6":1}}}},"anguage":{"":{"1":{"df":1,"ds":{"c":1}}}},"ogic":{"al":{"":{"1":{"df":1,"ds":{"c":1}}}},"":{"1":{"df":2,"ds":{"c":1,"g":1}}}},"t":{"":{"1":{"df":2,"ds":{"f":1,"n":1}}}},"i":{"cense":{"":{"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}}},"brary":{"":{"2":{"df":1,"ds":{"l":1}}}}}},"j":{"wt":{"":{"1":{"df":1,"ds":{"6":1}}}},"son":{"":{"1":{"df":1,"ds":{"e":3}}}}},"o":{"bjects":{"":{"1":{"df":1,"ds":{"e":3}}}},"rder":{"":{"1":{"df":1,"ds":{"e":1}}}},"fficial":{"":{"1":{"df":1,"ds":{"f":1}}}},"utput":{"":{"1":{"df":1,"ds":{"l":1}}}},"p":{"erators":{"":{"1":{"df":2,"ds":{"1":1,"c":2}}}},"tions":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"3rd":{"":{"1":{"df":1,"ds":{"f":1}}}},"yarn":{"":{"1":{"df":1,"ds":{"f":1}}}},"w":{"ays":{"":{"1":{"df":2,"ds":{"6":1,"8":1}}}},"ebpack":{"":{"1":{"df":1,"ds":{"f":1}}}}},"e":{"x":{"t":{"end":{"":{"1":{"df":1,"ds":{"1":1}}}},"ra":{"":{"0":{"df":1,"ds":{"5":1}}}}},"planation":{"":{"1":{"df":1,"ds":{"f":1}}}}},"nvironments":{"":{"1":{"df":1,"ds":{"f":1}}}}},"h":{"elper":{"s":{"":{"1":{"df":1,"ds":{"3":1}}}},"":{"1":{"df":3,"ds":{"i":1,"k":1,"l":1}}}},"ook":{"s":{"":{"1":{"df":1,"ds":{"n":1}}}},"":{"1":{"df":1,"ds":{"o":1}}}}},"v":{"ersion":{"ing":{"":{"1":{"df":1,"ds":{"f":1}}}},"s":{"":{"1":{"df":1,"ds":{"f":1}}}}},"ue":{"":{"0":{"df":1,"ds":{"o":1}},"1":{"df":1,"ds":{"o":2}}}}}},"_prefix":""},"documentCount":25,"nextId":25,"documentIds":{"0":"advanced/ability-to-database-query","1":"advanced/customize-ability","2":"advanced/debugging-testing","3":"advanced/typescript","4":"api/casl-ability","5":"api/casl-ability-extra","6":"cookbook/cache-rules","7":"cookbook/claim-authorization","8":"cookbook/intro","9":"cookbook/less-confusing-can-api","a":"cookbook/roles-with-persisted-permissions","b":"cookbook/roles-with-static-permissions","c":"guide/conditions-in-depth","d":"guide/define-aliases","e":"guide/define-rules","f":"guide/install","g":"guide/intro","h":"guide/restricting-fields","i":"guide/subject-type-detection","j":"package/casl-angular","k":"package/casl-mongoose","l":"package/casl-prisma","m":"package/casl-aurelia","n":"package/casl-react","o":"package/casl-vue"},"fieldIds":{"title":0,"headings":1,"summary":2},"fieldLength":{"0":{"0":4,"1":1},"1":{"0":2,"1":12},"2":{"0":3,"1":2},"3":{"0":2,"1":33},"4":{"0":4,"1":53},"5":{"0":5,"1":6},"6":{"0":2,"1":21},"7":{"0":3,"1":7},"8":{"0":2,"1":19},"9":{"0":4,"1":7},"a":{"0":4,"1":14},"b":{"0":4,"1":11},"c":{"0":3,"1":57},"d":{"0":3,"1":2},"e":{"0":2,"1":42},"f":{"0":1,"1":31},"g":{"0":1,"1":22},"h":{"0":3,"1":7},"i":{"0":3,"1":17},"j":{"0":2,"1":33},"k":{"0":2,"1":26},"l":{"0":2,"1":30,"2":20},"m":{"0":2,"1":25},"n":{"0":2,"1":43},"o":{"0":2,"1":35}},"averageFieldLength":{"0":2.68,"1":22.24,"2":0.9090909090909091},"storedFields":{}} \ No newline at end of file diff --git a/v6/assets/content_pages_summaries.en.d03f4097.json b/v6/assets/content_pages_summaries.en.3ae7a070.json similarity index 79% rename from v6/assets/content_pages_summaries.en.d03f4097.json rename to v6/assets/content_pages_summaries.en.3ae7a070.json index 4cccfd345..c8e2535c9 100644 --- a/v6/assets/content_pages_summaries.en.d03f4097.json +++ b/v6/assets/content_pages_summaries.en.3ae7a070.json @@ -1 +1 @@ -{"items":[{"id":"guide/install","title":"Installation","categories":["guide"],"headings":[{"id":"requirements","title":"Requirements"},{"id":"semantic-versioning","title":"Semantic Versioning"},{"id":"official-packages-and-its-versions","title":"Official packages and its versions"},{"id":"3rd-party-packages","title":"3rd party packages"},{"id":"npm-yarn-pnpm","title":"NPM, YARN, PNPM"},{"id":"cdn","title":"CDN"},{"id":"download-and-use-and-lt-script-and-gt-tag","title":"Download and use <script> tag"},{"id":"explanation-of-different-builds","title":"Explanation of Different Builds"},{"id":"webpack","title":"Webpack"},{"id":"csp-environments","title":"CSP environments"},{"id":"dev-build","title":"Dev build"}]},{"id":"api/casl-ability","title":"@casl/ability API","categories":["api"],"headings":[{"id":"pure-ability","title":"PureAbility"},{"id":"pure-ability-constructor","title":"PureAbility constructor"},{"id":"update","title":"update"},{"id":"can-of-pure-ability","title":"can of PureAbility"},{"id":"cannot-of-pure-ability","title":"cannot of PureAbility"},{"id":"relevant-rule-for","title":"relevantRuleFor"},{"id":"rules-for","title":"rulesFor"},{"id":"possible-rules-for","title":"possibleRulesFor"},{"id":"on","title":"on"},{"id":"rules-property-of-pure-ability","title":"rules property of PureAbility"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"ability-deprecated-by-create-mongo-ability","title":"Ability (deprecated by createMongoAbility)"},{"id":"create-mongo-ability","title":"createMongoAbility"},{"id":"ability-builder","title":"AbilityBuilder"},{"id":"ability-builder-constructor","title":"AbilityBuilder constructor"},{"id":"can-of-ability-builder","title":"can of AbilityBuilder"},{"id":"cannot-of-ability-builder","title":"cannot of AbilityBuilder"},{"id":"build","title":"build"},{"id":"rules-property-of-ability-builder","title":"rules property of AbilityBuilder"},{"id":"define-ability","title":"defineAbility"},{"id":"forbidden-error","title":"ForbiddenError"},{"id":"static-from","title":"static from"},{"id":"static-set-default-message","title":"static setDefaultMessage"},{"id":"set-message","title":"setMessage"},{"id":"throw-unless-can","title":"throwUnlessCan"},{"id":"get-default-error-message","title":"getDefaultErrorMessage"},{"id":"field-pattern-matcher","title":"fieldPatternMatcher"},{"id":"mongo-query-matcher","title":"mongoQueryMatcher"},{"id":"build-mongo-query-matcher","title":"buildMongoQueryMatcher"},{"id":"create-alias-resolver","title":"createAliasResolver"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"subject","title":"subject"}]},{"id":"cookbook/intro","title":"Cookbook Introduction","categories":["cookbook"],"headings":[{"id":"the-cookbook-vs-the-guide","title":"The Cookbook vs the Guide"},{"id":"cookbook-contributions","title":"Cookbook Contributions"},{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"when-to-avoid","title":"When To Avoid"},{"id":"alternative-ways","title":"Alternative Ways"},{"id":"thank-you","title":"Thank you"}]},{"id":"guide/intro","title":"Introduction","categories":["guide"],"headings":[{"id":"what-is-casl","title":"What is CASL?"},{"id":"getting-started","title":"Getting Started"},{"id":"basics","title":"Basics"},{"id":"conditions","title":"Conditions"},{"id":"fields","title":"Fields"},{"id":"checking-logic","title":"Checking logic"},{"id":"inverted-rules","title":"Inverted rules"},{"id":"forbidden-reasons","title":"Forbidden reasons"},{"id":"update-rules","title":"Update rules"},{"id":"what-else","title":"What else?"},{"id":"ready-for-more","title":"Ready for More?"}]},{"id":"api/casl-ability-extra","title":"@casl/ability/extra API","categories":["api"],"headings":[{"id":"rules-to-query","title":"rulesToQuery"},{"id":"rules-to-ast","title":"rulesToAST"},{"id":"rules-to-fields","title":"rulesToFields"},{"id":"permitted-fields-of","title":"permittedFieldsOf"},{"id":"pack-rules","title":"packRules"},{"id":"unpack-rules","title":"unpackRules"}]},{"id":"cookbook/less-confusing-can-api","title":"Less confusing can API","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When to avoid"}]},{"id":"cookbook/claim-authorization","title":"Claim based Authorization","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When To Avoid"}]},{"id":"cookbook/cache-rules","title":"Cache abilities","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"in-memory-lru-cache","title":"In memory LRU cache"},{"id":"in-session-storage","title":"In session storage"},{"id":"in-jwt-token-payload","title":"In JWT token payload"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-ways","title":"Alternative ways"}]},{"id":"cookbook/roles-with-static-permissions","title":"Roles with predefined permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"abilities","title":"Abilities"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/define-rules","title":"Define Rules","categories":["guide"],"headings":[{"id":"define-ability-function","title":"defineAbility function"},{"id":"define-ability-example","title":"defineAbility example"},{"id":"when-to-use-define-ability","title":"When to use defineAbility"},{"id":"why-define-ability-is-not-recommended","title":"Why defineAbility is not recommended"},{"id":"ability-builder-class","title":"AbilityBuilder class"},{"id":"ability-builder-example","title":"AbilityBuilder example"},{"id":"when-to-use-ability-builder","title":"When to use AbilityBuilder"},{"id":"json-objects","title":"JSON objects"},{"id":"json-objects-example","title":"JSON objects example"},{"id":"the-shape-of-raw-rule","title":"The shape of raw rule"},{"id":"when-to-use-json-objects","title":"When to use JSON objects"},{"id":"rules","title":"Rules"},{"id":"inverted-rules-order","title":"Inverted rules order"},{"id":"best-practice","title":"Best practice"}]},{"id":"cookbook/roles-with-persisted-permissions","title":"Roles with persisted permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"services","title":"Services"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/conditions-in-depth","title":"Conditions in Depth","categories":["guide"],"headings":[{"id":"mongo-db-and-its-query-language","title":"MongoDB and its query language"},{"id":"supported-operators","title":"Supported operators"},{"id":"why-logical-query-operators-are-not-included","title":"Why logical query operators are not included"},{"id":"checking-logic-in-casl","title":"Checking logic in CASL"},{"id":"common-conditions","title":"Common conditions"},{"id":"match-one-of-few-items-in-a-scalar-property","title":"Match one of few items in a scalar property"},{"id":"match-specified-item-in-an-array-property","title":"Match specified item in an array property"},{"id":"match-one-of-few-items-in-an-array-property","title":"Match one of few items in an array property"},{"id":"match-nested-property-value","title":"Match nested property value"},{"id":"match-several-properties-of-a-nested-array-property","title":"Match several properties of a nested array property"}]},{"id":"guide/restricting-fields","title":"Restricting fields access","categories":["guide"],"headings":[{"id":"nested-fields","title":"Nested fields"},{"id":"field-patterns","title":"Field patterns"},{"id":"field-patterns-table","title":"Field patterns table"}]},{"id":"guide/subject-type-detection","title":"Subject type detection","categories":["guide"],"headings":[{"id":"how-does-casl-detect-subject-type","title":"How does CASL detect subject type?"},{"id":"subject-helper","title":"subject helper"},{"id":"custom-subject-type-detection","title":"Custom subject type detection"},{"id":"use-classes-as-subject-types","title":"Use classes as subject types"}]},{"id":"guide/define-aliases","title":"Define Action Aliases","categories":["guide"],"headings":[{"id":"invalid-usage","title":"Invalid usage"}]},{"id":"advanced/typescript","title":"TypeScript Support","categories":["advanced"],"headings":[{"id":"permissions-inference","title":"Permissions inference"},{"id":"infer-subject-types-from-interfaces-and-classes","title":"Infer subject types from interfaces and classes"},{"id":"safer-permissions-inference","title":"Safer permissions inference"},{"id":"application-ability","title":"Application Ability"},{"id":"ability-builder-type-inference","title":"AbilityBuilder type inference"},{"id":"nested-fields-with-dot-notation","title":"Nested fields with dot notation"},{"id":"useful-type-helpers","title":"Useful type helpers"},{"id":"raw-rule","title":"RawRule"},{"id":"rule-of","title":"RuleOf"},{"id":"ability-options-of","title":"AbilityOptionsOf"},{"id":"any-ability-and-any-mongo-ability","title":"AnyAbility and AnyMongoAbility"},{"id":"mongo-query","title":"MongoQuery"},{"id":"forced-subject","title":"ForcedSubject"}]},{"id":"advanced/customize-ability","title":"Customize Ability","categories":["advanced"],"headings":[{"id":"extend-conditions-with-custom-operators","title":"Extend conditions with custom operators"},{"id":"custom-conditions-matcher-implementation","title":"Custom conditions matcher implementation"},{"id":"custom-field-matcher","title":"Custom field matcher"}]},{"id":"advanced/debugging-testing","title":"Debugging and testing","categories":["advanced"],"headings":[{"id":"debugging","title":"Debugging"},{"id":"testing","title":"Testing"}]},{"id":"advanced/ability-to-database-query","title":"Ability to database query","categories":["advanced"],"headings":[]},{"id":"package/casl-prisma","title":"CASL Prisma","categories":["package"],"headings":[{"id":"casl-prisma","title":"CASL Prisma"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"note-on-subject-helper","title":"Note on subject helper"},{"id":"note-on-prisma-query-runtime-interpreter","title":"Note on Prisma Query runtime interpreter"},{"id":"finding-accessible-records","title":"Finding Accessible Records"},{"id":"type-script-support","title":"TypeScript support"},{"id":"prisma-query","title":"PrismaQuery"},{"id":"model","title":"Model"},{"id":"subjects","title":"Subjects"},{"id":"custom-prisma-client-output-path","title":"Custom PrismaClient output path"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-mongoose","title":"CASL Mongoose","categories":["package"],"headings":[{"id":"casl-mongoose","title":"CASL Mongoose"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"accessible-by-helper","title":"accessibleBy helper"},{"id":"mongo-db-adapter","title":"MongoDB adapter"},{"id":"mongoose","title":"Mongoose"},{"id":"accessible-by-in-type-script","title":"accessibleBy in TypeScript"},{"id":"accessible-records-plugin","title":"Accessible Records plugin"},{"id":"accessible-fields-plugin","title":"Accessible Fields plugin"},{"id":"type-script-support-in-mongoose","title":"TypeScript support in mongoose"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-angular","title":"CASL Angular","categories":["package"],"headings":[{"id":"casl-angular","title":"CASL Angular"},{"id":"installation","title":"Installation"},{"id":"configure-app-module","title":"Configure AppModule"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates-using-ability-service","title":"Check permissions in templates using AbilityService"},{"id":"check-permissions-in-templates-using-pipe","title":"Check permissions in templates using pipe"},{"id":"why-pipe-and-not-directive","title":"Why pipe and not directive?"},{"id":"performance-considerations","title":"Performance considerations"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-react","title":"CASL React","categories":["package"],"headings":[{"id":"casl-react","title":"CASL React"},{"id":"installation","title":"Installation"},{"id":"can-component","title":"Can component"},{"id":"bind-can-to-a-particular-ability-instance","title":"Bind Can to a particular Ability instance"},{"id":"imperative-access-to-ability-instance","title":"Imperative access to Ability instance"},{"id":"usage-note-on-react-16-4-with-type-script","title":"Usage note on React < 16.4 with TypeScript"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"type-script-support","title":"TypeScript support"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"use-ability-usage-within-hooks","title":"useAbility usage within hooks"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-vue","title":"CASL Vue","categories":["package"],"headings":[{"id":"casl-vue","title":"CASL Vue"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"the-plugin","title":"The plugin"},{"id":"provide-ability-hook","title":"provideAbility hook"},{"id":"can-component","title":"Can component"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"component-vs-reactive-ability","title":"Component vs reactive Ability"},{"id":"type-script-support","title":"TypeScript support"},{"id":"augment-vue-types","title":"Augment Vue types"},{"id":"composition-api","title":"Composition API"},{"id":"options-api","title":"Options API"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-aurelia","title":"CASL Aurelia","categories":["package"],"headings":[{"id":"casl-aurelia","title":"CASL Aurelia"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates","title":"Check permissions in templates"},{"id":"why-value-converter-and-not-custom-attribute","title":"Why value converter and not custom attribute?"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]}],"byId":{"guide/install":[0],"api/casl-ability":[1],"cookbook/intro":[2],"guide/intro":[3],"api/casl-ability-extra":[4],"cookbook/less-confusing-can-api":[5],"cookbook/claim-authorization":[6],"cookbook/cache-rules":[7],"cookbook/roles-with-static-permissions":[8],"guide/define-rules":[9],"cookbook/roles-with-persisted-permissions":[10],"guide/conditions-in-depth":[11],"guide/restricting-fields":[12],"guide/subject-type-detection":[13],"guide/define-aliases":[14],"advanced/typescript":[15],"advanced/customize-ability":[16],"advanced/debugging-testing":[17],"advanced/ability-to-database-query":[18],"package/casl-prisma":[19],"package/casl-mongoose":[20],"package/casl-angular":[21],"package/casl-react":[22],"package/casl-vue":[23],"package/casl-aurelia":[24]}} \ No newline at end of file +{"items":[{"id":"guide/install","title":"Installation","categories":["guide"],"headings":[{"id":"requirements","title":"Requirements"},{"id":"semantic-versioning","title":"Semantic Versioning"},{"id":"official-packages-and-its-versions","title":"Official packages and its versions"},{"id":"3rd-party-packages","title":"3rd party packages"},{"id":"npm-yarn-pnpm","title":"NPM, YARN, PNPM"},{"id":"cdn","title":"CDN"},{"id":"download-and-use-and-lt-script-and-gt-tag","title":"Download and use <script> tag"},{"id":"explanation-of-different-builds","title":"Explanation of Different Builds"},{"id":"webpack","title":"Webpack"},{"id":"csp-environments","title":"CSP environments"},{"id":"dev-build","title":"Dev build"}]},{"id":"api/casl-ability","title":"@casl/ability API","categories":["api"],"headings":[{"id":"pure-ability","title":"PureAbility"},{"id":"pure-ability-constructor","title":"PureAbility constructor"},{"id":"update","title":"update"},{"id":"can-of-pure-ability","title":"can of PureAbility"},{"id":"cannot-of-pure-ability","title":"cannot of PureAbility"},{"id":"relevant-rule-for","title":"relevantRuleFor"},{"id":"rules-for","title":"rulesFor"},{"id":"possible-rules-for","title":"possibleRulesFor"},{"id":"on","title":"on"},{"id":"rules-property-of-pure-ability","title":"rules property of PureAbility"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"ability-deprecated-by-create-mongo-ability","title":"Ability (deprecated by createMongoAbility)"},{"id":"create-mongo-ability","title":"createMongoAbility"},{"id":"ability-builder","title":"AbilityBuilder"},{"id":"ability-builder-constructor","title":"AbilityBuilder constructor"},{"id":"can-of-ability-builder","title":"can of AbilityBuilder"},{"id":"cannot-of-ability-builder","title":"cannot of AbilityBuilder"},{"id":"build","title":"build"},{"id":"rules-property-of-ability-builder","title":"rules property of AbilityBuilder"},{"id":"define-ability","title":"defineAbility"},{"id":"forbidden-error","title":"ForbiddenError"},{"id":"static-from","title":"static from"},{"id":"static-set-default-message","title":"static setDefaultMessage"},{"id":"set-message","title":"setMessage"},{"id":"throw-unless-can","title":"throwUnlessCan"},{"id":"get-default-error-message","title":"getDefaultErrorMessage"},{"id":"field-pattern-matcher","title":"fieldPatternMatcher"},{"id":"mongo-query-matcher","title":"mongoQueryMatcher"},{"id":"build-mongo-query-matcher","title":"buildMongoQueryMatcher"},{"id":"create-alias-resolver","title":"createAliasResolver"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"subject","title":"subject"}]},{"id":"guide/intro","title":"Introduction","categories":["guide"],"headings":[{"id":"what-is-casl","title":"What is CASL?"},{"id":"getting-started","title":"Getting Started"},{"id":"basics","title":"Basics"},{"id":"conditions","title":"Conditions"},{"id":"fields","title":"Fields"},{"id":"checking-logic","title":"Checking logic"},{"id":"inverted-rules","title":"Inverted rules"},{"id":"forbidden-reasons","title":"Forbidden reasons"},{"id":"update-rules","title":"Update rules"},{"id":"what-else","title":"What else?"},{"id":"ready-for-more","title":"Ready for More?"}]},{"id":"cookbook/intro","title":"Cookbook Introduction","categories":["cookbook"],"headings":[{"id":"the-cookbook-vs-the-guide","title":"The Cookbook vs the Guide"},{"id":"cookbook-contributions","title":"Cookbook Contributions"},{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"when-to-avoid","title":"When To Avoid"},{"id":"alternative-ways","title":"Alternative Ways"},{"id":"thank-you","title":"Thank you"}]},{"id":"api/casl-ability-extra","title":"@casl/ability/extra API","categories":["api"],"headings":[{"id":"rules-to-query","title":"rulesToQuery"},{"id":"rules-to-ast","title":"rulesToAST"},{"id":"rules-to-fields","title":"rulesToFields"},{"id":"permitted-fields-of","title":"permittedFieldsOf"},{"id":"pack-rules","title":"packRules"},{"id":"unpack-rules","title":"unpackRules"}]},{"id":"cookbook/less-confusing-can-api","title":"Less confusing can API","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When to avoid"}]},{"id":"cookbook/claim-authorization","title":"Claim based Authorization","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When To Avoid"}]},{"id":"guide/define-rules","title":"Define Rules","categories":["guide"],"headings":[{"id":"define-ability-function","title":"defineAbility function"},{"id":"define-ability-example","title":"defineAbility example"},{"id":"when-to-use-define-ability","title":"When to use defineAbility"},{"id":"why-define-ability-is-not-recommended","title":"Why defineAbility is not recommended"},{"id":"ability-builder-class","title":"AbilityBuilder class"},{"id":"ability-builder-example","title":"AbilityBuilder example"},{"id":"when-to-use-ability-builder","title":"When to use AbilityBuilder"},{"id":"json-objects","title":"JSON objects"},{"id":"json-objects-example","title":"JSON objects example"},{"id":"the-shape-of-raw-rule","title":"The shape of raw rule"},{"id":"when-to-use-json-objects","title":"When to use JSON objects"},{"id":"rules","title":"Rules"},{"id":"inverted-rules-order","title":"Inverted rules order"},{"id":"best-practice","title":"Best practice"}]},{"id":"cookbook/cache-rules","title":"Cache abilities","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"in-memory-lru-cache","title":"In memory LRU cache"},{"id":"in-session-storage","title":"In session storage"},{"id":"in-jwt-token-payload","title":"In JWT token payload"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-ways","title":"Alternative ways"}]},{"id":"cookbook/roles-with-static-permissions","title":"Roles with predefined permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"abilities","title":"Abilities"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"cookbook/roles-with-persisted-permissions","title":"Roles with persisted permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"services","title":"Services"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/conditions-in-depth","title":"Conditions in Depth","categories":["guide"],"headings":[{"id":"mongo-db-and-its-query-language","title":"MongoDB and its query language"},{"id":"supported-operators","title":"Supported operators"},{"id":"why-logical-query-operators-are-not-included","title":"Why logical query operators are not included"},{"id":"checking-logic-in-casl","title":"Checking logic in CASL"},{"id":"common-conditions","title":"Common conditions"},{"id":"match-one-of-few-items-in-a-scalar-property","title":"Match one of few items in a scalar property"},{"id":"match-specified-item-in-an-array-property","title":"Match specified item in an array property"},{"id":"match-one-of-few-items-in-an-array-property","title":"Match one of few items in an array property"},{"id":"match-nested-property-value","title":"Match nested property value"},{"id":"match-several-properties-of-a-nested-array-property","title":"Match several properties of a nested array property"}]},{"id":"guide/restricting-fields","title":"Restricting fields access","categories":["guide"],"headings":[{"id":"nested-fields","title":"Nested fields"},{"id":"field-patterns","title":"Field patterns"},{"id":"field-patterns-table","title":"Field patterns table"}]},{"id":"guide/subject-type-detection","title":"Subject type detection","categories":["guide"],"headings":[{"id":"how-does-casl-detect-subject-type","title":"How does CASL detect subject type?"},{"id":"subject-helper","title":"subject helper"},{"id":"custom-subject-type-detection","title":"Custom subject type detection"},{"id":"use-classes-as-subject-types","title":"Use classes as subject types"}]},{"id":"guide/define-aliases","title":"Define Action Aliases","categories":["guide"],"headings":[{"id":"invalid-usage","title":"Invalid usage"}]},{"id":"advanced/typescript","title":"TypeScript Support","categories":["advanced"],"headings":[{"id":"permissions-inference","title":"Permissions inference"},{"id":"infer-subject-types-from-interfaces-and-classes","title":"Infer subject types from interfaces and classes"},{"id":"safer-permissions-inference","title":"Safer permissions inference"},{"id":"application-ability","title":"Application Ability"},{"id":"ability-builder-type-inference","title":"AbilityBuilder type inference"},{"id":"nested-fields-with-dot-notation","title":"Nested fields with dot notation"},{"id":"useful-type-helpers","title":"Useful type helpers"},{"id":"raw-rule","title":"RawRule"},{"id":"rule-of","title":"RuleOf"},{"id":"ability-options-of","title":"AbilityOptionsOf"},{"id":"any-ability-and-any-mongo-ability","title":"AnyAbility and AnyMongoAbility"},{"id":"mongo-query","title":"MongoQuery"},{"id":"forced-subject","title":"ForcedSubject"}]},{"id":"advanced/customize-ability","title":"Customize Ability","categories":["advanced"],"headings":[{"id":"extend-conditions-with-custom-operators","title":"Extend conditions with custom operators"},{"id":"custom-conditions-matcher-implementation","title":"Custom conditions matcher implementation"},{"id":"custom-field-matcher","title":"Custom field matcher"}]},{"id":"advanced/debugging-testing","title":"Debugging and testing","categories":["advanced"],"headings":[{"id":"debugging","title":"Debugging"},{"id":"testing","title":"Testing"}]},{"id":"advanced/ability-to-database-query","title":"Ability to database query","categories":["advanced"],"headings":[]},{"id":"package/casl-prisma","title":"CASL Prisma","categories":["package"],"headings":[{"id":"casl-prisma","title":"CASL Prisma"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"note-on-subject-helper","title":"Note on subject helper"},{"id":"note-on-prisma-query-runtime-interpreter","title":"Note on Prisma Query runtime interpreter"},{"id":"finding-accessible-records","title":"Finding Accessible Records"},{"id":"type-script-support","title":"TypeScript support"},{"id":"prisma-query","title":"PrismaQuery"},{"id":"model","title":"Model"},{"id":"subjects","title":"Subjects"},{"id":"custom-prisma-client-output-path","title":"Custom PrismaClient output path"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-mongoose","title":"CASL Mongoose","categories":["package"],"headings":[{"id":"casl-mongoose","title":"CASL Mongoose"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"accessible-by-helper","title":"accessibleBy helper"},{"id":"mongo-db-adapter","title":"MongoDB adapter"},{"id":"mongoose","title":"Mongoose"},{"id":"accessible-by-in-type-script","title":"accessibleBy in TypeScript"},{"id":"accessible-records-plugin","title":"Accessible Records plugin"},{"id":"accessible-fields-plugin","title":"Accessible Fields plugin"},{"id":"type-script-support-in-mongoose","title":"TypeScript support in mongoose"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-angular","title":"CASL Angular","categories":["package"],"headings":[{"id":"casl-angular","title":"CASL Angular"},{"id":"installation","title":"Installation"},{"id":"configure-app-module","title":"Configure AppModule"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates-using-ability-service","title":"Check permissions in templates using AbilityService"},{"id":"check-permissions-in-templates-using-pipe","title":"Check permissions in templates using pipe"},{"id":"why-pipe-and-not-directive","title":"Why pipe and not directive?"},{"id":"performance-considerations","title":"Performance considerations"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-react","title":"CASL React","categories":["package"],"headings":[{"id":"casl-react","title":"CASL React"},{"id":"installation","title":"Installation"},{"id":"can-component","title":"Can component"},{"id":"bind-can-to-a-particular-ability-instance","title":"Bind Can to a particular Ability instance"},{"id":"imperative-access-to-ability-instance","title":"Imperative access to Ability instance"},{"id":"usage-note-on-react-16-4-with-type-script","title":"Usage note on React < 16.4 with TypeScript"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"type-script-support","title":"TypeScript support"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"use-ability-usage-within-hooks","title":"useAbility usage within hooks"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-vue","title":"CASL Vue","categories":["package"],"headings":[{"id":"casl-vue","title":"CASL Vue"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"the-plugin","title":"The plugin"},{"id":"provide-ability-hook","title":"provideAbility hook"},{"id":"can-component","title":"Can component"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"component-vs-reactive-ability","title":"Component vs reactive Ability"},{"id":"type-script-support","title":"TypeScript support"},{"id":"augment-vue-types","title":"Augment Vue types"},{"id":"composition-api","title":"Composition API"},{"id":"options-api","title":"Options API"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-aurelia","title":"CASL Aurelia","categories":["package"],"headings":[{"id":"casl-aurelia","title":"CASL Aurelia"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates","title":"Check permissions in templates"},{"id":"why-value-converter-and-not-custom-attribute","title":"Why value converter and not custom attribute?"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]}],"byId":{"guide/install":[0],"api/casl-ability":[1],"guide/intro":[2],"cookbook/intro":[3],"api/casl-ability-extra":[4],"cookbook/less-confusing-can-api":[5],"cookbook/claim-authorization":[6],"guide/define-rules":[7],"cookbook/cache-rules":[8],"cookbook/roles-with-static-permissions":[9],"cookbook/roles-with-persisted-permissions":[10],"guide/conditions-in-depth":[11],"guide/restricting-fields":[12],"guide/subject-type-detection":[13],"guide/define-aliases":[14],"advanced/typescript":[15],"advanced/customize-ability":[16],"advanced/debugging-testing":[17],"advanced/ability-to-database-query":[18],"package/casl-prisma":[19],"package/casl-mongoose":[20],"package/casl-angular":[21],"package/casl-react":[22],"package/casl-vue":[23],"package/casl-aurelia":[24]}} \ No newline at end of file diff --git a/v6/bootstrap.6cc06c45.js b/v6/bootstrap.ac7e646d.js similarity index 99% rename from v6/bootstrap.6cc06c45.js rename to v6/bootstrap.ac7e646d.js index 514583da2..2c745afe5 100644 --- a/v6/bootstrap.6cc06c45.js +++ b/v6/bootstrap.ac7e646d.js @@ -1,2 +1,2 @@ -var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=function(t){return t&&t.Math==Math&&t},n=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||function(){return this}()||Function("return this")(),i={},r=function(t){try{return!!t()}catch(t){return!0}},o=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),s={},a={}.propertyIsEnumerable,c=Object.getOwnPropertyDescriptor,u=c&&!a.call({1:2},1);s.f=u?function(t){var e=c(this,t);return!!e&&e.enumerable}:a;var l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},h={}.toString,d=function(t){return h.call(t).slice(8,-1)},p=d,f="".split,g=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},m=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==p(t)?f.call(t,""):Object(t)}:Object,C=g,v=function(t){return m(C(t))},b=function(t){return"object"==typeof t?null!==t:"function"==typeof t},w=b,y=function(t,e){if(!w(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!w(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")},x=g,k=function(t){return Object(x(t))},A={}.hasOwnProperty,F=function(t,e){return A.call(k(t),e)},E=b,$=n.document,j=E($)&&E($.createElement),S=function(t){return j?$.createElement(t):{}},O=S,z=!o&&!r((function(){return 7!=Object.defineProperty(O("div"),"a",{get:function(){return 7}}).a})),M=o,D=s,T=l,L=v,_=y,N=F,B=z,I=Object.getOwnPropertyDescriptor;i.f=M?I:function(t,e){if(t=L(t),e=_(e,!0),B)try{return I(t,e)}catch(t){}if(N(t,e))return T(!D.f.call(t,e),t[e])};var q={},P=b,U=function(t){if(!P(t))throw TypeError(String(t)+" is not an object");return t},V=o,R=z,G=U,H=y,Z=Object.defineProperty;q.f=V?Z:function(t,e,n){if(G(t),e=H(e,!0),G(n),R)try{return Z(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var X=q,W=l,K=o?function(t,e,n){return X.f(t,e,W(1,n))}:function(t,e,n){return t[e]=n,t},Q={exports:{}},J=n,Y=K,tt=function(t,e){try{Y(J,t,e)}catch(n){J[t]=e}return e},et=tt,nt=n["A"]||et("__core-js_shared__",{}),it=nt,rt=Function.toString;"function"!=typeof it.inspectSource&&(it.inspectSource=function(t){return rt.call(t)});var ot=it.inspectSource,st=ot,at=n.WeakMap,ct="function"==typeof at&&/native code/.test(st(at)),ut={exports:{}},lt=nt;(ut.exports=function(t,e){return lt[t]||(lt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var ht,dt,pt,ft=0,gt=Math.random(),mt=ut.exports,Ct=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++ft+gt).toString(36)},vt=mt("keys"),bt={},wt=ct,yt=b,xt=K,kt=F,At=nt,Ft=function(t){return vt[t]||(vt[t]=Ct(t))},Et=bt,$t=n.WeakMap;if(wt){var jt=At.state||(At.state=new $t),St=jt.get,Ot=jt.has,zt=jt.set;ht=function(t,e){if(Ot.call(jt,t))throw new TypeError("Object already initialized");return e.facade=t,zt.call(jt,t,e),e},dt=function(t){return St.call(jt,t)||{}},pt=function(t){return Ot.call(jt,t)}}else{var Mt=Ft("state");Et[Mt]=!0,ht=function(t,e){if(kt(t,Mt))throw new TypeError("Object already initialized");return e.facade=t,xt(t,Mt,e),e},dt=function(t){return kt(t,Mt)?t[Mt]:{}},pt=function(t){return kt(t,Mt)}}var Dt={set:ht,get:dt,has:pt,enforce:function(t){return pt(t)?dt(t):ht(t,{})},getterFor:function(t){return function(e){var n;if(!yt(e)||(n=dt(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},Tt=n,Lt=K,_t=F,Nt=tt,Bt=ot,It=Dt.get,qt=Dt.enforce,Pt=String(String).split("String");(Q.exports=function(t,e,n,i){var r,o=!!i&&!!i.unsafe,s=!!i&&!!i.enumerable,a=!!i&&!!i.noTargetGet;"function"==typeof n&&("string"!=typeof e||_t(n,"name")||Lt(n,"name",e),(r=qt(n)).source||(r.source=Pt.join("string"==typeof e?e:""))),t!==Tt?(o?!a&&t[e]&&(s=!0):delete t[e],s?t[e]=n:Lt(t,e,n)):s?t[e]=n:Nt(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&It(this).source||Bt(this)}));var Ut=n,Vt=n,Rt=function(t){return"function"==typeof t?t:void 0},Gt=function(t,e){return arguments.length<2?Rt(Ut[t])||Rt(Vt[t]):Ut[t]&&Ut[t][e]||Vt[t]&&Vt[t][e]},Ht={},Zt=Math.ceil,Xt=Math.floor,Wt=function(t){return isNaN(t=+t)?0:(t>0?Xt:Zt)(t)},Kt=Wt,Qt=Math.min,Jt=Wt,Yt=Math.max,te=Math.min,ee=v,ne=function(t){return t>0?Qt(Kt(t),9007199254740991):0},ie=function(t,e){var n=Jt(t);return n<0?Yt(n+e,0):te(n,e)},re=function(t){return function(e,n,i){var r,o=ee(e),s=ne(o.length),a=ie(i,s);if(t&&n!=n){for(;s>a;)if((r=o[a++])!=r)return!0}else for(;s>a;a++)if((t||a in o)&&o[a]===n)return t||a||0;return!t&&-1}},oe={includes:re(!0),indexOf:re(!1)},se=F,ae=v,ce=oe.indexOf,ue=bt,le=function(t,e){var n,i=ae(t),r=0,o=[];for(n in i)!se(ue,n)&&se(i,n)&&o.push(n);for(;e.length>r;)se(i,n=e[r++])&&(~ce(o,n)||o.push(n));return o},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");Ht.f=Object.getOwnPropertyNames||function(t){return le(t,he)};var de={};de.f=Object.getOwnPropertySymbols;var pe,fe,ge,me=Ht,Ce=de,ve=U,be=Gt("Reflect","ownKeys")||function(t){var e=me.f(ve(t)),n=Ce.f;return n?e.concat(n(t)):e},we=F,ye=be,xe=i,ke=q,Ae=r,Fe=/#|\.prototype\./,Ee=function(t,e){var n=je[$e(t)];return n==Oe||n!=Se&&("function"==typeof e?Ae(e):!!e)},$e=Ee.normalize=function(t){return String(t).replace(Fe,".").toLowerCase()},je=Ee.data={},Se=Ee.NATIVE="N",Oe=Ee.POLYFILL="P",ze=Ee,Me=n,De=i.f,Te=K,Le=Q.exports,_e=tt,Ne=function(t,e){for(var n=ye(e),i=ke.f,r=xe.f,o=0;on;)e.push(arguments[n++]);return on[++rn]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},pe(rn),rn},Ye=function(t){delete on[t]},Ke?pe=function(t){tn.nextTick(an(t))}:nn&&nn.now?pe=function(t){nn.now(an(t))}:en&&!We?(ge=(fe=new en).port2,fe.port1.onmessage=cn,pe=He(ge.postMessage,ge,1)):Re.addEventListener&&"function"==typeof postMessage&&!Re.importScripts&&Qe&&"file:"!==Qe.protocol&&!Ge(un)?(pe=un,Re.addEventListener("message",cn,!1)):pe="onreadystatechange"in Xe("script")?function(t){Ze.appendChild(Xe("script")).onreadystatechange=function(){Ze.removeChild(this),sn(t)}}:function(t){setTimeout(an(t),0)});var ln=n,hn={set:Je,clear:Ye};function dn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}(function(t,e){var n,i,r,o,s,a=t.target,c=t.global,u=t.stat;if(n=c?Me:u?Me[a]||_e(a,{}):(Me[a]||{}).prototype)for(i in e){if(o=e[i],r=t.noTargetGet?(s=De(n,i))&&s.value:n[i],!Be(c?i:a+(u?".":"#")+i,t.forced)&&void 0!==r){if(typeof o==typeof r)continue;Ne(o,r)}(t.sham||r&&r.sham)&&Te(o,"sham",!0),Le(n,i,o,t)}})({global:!0,bind:!0,enumerable:!0,forced:!ln.setImmediate||!ln.clearImmediate},{setImmediate:hn.set,clearImmediate:hn.clear});const pn="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,fn=(t,e,n=null)=>{for(;e!==n;){const n=e.nextSibling;t.removeChild(e),e=n}},gn=`{{lit-${String(Math.random()).slice(2)}}}`,mn=`\x3c!--${gn}--\x3e`,Cn=new RegExp(`${gn}|${mn}`);class vn{constructor(t,e){this.parts=[],this.element=e;const n=[],i=[],r=document.createTreeWalker(e.content,133,null,!1);let o=0,s=-1,a=0;const{strings:c,values:{length:u}}=t;for(;a0;){const e=c[a],n=xn.exec(e)[2],i=n.toLowerCase()+"$lit$",r=t.getAttribute(i);t.removeAttribute(i);const o=r.split(Cn);this.parts.push({type:"attribute",index:s,name:n,strings:o}),a+=o.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),r.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(gn)>=0){const i=t.parentNode,r=e.split(Cn),o=r.length-1;for(let e=0;e{const n=t.length-e.length;return n>=0&&t.slice(n)===e},wn=t=>-1!==t.index,yn=()=>document.createComment(""),xn=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function kn(t,e){const{element:{content:n},parts:i}=t,r=document.createTreeWalker(n,133,null,!1);let o=Fn(i),s=i[o],a=-1,c=0;const u=[];let l=null;for(;r.nextNode();){a++;const t=r.currentNode;for(t.previousSibling===l&&(l=null),e.has(t)&&(u.push(t),null===l&&(l=t)),null!==l&&c++;void 0!==s&&s.index===a;)s.index=null!==l?-1:s.index-c,o=Fn(i,o),s=i[o]}u.forEach((t=>t.parentNode.removeChild(t)))}const An=t=>{let e=11===t.nodeType?0:1;const n=document.createTreeWalker(t,133,null,!1);for(;n.nextNode();)e++;return e},Fn=(t,e=-1)=>{for(let n=e+1;n(...e)=>{const n=t(...e);return En.set(n,!0),n},jn=t=>"function"==typeof t&&En.has(t),Sn={},On={};class zn{constructor(t,e,n){this.F=[],this.template=t,this.processor=e,this.options=n}update(t){let e=0;for(const n of this.F)void 0!==n&&n.setValue(t[e]),e++;for(const t of this.F)void 0!==t&&t.commit()}L(){const t=pn?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],n=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let r,o=0,s=0,a=i.nextNode();for(;ot}),Dn=` ${gn} `;class Tn{constructor(t,e,n,i){this.strings=t,this.values=e,this.type=n,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",n=!1;for(let i=0;i-1||n)&&-1===t.indexOf("--\x3e",r+1);const o=xn.exec(t);e+=null===o?t+(n?Dn:mn):t.substr(0,o.index)+o[1]+o[2]+"$lit$"+o[3]+gn}return e+=this.strings[t],e}getTemplateElement(){const t=document.createElement("template");let e=this.getHTML();return void 0!==Mn&&(e=Mn.createHTML(e)),t.innerHTML=e,t}}const Ln=t=>null===t||!("object"==typeof t||"function"==typeof t),_n=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class Nn{constructor(t,e,n){this.dirty=!0,this.element=t,this.name=e,this.strings=n,this.parts=[];for(let t=0;t{try{const t={get capture(){return Vn=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class Rn{constructor(t,e,n){this.value=void 0,this.B=void 0,this.element=t,this.eventName=e,this.eventContext=n,this.H=t=>this.handleEvent(t)}setValue(t){this.B=t}commit(){for(;jn(this.B);){const t=this.B;this.B=Sn,t(this)}if(this.B===Sn)return;const t=this.B,e=this.value,n=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||n);n&&this.element.removeEventListener(this.eventName,this.H,this.Z),i&&(this.Z=Gn(t),this.element.addEventListener(this.eventName,this.H,this.Z)),this.value=t,this.B=Sn}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const Gn=t=>t&&(Vn?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);function Hn(t){let e=Zn.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},Zn.set(t.type,e));let n=e.stringsArray.get(t.strings);if(void 0!==n)return n;const i=t.strings.join(gn);return n=e.keyString.get(i),void 0===n&&(n=new vn(t,t.getTemplateElement()),e.keyString.set(i,n)),e.stringsArray.set(t.strings,n),n}const Zn=new Map,Xn=new WeakMap;const Wn=new class{handleAttributeExpressions(t,e,n,i){const r=e[0];if("."===r){return new Pn(t,e.slice(1),n).parts}if("@"===r)return[new Rn(t,e.slice(1),i.eventContext)];if("?"===r)return[new qn(t,e.slice(1),n)];return new Nn(t,e,n).parts}handleTextExpression(t){return new In(t)}};"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.3.0");const Kn=(t,...e)=>new Tn(t,e,"html",Wn),Qn=(t,e)=>`${t}--${e}`;let Jn=!0;void 0===window.ShadyCSS?Jn=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),Jn=!1);const Yn=t=>e=>{const n=Qn(e.type,t);let i=Zn.get(n);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},Zn.set(n,i));let r=i.stringsArray.get(e.strings);if(void 0!==r)return r;const o=e.strings.join(gn);if(r=i.keyString.get(o),void 0===r){const n=e.getTemplateElement();Jn&&window.ShadyCSS.prepareTemplateDom(n,t),r=new vn(e,n),i.keyString.set(o,r)}return i.stringsArray.set(e.strings,r),r},ti=["html","svg"],ei=new Set,ni=(t,e,n)=>{ei.add(t);const i=n?n.element:document.createElement("template"),r=e.querySelectorAll("style"),{length:o}=r;if(0===o)return void window.ShadyCSS.prepareTemplateStyles(i,t);const s=document.createElement("style");for(let t=0;t{ti.forEach((e=>{const n=Zn.get(Qn(e,t));void 0!==n&&n.keyString.forEach((t=>{const{element:{content:e}}=t,n=new Set;Array.from(e.querySelectorAll("style")).forEach((t=>{n.add(t)})),kn(t,n)}))}))})(t);const a=i.content;n?function(t,e,n=null){const{element:{content:i},parts:r}=t;if(null==n)return void i.appendChild(e);const o=document.createTreeWalker(i,133,null,!1);let s=Fn(r),a=0,c=-1;for(;o.nextNode();)for(c++,o.currentNode===n&&(a=An(e),n.parentNode.insertBefore(e,n));-1!==s&&r[s].index===c;){if(a>0){for(;-1!==s;)r[s].index+=a,s=Fn(r,s);return}s=Fn(r,s)}}(n,s,a.firstChild):a.insertBefore(s,a.firstChild),window.ShadyCSS.prepareTemplateStyles(i,t);const c=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==c)e.insertBefore(c.cloneNode(!0),e.firstChild);else if(n){a.insertBefore(s,a.firstChild);const t=new Set;t.add(s),kn(n,t)}};window.JSCompiler_renameProperty=(t,e)=>t;const ii={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},ri=(t,e)=>e!==t&&(e==e||t==t),oi={attribute:!0,type:String,converter:ii,reflect:!1,hasChanged:ri};class si extends HTMLElement{constructor(){super(),this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach(((e,n)=>{const i=this.W(n,e);void 0!==i&&(this.J.set(i,n),t.push(i))})),t}static Y(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach(((t,e)=>this._classProperties.set(e,t)))}}static createProperty(t,e=oi){if(this.Y(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const n="symbol"==typeof t?Symbol():`__${t}`,i=this.getPropertyDescriptor(t,n,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}static getPropertyDescriptor(t,e,n){return{get(){return this[e]},set(i){const r=this[t];this[e]=i,this.requestUpdateInternal(t,r,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||oi}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this.Y(),this.J=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const n of e)this.createProperty(n,t[n])}}static W(t,e){const n=e.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}static tt(t,e,n=ri){return n(t,e)}static et(t,e){const n=e.type,i=e.converter||ii,r="function"==typeof i?i:i.fromAttribute;return r?r(t,n):t}static nt(t,e){if(void 0===e.reflect)return;const n=e.type,i=e.converter;return(i&&i.toAttribute||ii.toAttribute)(t,n)}initialize(){this.it=0,this.rt=new Promise((t=>this.ot=t)),this.st=new Map,this.ct(),this.requestUpdateInternal()}ct(){this.constructor._classProperties.forEach(((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this.ut||(this.ut=new Map),this.ut.set(e,t)}}))}lt(){this.ut.forEach(((t,e)=>this[e]=t)),this.ut=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this.ot&&(this.ot(),this.ot=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,n){e!==n&&this.ht(t,n)}dt(t,e,n=oi){const i=this.constructor,r=i.W(t,n);if(void 0!==r){const t=i.nt(e,n);if(void 0===t)return;this.it=8|this.it,null==t?this.removeAttribute(r):this.setAttribute(r,t),this.it=-9&this.it}}ht(t,e){if(8&this.it)return;const n=this.constructor,i=n.J.get(t);if(void 0!==i){const t=n.getPropertyOptions(i);this.it=16|this.it,this[i]=n.et(e,t),this.it=-17&this.it}}requestUpdateInternal(t,e,n){let i=!0;if(void 0!==t){const r=this.constructor;n=n||r.getPropertyOptions(t),r.tt(this[t],e,n.hasChanged)?(this.st.has(t)||this.st.set(t,e),!0!==n.reflect||16&this.it||(void 0===this.ft&&(this.ft=new Map),this.ft.set(t,n))):i=!1}!this.gt&&i&&(this.rt=this.Ct())}requestUpdate(t,e){return this.requestUpdateInternal(t,e),this.updateComplete}async Ct(){this.it=4|this.it;try{await this.rt}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this.gt}get gt(){return 4&this.it}get hasUpdated(){return 1&this.it}performUpdate(){if(!this.gt)return;this.ut&&this.lt();let t=!1;const e=this.st;try{t=this.shouldUpdate(e),t?this.update(e):this.vt()}catch(e){throw t=!1,this.vt(),e}t&&(1&this.it||(this.it=1|this.it,this.firstUpdated(e)),this.updated(e))}vt(){this.st=new Map,this.it=-5&this.it}get updateComplete(){return this.bt()}bt(){return this.rt}shouldUpdate(t){return!0}update(t){void 0!==this.ft&&this.ft.size>0&&(this.ft.forEach(((t,e)=>this.dt(e,this[e],t))),this.ft=void 0),this.vt()}updated(t){}firstUpdated(t){}}si.finalized=!0;const ai=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ci=Symbol();class ui{constructor(t,e){if(e!==ci)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this.wt&&(ai?(this.wt=new CSSStyleSheet,this.wt.replaceSync(this.cssText)):this.wt=null),this.wt}toString(){return this.cssText}}const li=t=>new ui(String(t),ci),hi=(t,...e)=>{const n=e.reduce(((e,n,i)=>e+(t=>{if(t instanceof ui)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(n)+t[i+1]),t[0]);return new ui(n,ci)};(window.litElementVersions||(window.litElementVersions=[])).push("2.4.0");const di={};class pi extends si{static getStyles(){return this.styles}static yt(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(Array.isArray(t)){const e=(t,n)=>t.reduceRight(((t,n)=>Array.isArray(n)?e(n,t):(t.add(n),t)),n),n=e(t,new Set),i=[];n.forEach((t=>i.unshift(t))),this.xt=i}else this.xt=void 0===t?[]:[t];this.xt=this.xt.map((t=>{if(t instanceof CSSStyleSheet&&!ai){const e=Array.prototype.slice.call(t.cssRules).reduce(((t,e)=>t+e.cssText),"");return li(e)}return t}))}initialize(){super.initialize(),this.constructor.yt(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor.xt;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?ai?this.renderRoot.adoptedStyleSheets=t.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):this.kt=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map((t=>t.cssText)),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const e=this.render();super.update(t),e!==di&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this.kt&&(this.kt=!1,this.constructor.xt.forEach((t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)})))}render(){return di}}pi.finalized=!0,pi.render=(t,e,n)=>{if(!n||"object"!=typeof n||!n.scopeName)throw new Error("The `scopeName` option is required.");const i=n.scopeName,r=Xn.has(e),o=Jn&&11===e.nodeType&&!!e.host,s=o&&!ei.has(i),a=s?document.createDocumentFragment():e;if(((t,e,n)=>{let i=Xn.get(e);void 0===i&&(fn(e,e.firstChild),Xn.set(e,i=new In(Object.assign({templateFactory:Hn},n))),i.appendInto(e)),i.setValue(t),i.commit()})(t,a,Object.assign({templateFactory:Yn(i)},n)),s){const t=Xn.get(a);Xn.delete(a);const n=t.value instanceof zn?t.value.template:void 0;ni(i,a,n),fn(e,e.firstChild),e.appendChild(a),Xn.set(e,t)}!r&&o&&window.ShadyCSS.styleElement(e.host)};const fi=new WeakMap,gi=$n((t=>e=>{if(!(e instanceof In))throw new Error("cache can only be used in text bindings");let n=fi.get(e);void 0===n&&(n=new WeakMap,fi.set(e,n));const i=e.value;if(i instanceof zn){if(t instanceof Tn&&i.template===e.options.templateFactory(t))return void e.setValue(t);{let t=n.get(i.template);void 0===t&&(t={instance:i,nodes:document.createDocumentFragment()},n.set(i.template,t)),((t,e,n=null,i=null)=>{for(;e!==n;){const n=e.nextSibling;t.insertBefore(e,i),e=n}})(t.nodes,e.startNode.nextSibling,e.endNode)}}if(t instanceof Tn){const i=e.options.templateFactory(t),r=n.get(i);void 0!==r&&(e.setValue(r.nodes),e.commit(),e.value=r.instance)}e.setValue(t)}));var mi={items:[{name:"learn",route:!1,children:[{heading:"docs"},{name:"guide",page:"guide/intro"},{name:"api"},{name:"examples",url:"https://github.com/stalniy/casl-examples"},{name:"cookbook",page:"cookbook/intro"}]},{name:"ecosystem",route:!1,children:[{heading:"packages"},{name:"pkg-prisma",page:"package/casl-prisma"},{name:"pkg-mongoose",page:"package/casl-mongoose"},{name:"pkg-angular",page:"package/casl-angular"},{name:"pkg-react",page:"package/casl-react"},{name:"pkg-vue",page:"package/casl-vue"},{name:"pkg-aurelia",page:"package/casl-aurelia"},{heading:"help"},{name:"questions",url:"https://stackoverflow.com/questions/tagged/casl"},{name:"chat",url:"https://gitter.im/stalniy-casl/casl"},{heading:"news"},{name:"blog",url:"https://sergiy-stotskiy.medium.com"}]},{name:"support"}],footer:[{icon:"github",url:"https://github.com/stalniy/casl"},{icon:"twitter",url:"https://twitter.com/sergiy_stotskiy"},{icon:"medium",url:"https://sergiy-stotskiy.medium.com"}]},Ci={exports:{}};Ci.exports=Fi,Ci.exports.parse=bi,Ci.exports.compile=function(t,e){return wi(bi(t,e))},Ci.exports.tokensToFunction=wi,Ci.exports.tokensToRegExp=Ai;var vi=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function bi(t,e){for(var n,i=[],r=0,o=0,s="",a=e&&e.delimiter||"/",c=e&&e.delimiters||"./",u=!1;null!==(n=vi.exec(t));){var l=n[0],h=n[1],d=n.index;if(s+=t.slice(o,d),o=d+l.length,h)s+=h[1],u=!0;else{var p="",f=t[o],g=n[2],m=n[3],C=n[4],v=n[5];if(!u&&s.length){var b=s.length-1;c.indexOf(s[b])>-1&&(p=s[b],s=s.slice(0,b))}s&&(i.push(s),s="",u=!1);var w=""!==p&&void 0!==f&&f!==p,y="+"===v||"*"===v,x="?"===v||"*"===v,k=p||a,A=m||C;i.push({name:g||r++,prefix:p,delimiter:k,optional:x,repeat:y,partial:w,pattern:A?xi(A):"[^"+yi(k)+"]+?"})}}return(s||o-1;else{var p=d.repeat?"(?:"+d.pattern+")(?:"+yi(d.delimiter)+"(?:"+d.pattern+"))*":d.pattern;e&&e.push(d),d.optional?d.partial?u+=yi(d.prefix)+"("+p+")?":u+="(?:"+yi(d.prefix)+"("+p+"))?":u+=yi(d.prefix)+"("+p+")"}}return o?(i||(u+="(?:"+s+")?"),u+="$"===c?"$":"(?="+c+")"):(i||(u+="(?:"+s+"(?="+c+"))?"),l||(u+="(?="+s+"|"+c+")")),new RegExp(u,ki(n))}function Fi(t,e,n){return t instanceof RegExp?function(t,e){if(!e)return t;var n=t.source.match(/\((?!\?)/g);if(n)for(var i=0;it.replace(new RegExp(`{{[  ]*${e}[  ]*}}`,"gm"),String(Ri(n)))),t)}function Vi(t,e){const n=t.split(".");let i=e.strings;for(;null!=i&&n.length>0;)i=i[n.shift()];return null!=i?i.toString():null}function Ri(t){return"function"==typeof t?t():t}let Gi={loader:()=>Promise.resolve({}),empty:t=>`[${t}]`,lookup:Vi,interpolate:Ui,translationCache:{}};function Hi(t,e,n=Gi){var i;i={previousStrings:n.strings,previousLang:n.lang,lang:n.lang=t,strings:n.strings=e},window.dispatchEvent(new CustomEvent("langChanged",{detail:i}))}function Zi(t,e){const n=e=>t(e.detail);return window.addEventListener("langChanged",n,e),()=>window.removeEventListener("langChanged",n)}function Xi(t,e,n=Gi){let i=n.translationCache[t]||(n.translationCache[t]=n.lookup(t,n)||n.empty(t,n));return null!=(e=null!=e?Ri(e):null)?n.interpolate(i,e,n):i}function Wi(t){return t instanceof In?t.startNode.isConnected:t instanceof Bn?t.committer.element.isConnected:t.element.isConnected}const Ki=new Map;var Qi;function Ji(t,e,n){const i=e(n);t.value!==i&&(t.setValue(i),t.commit())}Zi((t=>{for(const[e,n]of Ki)Wi(e)&&Ji(e,n,t)})),Qi=Ki,setInterval((()=>{return t=()=>function(t){for(const[e]of t)Wi(e)||t.delete(e)}(Qi),void("requestIdleCallback"in window?window.requestIdleCallback(t):setTimeout(t));var t}),6e4);const Yi=$n((t=>e=>{Ki.set(e,t),Ji(e,t)})),tr=new WeakMap,er=$n((t=>e=>{if(!(e instanceof In))throw new Error("unsafeHTML can only be used in text bindings");const n=tr.get(e);if(void 0!==n&&Ln(t)&&t===n.value&&e.value===n.fragment)return;const i=document.createElement("template");i.innerHTML=t;const r=document.importNode(i.content,!0);e.setValue(r),tr.set(e,{value:t,fragment:r})})),nr=(...t)=>JSON.stringify(t);function ir(t,e=nr){const n=new Map,i=function(...i){const r=e(...i);return n.has(r)||n.set(r,t.apply(this,i)),n.get(r)};return i.cache=n,i}const rr=t=>t,or={json:JSON,raw:{parse:rr,stringify:rr},txtArrayJSON:{parse(t){const e=t.trim().replace(/[\r\n]+/g,",");return JSON.parse(`[${e}]`)},stringify(){throw new Error('"txtArrayJSON" format is not serializable')}}};function sr(t,e={}){const n=or[e.format||"json"];return new Promise(((i,r)=>{const o=new XMLHttpRequest;o.open(e.method||"GET",t),e.headers&&Object.keys(e.headers).forEach((t=>{o.setRequestHeader(t,e.headers[t])})),o.onload=()=>i({status:o.status,headers:{"content-type":o.getResponseHeader("Content-Type")},body:n.parse(o.responseText)}),o.ontimeout=o.onerror=r,o.send(e.data?n.stringify(e.data):null)}))}const ar=Object.create(null);function cr(t,e={}){const n=e.absoluteUrl?t:Pi+t;return"GET"!==(e.method||"GET")?sr(n,e):(ar[n]=ar[n]||sr(n,e),!0===e.cache?ar[n]:ar[n].then((t=>(delete ar[n],t))).catch((t=>(delete ar[n],Promise.reject(t)))))}var ur={en:{default:"/assets/a.507f0a5d.json"}};function lr(t,e){const n=t.split(".");let i=e.strings;for(let t=0;te[n]))}const pr=function(t){return Gi=Object.assign(Object.assign({},Gi),t)}({loader:async t=>(await cr(ur[t].default)).body,lookup:lr,interpolate:dr,empty:function(t){return console.warn(`missing i18n key: ${t}`),t}}),fr=ir(((t,e)=>new Intl.DateTimeFormat(t,Xi(`dateTimeFormats.${e}`)))),gr=["en"],mr=gr[0],Cr=()=>pr.lang,vr=Xi;function br(t){if(!gr.includes(t))throw new Error(`Locale ${t} is not supported. Supported: ${gr.join(", ")}`);return async function(t,e=Gi){const n=await e.loader(t,e);e.translationCache={},Hi(t,n,e)}(t)}var wr=function(){return(wr=Object.assign||function(t){for(var e,n=1,i=arguments.length;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function xr(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s}function kr(){for(var t=[],e=0;e0?[{node:n,keys:i}]:[]}return t.prototype.next=function(){var t=this.dive();return this.backtrack(),t},t.prototype.dive=function(){if(0===this.Ft.length)return{done:!0,value:void 0};var t=Er(this.Ft),e=t.node,n=t.keys;return""===Er(n)?{done:!1,value:this.result()}:(this.Ft.push({node:e[Er(n)],keys:Object.keys(e[Er(n)])}),this.dive())},t.prototype.backtrack=function(){0!==this.Ft.length&&(Er(this.Ft).keys.pop(),Er(this.Ft).keys.length>0||(this.Ft.pop(),this.backtrack()))},t.prototype.key=function(){return this.set._prefix+this.Ft.map((function(t){var e=t.keys;return Er(e)})).filter((function(t){return""!==t})).join("")},t.prototype.value=function(){return Er(this.Ft).node[""]},t.prototype.result=function(){return"VALUES"===this.At?this.value():"KEYS"===this.At?this.key():[this.key(),this.value()]},t.prototype[Symbol.iterator]=function(){return this},t}(),Er=function(t){return t[t.length-1]},$r=function(t,e,n,i,r,o){o.push({distance:0,ia:i,ib:0,edit:r});for(var s=[];o.length>0;){var a=o.pop(),c=a.distance,u=a.ia,l=a.ib,h=a.edit;if(l!==e.length)if(t[u]===e[l])o.push({distance:c,ia:u+1,ib:l+1,edit:0});else{if(c>=n)continue;2!==h&&o.push({distance:c+1,ia:u,ib:l+1,edit:3}),u0;)s();return r}(this._tree,t,e)},t.prototype.get=function(t){var e=Or(this._tree,t);return void 0!==e?e[""]:void 0},t.prototype.has=function(t){var e=Or(this._tree,t);return void 0!==e&&e.hasOwnProperty("")},t.prototype.keys=function(){return new Fr(this,"KEYS")},t.prototype.set=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");return delete this.Et,zr(this._tree,t)[""]=e,this},Object.defineProperty(t.prototype,"size",{get:function(){var t=this;return this.Et||(this.Et=0,this.forEach((function(){t.Et+=1}))),this.Et},enumerable:!1,configurable:!0}),t.prototype.update=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");delete this.Et;var n=zr(this._tree,t);return n[""]=e(n[""]),this},t.prototype.values=function(){return new Fr(this,"VALUES")},t.prototype[Symbol.iterator]=function(){return this.entries()},t.from=function(e){var n,i,r=new t;try{for(var o=yr(e),s=o.next();!s.done;s=o.next()){var a=xr(s.value,2),c=a[0],u=a[1];r.set(c,u)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r},t.fromObject=function(e){return t.from(Object.entries(e))},t}(),Sr=function(t,e,n){if(void 0===n&&(n=[]),0===e.length||null==t)return[t,n];var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0===i?(n.push([t,e]),Sr(void 0,"",n)):(n.push([t,i]),Sr(t[i],e.slice(i.length),n))},Or=function(t,e){if(0===e.length||null==t)return t;var n=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0!==n?Or(t[n],e.slice(n.length)):void 0},zr=function(t,e){var n;if(0===e.length||null==t)return t;var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));if(void 0===i){var r=Object.keys(t).find((function(t){return""!==t&&t.startsWith(e[0])}));if(void 0!==r){var o=Mr(e,r);return t[o]=((n={})[r.slice(o.length)]=t[r],n),delete t[r],zr(t[o],e.slice(o.length))}return t[e]={},t[e]}return zr(t[i],e.slice(i.length))},Mr=function(t,e,n,i,r){return void 0===n&&(n=0),void 0===i&&(i=Math.min(t.length,e.length)),void 0===r&&(r=""),n>=i||t[n]!==e[n]?r:Mr(t,e,n+1,i,r+t[n])},Dr=function(t,e){var n=xr(Sr(t,e),2),i=n[0],r=n[1];if(void 0!==i){delete i[""];var o=Object.keys(i);0===o.length&&Tr(r),1===o.length&&Lr(r,o[0],i[o[0]])}},Tr=function(t){if(0!==t.length){var e=xr(_r(t),2),n=e[0];delete n[e[1]],0===Object.keys(n).length&&Tr(t.slice(0,-1))}},Lr=function(t,e,n){if(0!==t.length){var i=xr(_r(t),2),r=i[0],o=i[1];r[o+e]=n,delete r[o]}},_r=function(t){return t[t.length-1]},Nr=function(){function t(t){if(null==(null==t?void 0:t.fields))throw new Error('MiniSearch: option "fields" must be provided');this.$t=wr(wr(wr({},Vr),t),{searchOptions:wr(wr({},Rr),t.searchOptions||{})}),this.jt=new jr,this.St=0,this.Ot={},this.zt={},this.Mt={},this.Dt={},this.Tt=0,this.Lt={},this.addFields(this.$t.fields)}return t.prototype.add=function(t){var e=this,n=this.$t,i=n.extractField,r=n.tokenize,o=n.processTerm,s=n.fields,a=n.idField,c=i(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=this.addDocumentId(c);this.saveStoredFields(u,t),s.forEach((function(n){var s=i(t,n);if(null!=s){var a=r(s.toString(),n);e.addFieldLength(u,e.zt[n],e.documentCount-1,a.length),a.forEach((function(t){var i=o(t,n);i&&e.addTerm(e.zt[n],u,i)}))}}))},t.prototype.addAll=function(t){var e=this;t.forEach((function(t){return e.add(t)}))},t.prototype.addAllAsync=function(t,e){var n=this;void 0===e&&(e={});var i=e.chunkSize,r=void 0===i?10:i,o={chunk:[],promise:Promise.resolve()},s=t.reduce((function(t,e,i){var o=t.chunk,s=t.promise;return o.push(e),(i+1)%r==0?{chunk:[],promise:s.then((function(){return new Promise((function(t){return setTimeout(t,0)}))})).then((function(){return n.addAll(o)}))}:{chunk:o,promise:s}}),o),a=s.chunk;return s.promise.then((function(){return n.addAll(a)}))},t.prototype.remove=function(t){var e=this,n=this.$t,i=n.tokenize,r=n.processTerm,o=n.extractField,s=n.fields,a=n.idField,c=o(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=xr(Object.entries(this.Ot).find((function(t){var e=xr(t,2);e[0];var n=e[1];return c===n}))||[],1)[0];if(null==u)throw new Error("MiniSearch: cannot remove document with ID "+c+": it is not in the index");s.forEach((function(n){var s=o(t,n);null!=s&&i(s.toString(),n).forEach((function(t){var i=r(t,n);i&&e.removeTerm(e.zt[n],u,i)}))})),delete this.Lt[u],delete this.Ot[u],this.St-=1},t.prototype.removeAll=function(t){var e=this;if(t)t.forEach((function(t){return e.remove(t)}));else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this.jt=new jr,this.St=0,this.Ot={},this.Mt={},this.Dt={},this.Lt={},this.Tt=0}},t.prototype.search=function(t,e){var n=this;void 0===e&&(e={});var i=this.$t,r=i.tokenize,o=i.processTerm,s=i.searchOptions,a=wr(wr({tokenize:r,processTerm:o},s),e),c=a.tokenize,u=a.processTerm,l=c(t).map((function(t){return u(t)})).filter((function(t){return!!t})).map(Pr(a)).map((function(t){return n.executeQuery(t,a)})),h=this.combineResults(l,a.combineWith);return Object.entries(h).reduce((function(t,e){var i=xr(e,2),r=i[0],o=i[1],s=o.score,c=o.match,u=o.terms,l={id:n.Ot[r],terms:Ur(u),score:s,match:c};return Object.assign(l,n.Lt[r]),(null==a.filter||a.filter(l))&&t.push(l),t}),[]).sort((function(t,e){return t.scoret.title)).join(" ");default:return t[e]}},fields:["title","headings","summary"],searchOptions:{boost:{title:2}}};var Xr=Object.freeze({__proto__:null,pages:{en:{notfound:"/assets/a.3a1055aa.json","support-casljs":"/assets/a.fb3a29b4.json","advanced/ability-inheritance":"/assets/a.d397cd54.json","advanced/ability-to-database-query":"/assets/a.1cbe572a.json","advanced/customize-ability":"/assets/a.43b3ebd4.json","advanced/debugging-testing":"/assets/a.895c28e2.json","advanced/typescript":"/assets/a.29bf67b2.json","api/casl-ability":"/assets/a.39bf2d3c.json","api/casl-ability-extra":"/assets/a.f4795c7d.json","cookbook/cache-rules":"/assets/a.e43ce3e2.json","cookbook/claim-authorization":"/assets/a.8e663da7.json","cookbook/intro":"/assets/a.0dea9028.json","cookbook/less-confusing-can-api":"/assets/a.d83e511d.json","cookbook/roles-with-persisted-permissions":"/assets/a.6ae53ea0.json","cookbook/roles-with-static-permissions":"/assets/a.12302ceb.json","guide/conditions-in-depth":"/assets/a.55d6bf93.json","guide/define-aliases":"/assets/a.34a69a85.json","guide/define-rules":"/assets/a.5668f429.json","guide/install":"/assets/a.83a32d45.json","guide/intro":"/assets/a.c7c52381.json","guide/restricting-fields":"/assets/a.704691ce.json","guide/subject-type-detection":"/assets/a.1cb23e25.json","package/casl-angular":"/assets/a.f6973802.json","package/casl-mongoose":"/assets/a.388c5727.json","package/casl-prisma":"/assets/a.6658bdbb.json","package/casl-aurelia":"/assets/a.c852f966.json","package/casl-react":"/assets/a.c38715ec.json","package/casl-vue":"/assets/a.d660db78.json"}},summaries:{en:"/assets/content_pages_summaries.en.d03f4097.json"},searchIndexes:{en:"/assets/content_pages_searchIndexes.en.4b3e849b.json"}});const Wr={page:new class{constructor({pages:t,summaries:e,searchIndexes:n}){this._t=t,this.Nt=e,this.Bt=n,this.It=ir(this.It),this.qt=ir(this.qt),this.Pt=ir(this.Pt),this.byCategories=ir(this.byCategories),this.load=ir(this.load)}async load(t,e){const n=this._t[t][e];if(!n)throw i=`Page with ${e} is not found`,Object.assign(new Error(i),{code:"NOT_FOUND"});var i;return(await cr(n)).body}async qt(t){return(await cr(this.Nt[t])).body}async Pt(t,e=null){const n=await this.byCategories(t,e);return Object.keys(n).reduce(((t,e)=>t.concat(n[e])),[])}async getNearestFor(t,e,n=null){const i=await this.Pt(t,n),r=i.findIndex((t=>t.id===e));if(-1===r)return[];const o=r-1,s=r+1;return[o<0?void 0:i[o],s>=i.length?void 0:i[s]]}async byCategories(t,e=null){const{items:n}=await this.qt(t),i={};return n.forEach((t=>{t.categories.forEach((e=>{i[e]=i[e]||[],i[e].push(t)}))})),Array.isArray(e)?e.reduce(((t,e)=>(t[e]=i[e],t)),{}):i}async at(t,e){const{items:n}=await this.qt(t);return n[e]}async It(t){const e=this.Bt[t],n=await cr(e);return Nr.loadJS(n.body,Zr)}async search(t,e,n){const[i,r]=await Promise.all([this.It(t),this.qt(t)]);return i.search(e,n).slice(0,15).map((t=>{const[e]=r.byId[t.id];return t.doc=r.items[e],t.hints=function(t){const e={};return t.terms.forEach((n=>{const i=new RegExp(`(${n})`,"gi");t.match[n].forEach((r=>{const o=t.doc[r];if("string"==typeof o)e[r]=o.replace(i,"$1");else if("headings"===r){const t=o.reduce(((t,e)=>(e.title.toLowerCase().includes(n)&&t.push({id:e.id,title:e.title.replace(i,"$1")}),t)),[]);e[r]=t.length?t:null}}))})),e}(t),t}))}}(Xr)};var Kr=t=>{const e=Wr[t];if(!e)throw new TypeError(`Unknown content loader "${t}".`);return e};const Qr=t=>t,Jr=(t=Qr)=>async e=>{const n=t(e),i=Kr("page");if(n.id)n.id.endsWith("/")?n.redirectTo=n.id.slice(0,-1):[n.page,n.byCategories,n.nav]=await Promise.all([i.load(n.lang,n.id),n.categories.length?i.byCategories(n.lang,n.categories):null,i.getNearestFor(n.lang,n.id,n.categories)]);else{const t=await async function(t,e){if(!e.categories)return t.at(e.lang,0);const n=await t.byCategories(e.lang,e.categories),i=e.categories.find((t=>n[t].length));return n[i][0]}(i,n);n.redirectTo=t.id}return n},Yr=(t=>({match:e,error:n,resolved:i})=>n?function(t){if("NOT_FOUND"===t.code)return{body:Kn``};throw t}(n):i.redirectTo?{redirect:{name:"page",params:{id:i.redirectTo,lang:e.params.lang}}}:{body:t(i,e.params)})((t=>({main:Kn``,sidebar:t.byCategories?Kn``:null})));var to=Object.freeze({__proto__:null,parse:function(t){return t?JSON.parse(`{"${t.replace(/&/g,'","').replace(/=/g,'":"')}"}`):{}},stringify:function(t){return t?Object.keys(t).reduce(((e,n)=>(e.push(`${n}=${t[n]}`),e)),[]).join("&"):""}});function eo(t){return t.restrictions?t.path.replace(/:([\w_-]+)(\?)?/g,((e,n,i="")=>{const r=t.restrictions[n];return r?`:${n}(${r})${i}`:n+i})):t.path}function no(t,e){let n=!1;const i=t.replace(/:([\w_-]+)\??/g,((t,i)=>(e[i]&&"undefined"!==e[i]||(n=!0),e[i])));return n?null:i}const io=function(t,e,n){var i,r;void 0===n&&(n={});var o,s,a,c,u,l,h,d=void 0===(i=n.history)?{}:i,p=n.sideEffects,f=n.external,g=void 0!==(r=n.invisibleRedirects)&&r,m=[],C=[],v=[],b=function(){l=void 0,h=void 0},w=function(){l&&l(),b()},y=function(){h&&h(),b()},x=function(){u&&(u=void 0,m.forEach((function(t){t()})))},k=function(t,e){if(!t.redirect||!g||$i(t.redirect)){a=t,c=e;var n={response:t,navigation:e,router:s};i=n,C.forEach((function(t){t(i)})),function(t){v.splice(0).forEach((function(e){e(t)})),p&&p.forEach((function(e){e(t)}))}(n)}var i;void 0===t.redirect||$i(t.redirect)||o.navigate(t.redirect,"replace")},A=function(t,e,n,i,r){x(),n.finish();var o=ji(t,e,r,s,f);y(),k(o,i)};return o=t((function(t){var n={action:t.action,previous:a},i=e.match(t.location);if(!i)return t.finish(),void y();var r=i.route,s=i.match;!function(t){return void 0!==t.methods.resolve}(r)?A(r,s,t,n,null):(m.length&&void 0===u&&(u=function(){o.cancel(),x(),w()},m.forEach((function(t){t(u)}))),r.methods.resolve(s,f).then((function(t){return{resolved:t,error:null}}),(function(t){return{error:t,resolved:null}})).then((function(e){t.cancelled||A(r,s,t,n,e)})))}),d),s={route:e.route,history:o,external:f,observe:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;return C.push(t),a&&i&&t({response:a,navigation:c,router:s}),function(){C=C.filter((function(e){return e!==t}))}},once:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;a&&i?t({response:a,navigation:c,router:s}):v.push(t)},cancel:function(t){return m.push(t),function(){m=m.filter((function(e){return e!==t}))}},url:function(t){var e,n=t.name,i=t.params,r=t.hash,a=t.query;if(n){var c=s.route(n);c&&(e=function(t,e){return t.methods.pathname(e)}(c,i))}return o.url({pathname:e,hash:r,query:a})},navigate:function(t){w();var e,n,i=t.url,r=t.state,s=t.method;if(o.navigate({url:i,state:r},s),t.cancelled||t.finished)return e=t.cancelled,n=t.finished,l=e,h=n,b},current:function(){return{response:a,navigation:c}},destroy:function(){o.destroy()}},o.current(),s}((function(t,e){if(void 0===e&&(e={}),!window||!window.location)throw new Error("Cannot use @hickory/browser without a DOM");var n,i,r=function(t){void 0===t&&(t={});var e=t.query,n=void 0===e?{}:e,i=n.parse,r=void 0===i?Ti:i,o=n.stringify,s=void 0===o?Li:o,a=t.base;return{location:function(t,e){var n=t.url,i=t.state;if(""===n||"#"===n.charAt(0)){e||(e={pathname:"/",hash:"",query:r()});var o={pathname:e.pathname,hash:"#"===n.charAt(0)?n.substring(1):e.hash,query:e.query};return i&&(o.state=i),o}var s,c=n.indexOf("#");-1!==c?(s=n.substring(c+1),n=n.substring(0,c)):s="";var u,l=n.indexOf("?");-1!==l&&(u=n.substring(l+1),n=n.substring(0,l));var h=r(u),d=a?a.remove(n):n;""===d&&(d="/");var p={hash:s,query:h,pathname:d};return i&&(p.state=i),p},keyed:function(t,e){return t.key=e,t},stringify:function(t){if("string"==typeof t){var e=t.charAt(0);return"#"===e||"?"===e?t:a?a.add(t):t}return(void 0!==t.pathname?a?a.add(t.pathname):t.pathname:"")+Di(s(t.query),"?")+Di(t.hash,"#")}}}(e),o=(n=0,{major:function(t){return t&&(n=t[0]+1),[n++,0]},minor:function(t){return[t[0],t[1]+1]}}),s={confirmNavigation:function(t,e,n){i?i(t,e,n||_i):e()},confirm:function(t){i=t||null}},a=s.confirm,c=s.confirmNavigation;function u(t){var e=window.location,n=e.pathname+e.search+e.hash,i=t||Ni(),s=i.key,a=i.state;s||(s=o.major(),window.history.replaceState({key:s,state:a},"",n));var c=r.location({url:n,state:a});return r.keyed(c,s)}function l(t){return r.stringify(t)}var h=void 0!==Ni().key?"pop":"push",d=function(t){var e,n=t.responseHandler,i=t.utils,r=t.keygen,o=t.current,s=t.push,a=t.replace;function c(t,n,i,r){var o={location:t,action:n,finish:function(){e===o&&(i(),e=void 0)},cancel:function(t){e===o&&(r(t),o.cancelled=!0,e=void 0)},cancelled:!1};return o}function u(t){var e=i.keyed(t,r.minor(o().key));return c(e,"replace",a.finish(e),a.cancel)}function l(t){var e=i.keyed(t,r.major(o().key));return c(e,"push",s.finish(e),s.cancel)}return{prepare:function(t,e){var n=o(),r=i.location(t,n);switch(e){case"anchor":return i.stringify(r)===i.stringify(n)?u(r):l(r);case"push":return l(r);case"replace":return u(r);default:throw new Error("Invalid navigation type: "+e)}},emitNavigation:function(t){e=t,n(t)},createNavigation:c,cancelPending:function(t){e&&(e.cancel(t),e=void 0)}}}({responseHandler:t,utils:r,keygen:o,current:function(){return b.location},push:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.pushState({key:n,state:i},"",e)}catch(t){window.location.assign(e)}b.location=t,h="push"}},cancel:Bi},replace:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.replaceState({key:n,state:i},"",e)}catch(t){window.location.replace(e)}b.location=t,h="replace"}},cancel:Bi}}),p=d.emitNavigation,f=d.cancelPending,g=d.createNavigation,m=d.prepare,C=!1;function v(t){if(C)C=!1;else if(!function(t){return void 0===t.state&&-1===navigator.userAgent.indexOf("CriOS")}(t)){f("pop");var e=u(t.state),n=b.location.key[0]-e.key[0],i=function(){C=!0,window.history.go(n)};c({to:e,from:b.location,action:"pop"},(function(){p(g(e,"pop",(function(){b.location=e,h="pop"}),(function(t){"pop"!==t&&i()})))}),i)}}window.addEventListener("popstate",v,!1);var b={location:u(),current:function(){p(g(b.location,h,Bi,Bi))},url:l,navigate:function(t,e){void 0===e&&(e="anchor");var n=m(t,e);f(n.action),c({to:n.location,from:b.location,action:n.action},(function(){p(n)}))},go:function(t){window.history.go(t)},confirm:a,cancel:function(){f()},destroy:function(){window.removeEventListener("popstate",v),p=Bi}};return b}),function(t){var e={},n=t.map((function(t){return Oi(t,e)}));return{match:function(t){for(var e=0,i=n;e{const i=n[e.controller];if(!i)throw new Error(`Did you forget to specify controller for route "${e.name}"?`);const r={name:e.name,path:eo(e),...i(e)};return e.meta&&!1===e.meta.encode&&(r.pathOptions={compile:{encode:t=>t}}),e.children&&(r.children=t(e.children,n)),r}))}(Ii,{Home:()=>({respond:()=>({body:{main:Kn``}})}),Page(t){const e=t.meta?t.meta.categories:[];return{resolve:Jr((({params:n})=>({...n,categories:e,id:no(t.path,n)}))),respond:Yr}}}).concat({name:"notFound",path:"(.*)",respond({match:t}){const{pathname:e}=t.location,n=e.indexOf("/",1),i=-1===n?e.slice(1):e.slice(1,n),{search:r,hash:o}=window.location;return gr.includes(i)?{body:Kn``}:{redirect:{url:`/${mr}${e}${r}${o}`}}}})),{history:{base:function(t,e){if("string"!=typeof t||"/"!==t.charAt(0)||"/"===t.charAt(t.length-1))throw new Error('The base segment "'+t+'" is not valid. The "base" option must begin with a forward slash and end with a non-forward slash character.');var n=e||{},i=n.emptyRoot,r=void 0!==i&&i,o=n.strict,s=void 0!==o&&o;return{add:function(e){if(r){if("/"===e)return t;if(e.startsWith("/?")||e.startsWith("/#"))return""+t+e.substr(1)}else if("?"===e.charAt(0)||"#"===e.charAt(0))return e;return""+t+e},remove:function(e){if(""===e)return"";if(!function(t,e){return new RegExp("^"+e+"(\\/|\\?|#|$)","i").test(t)}(e,t)){if(s)throw new Error('Expected a string that begins with "'+t+'", but received "'+e+'".');return e}if(e===t){if(s&&!r)throw new Error('Received string "'+t+'", which is the same as the base, but "emptyRoot" is not true.');return"/"}return e.substr(t.length)}}}(Pi),query:to}}),ro=io.url;io.url=t=>{const e={lang:Cr(),...t.params};return ro({...t,params:e})},"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");const oo=window.visualViewport||window;const so=$n(((t,e)=>n=>{const i=function(t,e="default"){const n="string"==typeof t?new Date(t):t;return fr(pr.lang,e).format(n)}(t,e);n.value!==i&&n.setValue(i)})),ao=(t,e,n)=>Yi((()=>Xi(t,e,n))),co=$n(((t,e)=>Yi((()=>er(Xi(t,e))))));class uo extends pi{constructor(){super(),this.Ut=null,this.Vt=null,this.Rt=null,this.Gt=!1,this.ready=!1,this.Ht=[]}connectedCallback(){super.connectedCallback(),this.Ht.push(io.observe((t=>{this.Ut=t.response,this.Zt()}),{initial:!0})),this.Ht.push(function(t,e){const n=window.matchMedia(t),i=()=>e(n.matches);return oo.addEventListener("resize",i),i(),()=>oo.removeEventListener("resize",i)}("(min-width: 768px)",(t=>this.Gt=!t))),document.addEventListener("keypress",(t=>{t.ctrlKey&&t.shiftKey&&22===t.keyCode&&console.log("bd58bb2")}),!1)}disconnectedCallback(){super.disconnectedCallback(),this.Ht.forEach((t=>t()))}updated(){this.Rt=this.Rt||this.shadowRoot.querySelector("menu-drawer")}Xt(){this.Rt&&this.Rt.toggle()}Zt(){this.Rt&&this.Rt.close()}notify(t,e={}){const n=document.createElement("app-notification");n.message=t,"function"==typeof e.onClick&&n.addEventListener("click",e.onClick,!1),this.Vt=this.Vt||function(){const t=document.createElement("div");return Object.assign(t.style,{position:"fixed",right:"10px",bottom:"10px",zIndex:50,width:"320px"}),document.body.appendChild(t),t}(),this.Vt.appendChild(n)}Wt(t){return this.Gt?Kn`${t}

${ao("menu.root")}

`:null}Kt(t){return"home"===this.Ut.name?"":this.Gt?"col-1":t?"col-2":"col-1"}render(){if(!this.Ut||!this.ready)return null;const{body:t}=this.Ut,e=t.sidebar?gi(t.sidebar):"";return Kn`
${this.Wt(e)}
${e}
${gi(t.main||t)}
`}}dn(uo,"cName","casl-docs"),dn(uo,"properties",{ready:{type:Boolean},Gt:{type:Boolean},Ut:{type:Object}}),uo.styles=[hi`:host{display:block}.stop-war{position:fixed;z-index:1000;top:5px;right:5px}`];var lo=hi`.row{display:flex}.row.wrap{flex-wrap:wrap}.row.align-center{align-items:center}.row.align-start{align-items:start}.col{flex-grow:1;flex-basis:0;max-width:100%}.col-fixed{flex-grow:0;flex-basis:auto}@media (min-width:768px){.container{margin:auto;max-width:1200px}}`;class ho extends pi{constructor(){super(),this.theme="default",this.menu=null,this.layout=""}render(){return Kn`
`}}dn(ho,"cName","app-root"),dn(ho,"properties",{theme:{type:String},layout:{type:String},menu:{type:Object}}),ho.styles=[lo,hi`:host{display:block}app-header{position:relative;position:sticky;top:0;z-index:10;background:rgba(255,255,255,.9);box-shadow:rgba(0,0,0,.1) 0 1px 2px 0}.col-1>main,.row>main{min-width:0;padding-left:10px;padding-right:10px}.aside,main{padding-bottom:30px}aside{display:none}@media (min-width:768px){.aside{position:sticky;top:54px;height:calc(100vh - 132px);overflow-y:auto;padding-top:2rem}.row>aside{display:block;flex-basis:260px;max-width:260px;min-width:200px;padding-left:20px;box-shadow:rgba(0,0,0,.1) 1px -1px 2px 0}.row>main{flex-basis:80%;margin:0 auto;max-width:800px}}`];var po=hi`.md pre{overflow:auto}.md a,.md app-link{color:#81a2be;text-decoration:underline;border-bottom:0}.md a:hover,.md app-link:hover{text-decoration:none;border-bottom:0}.md code:not([class]){color:#de935f;background:#f8f8f8;padding:2px 5px;margin:0 2px;border-radius:2px;white-space:nowrap;font-family:"Roboto Mono",Monaco,courier,monospace}.alert,.md blockquote{padding:.8rem 1rem;margin:0;border-left:4px solid #81a2be;background-color:#f8f8f8;position:relative;border-bottom-right-radius:2px;border-top-right-radius:2px}.alert:before,.md blockquote:before{position:absolute;top:.8rem;left:-12px;color:#fff;background:#81a2be;width:20px;height:20px;border-radius:100%;text-align:center;line-height:20px;font-weight:700;font-size:14px;content:'i'}.alert>p:first-child,.md blockquote>p:first-child{margin-top:0}.alert>p:last-child,.md blockquote>p:last-child{margin-bottom:0}.alert+.alert,.md blockquote+blockquote{margin-top:20px}.md table{border-collapse:collapse;width:100%}.md .responsive{width:100%;overflow-x:auto}.md td,.md th{border:1px solid #c6cbd1;padding:6px 13px}.md tr{border-top:1px solid #c6cbd1}.md .editor{width:100%;height:500px;border:0;border-radius:4px;overflow:hidden}.md h3::before{margin-left:-15px;margin-right:5px;content:'#';color:#81a2be}`,fo=hi`h1{margin:2rem 0 1rem;font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #ddd}h1,h2,h3,h4,h5{font-weight:400;cursor:pointer}.description{margin-top:10px;color:#333;padding-left:5px}.description img{max-width:100%;height:auto}.description>h1{display:none}`,go=hi`.btn{display:inline-block;outline:0;text-decoration:none;background-color:transparent;border:1px solid #877e87;border-radius:1rem;padding:.375rem 1.5rem;font-weight:700;appearance:none;-webkit-appearance:none;-moz-appearance:none;transition:color .2s cubic-bezier(.08,.52,.52,1),background .2s cubic-bezier(.08,.52,.52,1),border-color .2s cubic-bezier(.08,.52,.52,1);cursor:pointer;color:#444}.btn:hover{background-color:#202428;border-color:#202428;color:#fff}`,mo=hi`.hljs,code[data-filename]{display:block;overflow-x:auto;padding:1rem;background:#1d1f21;border-radius:7px;box-shadow:rgba(0,0,0,.55) 0 11px 11px 0;font-size:.8rem;color:#c5c8c6}.hljs span::selection,.hljs::selection,code[data-filename] span::selection,code[data-filename]::selection{background:#373b41}code[data-filename]{position:relative;padding-top:22px}code[data-filename]:before{position:absolute;top:0;right:0;font-size:.7rem;content:attr(data-filename);padding:2px 6px;border-radius:0 0 0 7px;border-left:1px solid #c5c8c6;border-bottom:1px solid #c5c8c6;color:#fff}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment{color:#707880}.hljs-meta,.hljs-meta .hljs-keyword{color:#f0c674}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-builtin-name,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media (min-width:768px){code[data-filename]{padding-top:1rem}code[data-filename]:before{font-size:inherit;opacity:.5;transition:opacity .5s}code[data-filename]:hover:before{opacity:1}}`,Co=hi`.alert-warning{border-left-color:#856404;background-color:#fff3cd}.alert-warning:before{background:#856404;content:'w'}`;const vo={github:Kn`GitHub icon`,twitter:Kn`Twitter icon`,medium:Kn`Medium icon`};class bo extends pi{constructor(...t){super(...t),dn(this,"year",(new Date).getFullYear())}render(){return Kn``}}dn(bo,"cName","app-footer"),bo.styles=[po,hi`:host{--app-footer-background:#838385;--app-footer-text-color:#fff;--app-footer-text-size:13px;display:block;padding:40px 0;background-color:#303846;font-size:var(--app-footer-text-size);text-align:center;color:var(--app-footer-text-color)}.copyright{white-space:pre-line}.links svg{width:18px;height:18px}.links a{margin:0 5px;text-decoration:none}`];class wo extends pi{constructor(){super(),this.theme="default",this.menu={items:[]},this.Qt=!1}Jt(){this.dispatchEvent(new CustomEvent("toggle-menu",{bubbles:!0,composed:!0}))}Yt(){return"default"===this.theme?Kn`
`:Kn``}te(){this.Qt=!this.Qt}ee(){return"mobile"!==this.theme?null:Kn``}update(t){return t.has("theme")&&(this.Qt="mobile"===this.theme),super.update(t)}render(){return Kn`

Do you like this package?

Support Ukraine 🇺🇦
${this.ee()}
${this.Yt()}
`}}dn(wo,"cName","app-header"),dn(wo,"properties",{menu:{type:Object},theme:{type:String},Qt:{type:Boolean}}),wo.styles=[lo,hi`:host{display:block}app-link{color:#000;text-decoration:none}.header{position:relative;display:flex;align-items:center;justify-content:center;padding:0 10px 0 1rem}.header-notification{background:rgba(84,172,237,.18);display:flex;flex-wrap:wrap;flex-direction:column;align-items:center;padding:10px;gap:0}.header-notification p{margin:0}.logo{padding-top:4px;line-height:1;font-weight:700;font-size:2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif;vertical-align:middle}.logo:hover{border-bottom-color:transparent}.menu-toggle{position:absolute;left:0;background:0 0;border:0;cursor:pointer}.menu-toggle:focus{outline:0}app-menu{margin-left:10px}.full-width-search{position:absolute;right:0;box-sizing:border-box;width:100%;height:100%;transition:width .3s ease-in-out}.full-width-search[compact]{width:35px;padding:0;height:auto}versions-select{vertical-align:middle;margin-left:-5px}@media (min-width:768px){.header{justify-content:space-between}.header-notification{flex-direction:row;justify-content:center;gap:5px}.logo{font-size:3rem}app-quick-search{border-radius:15px;border:1px solid #e3e3e3}versions-select{vertical-align:top;margin-left:-10px}}`];class yo extends pi{constructor(){super(),this.to="",this.active=!1,this.query=null,this.params=null,this.hash="",this.nav=!1,this.ne=null,this.ie=null}oe(){const t=this.se(),{pathname:e}=window.location;return!(t.length>e.length)&&(t===e||e.startsWith(t))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.ae.bind(this),!1),this.nav&&(this.ie=io.observe((()=>{this.active=this.oe()}),{initial:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}update(t){const e=["to","query","params","hash"].some((e=>t.has(e)));if((null===this.ne||e)&&(this.ne=this.ce()),this.nav&&t.has("active")){const t=this.active?"add":"remove";this.classList[t]("active")}return super.update(t)}se(){return this.ne=this.ne||this.ce(),this.ne}ce(){return io.url({name:this.to,hash:this.hash,params:this.params,query:this.query})}render(){return Kn``}ae(t){t.ctrlKey||(t.preventDefault(),io.navigate({url:this.ne}))}}dn(yo,"cName","app-link"),dn(yo,"properties",{to:{type:String},params:{type:Object},query:{type:Object},hash:{type:String},active:{type:Boolean},nav:{type:Boolean}}),yo.styles=hi`:host{display:inline-block;vertical-align:baseline;text-decoration:none;cursor:pointer;border-bottom:2px solid transparent}:host(.active),:host(:hover){border-bottom-color:#81a2be}a{font-size:inherit;color:inherit;text-decoration:inherit}a:hover{text-decoration:inherit}a.active{color:var(--app-link-active-color)}`;class xo extends pi{constructor(){super(),this.items=[]}render(){return Kn``}ue(t,e){const n=t.map((t=>Kn``));return Kn`
    ${n}
`}le({children:t}){return t?this.ue(t,"dropdown "+(this.expanded?"":"expandable")):""}}dn(xo,"cName","app-menu"),dn(xo,"properties",{items:{type:Array},expanded:{type:Boolean}}),xo.styles=hi`:host{display:block}ul{padding:0;margin:0}.dropdown-container{display:inline-block;position:relative;margin:0 1rem}.dropdown-container:hover .dropdown{display:block}.dropdown.expandable{display:none;max-height:calc(100vh - 61px);overflow-y:auto;position:absolute;top:100%;right:-15px;background-color:#fff;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:4px}.dropdown{box-sizing:border-box;padding:10px 0;text-align:left;white-space:nowrap}.dropdown li{display:block;margin:0;line-height:1.6rem}.dropdown li>ul{padding-left:0}.dropdown li:first-child h4{margin-top:0;padding-top:0;border-top:0}.dropdown a,.dropdown app-link,.dropdown h4{padding:0 24px 0 20px}.dropdown h4{margin:.45em 0 0;padding-top:.45rem;border-top:1px solid #eee}.dropdown-container a,.dropdown-container app-link{text-decoration:none}.dropdown a,.dropdown app-link,.nav a,.nav app-link{display:block;color:#202428;text-decoration:none}.dropdown a:hover,.dropdown app-link:hover,.nav a:hover,.nav app-link.active,.nav app-link:hover{color:#81a2be;border-bottom-color:transparent}.link{display:block;cursor:pointer;line-height:40px}.link:after{display:inline-block;content:'';vertical-align:middle;margin-top:-1px;margin-left:6px;margin-right:-14px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4f5959}`;class ko extends pi{constructor(){super(),this.article=null,this.category=""}render(){const{article:t}=this,e=this.category||t.categories[0];return Kn`${ao("article.author")} ${t.commentsCount||0}${ao("article.readMore")}`}}dn(ko,"cName","app-article-details"),dn(ko,"properties",{article:{type:Object,attribute:!1},category:{type:String}}),ko.styles=[hi`:host{margin-top:10px;color:var(--app-article-details-color,#999);font-size:11px}:host>*{margin-right:10px}app-link{margin-right:10px;color:var(--app-link-active-color)}app-link>[class^=icon-]{margin-right:5px}`];class Ao extends pi{constructor(){super(),this.he=null,this.de=Cr()}connectedCallback(){super.connectedCallback(),this.he=Zi((t=>{this.de=t,this.reload().then((()=>this.requestUpdate()))}))}disconnectedCallback(){this.he(),super.disconnectedCallback()}reload(){return Promise.reject(new Error(`${this.constructor.cName} should implement "reload" method`))}}function Fo(t){const e=t?`${t} - `:"";document.title=e+vr("name")}function Eo(t,e){if("object"==typeof t)return void Object.keys(t).forEach((e=>Eo(e,t[e])));const n=vr(`meta.${t}`),i=Array.isArray(e)?e.concat(n).join(", "):e||n;(function(t){let e=document.head.querySelector(`meta[name="${t}"]`);return e||(e=document.createElement("meta"),e.setAttribute("name",t),document.head.appendChild(e)),e})(t).setAttribute("content",i.replace(/[\n\r]+/g," "))}function $o({response:t}){const e=document.documentElement;e.lang!==t.params.lang&&(e.lang=t.params.lang);const n=`meta.${t.name}`;lr(n,pr)?(Fo(vr(`${n}.title`)),Eo("keywords",vr(`${n}.keywords`)),Eo("description",vr(`${n}.description`))):(Fo(),Eo("keywords"),Eo("description"))}function jo(t,e){const n=t.getElementById(e);if(!n)return;n.scrollIntoView(!0),document.documentElement.scrollTop-=85}function So(t,e){return er(dr(t.content,e))}class Oo extends Ao{constructor(){super(),this.pe=null,this.nav=[],this.name=null,this.vars={},this.type="page",this.content=So}connectedCallback(){super.connectedCallback(),this.shadowRoot.addEventListener("click",(t=>{!function(t,e){let n;if("H"===e.tagName[0]&&e.id)n=e.id;else{const n=function(t,e){let n=t,i=0;for(;n&&i<3;){if(n.tagName===e)return n;n=n.parentNode,i++}return null}(e,"A"),i=n?n.href.indexOf("#"):-1;-1!==i&&jo(t,n.href.slice(i+1))}if(n){const{location:e}=io.current().response,i=`${e.pathname}${window.location.search}#${n}`;io.navigate({url:i}),jo(t,n)}}(this.shadowRoot,t.target)}),!1)}async updated(t){(null===this.pe||t.has("name")||t.has("type"))&&await this.reload()}async reload(){this.pe=await Kr(this.type).load(Cr(),this.name),function(t){const e=t.meta||{};Fo(t.title),Eo("keywords",e.keywords||""),Eo("description",e.description||"")}(this.pe),await this.updateComplete,function(t){const{hash:e}=io.current().response.location;e?jo(t,e):window.scroll(0,0)}(this.shadowRoot)}ue(){const[t,e]=this.nav;return Kn``}render(){return this.pe?Kn`

${dr(this.pe.title)}

${this.content(this.pe,this.vars)}
${this.nav&&this.nav.length?this.ue():""}`:Kn``}}dn(Oo,"cName","app-page"),dn(Oo,"properties",{type:{type:String},name:{type:String},vars:{type:Object,attribute:!1},content:{type:Function,attribute:!1},nav:{type:Array},pe:{type:Object}}),Oo.styles=[fo,po,mo,hi`:host{display:block}app-page-nav{margin-top:20px}`];class zo extends pi{constructor(){super(),this.next=null,this.prev=null,this.pageType="page"}fe(t){const e=this[t];return e?Kn`${e.title}`:""}render(){return Kn`${this.fe("prev")} ${this.fe("next")}`}}dn(zo,"cName","app-page-nav"),dn(zo,"properties",{next:{type:Object},prev:{type:Object},pageType:{type:String}}),zo.styles=hi`:host{display:block}:host:after{display:table;clear:both;content:''}app-link{color:#81a2be;text-decoration:none}app-link:hover{border-bottom-color:transparent}.next{float:right;margin-left:30px}.next:after,.prev:before{display:inline-block;vertical-align:middle;content:'⇢'}.prev:before{content:'⇠'}`;const Mo=["isomorphic","versatile","declarative","typesafe","treeshakable"];function Do(t){return Kn`

${ao(`features.${t}.title`)}

${co(`features.${t}.description`)}

`}const To=()=>Kn`
${Mo.map(Do)}
`;To.styles=[hi`.features{padding:1rem 0;display:-ms-grid;display:grid;justify-content:center;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));-ms-grid-columns:${li(Mo.map((()=>"minmax(200px, 1fr)")).join(" "))}}.feature{padding:1rem}.feature h3{font-size:1.4rem}.feature p:last-child{margin-bottom:0}`];class Lo extends pi{render(){return Kn`

${ao("slogan")}

${ao("buttons.start")}${ao("buttons.source")}
${co("exampleCode")}
${To()}`}}dn(Lo,"cName","home-page"),Lo.styles=[lo,go,To.styles,mo,hi`:host{display:block}.bg{background:#fff;background:linear-gradient(90deg,#fff 0,#dee4ea 41%,#ebf5fd 60%,#525457 100%)}header{justify-content:center;padding:2rem 1rem}.main{padding-top:22px;text-align:center;justify-content:center}h1{white-space:pre-line;font-size:2.2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif}.buttons{display:inline-block;text-align:center}.buttons app-link{margin-right:5px}github-button{display:block;margin-top:10px}.details{min-width:300px}.col-example{display:none}@media (min-width:768px){.main>img{margin-right:30px}}@media (min-width:1024px){.main{text-align:left}.col-example{display:block}.example code{font-size:.7rem}}@media (min-width:1200px){.example code{font-size:.8rem}}`];var _o=window.document,No=window.Math,Bo=window.HTMLElement,Io=window.XMLHttpRequest,qo=function(t){return function(e,n,i){var r=t.createElement(e);if(null!=n)for(var o in n){var s=n[o];null!=s&&(null!=r[o]?r[o]=s:r.setAttribute(o,s))}if(null!=i)for(var a=0,c=i.length;a'}}},download:{heights:{16:{width:16,path:''}}},eye:{heights:{16:{width:16,path:''}}},heart:{heights:{16:{width:16,path:''}}},"issue-opened":{heights:{16:{width:16,path:''}}},"mark-github":{heights:{16:{width:16,path:''}}},package:{heights:{16:{width:16,path:''}}},play:{heights:{16:{width:16,path:''}}},"repo-forked":{heights:{16:{width:16,path:''}}},"repo-template":{heights:{16:{width:16,path:''}}},star:{heights:{16:{width:16,path:''}}}},Yo=function(t,e){t=Vo(t).replace(/^octicon-/,""),Uo(Jo,t)||(t="mark-github");var n=e>=24&&24 in Jo[t].heights?24:16,i=Jo[t].heights[n];return'"},ts={},es=function(t,e){var n=ts[t]||(ts[t]=[]);if(!(n.push(e)>1)){var i=function(t){var e;return function(){e||(e=1,t.apply(this,arguments))}}((function(){for(delete ts[t];e=n.shift();)e.apply(null,arguments)}));if(Go){var r=new Io;Zo(r,"abort",i),Zo(r,"error",i),Zo(r,"load",(function(){var t;try{t=JSON.parse(this.responseText)}catch(t){return void i(t)}i(200!==this.status,t)})),r.open("GET",t),r.send()}else{var o=this||window;o.ge=function(t){o.ge=null,i(200!==t.meta.status,t.data)};var s=qo(o.document)("script",{async:!0,src:t+(-1!==t.indexOf("?")?"&":"?")+"callback=_"}),a=function(){o.ge&&o.ge({meta:{}})};Zo(s,"load",a),Zo(s,"error",a),s.readyState&&function(t,e,n){var i="readystatechange",r=function(){if(e.test(t.readyState))return Xo(t,i,r),n.apply(this,arguments)};Zo(t,i,r)}(s,/de|m/,a),o.document.getElementsByTagName("head")[0].appendChild(s)}}},ns=function(t,e,n){var i=qo(t.ownerDocument),r=t.appendChild(i("style",{type:"text/css"})),o="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:20px;padding:3px 10px;font-size:12px;line-height:20px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}"+Qo(e["data-color-scheme"]);r.styleSheet?r.styleSheet.cssText=o:r.appendChild(t.ownerDocument.createTextNode(o));var s="large"===Vo(e["data-size"]),a=i("a",{className:"btn",href:e.href,rel:"noopener",target:"_blank",title:e.title||void 0,"aria-label":e["aria-label"]||void 0,innerHTML:Yo(e["data-icon"],s?16:14)},[" ",i("span",{},[e["data-text"]||""])]),c=t.appendChild(i("div",{className:"widget"+(s?" widget-lg":"")},[a])),u=a.hostname.replace(/\.$/,"");if(("."+u).substring(u.length-Ro.length)!=="."+Ro)return a.removeAttribute("href"),void n(c);var l=(" /"+a.pathname).split(/\/+/);if(((u===Ro||u==="gist."+Ro)&&"archive"===l[3]||u===Ro&&"releases"===l[3]&&("download"===l[4]||"latest"===l[4]&&"download"===l[5])||u==="codeload."+Ro)&&(a.target="_top"),"true"===Vo(e["data-show-count"])&&u===Ro&&"marketplace"!==l[1]&&"sponsors"!==l[1]&&"orgs"!==l[1]&&"users"!==l[1]&&"-"!==l[1]){var h,d;if(!l[2]&&l[1])d="followers",h="?tab=followers";else if(!l[3]&&l[2])d="stargazers_count",h="/stargazers";else if(l[4]||"subscription"!==l[3])if(l[4]||"fork"!==l[3]){if("issues"!==l[3])return void n(c);d="open_issues_count",h="/issues"}else d="forks_count",h="/network/members";else d="subscribers_count",h="/watchers";var p=l[2]?"/repos/"+l[1]+"/"+l[2]:"/users/"+l[1];es.call(this,"https://api.github.com"+p,(function(t,e){if(!t){var r=e[d];c.appendChild(i("a",{className:"social-count",href:e.html_url+h,rel:"noopener",target:"_blank","aria-label":r+" "+d.replace(/_count$/,"").replace("_"," ").slice(0,r<2?-1:void 0)+" on GitHub"},[(""+r).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}n(c)}))}else n(c)},is=window.devicePixelRatio||1,rs=function(t){return(is>1?No.ceil(No.round(t*is)/is*2)/2:No.ceil(t))||0},os=function(t,e){t.style.width=e[0]+"px",t.style.height=e[1]+"px"},ss=function(t,e){if(null!=t&&null!=e)if(t.getAttribute&&(t=function(t){for(var e={href:t.href,title:t.title,"aria-label":t.getAttribute("aria-label")},n=["icon","color-scheme","text","size","show-count"],i=0,r=n.length;i{this.shadowRoot.firstChild?this.shadowRoot.replaceChild(t,this.shadowRoot.firstChild):this.shadowRoot.appendChild(t)}))}}dn(as,"cName","github-button"),dn(as,"properties",{href:{type:String},size:{type:String},theme:{type:String},showCount:{type:Boolean},text:{type:String}});const cs={dropdown(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`
${er(e)}
${n.map((e=>Kn`${er(e.title)}`))}
`},page(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`${n.map((n=>Kn`${er(`${e} › ${n.title}`)}`))}`}};const us=Kn``,ls=Kn``;class hs extends pi{constructor(){super(),this.value="",this.suggestionsType="dropdown",this.compact=!1,this.toggler=!1,this.Ce=null,this.ve=this.ve.bind(this),this.be=function(t,e){let n;return function(...i){clearTimeout(n),n=setTimeout((()=>t.apply(this,i)),e)}}(this.be,500),this.ie=null}we(t){this.value=t.trim(),this.dispatchEvent(new CustomEvent("update",{detail:this.value}))}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.ve,!1),this.ie=io.observe((()=>this.ye()))}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.ve,!1),this.ie()}ye(){this.value&&(this.we(""),this.Ce=null,this.dispatchEvent(new CustomEvent("reset")))}ve(t){this.shadowRoot.contains(t.target)||(this.Ce=null)}async be(){if(!this.value)return void(this.Ce=null);const t=(await Kr("page").search(Cr(),this.value,{prefix:!0})).reduce(((t,e)=>{const n=e.doc.categories[0];return t.has(n)||t.set(n,[]),t.get(n).push(e),t}),new Map);this.Ce=Array.from(t)}xe(t){this.we(t.target.value),this.be()}ke(){this.dispatchEvent(new CustomEvent("click-icon"))}render(){return Kn`
${function(t,e){if(!t)return"";if(!t.length)return Kn`
${ao("search.noMatch")}
`;const n=cs[e||"dropdown"];return Kn`
${t.map((([t,e])=>Kn`
${ao(`categories.${t}`)}
${e.map(n)}`))}
`}(this.Ce,this.suggestionsType)}
`}}dn(hs,"cName","app-quick-search"),dn(hs,"properties",{value:{type:String},suggestionsType:{type:String},compact:{type:Boolean},toggler:{type:Boolean},Ce:{type:Array}}),hs.styles=[lo,hi`:host{display:block}.search-form{position:relative;border-radius:inherit;height:100%}.input{display:block;padding:1px 6px;color:#273849;transition:border-color 1s;white-space:nowrap;background:#fff;height:100%;border-radius:inherit}svg{width:16px;height:16px}.icon{line-height:.7;cursor:pointer}.icon,input{display:inline-block;vertical-align:middle}.input path{fill:#e3e3e3}input{height:100%;font-size:.9rem;box-sizing:border-box;outline:0;width:calc(100% - 20px);margin-left:5px;border:0;background-color:transparent}.suggestions{position:absolute;left:8px;z-index:1000;top:120%;background:#fff;padding:5px;overflow-y:auto}.suggestions.dropdown{border-radius:4px;border:1px solid #e3e3e3;width:500px;max-height:500px}.suggestions.page{left:-10px;width:101%;height:calc(100vh - 50px);border:0;border-radius:0}input:focus{outline:transparent}h5{margin:0;padding:5px 10px;background-color:#1b1f23;color:#fff}app-link{display:block;padding:5px;font-size:.9rem;border-bottom:0}app-link:hover{background:#eee}.title{flex-basis:40%;max-width:40%;border-right:1px solid #e3e3e3}.item{border-bottom:1px solid #e3e3e3}mark{font-weight:700;background:0 0}.compact .input{border-color:transparent;background:0 0}.compact input{display:none}.compact .input path{fill:#1b1f23}`];class ds extends pi{render(){return Kn``}Ae(t){const e=t.target.value,n=io.current().response;io.navigate({url:io.url({name:n.name,params:{...n.params,lang:e},query:n.location.query,hash:n.location.hash})})}}dn(ds,"cName","app-lang-picker");const ps={liqpay:{icon:"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%22107px%22%20height%3D%2222px%22%20viewBox%3D%220%200%20107%2022%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3EF598AEA9-571B-4BDB-8FEC-38F074CC2EC6%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20sketchtool.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22Personal%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Site_Personal-Copy%22%20transform%3D%22translate%28-60.000000%2C%20-12.000000%29%22%20fill%3D%22%237AB72B%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Header%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22logo_liqpay%22%20transform%3D%22translate%2860.000000%2C%2012.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2286.9547861%201.77262293%2094.3504229%2010.3403775%2086.9547861%2018.9094274%2089.0061259%2020.6791964%2097.9295835%2010.3403775%2089.0061259%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2295.9493035%201.77262293%20103.344617%2010.3403775%2095.9493035%2018.9094274%2097.9999958%2020.6791964%20106.923777%2010.3403775%2097.9999958%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M9.24568572%2C18.2702718%20C9.24568572%2C18.4533859%209.23654857%2C18.6068499%209.21827428%2C18.7303379%20C9.19967369%2C18.8541517%209.16997797%2C18.9593934%209.12886088%2C19.0463889%20C9.08741743%2C19.1337102%209.03716313%2C19.1975721%208.97744546%2C19.2386262%20C8.91772771%2C19.280006%208.8469149%2C19.300533%208.76435437%2C19.300533%20L0.894994994%2C19.300533%20C0.68386186%2C19.300533%200.484476477%2C19.2298288%200.296512512%2C19.0877688%20C0.108222222%2C18.9457087%200.0142402401%2C18.6961261%200.0142402401%2C18.339021%20L0.0142402401%2C1.88286186%20C0.0142402401%2C1.80955105%200.0325145146%2C1.74536336%200.0693893895%2C1.69062462%20C0.105937938%2C1.63556006%200.170224224%2C1.59222523%200.261921922%2C1.55996847%20C0.353619619%2C1.52803754%200.477297297%2C1.50066817%200.633281284%2C1.47753454%20C0.789265269%2C1.45505255%200.977229228%2C1.44332282%201.1974995%2C1.44332282%20C1.42658058%2C1.44332282%201.61682883%2C1.45505255%201.76824425%2C1.47753454%20C1.91965966%2C1.50066817%202.04105306%2C1.52803754%202.13307708%2C1.55996847%20C2.22444845%2C1.59222523%202.28906106%2C1.63556006%202.32560961%2C1.69062462%20C2.36215816%2C1.74568919%202.38075876%2C1.80955105%202.38075876%2C1.88286186%20L2.38075876%2C17.254021%20L8.76435437%2C17.254021%20C8.8469149%2C17.254021%208.91772771%2C17.274548%208.97744546%2C17.3159279%20C9.03683683%2C17.3573078%209.08741743%2C17.4166081%209.12886088%2C17.4941546%20C9.17030434%2C17.5720271%209.19999999%2C17.674988%209.21827428%2C17.8033634%20C9.23654857%2C17.9317387%209.24568572%2C18.0871576%209.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M14.2257518%2C18.9434279%20C14.2257518%2C19.0170646%2014.2071512%2C19.0809264%2014.1706026%2C19.1356651%20C14.1337277%2C19.1907297%2014.0694415%2C19.2340646%2013.9780701%2C19.2663214%20C13.886046%2C19.2985781%2013.764979%2C19.3256216%2013.6132373%2C19.3487553%20C13.4618218%2C19.3712372%2013.2715735%2C19.3829669%2013.0424925%2C19.3829669%20C12.8222222%2C19.3829669%2012.6339319%2C19.3712372%2012.4782743%2C19.3487553%20C12.3222903%2C19.3256216%2012.1986126%2C19.2982522%2012.1069149%2C19.2663214%20C12.0152172%2C19.2340646%2011.950931%2C19.1907297%2011.9143824%2C19.1356651%20C11.8775075%2C19.0806006%2011.8592332%2C19.0170646%2011.8592332%2C18.9434279%20L11.8592332%2C1.88286186%20C11.8592332%2C1.80955105%2011.8797918%2C1.74536336%2011.9212352%2C1.69062462%20C11.9626787%2C1.63556006%2012.0312072%2C1.59222523%2012.1274735%2C1.55996847%20C12.2237397%2C1.52803754%2012.3477437%2C1.50066817%2012.4988328%2C1.47753454%20C12.6502483%2C1.45505255%2012.8310331%2C1.44332282%2013.0424925%2C1.44332282%20C13.2715735%2C1.44332282%2013.4618218%2C1.45505255%2013.6132373%2C1.47753454%20C13.7646526%2C1.50066817%2013.886046%2C1.52803754%2013.9780701%2C1.55996847%20C14.0694415%2C1.59222523%2014.1340541%2C1.63556006%2014.1706026%2C1.69062462%20C14.2071512%2C1.74568919%2014.2257518%2C1.80955105%2014.2257518%2C1.88286186%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M36.0592673%2C20.8664519%20C36.0592673%2C21.0769354%2036.0478459%2C21.2532072%2036.025003%2C21.3949414%20C36.0018338%2C21.5370015%2035.9675696%2C21.6468048%2035.9218839%2C21.7246772%20C35.8758718%2C21.8022237%2035.8256176%2C21.8553334%2035.7704684%2C21.8827027%20C35.7153194%2C21.9100721%2035.6601702%2C21.9240826%2035.6053474%2C21.9240826%20C35.4219519%2C21.9240826%2035.1259739%2C21.848491%2034.7180661%2C21.6976336%20C34.3101582%2C21.5467763%2033.8399219%2C21.326518%2033.30801%2C21.038488%20C32.7760981%2C20.7498063%2032.2073113%2C20.3995435%2031.601976%2C19.9873738%20C30.9966406%2C19.5752042%2030.4095796%2C19.0946111%2029.8411191%2C18.5449429%20C29.3917678%2C18.8196141%2028.822981%2C19.0577928%2028.1350851%2C19.2591531%20C27.4471892%2C19.4605135%2026.6493213%2C19.5615195%2025.7411552%2C19.5615195%20C24.4019119%2C19.5615195%2023.2441061%2C19.3643949%2022.2674114%2C18.9707973%20C21.2907167%2C18.5771997%2020.4833854%2C18.0001622%2019.8460701%2C17.2400105%20C19.2084285%2C16.4798588%2018.73395%2C15.5346382%2018.421982%2C14.4036967%20C18.110014%2C13.2727553%2017.9543563%2C11.9746651%2017.9543563%2C10.5094265%20C17.9543563%2C9.09925229%2018.1240461%2C7.82396997%2018.4634254%2C6.6839054%20C18.8028048%2C5.54384084%2019.3118739%2C4.57320571%2019.9906327%2C3.77167418%20C20.6693914%2C2.97046846%2021.5178398%2C2.35237688%2022.5356516%2C1.9173994%20C23.5537898%2C1.48242192%2024.7412913%2C1.26477027%2026.0988088%2C1.26477027%20C27.3734395%2C1.26477027%2028.495023%2C1.46189489%2029.4625806%2C1.85549249%20C30.4301382%2C2.24941592%2031.2417117%2C2.82417268%2031.8976276%2C3.57943694%20C32.5532172%2C4.33502703%2033.0462963%2C5.26688889%2033.3765385%2C6.37469669%20C33.7067808%2C7.48283033%2033.8719019%2C8.7558318%2033.8719019%2C10.1933754%20C33.8719019%2C10.9352808%2033.8281742%2C11.6449294%2033.7410451%2C12.3226472%20C33.6539159%2C13.0006907%2033.5162062%2C13.6415901%2033.3285686%2C14.245997%20C33.1402783%2C14.8504039%2032.904018%2C15.4088694%2032.6201141%2C15.9217192%20C32.3355576%2C16.4348949%2032.0007467%2C16.896916%2031.6156817%2C17.3090856%20C32.284977%2C17.8584279%2032.872038%2C18.2868889%2033.3765385%2C18.593491%20C33.8807127%2C18.9004189%2034.2984104%2C19.1317552%2034.6283263%2C19.2871742%20C34.9585686%2C19.442919%2035.215061%2C19.555003%2035.3987828%2C19.6234265%20C35.5818518%2C19.6921757%2035.7195616%2C19.770048%2035.8115856%2C19.8570436%20C35.902957%2C19.9437132%2035.9675696%2C20.067527%2036.0041181%2C20.2278334%20C36.0406667%2C20.3878138%2036.0592673%2C20.6009039%2036.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20Z%20M31.3817057%2C10.3582433%20C31.3817057%2C9.35078979%2031.2922923%2C8.41697296%2031.1134655%2C7.55581531%20C30.9346386%2C6.69498349%2030.6363764%2C5.94656156%2030.219005%2C5.3098979%20C29.8016336%2C4.67356006%2029.2442683%2C4.17667568%2028.5475616%2C3.81957057%20C27.8505285%2C3.46246547%2026.9883744%2C3.28391292%2025.9610991%2C3.28391292%20C24.9338238%2C3.28391292%2024.0716697%2C3.47386937%2023.3746366%2C3.85410811%20C22.6776036%2C4.23434685%2022.1111011%2C4.74687087%2021.6754555%2C5.39265766%20C21.2398098%2C6.03811862%2020.9278418%2C6.78686637%2020.7398779%2C7.63857508%20C20.5519139%2C8.49028381%2020.4576056%2C9.39216967%2020.4576056%2C10.3448844%20C20.4576056%2C11.3888304%2020.5447347%2C12.3480616%2020.718993%2C13.2225781%20C20.8932512%2C14.0970946%2021.1866186%2C14.8552913%2021.5994214%2C15.4961907%20C22.0122242%2C16.1374159%2022.5646947%2C16.6343003%2023.2571591%2C16.986518%20C23.9496237%2C17.3390615%2024.8186306%2C17.5153334%2025.8641802%2C17.5153334%20C26.9005926%2C17.5153334%2027.7718839%2C17.3230961%2028.4780541%2C16.9386216%20C29.1842242%2C16.5541471%2029.7526847%2C16.034455%2030.1840881%2C15.3795451%20C30.6151652%2C14.724961%2030.9222382%2C13.9644835%2031.1059599%2C13.0994159%20C31.290008%2C12.2333708%2031.3817057%2C11.3197553%2031.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M48.8538698%2C6.7318018%20C48.8538698%2C7.62032883%2048.7070231%2C8.42153453%2048.4136556%2C9.13574474%20C48.1199619%2C9.85028075%2047.7006326%2C10.4592492%2047.155015%2C10.9626502%20C46.6093974%2C11.4663769%2045.9394495%2C11.8554129%2045.1461501%2C12.1300841%20C44.3528509%2C12.4047552%2043.4058519%2C12.5422538%2042.3054795%2C12.5422538%20L40.2829089%2C12.5422538%20L40.2829089%2C18.9434279%20C40.2829089%2C19.0170646%2040.2623504%2C19.0809264%2040.2209069%2C19.1356651%20C40.1794634%2C19.1907297%2040.1155035%2C19.2340646%2040.0283744%2C19.2663214%20C39.9412453%2C19.2985781%2039.8221362%2C19.3256216%2039.6707207%2C19.3487553%20C39.5193053%2C19.3712372%2039.3290571%2C19.3829669%2039.099976%2C19.3829669%20C38.8705686%2C19.3829669%2038.6803203%2C19.3712372%2038.5289049%2C19.3487553%20C38.3774895%2C19.3256216%2038.2557697%2C19.2982522%2038.1640721%2C19.2663214%20C38.0723744%2C19.2340646%2038.0080881%2C19.1907297%2037.9715396%2C19.1356651%20C37.9346647%2C19.0806006%2037.9163904%2C19.0170646%2037.9163904%2C18.9434279%20L37.9163904%2C2.54200751%20C37.9163904%2C2.17577928%2038.0126566%2C1.91479279%2038.2051892%2C1.75904805%20C38.3977217%2C1.6033033%2038.6130971%2C1.52543093%2038.8519679%2C1.52543093%20L42.6628068%2C1.52543093%20C43.0481982%2C1.52543093%2043.4172733%2C1.54139639%2043.7703584%2C1.57365315%20C44.1234435%2C1.60590991%2044.5404885%2C1.67433333%2045.0221461%2C1.77957507%20C45.5034775%2C1.88514264%2045.9942723%2C2.08194144%2046.4942042%2C2.3702973%20C46.9938098%2C2.65865315%2047.4180341%2C3.01380331%2047.7668769%2C3.43477027%20C48.1153934%2C3.85606306%2048.3836336%2C4.34382432%2048.5715976%2C4.89772823%20C48.7595616%2C5.45228378%2048.8538698%2C6.06353303%2048.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20Z%20M46.3636737%2C6.92403904%20C46.3636737%2C6.20070571%2046.2282483%2C5.5962988%2045.9577237%2C5.11049249%20C45.6871992%2C4.62533784%2045.3523884%2C4.26367117%2044.9532913%2C4.02549249%20C44.5545205%2C3.78731381%2044.1417177%2C3.63645646%2043.7152092%2C3.57226877%20C43.2887007%2C3.50840691%2042.8736136%2C3.47615015%2042.469948%2C3.47615015%20L40.2825826%2C3.47615015%20L40.2825826%2C10.6052192%20L42.4151251%2C10.6052192%20C43.1307588%2C10.6052192%2043.7243464%2C10.513988%2044.1968669%2C10.3305481%20C44.6690611%2C10.1477598%2045.0658739%2C9.89361563%2045.386979%2C9.56811561%20C45.7080841%2C9.24326726%2045.9508708%2C8.8539054%2046.1163183%2C8.40068168%20C46.2811131%2C7.94745795%2046.3636737%2C7.45513513%2046.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M65.8029329%2C18.4628348%20C65.87603%2C18.664521%2065.9151892%2C18.8267823%2065.9197578%2C18.9505961%20C65.924%2C19.0744099%2065.8897357%2C19.1682478%2065.8166386%2C19.2324354%20C65.7432153%2C19.2962973%2065.6218218%2C19.3373513%2065.4521321%2C19.3559234%20C65.2821161%2C19.3741697%2065.0553193%2C19.3836186%2064.7710891%2C19.3836186%20C64.4868588%2C19.3836186%2064.2597357%2C19.3767762%2064.090046%2C19.3630916%20C63.9203564%2C19.3494069%2063.7917838%2C19.3262733%2063.704981%2C19.2943423%20C63.6175255%2C19.2624114%2063.5535656%2C19.2187508%2063.5124484%2C19.164012%20C63.471005%2C19.1089475%2063.4321722%2C19.0401982%2063.3956237%2C18.9580901%20L61.8684164%2C14.6311231%20L54.4666827%2C14.6311231%20L53.0083303%2C18.9030256%20C52.9805926%2C18.9854595%2052.9440441%2C19.0568153%2052.898032%2C19.1157898%20C52.85202%2C19.1754159%2052.7857758%2C19.2259189%2052.6986467%2C19.2669729%20C52.6115176%2C19.308027%2052.4875135%2C19.3376772%2052.3272873%2C19.3562493%20C52.1667347%2C19.3744955%2051.9578859%2C19.3839445%2051.7013934%2C19.3839445%20C51.4354375%2C19.3839445%2051.2174514%2C19.3722147%2051.0480881%2C19.3497327%20C50.8783984%2C19.3265991%2050.7592893%2C19.2832643%2050.6904344%2C19.2190766%20C50.6219059%2C19.1552147%2050.5892733%2C19.061051%2050.5941682%2C18.9375631%20C50.5987367%2C18.8137492%2050.6375695%2C18.6511622%2050.710993%2C18.4498018%20L56.6817858%2C1.93857808%20C56.7183344%2C1.8378979%2056.7666306%2C1.75546396%2056.826022%2C1.69127628%20C56.8854134%2C1.62708859%2056.9728689%2C1.57658558%2057.0874094%2C1.54009309%20C57.2019499%2C1.5036006%2057.3487968%2C1.47818619%2057.5276236%2C1.4645015%20C57.7061241%2C1.45081682%2057.9335736%2C1.44397448%2058.2086667%2C1.44397448%20C58.5020341%2C1.44397448%2058.7451472%2C1.45081682%2058.938006%2C1.4645015%20C59.1305386%2C1.47818619%2059.2865225%2C1.5036006%2059.4056316%2C1.54009309%20C59.5247407%2C1.57691141%2059.6164384%2C1.62936937%2059.6807247%2C1.69811862%20C59.7446847%2C1.76686787%2059.7952653%2C1.85158258%2059.8321402%2C1.95226276%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20Z%20M58.1398118%2C3.88831982%20L58.1261061%2C3.88831982%20L55.0583123%2C12.7481757%20L61.2490491%2C12.7481757%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M74.4424224%2C12.3910706%20L74.4424224%2C18.9431021%20C74.4424224%2C19.0167388%2074.4241481%2C19.0806006%2074.3875996%2C19.1353393%20C74.351051%2C19.1904039%2074.2870911%2C19.2337387%2074.1960461%2C19.2659955%20C74.105001%2C19.2982522%2073.9816497%2C19.3252958%2073.8266446%2C19.3484295%20C73.6716396%2C19.3709114%2073.4846547%2C19.3826411%2073.266016%2C19.3826411%20C73.0379139%2C19.3826411%2072.8489709%2C19.3709114%2072.6982082%2C19.3484295%20C72.5477718%2C19.3252958%2072.4244204%2C19.2979264%2072.3288068%2C19.2659955%20C72.2328668%2C19.2337387%2072.166949%2C19.1904039%2072.1304004%2C19.1353393%20C72.0938519%2C19.0802747%2072.0759039%2C19.0167388%2072.0759039%2C18.9431021%20L72.0759039%2C12.3910706%20L67.0406887%2C2.36345496%20C66.9395275%2C2.15297147%2066.8775255%2C1.98810361%2066.855009%2C1.86885135%20C66.8318399%2C1.74992492%2066.855009%2C1.65836787%2066.9238638%2C1.59418018%20C66.9923924%2C1.53031832%2067.1163964%2C1.48926426%2067.2952232%2C1.4706922%20C67.4740501%2C1.45244595%2067.7145525%2C1.442997%2068.0173834%2C1.442997%20C68.2924765%2C1.442997%2068.5147047%2C1.45244595%2068.6847207%2C1.4706922%20C68.8544104%2C1.48926426%2068.9895095%2C1.51435285%2069.0906706%2C1.54628379%20C69.1915055%2C1.57854054%2069.2672132%2C1.62415616%2069.3174674%2C1.68378228%20C69.368048%2C1.7434084%2069.416018%2C1.819%2069.46203%2C1.91023123%20L71.9244885%2C7.02015766%20C72.1529169%2C7.50563814%2072.3813453%2C8.01392643%2072.6091212%2C8.54502253%20C72.8368969%2C9.07611859%2073.0695676%2C9.61177629%2073.3068068%2C10.1519955%20L73.3342182%2C10.1519955%20C73.5437198%2C9.63002255%2073.7600741%2C9.11065613%2073.9839339%2C8.5929189%20C74.2071411%2C8.07583333%2074.4332853%2C7.56526426%2074.6623664%2C7.06153753%20L77.1385308%2C1.92424174%20C77.1662681%2C1.83268469%2077.2051011%2C1.75481231%2077.255682%2C1.69062462%20C77.305936%2C1.62676277%2077.3744646%2C1.57854054%2077.46192%2C1.54628379%20C77.5490494%2C1.51435285%2077.6704426%2C1.48926426%2077.8264267%2C1.4706922%20C77.9824108%2C1.45244595%2078.1795116%2C1.442997%2078.4180559%2C1.442997%20C78.7482979%2C1.442997%2079.0074014%2C1.45472673%2079.1953657%2C1.47720871%20C79.3833291%2C1.50034235%2079.5138597%2C1.54367718%2079.5876096%2C1.60786487%20C79.6613595%2C1.67205255%2079.68616%2C1.76360961%2079.6633171%2C1.88253604%20C79.6404743%2C2.00178829%2079.5784723%2C2.16176877%2079.4776374%2C2.36312913%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E",image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAADkAQMAAAC2bMrzAAAABlBMVEX///8AAABVwtN+AAACK0lEQVRYw9XYMY7mIAyG4TeioOQIPgo3I8nNOApHoKSw8m1B5t+Z7VfrRSkiPWkibLANf21lSXqyAKemWTVxuyVJV1QdQAOoFFGU1N3uBVhcPTVaHkny0pO6UzWOZVrRVWmSZqV0qG73f6GaVVKSKJ3wCjSM0h300R9xFU13hg4v/ffzZ/4G03dZmtWLNPHS3a6fB2IwzdKi5QHV2cHTsYc3ckIqtDyOZQCgWZ2KPXBq8M806/OdU730JEHD7sA69pu+zuc0q8axOPY9GFGxBxposg86L3IOacdGSM26NYA0a5o1qXuRdMfWcWicC0rfYeNFTmPnZUzFrjzIoojS9/WddC8adgXVrAt78tAE8NKdCg2Onb8RdZ+EEkVpsmvRNI5Fy7qiql15NEzqSX3/VNKD3YqrO0TMS6cIkHoap/TkvQsBNete9rwVnfYZ7jQssGIPHMso8tL19oNPHsTVrFujQZIAQOpuV5YWgXXZvcy3ld0PttAKx6LB3gJKp8g511eGRlW7spL6Lp69vBmKhVV7siSlWSlKklOxK+srQwNqHqfGoZHmuxEOaYfNV1f+DxQab2w4+x4Upk+XGlMBsnw3VrtPsevT8UXUPQ0AqFL30gHsfnMwqA6gQZpVu+aHpAu7vs8Yo+mp0QCql3e65Sbp+uRgUM3DYdf8aVbplt5dCKwCnOr77uaU7gVhFWhZSdLEQZLGuXvEqPpOET8T5jTx3Vt9mzHG0pDrFxd5veytOF4pAAAAAElFTkSuQmCC"},mono:{icon:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAAAWCAMAAAAvk+g+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADPUExURQAAAPv7+/T09Lm5uf////z8/OLi4v7+/v39/QICAnt7e7S0tPDw8Pb29uvr63V1dRgYGKSkpNvb2+np6cDAwAgICOXl5VZWVsrKytXV1W5ubjMzM6enp/r6+sfHx+fn5/Ly8t/f38/Pz+7u7g4ODs3NzYWFhZmZmUFBQR4eHpGRkQUFBcTExLy8vJ2dndHR0To6Oq2trZKSktjY2BQUFKCgoICAgEhISI6OjrGwsSIiIltbW/79/i4uLiYmJk1NTaqqqpaWlmZmZmFhYYmJiVdCR2MAAAM3SURBVEjHvdbZkqJKEAbgH6EqM1EEUXBFcBC13fe1215m3v+ZzkWrrSfOuZmI7rygCCqivoDgryzQrXI5pu8vXG/U5KU5VkRkqJ8BwyfgXKao9doIfwQ0AUiF3wWw+QdAXgAQ0w8ANJ1vBjlr9AtjAFI7AEDV+IuF6psaWdZ/TvG4tCLrDoyPgF14Baq5NwDY/M0nNVH6X3CIinUP1gSQTrjfhyoToJpGyRfJD8PdKs+XZ8x8Adki67OILhciIouW/wIzAFIj9t/y4eH3sjzeHfuXbMymtaxnT6L21m4zcbqw3VaZKZ7mO+/uMiRSeuNu8zkmE5vx1p5ERMnkT2OfMTnTabnk/lkRLVHhaDGd8AVMXwDpqMUacs5ItbsAOp9gHoPAw8jtrmUdUriTblfmPvmYH59Efkf864h1gN8pmWiOPMi7Uo3RfC6jCicIBl4gzZSHqBglnNLbTzN+kr1TAgAMCtEJAFZXsOoXP9DQ8Ssy3sq2XN6jYfh4aRdqI6TODptUf2BDJk6r1AyCjqrNIuOABieQfOo3seIhJpVgEN/FothJ+gIAwCQXABg4V7DF9A6T2EaWdBESFb2g7MNlFT0hXcnAIZ5hp0yUFLOLCetp722MKiXwjGd2UaelbL3ziu9zqBsXDyfnQ3DM+AYS9WEy2ciKIgmR8yLah0usjkgzOTFRB0fDRImJ9pKPmyO3N5cqF+AZxDbqtBTIuq7uQL959YBJvCnp6376AEYD1Cyq45z4cInUGWkYPIXEeWmwib4i51XaFbEjnqHKCTyDyEadhti1Rrvi8w10ql8eXkL+ysADaB2k2XqbS4luIPeketh4ozab6A7zDcwLNTnpdIGqKsBTlmWjzkNMop7Yzg2s4756d5nLo0Xch8lso0bRxoN0351P0DiiyIUegPOByIT7Cmn+YqeHrtf4fENl0SdY4XSAt2ssqP0ABsUvMNUpU1EXiGKdEBvlLIuJyNExkdLaYVK6NkvZslKd5mZZgUgZflvndMiG1mRRrHNc1glzrLW6gnr9IK6+vT3xonvnyQ/0Qw7b7bqfTZsCoKd+oAEzET0zp/mPaut7jzZ4bAFEz0TWd4L/AJltcxCN1O75AAAAAElFTkSuQmCC",image:"/v6/b5deda1c1a121af1.svg"}},fs=Object.keys(ps);class gs extends pi{constructor(){super(),this.selected=""}connectedCallback(){super.connectedCallback(),1===fs.length&&(this.selected=fs[0])}Fe({target:t}){"IMG"===t.tagName?this.selected=t.getAttribute("data-name"):this.selected=""}render(){return Kn`
${fs.map((t=>Kn`${ao(`payment.${t}`)}`))}
${this.selected?function(t){const e=ps[t];if(!e)return console.warn(`Cannot find configuration for ${t} payment option`),null;let n;return e.image&&(n=Kn``),Kn`
${n}
`}(this.selected):""}`}}dn(gs,"cName","one-time-donations"),dn(gs,"properties",{selected:{type:String}}),gs.styles=hi`.options{margin:20px 0}.options img{margin:10px;cursor:pointer}.selected{text-align:center}`;class ms extends pi{constructor(){super(),this.items=null,this.type="page",this.categories=null}render(){const t=this.categories||Object.keys(this.items);return Kn``}}dn(ms,"cName","pages-by-categories"),dn(ms,"properties",{items:{type:Object},type:{type:String},categories:{type:Array}}),ms.styles=hi`:host{display:block}ul{list-style-type:none;margin:0;padding:0}nav>h3:first-child{margin-top:0}li{margin-top:8px}`;class Cs extends pi{constructor(){super(),this.type="info",this.message=""}render(){return Kn`${co(this.message)}`}}dn(Cs,"cName","app-notification"),dn(Cs,"properties",{type:{type:String},message:{type:String}}),Cs.styles=hi`:host{display:block;background:#1d1f21;border-radius:7px;padding:1rem;color:#fff;cursor:pointer}a{color:inherit}`;let vs=(t,e,n)=>(t.addEventListener(e,n,!1),()=>t.removeEventListener(e,n,!1));try{const t=Object.defineProperty({},"passive",{get:()=>(vs=(t,e,n)=>(t.addEventListener(e,n,{passive:!0}),()=>t.removeEventListener(e,n,{passive:!0})),!0)});window.addEventListener("test",null,t)}catch(vs){}var bs=(t,e,n)=>vs(t,e,n);const ws=window.requestAnimationFrame||window.webkitRequestAnimationFrame||(t=>setTimeout(t,1e3/60)),ys=window.document.documentElement,xs=(()=>{const t=["Webkit","Khtml","Moz","ms","O"];for(let e=0;ethis.t.removeEventListener(t,e,n)}open(){this.I("beforeopen"),Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),this.P(),this.S(this.g),this.l=!0;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),ks(t.panel,"transition",""),t.I("open")})),this}close(){if(!this.isOpen()&&!this.h)return this;this.I("beforeclose"),this.P(),this.S(0),this.l=!1;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),Ss.classList.remove("slideout-open"),ks(t.panel,"transition",""),ks(t.panel,"transform",""),t.I("close")})),this}toggle(){return this.isOpen()?this.close():this.open()}isOpen(){return this.l}S(t){this.i=t,ks(this.panel,"transform",`translateX(${t}px)`)}P(){ks(this.panel,"transition",`${xs}transform ${this.$}ms ${this.v}`)}k(){const t=()=>{Os=!1};let e;this.X=function(t,e,n){let i,r=!1;const o=()=>{n.call(t,i),r=!1};return bs(t,"scroll",(t=>{i=t,r||(ws(o),r=!0)}))}(js,0,(()=>{this.o||(clearTimeout(e),Os=!0,e=setTimeout(t,250))})),this.C=bs(this.panel,Es.start,(t=>{void 0!==t.touches&&(this.o=!1,this.h=!1,this.s=t.touches[0].pageX,this.u=!this.p||!this.isOpen()&&0!==this.menu.clientWidth)})),this.j=bs(this.panel,Es.cancel,(()=>{this.o=!1,this.h=!1})),this.D=bs(this.panel,Es.end,(()=>{if(this.o)if(this.I("translateend"),this.h&&Math.abs(this.i)>this.T)this.open();else if(this.g-Math.abs(this.i)<=this.T/2){this.P(),this.S(this.g);const t=this;this.panel.addEventListener($s.end,(function e(){this.panel.removeEventListener($s.end,e),ks(t.panel,"transition","")}))}else this.close();this.o=!1})),this.K=bs(this.panel,Es.move,(t=>{if(Os||this.u||void 0===t.touches||function(t){let e=t;for(;e.parentNode;){if(null!==e.getAttribute("data-slideout-ignore"))return e;e=e.parentNode}return null}(t.target))return;const e=t.touches[0].clientX-this.s;let n=e;if(this.i=e,Math.abs(n)>this.M||Math.abs(e)<=20)return;this.h=!0;const i=e*this.ge;this.l&&i>0||!this.l&&i<0||(this.o||this.I("translatestart"),i<=0&&(n=e+this.M*this.ge,this.h=!1),this.o&&Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),ks(this.panel,"transform",`translateX(${n}px)`),this.I("translate",n),this.o=!0)}))}enableTouch(){return this.p=!0,this}disableTouch(){return this.p=!1,this}destroy(){this.close(),this.C(),this.j(),this.D(),this.K(),this.X()}}class Ms extends pi{constructor(){super(),this.Ee=null,this.isOpen=!1,this.disabled=!1,this.$e=0}open(){this.isOpen=!0}close(){this.isOpen=!1}toggle(){this.isOpen=!this.isOpen}je(){const[t,e]=this.shadowRoot.children;this.Ee=new zs({menu:t,panel:e,eventsEmitter:this,padding:270,touch:!1});const n=()=>this.Ee.close();this.Ee.on("beforeopen",(()=>{this.isOpen=!0,this.$e=window.pageYOffset,t.classList.add("open"),e.style.top=-this.$e+"px",e.addEventListener("mousedown",n,!1),e.addEventListener("touchstart",n,!1),window.scroll(0,0)})),this.Ee.on("close",(()=>{this.isOpen=!1,t.classList.remove("open"),e.style.top="",window.scroll(0,this.$e),e.removeEventListener("mousedown",n,!1),e.removeEventListener("touchstart",n,!1)}))}updated(t){if(this.Ee||this.je(),this.isOpen!==this.Ee.isOpen()){const t=this.isOpen?"open":"close";this.Ee[t]()}if(t.has("disabled")){const t=this.disabled?"disableTouch":"enableTouch";this.Ee[t]()}}disconnectedCallback(){super.disconnectedCallback(),this.Ee.destroy(),this.Ee=null}render(){return Kn`
`}}async function Ds(){return(await cr("/versions.txt",{format:"txtArrayJSON",cache:!0})).body}function Ts(t){return window.location.href.replace("/v6/",`/${t}/`)}function Ls(t){window.location.href=Ts(t.target.value)}dn(Ms,"cName","menu-drawer"),dn(Ms,"properties",{isOpen:{type:Boolean},disabled:{type:Boolean}}),Ms.styles=hi`:host{display:block}.menu{display:none;padding:10px;width:256px;min-height:100vh;-webkit-overflow-scrolling:touch}.panel{position:relative;z-index:10;will-change:transform;min-height:100vh;background:#fff}.panel::before{position:absolute;left:0;top:0;bottom:0;width:100%;z-index:6000;background-color:transparent;transition:background-color .2s ease-in-out}.menu.open{display:block}.menu.open+.panel{position:fixed;left:0;right:0;top:0;overflow:hidden;min-height:100%;z-index:10;box-shadow:0 0 20px rgba(0,0,0,.5)}.menu.open+.panel::before{content:'';background-color:rgba(0,0,0,.5)}`;class _s extends pi{constructor(){super(),this.Se=[],this.Oe="v6",this.Oe&&this.Se.push({number:this.Oe})}async connectedCallback(){super.connectedCallback();const t=await Ds();this.Se=t.slice(0).reverse(),this.requestUpdate()}render(){return Kn``}}dn(_s,"cName","versions-select"),_s.styles=hi`:host{display:inline-block}select{display:block;font-size:16px;font-weight:700;color:#444;line-height:1.3;padding-left:.5em;padding-right:1.1em;box-sizing:border-box;margin:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23444444%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');background-repeat:no-repeat;background-position:right .5em top 50%;background-size:.5em auto;border:0;cursor:pointer}select::-ms-expand{display:none}select:focus{outline:0}`;class Ns extends pi{constructor(){super(),this.Se=[],this.Oe="v6"}async connectedCallback(){super.connectedCallback(),this.ie=io.observe((()=>this.requestUpdate())),this.Se=await Ds(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}render(){const t=this.Se[this.Se.length-1];return t&&t.number!==this.Oe?Kn`
${co("oldVersionAlert",{latestVersion:t.number,currentVersion:this.Oe,latestVersionUrl:Ts(t.number)})}
`:Kn``}}dn(Ns,"cName","old-version-alert"),Ns.styles=[po,Co,hi`a{color:inherit}`];const Bs=[uo,ho,bo,wo,yo,xo,ko,Oo,Lo,zo,hs,ds,as,ms,gs,Cs,Ms,_s,Ns];const{navigator:Is,location:qs}=window,Ps="localhost"===qs.hostname||"[::1]"===qs.hostname||qs.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),Us="serviceWorker"in Is,Vs=(...t)=>console.log(...t);function Rs(t,e){let n=!1;return Is.serviceWorker.addEventListener("controllerchange",(()=>{n||(n=!0,qs.reload())})),Is.serviceWorker.register(t).then((t=>{Vs("service worker is registered"),t.onupdatefound=()=>function(t,e){t&&(t.onstatechange=()=>{Vs("new worker state",t.state),"installed"===t.state&&(Is.serviceWorker.controller?(Vs("New content is available and will be used when all tabs for this page are closed. See https://bit.ly/CRA-PWA."),e&&e.onUpdate&&e.onUpdate(t)):(Vs("Content is cached for offline use."),e&&e.onSuccess&&e.onSuccess(t)))})}(t.installing,e)})).catch((t=>{console.error("Error during service worker registration:",t)}))}window.__isAppExecuted__=!0;const Gs=function(t){const e=document.querySelector(t);return Bs.forEach((t=>customElements.define(t.cName,t))),io.observe((async t=>{const n=t.response.params.lang||mr;Cr()!==n&&(await br(n),e.ready=!0),$o(t)})),e}("casl-docs");!function(t){Us&&window.addEventListener("load",(()=>{const e="/v6/sw.js";Ps?function(t,e){cr(t,{headers:{"Service-Worker":"script"},format:"raw",absoluteUrl:!0}).then((n=>{const i=n.headers["content-type"]||"";404===n.status||-1===i.indexOf("javascript")?(Vs("cannot detect service worker"),Is.serviceWorker.ready.then((t=>t.unregister())).then((()=>qs.reload()))):Rs(t,e)})).catch((()=>{Vs("No internet connection found. App is running in offline mode.")}))}(e,t):Rs(e,t)}))}({onUpdate(t){Gs.notify("updateAvailable",{onClick(){t.postMessage({type:"SKIP_WAITING"})}})}}); -//# sourceMappingURL=bootstrap.6cc06c45.js.map +var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=function(t){return t&&t.Math==Math&&t},n=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||function(){return this}()||Function("return this")(),i={},r=function(t){try{return!!t()}catch(t){return!0}},o=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),s={},a={}.propertyIsEnumerable,c=Object.getOwnPropertyDescriptor,u=c&&!a.call({1:2},1);s.f=u?function(t){var e=c(this,t);return!!e&&e.enumerable}:a;var l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},h={}.toString,d=function(t){return h.call(t).slice(8,-1)},p=d,f="".split,g=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},m=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==p(t)?f.call(t,""):Object(t)}:Object,C=g,v=function(t){return m(C(t))},b=function(t){return"object"==typeof t?null!==t:"function"==typeof t},w=b,y=function(t,e){if(!w(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!w(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")},x=g,k=function(t){return Object(x(t))},A={}.hasOwnProperty,F=function(t,e){return A.call(k(t),e)},E=b,$=n.document,j=E($)&&E($.createElement),S=function(t){return j?$.createElement(t):{}},O=S,z=!o&&!r((function(){return 7!=Object.defineProperty(O("div"),"a",{get:function(){return 7}}).a})),M=o,D=s,T=l,L=v,_=y,N=F,B=z,I=Object.getOwnPropertyDescriptor;i.f=M?I:function(t,e){if(t=L(t),e=_(e,!0),B)try{return I(t,e)}catch(t){}if(N(t,e))return T(!D.f.call(t,e),t[e])};var q={},P=b,U=function(t){if(!P(t))throw TypeError(String(t)+" is not an object");return t},V=o,R=z,G=U,H=y,Z=Object.defineProperty;q.f=V?Z:function(t,e,n){if(G(t),e=H(e,!0),G(n),R)try{return Z(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var X=q,W=l,K=o?function(t,e,n){return X.f(t,e,W(1,n))}:function(t,e,n){return t[e]=n,t},Q={exports:{}},J=n,Y=K,tt=function(t,e){try{Y(J,t,e)}catch(n){J[t]=e}return e},et=tt,nt=n["A"]||et("__core-js_shared__",{}),it=nt,rt=Function.toString;"function"!=typeof it.inspectSource&&(it.inspectSource=function(t){return rt.call(t)});var ot=it.inspectSource,st=ot,at=n.WeakMap,ct="function"==typeof at&&/native code/.test(st(at)),ut={exports:{}},lt=nt;(ut.exports=function(t,e){return lt[t]||(lt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var ht,dt,pt,ft=0,gt=Math.random(),mt=ut.exports,Ct=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++ft+gt).toString(36)},vt=mt("keys"),bt={},wt=ct,yt=b,xt=K,kt=F,At=nt,Ft=function(t){return vt[t]||(vt[t]=Ct(t))},Et=bt,$t=n.WeakMap;if(wt){var jt=At.state||(At.state=new $t),St=jt.get,Ot=jt.has,zt=jt.set;ht=function(t,e){if(Ot.call(jt,t))throw new TypeError("Object already initialized");return e.facade=t,zt.call(jt,t,e),e},dt=function(t){return St.call(jt,t)||{}},pt=function(t){return Ot.call(jt,t)}}else{var Mt=Ft("state");Et[Mt]=!0,ht=function(t,e){if(kt(t,Mt))throw new TypeError("Object already initialized");return e.facade=t,xt(t,Mt,e),e},dt=function(t){return kt(t,Mt)?t[Mt]:{}},pt=function(t){return kt(t,Mt)}}var Dt={set:ht,get:dt,has:pt,enforce:function(t){return pt(t)?dt(t):ht(t,{})},getterFor:function(t){return function(e){var n;if(!yt(e)||(n=dt(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},Tt=n,Lt=K,_t=F,Nt=tt,Bt=ot,It=Dt.get,qt=Dt.enforce,Pt=String(String).split("String");(Q.exports=function(t,e,n,i){var r,o=!!i&&!!i.unsafe,s=!!i&&!!i.enumerable,a=!!i&&!!i.noTargetGet;"function"==typeof n&&("string"!=typeof e||_t(n,"name")||Lt(n,"name",e),(r=qt(n)).source||(r.source=Pt.join("string"==typeof e?e:""))),t!==Tt?(o?!a&&t[e]&&(s=!0):delete t[e],s?t[e]=n:Lt(t,e,n)):s?t[e]=n:Nt(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&It(this).source||Bt(this)}));var Ut=n,Vt=n,Rt=function(t){return"function"==typeof t?t:void 0},Gt=function(t,e){return arguments.length<2?Rt(Ut[t])||Rt(Vt[t]):Ut[t]&&Ut[t][e]||Vt[t]&&Vt[t][e]},Ht={},Zt=Math.ceil,Xt=Math.floor,Wt=function(t){return isNaN(t=+t)?0:(t>0?Xt:Zt)(t)},Kt=Wt,Qt=Math.min,Jt=Wt,Yt=Math.max,te=Math.min,ee=v,ne=function(t){return t>0?Qt(Kt(t),9007199254740991):0},ie=function(t,e){var n=Jt(t);return n<0?Yt(n+e,0):te(n,e)},re=function(t){return function(e,n,i){var r,o=ee(e),s=ne(o.length),a=ie(i,s);if(t&&n!=n){for(;s>a;)if((r=o[a++])!=r)return!0}else for(;s>a;a++)if((t||a in o)&&o[a]===n)return t||a||0;return!t&&-1}},oe={includes:re(!0),indexOf:re(!1)},se=F,ae=v,ce=oe.indexOf,ue=bt,le=function(t,e){var n,i=ae(t),r=0,o=[];for(n in i)!se(ue,n)&&se(i,n)&&o.push(n);for(;e.length>r;)se(i,n=e[r++])&&(~ce(o,n)||o.push(n));return o},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");Ht.f=Object.getOwnPropertyNames||function(t){return le(t,he)};var de={};de.f=Object.getOwnPropertySymbols;var pe,fe,ge,me=Ht,Ce=de,ve=U,be=Gt("Reflect","ownKeys")||function(t){var e=me.f(ve(t)),n=Ce.f;return n?e.concat(n(t)):e},we=F,ye=be,xe=i,ke=q,Ae=r,Fe=/#|\.prototype\./,Ee=function(t,e){var n=je[$e(t)];return n==Oe||n!=Se&&("function"==typeof e?Ae(e):!!e)},$e=Ee.normalize=function(t){return String(t).replace(Fe,".").toLowerCase()},je=Ee.data={},Se=Ee.NATIVE="N",Oe=Ee.POLYFILL="P",ze=Ee,Me=n,De=i.f,Te=K,Le=Q.exports,_e=tt,Ne=function(t,e){for(var n=ye(e),i=ke.f,r=xe.f,o=0;on;)e.push(arguments[n++]);return on[++rn]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},pe(rn),rn},Ye=function(t){delete on[t]},Ke?pe=function(t){tn.nextTick(an(t))}:nn&&nn.now?pe=function(t){nn.now(an(t))}:en&&!We?(ge=(fe=new en).port2,fe.port1.onmessage=cn,pe=He(ge.postMessage,ge,1)):Re.addEventListener&&"function"==typeof postMessage&&!Re.importScripts&&Qe&&"file:"!==Qe.protocol&&!Ge(un)?(pe=un,Re.addEventListener("message",cn,!1)):pe="onreadystatechange"in Xe("script")?function(t){Ze.appendChild(Xe("script")).onreadystatechange=function(){Ze.removeChild(this),sn(t)}}:function(t){setTimeout(an(t),0)});var ln=n,hn={set:Je,clear:Ye};function dn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}(function(t,e){var n,i,r,o,s,a=t.target,c=t.global,u=t.stat;if(n=c?Me:u?Me[a]||_e(a,{}):(Me[a]||{}).prototype)for(i in e){if(o=e[i],r=t.noTargetGet?(s=De(n,i))&&s.value:n[i],!Be(c?i:a+(u?".":"#")+i,t.forced)&&void 0!==r){if(typeof o==typeof r)continue;Ne(o,r)}(t.sham||r&&r.sham)&&Te(o,"sham",!0),Le(n,i,o,t)}})({global:!0,bind:!0,enumerable:!0,forced:!ln.setImmediate||!ln.clearImmediate},{setImmediate:hn.set,clearImmediate:hn.clear});const pn="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,fn=(t,e,n=null)=>{for(;e!==n;){const n=e.nextSibling;t.removeChild(e),e=n}},gn=`{{lit-${String(Math.random()).slice(2)}}}`,mn=`\x3c!--${gn}--\x3e`,Cn=new RegExp(`${gn}|${mn}`);class vn{constructor(t,e){this.parts=[],this.element=e;const n=[],i=[],r=document.createTreeWalker(e.content,133,null,!1);let o=0,s=-1,a=0;const{strings:c,values:{length:u}}=t;for(;a0;){const e=c[a],n=xn.exec(e)[2],i=n.toLowerCase()+"$lit$",r=t.getAttribute(i);t.removeAttribute(i);const o=r.split(Cn);this.parts.push({type:"attribute",index:s,name:n,strings:o}),a+=o.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),r.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(gn)>=0){const i=t.parentNode,r=e.split(Cn),o=r.length-1;for(let e=0;e{const n=t.length-e.length;return n>=0&&t.slice(n)===e},wn=t=>-1!==t.index,yn=()=>document.createComment(""),xn=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function kn(t,e){const{element:{content:n},parts:i}=t,r=document.createTreeWalker(n,133,null,!1);let o=Fn(i),s=i[o],a=-1,c=0;const u=[];let l=null;for(;r.nextNode();){a++;const t=r.currentNode;for(t.previousSibling===l&&(l=null),e.has(t)&&(u.push(t),null===l&&(l=t)),null!==l&&c++;void 0!==s&&s.index===a;)s.index=null!==l?-1:s.index-c,o=Fn(i,o),s=i[o]}u.forEach((t=>t.parentNode.removeChild(t)))}const An=t=>{let e=11===t.nodeType?0:1;const n=document.createTreeWalker(t,133,null,!1);for(;n.nextNode();)e++;return e},Fn=(t,e=-1)=>{for(let n=e+1;n(...e)=>{const n=t(...e);return En.set(n,!0),n},jn=t=>"function"==typeof t&&En.has(t),Sn={},On={};class zn{constructor(t,e,n){this.F=[],this.template=t,this.processor=e,this.options=n}update(t){let e=0;for(const n of this.F)void 0!==n&&n.setValue(t[e]),e++;for(const t of this.F)void 0!==t&&t.commit()}L(){const t=pn?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],n=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let r,o=0,s=0,a=i.nextNode();for(;ot}),Dn=` ${gn} `;class Tn{constructor(t,e,n,i){this.strings=t,this.values=e,this.type=n,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",n=!1;for(let i=0;i-1||n)&&-1===t.indexOf("--\x3e",r+1);const o=xn.exec(t);e+=null===o?t+(n?Dn:mn):t.substr(0,o.index)+o[1]+o[2]+"$lit$"+o[3]+gn}return e+=this.strings[t],e}getTemplateElement(){const t=document.createElement("template");let e=this.getHTML();return void 0!==Mn&&(e=Mn.createHTML(e)),t.innerHTML=e,t}}const Ln=t=>null===t||!("object"==typeof t||"function"==typeof t),_n=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class Nn{constructor(t,e,n){this.dirty=!0,this.element=t,this.name=e,this.strings=n,this.parts=[];for(let t=0;t{try{const t={get capture(){return Vn=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class Rn{constructor(t,e,n){this.value=void 0,this.B=void 0,this.element=t,this.eventName=e,this.eventContext=n,this.H=t=>this.handleEvent(t)}setValue(t){this.B=t}commit(){for(;jn(this.B);){const t=this.B;this.B=Sn,t(this)}if(this.B===Sn)return;const t=this.B,e=this.value,n=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||n);n&&this.element.removeEventListener(this.eventName,this.H,this.Z),i&&(this.Z=Gn(t),this.element.addEventListener(this.eventName,this.H,this.Z)),this.value=t,this.B=Sn}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const Gn=t=>t&&(Vn?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);function Hn(t){let e=Zn.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},Zn.set(t.type,e));let n=e.stringsArray.get(t.strings);if(void 0!==n)return n;const i=t.strings.join(gn);return n=e.keyString.get(i),void 0===n&&(n=new vn(t,t.getTemplateElement()),e.keyString.set(i,n)),e.stringsArray.set(t.strings,n),n}const Zn=new Map,Xn=new WeakMap;const Wn=new class{handleAttributeExpressions(t,e,n,i){const r=e[0];if("."===r){return new Pn(t,e.slice(1),n).parts}if("@"===r)return[new Rn(t,e.slice(1),i.eventContext)];if("?"===r)return[new qn(t,e.slice(1),n)];return new Nn(t,e,n).parts}handleTextExpression(t){return new In(t)}};"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.3.0");const Kn=(t,...e)=>new Tn(t,e,"html",Wn),Qn=(t,e)=>`${t}--${e}`;let Jn=!0;void 0===window.ShadyCSS?Jn=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),Jn=!1);const Yn=t=>e=>{const n=Qn(e.type,t);let i=Zn.get(n);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},Zn.set(n,i));let r=i.stringsArray.get(e.strings);if(void 0!==r)return r;const o=e.strings.join(gn);if(r=i.keyString.get(o),void 0===r){const n=e.getTemplateElement();Jn&&window.ShadyCSS.prepareTemplateDom(n,t),r=new vn(e,n),i.keyString.set(o,r)}return i.stringsArray.set(e.strings,r),r},ti=["html","svg"],ei=new Set,ni=(t,e,n)=>{ei.add(t);const i=n?n.element:document.createElement("template"),r=e.querySelectorAll("style"),{length:o}=r;if(0===o)return void window.ShadyCSS.prepareTemplateStyles(i,t);const s=document.createElement("style");for(let t=0;t{ti.forEach((e=>{const n=Zn.get(Qn(e,t));void 0!==n&&n.keyString.forEach((t=>{const{element:{content:e}}=t,n=new Set;Array.from(e.querySelectorAll("style")).forEach((t=>{n.add(t)})),kn(t,n)}))}))})(t);const a=i.content;n?function(t,e,n=null){const{element:{content:i},parts:r}=t;if(null==n)return void i.appendChild(e);const o=document.createTreeWalker(i,133,null,!1);let s=Fn(r),a=0,c=-1;for(;o.nextNode();)for(c++,o.currentNode===n&&(a=An(e),n.parentNode.insertBefore(e,n));-1!==s&&r[s].index===c;){if(a>0){for(;-1!==s;)r[s].index+=a,s=Fn(r,s);return}s=Fn(r,s)}}(n,s,a.firstChild):a.insertBefore(s,a.firstChild),window.ShadyCSS.prepareTemplateStyles(i,t);const c=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==c)e.insertBefore(c.cloneNode(!0),e.firstChild);else if(n){a.insertBefore(s,a.firstChild);const t=new Set;t.add(s),kn(n,t)}};window.JSCompiler_renameProperty=(t,e)=>t;const ii={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},ri=(t,e)=>e!==t&&(e==e||t==t),oi={attribute:!0,type:String,converter:ii,reflect:!1,hasChanged:ri};class si extends HTMLElement{constructor(){super(),this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach(((e,n)=>{const i=this.W(n,e);void 0!==i&&(this.J.set(i,n),t.push(i))})),t}static Y(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach(((t,e)=>this._classProperties.set(e,t)))}}static createProperty(t,e=oi){if(this.Y(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const n="symbol"==typeof t?Symbol():`__${t}`,i=this.getPropertyDescriptor(t,n,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}static getPropertyDescriptor(t,e,n){return{get(){return this[e]},set(i){const r=this[t];this[e]=i,this.requestUpdateInternal(t,r,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||oi}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this.Y(),this.J=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const n of e)this.createProperty(n,t[n])}}static W(t,e){const n=e.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}static tt(t,e,n=ri){return n(t,e)}static et(t,e){const n=e.type,i=e.converter||ii,r="function"==typeof i?i:i.fromAttribute;return r?r(t,n):t}static nt(t,e){if(void 0===e.reflect)return;const n=e.type,i=e.converter;return(i&&i.toAttribute||ii.toAttribute)(t,n)}initialize(){this.it=0,this.rt=new Promise((t=>this.ot=t)),this.st=new Map,this.ct(),this.requestUpdateInternal()}ct(){this.constructor._classProperties.forEach(((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this.ut||(this.ut=new Map),this.ut.set(e,t)}}))}lt(){this.ut.forEach(((t,e)=>this[e]=t)),this.ut=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this.ot&&(this.ot(),this.ot=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,n){e!==n&&this.ht(t,n)}dt(t,e,n=oi){const i=this.constructor,r=i.W(t,n);if(void 0!==r){const t=i.nt(e,n);if(void 0===t)return;this.it=8|this.it,null==t?this.removeAttribute(r):this.setAttribute(r,t),this.it=-9&this.it}}ht(t,e){if(8&this.it)return;const n=this.constructor,i=n.J.get(t);if(void 0!==i){const t=n.getPropertyOptions(i);this.it=16|this.it,this[i]=n.et(e,t),this.it=-17&this.it}}requestUpdateInternal(t,e,n){let i=!0;if(void 0!==t){const r=this.constructor;n=n||r.getPropertyOptions(t),r.tt(this[t],e,n.hasChanged)?(this.st.has(t)||this.st.set(t,e),!0!==n.reflect||16&this.it||(void 0===this.ft&&(this.ft=new Map),this.ft.set(t,n))):i=!1}!this.gt&&i&&(this.rt=this.Ct())}requestUpdate(t,e){return this.requestUpdateInternal(t,e),this.updateComplete}async Ct(){this.it=4|this.it;try{await this.rt}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this.gt}get gt(){return 4&this.it}get hasUpdated(){return 1&this.it}performUpdate(){if(!this.gt)return;this.ut&&this.lt();let t=!1;const e=this.st;try{t=this.shouldUpdate(e),t?this.update(e):this.vt()}catch(e){throw t=!1,this.vt(),e}t&&(1&this.it||(this.it=1|this.it,this.firstUpdated(e)),this.updated(e))}vt(){this.st=new Map,this.it=-5&this.it}get updateComplete(){return this.bt()}bt(){return this.rt}shouldUpdate(t){return!0}update(t){void 0!==this.ft&&this.ft.size>0&&(this.ft.forEach(((t,e)=>this.dt(e,this[e],t))),this.ft=void 0),this.vt()}updated(t){}firstUpdated(t){}}si.finalized=!0;const ai=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ci=Symbol();class ui{constructor(t,e){if(e!==ci)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this.wt&&(ai?(this.wt=new CSSStyleSheet,this.wt.replaceSync(this.cssText)):this.wt=null),this.wt}toString(){return this.cssText}}const li=t=>new ui(String(t),ci),hi=(t,...e)=>{const n=e.reduce(((e,n,i)=>e+(t=>{if(t instanceof ui)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(n)+t[i+1]),t[0]);return new ui(n,ci)};(window.litElementVersions||(window.litElementVersions=[])).push("2.4.0");const di={};class pi extends si{static getStyles(){return this.styles}static yt(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(Array.isArray(t)){const e=(t,n)=>t.reduceRight(((t,n)=>Array.isArray(n)?e(n,t):(t.add(n),t)),n),n=e(t,new Set),i=[];n.forEach((t=>i.unshift(t))),this.xt=i}else this.xt=void 0===t?[]:[t];this.xt=this.xt.map((t=>{if(t instanceof CSSStyleSheet&&!ai){const e=Array.prototype.slice.call(t.cssRules).reduce(((t,e)=>t+e.cssText),"");return li(e)}return t}))}initialize(){super.initialize(),this.constructor.yt(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor.xt;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?ai?this.renderRoot.adoptedStyleSheets=t.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):this.kt=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map((t=>t.cssText)),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const e=this.render();super.update(t),e!==di&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this.kt&&(this.kt=!1,this.constructor.xt.forEach((t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)})))}render(){return di}}pi.finalized=!0,pi.render=(t,e,n)=>{if(!n||"object"!=typeof n||!n.scopeName)throw new Error("The `scopeName` option is required.");const i=n.scopeName,r=Xn.has(e),o=Jn&&11===e.nodeType&&!!e.host,s=o&&!ei.has(i),a=s?document.createDocumentFragment():e;if(((t,e,n)=>{let i=Xn.get(e);void 0===i&&(fn(e,e.firstChild),Xn.set(e,i=new In(Object.assign({templateFactory:Hn},n))),i.appendInto(e)),i.setValue(t),i.commit()})(t,a,Object.assign({templateFactory:Yn(i)},n)),s){const t=Xn.get(a);Xn.delete(a);const n=t.value instanceof zn?t.value.template:void 0;ni(i,a,n),fn(e,e.firstChild),e.appendChild(a),Xn.set(e,t)}!r&&o&&window.ShadyCSS.styleElement(e.host)};const fi=new WeakMap,gi=$n((t=>e=>{if(!(e instanceof In))throw new Error("cache can only be used in text bindings");let n=fi.get(e);void 0===n&&(n=new WeakMap,fi.set(e,n));const i=e.value;if(i instanceof zn){if(t instanceof Tn&&i.template===e.options.templateFactory(t))return void e.setValue(t);{let t=n.get(i.template);void 0===t&&(t={instance:i,nodes:document.createDocumentFragment()},n.set(i.template,t)),((t,e,n=null,i=null)=>{for(;e!==n;){const n=e.nextSibling;t.insertBefore(e,i),e=n}})(t.nodes,e.startNode.nextSibling,e.endNode)}}if(t instanceof Tn){const i=e.options.templateFactory(t),r=n.get(i);void 0!==r&&(e.setValue(r.nodes),e.commit(),e.value=r.instance)}e.setValue(t)}));var mi={items:[{name:"learn",route:!1,children:[{heading:"docs"},{name:"guide",page:"guide/intro"},{name:"api"},{name:"examples",url:"https://github.com/stalniy/casl-examples"},{name:"cookbook",page:"cookbook/intro"}]},{name:"ecosystem",route:!1,children:[{heading:"packages"},{name:"pkg-prisma",page:"package/casl-prisma"},{name:"pkg-mongoose",page:"package/casl-mongoose"},{name:"pkg-angular",page:"package/casl-angular"},{name:"pkg-react",page:"package/casl-react"},{name:"pkg-vue",page:"package/casl-vue"},{name:"pkg-aurelia",page:"package/casl-aurelia"},{heading:"help"},{name:"questions",url:"https://stackoverflow.com/questions/tagged/casl"},{name:"chat",url:"https://gitter.im/stalniy-casl/casl"},{heading:"news"},{name:"blog",url:"https://sergiy-stotskiy.medium.com"}]},{name:"support"}],footer:[{icon:"github",url:"https://github.com/stalniy/casl"},{icon:"twitter",url:"https://twitter.com/sergiy_stotskiy"},{icon:"medium",url:"https://sergiy-stotskiy.medium.com"}]},Ci={exports:{}};Ci.exports=Fi,Ci.exports.parse=bi,Ci.exports.compile=function(t,e){return wi(bi(t,e))},Ci.exports.tokensToFunction=wi,Ci.exports.tokensToRegExp=Ai;var vi=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function bi(t,e){for(var n,i=[],r=0,o=0,s="",a=e&&e.delimiter||"/",c=e&&e.delimiters||"./",u=!1;null!==(n=vi.exec(t));){var l=n[0],h=n[1],d=n.index;if(s+=t.slice(o,d),o=d+l.length,h)s+=h[1],u=!0;else{var p="",f=t[o],g=n[2],m=n[3],C=n[4],v=n[5];if(!u&&s.length){var b=s.length-1;c.indexOf(s[b])>-1&&(p=s[b],s=s.slice(0,b))}s&&(i.push(s),s="",u=!1);var w=""!==p&&void 0!==f&&f!==p,y="+"===v||"*"===v,x="?"===v||"*"===v,k=p||a,A=m||C;i.push({name:g||r++,prefix:p,delimiter:k,optional:x,repeat:y,partial:w,pattern:A?xi(A):"[^"+yi(k)+"]+?"})}}return(s||o-1;else{var p=d.repeat?"(?:"+d.pattern+")(?:"+yi(d.delimiter)+"(?:"+d.pattern+"))*":d.pattern;e&&e.push(d),d.optional?d.partial?u+=yi(d.prefix)+"("+p+")?":u+="(?:"+yi(d.prefix)+"("+p+"))?":u+=yi(d.prefix)+"("+p+")"}}return o?(i||(u+="(?:"+s+")?"),u+="$"===c?"$":"(?="+c+")"):(i||(u+="(?:"+s+"(?="+c+"))?"),l||(u+="(?="+s+"|"+c+")")),new RegExp(u,ki(n))}function Fi(t,e,n){return t instanceof RegExp?function(t,e){if(!e)return t;var n=t.source.match(/\((?!\?)/g);if(n)for(var i=0;it.replace(new RegExp(`{{[  ]*${e}[  ]*}}`,"gm"),String(Ri(n)))),t)}function Vi(t,e){const n=t.split(".");let i=e.strings;for(;null!=i&&n.length>0;)i=i[n.shift()];return null!=i?i.toString():null}function Ri(t){return"function"==typeof t?t():t}let Gi={loader:()=>Promise.resolve({}),empty:t=>`[${t}]`,lookup:Vi,interpolate:Ui,translationCache:{}};function Hi(t,e,n=Gi){var i;i={previousStrings:n.strings,previousLang:n.lang,lang:n.lang=t,strings:n.strings=e},window.dispatchEvent(new CustomEvent("langChanged",{detail:i}))}function Zi(t,e){const n=e=>t(e.detail);return window.addEventListener("langChanged",n,e),()=>window.removeEventListener("langChanged",n)}function Xi(t,e,n=Gi){let i=n.translationCache[t]||(n.translationCache[t]=n.lookup(t,n)||n.empty(t,n));return null!=(e=null!=e?Ri(e):null)?n.interpolate(i,e,n):i}function Wi(t){return t instanceof In?t.startNode.isConnected:t instanceof Bn?t.committer.element.isConnected:t.element.isConnected}const Ki=new Map;var Qi;function Ji(t,e,n){const i=e(n);t.value!==i&&(t.setValue(i),t.commit())}Zi((t=>{for(const[e,n]of Ki)Wi(e)&&Ji(e,n,t)})),Qi=Ki,setInterval((()=>{return t=()=>function(t){for(const[e]of t)Wi(e)||t.delete(e)}(Qi),void("requestIdleCallback"in window?window.requestIdleCallback(t):setTimeout(t));var t}),6e4);const Yi=$n((t=>e=>{Ki.set(e,t),Ji(e,t)})),tr=new WeakMap,er=$n((t=>e=>{if(!(e instanceof In))throw new Error("unsafeHTML can only be used in text bindings");const n=tr.get(e);if(void 0!==n&&Ln(t)&&t===n.value&&e.value===n.fragment)return;const i=document.createElement("template");i.innerHTML=t;const r=document.importNode(i.content,!0);e.setValue(r),tr.set(e,{value:t,fragment:r})})),nr=(...t)=>JSON.stringify(t);function ir(t,e=nr){const n=new Map,i=function(...i){const r=e(...i);return n.has(r)||n.set(r,t.apply(this,i)),n.get(r)};return i.cache=n,i}const rr=t=>t,or={json:JSON,raw:{parse:rr,stringify:rr},txtArrayJSON:{parse(t){const e=t.trim().replace(/[\r\n]+/g,",");return JSON.parse(`[${e}]`)},stringify(){throw new Error('"txtArrayJSON" format is not serializable')}}};function sr(t,e={}){const n=or[e.format||"json"];return new Promise(((i,r)=>{const o=new XMLHttpRequest;o.open(e.method||"GET",t),e.headers&&Object.keys(e.headers).forEach((t=>{o.setRequestHeader(t,e.headers[t])})),o.onload=()=>i({status:o.status,headers:{"content-type":o.getResponseHeader("Content-Type")},body:n.parse(o.responseText)}),o.ontimeout=o.onerror=r,o.send(e.data?n.stringify(e.data):null)}))}const ar=Object.create(null);function cr(t,e={}){const n=e.absoluteUrl?t:Pi+t;return"GET"!==(e.method||"GET")?sr(n,e):(ar[n]=ar[n]||sr(n,e),!0===e.cache?ar[n]:ar[n].then((t=>(delete ar[n],t))).catch((t=>(delete ar[n],Promise.reject(t)))))}var ur={en:{default:"/assets/a.507f0a5d.json"}};function lr(t,e){const n=t.split(".");let i=e.strings;for(let t=0;te[n]))}const pr=function(t){return Gi=Object.assign(Object.assign({},Gi),t)}({loader:async t=>(await cr(ur[t].default)).body,lookup:lr,interpolate:dr,empty:function(t){return console.warn(`missing i18n key: ${t}`),t}}),fr=ir(((t,e)=>new Intl.DateTimeFormat(t,Xi(`dateTimeFormats.${e}`)))),gr=["en"],mr=gr[0],Cr=()=>pr.lang,vr=Xi;function br(t){if(!gr.includes(t))throw new Error(`Locale ${t} is not supported. Supported: ${gr.join(", ")}`);return async function(t,e=Gi){const n=await e.loader(t,e);e.translationCache={},Hi(t,n,e)}(t)}var wr=function(){return(wr=Object.assign||function(t){for(var e,n=1,i=arguments.length;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function xr(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s}function kr(){for(var t=[],e=0;e0?[{node:n,keys:i}]:[]}return t.prototype.next=function(){var t=this.dive();return this.backtrack(),t},t.prototype.dive=function(){if(0===this.Ft.length)return{done:!0,value:void 0};var t=Er(this.Ft),e=t.node,n=t.keys;return""===Er(n)?{done:!1,value:this.result()}:(this.Ft.push({node:e[Er(n)],keys:Object.keys(e[Er(n)])}),this.dive())},t.prototype.backtrack=function(){0!==this.Ft.length&&(Er(this.Ft).keys.pop(),Er(this.Ft).keys.length>0||(this.Ft.pop(),this.backtrack()))},t.prototype.key=function(){return this.set._prefix+this.Ft.map((function(t){var e=t.keys;return Er(e)})).filter((function(t){return""!==t})).join("")},t.prototype.value=function(){return Er(this.Ft).node[""]},t.prototype.result=function(){return"VALUES"===this.At?this.value():"KEYS"===this.At?this.key():[this.key(),this.value()]},t.prototype[Symbol.iterator]=function(){return this},t}(),Er=function(t){return t[t.length-1]},$r=function(t,e,n,i,r,o){o.push({distance:0,ia:i,ib:0,edit:r});for(var s=[];o.length>0;){var a=o.pop(),c=a.distance,u=a.ia,l=a.ib,h=a.edit;if(l!==e.length)if(t[u]===e[l])o.push({distance:c,ia:u+1,ib:l+1,edit:0});else{if(c>=n)continue;2!==h&&o.push({distance:c+1,ia:u,ib:l+1,edit:3}),u0;)s();return r}(this._tree,t,e)},t.prototype.get=function(t){var e=Or(this._tree,t);return void 0!==e?e[""]:void 0},t.prototype.has=function(t){var e=Or(this._tree,t);return void 0!==e&&e.hasOwnProperty("")},t.prototype.keys=function(){return new Fr(this,"KEYS")},t.prototype.set=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");return delete this.Et,zr(this._tree,t)[""]=e,this},Object.defineProperty(t.prototype,"size",{get:function(){var t=this;return this.Et||(this.Et=0,this.forEach((function(){t.Et+=1}))),this.Et},enumerable:!1,configurable:!0}),t.prototype.update=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");delete this.Et;var n=zr(this._tree,t);return n[""]=e(n[""]),this},t.prototype.values=function(){return new Fr(this,"VALUES")},t.prototype[Symbol.iterator]=function(){return this.entries()},t.from=function(e){var n,i,r=new t;try{for(var o=yr(e),s=o.next();!s.done;s=o.next()){var a=xr(s.value,2),c=a[0],u=a[1];r.set(c,u)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r},t.fromObject=function(e){return t.from(Object.entries(e))},t}(),Sr=function(t,e,n){if(void 0===n&&(n=[]),0===e.length||null==t)return[t,n];var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0===i?(n.push([t,e]),Sr(void 0,"",n)):(n.push([t,i]),Sr(t[i],e.slice(i.length),n))},Or=function(t,e){if(0===e.length||null==t)return t;var n=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0!==n?Or(t[n],e.slice(n.length)):void 0},zr=function(t,e){var n;if(0===e.length||null==t)return t;var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));if(void 0===i){var r=Object.keys(t).find((function(t){return""!==t&&t.startsWith(e[0])}));if(void 0!==r){var o=Mr(e,r);return t[o]=((n={})[r.slice(o.length)]=t[r],n),delete t[r],zr(t[o],e.slice(o.length))}return t[e]={},t[e]}return zr(t[i],e.slice(i.length))},Mr=function(t,e,n,i,r){return void 0===n&&(n=0),void 0===i&&(i=Math.min(t.length,e.length)),void 0===r&&(r=""),n>=i||t[n]!==e[n]?r:Mr(t,e,n+1,i,r+t[n])},Dr=function(t,e){var n=xr(Sr(t,e),2),i=n[0],r=n[1];if(void 0!==i){delete i[""];var o=Object.keys(i);0===o.length&&Tr(r),1===o.length&&Lr(r,o[0],i[o[0]])}},Tr=function(t){if(0!==t.length){var e=xr(_r(t),2),n=e[0];delete n[e[1]],0===Object.keys(n).length&&Tr(t.slice(0,-1))}},Lr=function(t,e,n){if(0!==t.length){var i=xr(_r(t),2),r=i[0],o=i[1];r[o+e]=n,delete r[o]}},_r=function(t){return t[t.length-1]},Nr=function(){function t(t){if(null==(null==t?void 0:t.fields))throw new Error('MiniSearch: option "fields" must be provided');this.$t=wr(wr(wr({},Vr),t),{searchOptions:wr(wr({},Rr),t.searchOptions||{})}),this.jt=new jr,this.St=0,this.Ot={},this.zt={},this.Mt={},this.Dt={},this.Tt=0,this.Lt={},this.addFields(this.$t.fields)}return t.prototype.add=function(t){var e=this,n=this.$t,i=n.extractField,r=n.tokenize,o=n.processTerm,s=n.fields,a=n.idField,c=i(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=this.addDocumentId(c);this.saveStoredFields(u,t),s.forEach((function(n){var s=i(t,n);if(null!=s){var a=r(s.toString(),n);e.addFieldLength(u,e.zt[n],e.documentCount-1,a.length),a.forEach((function(t){var i=o(t,n);i&&e.addTerm(e.zt[n],u,i)}))}}))},t.prototype.addAll=function(t){var e=this;t.forEach((function(t){return e.add(t)}))},t.prototype.addAllAsync=function(t,e){var n=this;void 0===e&&(e={});var i=e.chunkSize,r=void 0===i?10:i,o={chunk:[],promise:Promise.resolve()},s=t.reduce((function(t,e,i){var o=t.chunk,s=t.promise;return o.push(e),(i+1)%r==0?{chunk:[],promise:s.then((function(){return new Promise((function(t){return setTimeout(t,0)}))})).then((function(){return n.addAll(o)}))}:{chunk:o,promise:s}}),o),a=s.chunk;return s.promise.then((function(){return n.addAll(a)}))},t.prototype.remove=function(t){var e=this,n=this.$t,i=n.tokenize,r=n.processTerm,o=n.extractField,s=n.fields,a=n.idField,c=o(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=xr(Object.entries(this.Ot).find((function(t){var e=xr(t,2);e[0];var n=e[1];return c===n}))||[],1)[0];if(null==u)throw new Error("MiniSearch: cannot remove document with ID "+c+": it is not in the index");s.forEach((function(n){var s=o(t,n);null!=s&&i(s.toString(),n).forEach((function(t){var i=r(t,n);i&&e.removeTerm(e.zt[n],u,i)}))})),delete this.Lt[u],delete this.Ot[u],this.St-=1},t.prototype.removeAll=function(t){var e=this;if(t)t.forEach((function(t){return e.remove(t)}));else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this.jt=new jr,this.St=0,this.Ot={},this.Mt={},this.Dt={},this.Lt={},this.Tt=0}},t.prototype.search=function(t,e){var n=this;void 0===e&&(e={});var i=this.$t,r=i.tokenize,o=i.processTerm,s=i.searchOptions,a=wr(wr({tokenize:r,processTerm:o},s),e),c=a.tokenize,u=a.processTerm,l=c(t).map((function(t){return u(t)})).filter((function(t){return!!t})).map(Pr(a)).map((function(t){return n.executeQuery(t,a)})),h=this.combineResults(l,a.combineWith);return Object.entries(h).reduce((function(t,e){var i=xr(e,2),r=i[0],o=i[1],s=o.score,c=o.match,u=o.terms,l={id:n.Ot[r],terms:Ur(u),score:s,match:c};return Object.assign(l,n.Lt[r]),(null==a.filter||a.filter(l))&&t.push(l),t}),[]).sort((function(t,e){return t.scoret.title)).join(" ");default:return t[e]}},fields:["title","headings","summary"],searchOptions:{boost:{title:2}}};var Xr=Object.freeze({__proto__:null,pages:{en:{notfound:"/assets/a.3a1055aa.json","support-casljs":"/assets/a.fb3a29b4.json","advanced/ability-inheritance":"/assets/a.d397cd54.json","advanced/customize-ability":"/assets/a.43b3ebd4.json","advanced/ability-to-database-query":"/assets/a.1cbe572a.json","advanced/debugging-testing":"/assets/a.895c28e2.json","advanced/typescript":"/assets/a.29bf67b2.json","api/casl-ability":"/assets/a.39bf2d3c.json","api/casl-ability-extra":"/assets/a.f4795c7d.json","guide/define-aliases":"/assets/a.34a69a85.json","guide/conditions-in-depth":"/assets/a.55d6bf93.json","guide/define-rules":"/assets/a.5668f429.json","guide/install":"/assets/a.83a32d45.json","guide/intro":"/assets/a.c7c52381.json","guide/restricting-fields":"/assets/a.704691ce.json","guide/subject-type-detection":"/assets/a.1cb23e25.json","cookbook/claim-authorization":"/assets/a.8e663da7.json","cookbook/cache-rules":"/assets/a.e43ce3e2.json","cookbook/less-confusing-can-api":"/assets/a.d83e511d.json","cookbook/intro":"/assets/a.0dea9028.json","cookbook/roles-with-persisted-permissions":"/assets/a.6ae53ea0.json","cookbook/roles-with-static-permissions":"/assets/a.12302ceb.json","package/casl-angular":"/assets/a.5409590b.json","package/casl-mongoose":"/assets/a.388c5727.json","package/casl-aurelia":"/assets/a.c852f966.json","package/casl-react":"/assets/a.c38715ec.json","package/casl-prisma":"/assets/a.6658bdbb.json","package/casl-vue":"/assets/a.d660db78.json"}},summaries:{en:"/assets/content_pages_summaries.en.3ae7a070.json"},searchIndexes:{en:"/assets/content_pages_searchIndexes.en.40e0a1d7.json"}});const Wr={page:new class{constructor({pages:t,summaries:e,searchIndexes:n}){this._t=t,this.Nt=e,this.Bt=n,this.It=ir(this.It),this.qt=ir(this.qt),this.Pt=ir(this.Pt),this.byCategories=ir(this.byCategories),this.load=ir(this.load)}async load(t,e){const n=this._t[t][e];if(!n)throw i=`Page with ${e} is not found`,Object.assign(new Error(i),{code:"NOT_FOUND"});var i;return(await cr(n)).body}async qt(t){return(await cr(this.Nt[t])).body}async Pt(t,e=null){const n=await this.byCategories(t,e);return Object.keys(n).reduce(((t,e)=>t.concat(n[e])),[])}async getNearestFor(t,e,n=null){const i=await this.Pt(t,n),r=i.findIndex((t=>t.id===e));if(-1===r)return[];const o=r-1,s=r+1;return[o<0?void 0:i[o],s>=i.length?void 0:i[s]]}async byCategories(t,e=null){const{items:n}=await this.qt(t),i={};return n.forEach((t=>{t.categories.forEach((e=>{i[e]=i[e]||[],i[e].push(t)}))})),Array.isArray(e)?e.reduce(((t,e)=>(t[e]=i[e],t)),{}):i}async at(t,e){const{items:n}=await this.qt(t);return n[e]}async It(t){const e=this.Bt[t],n=await cr(e);return Nr.loadJS(n.body,Zr)}async search(t,e,n){const[i,r]=await Promise.all([this.It(t),this.qt(t)]);return i.search(e,n).slice(0,15).map((t=>{const[e]=r.byId[t.id];return t.doc=r.items[e],t.hints=function(t){const e={};return t.terms.forEach((n=>{const i=new RegExp(`(${n})`,"gi");t.match[n].forEach((r=>{const o=t.doc[r];if("string"==typeof o)e[r]=o.replace(i,"$1");else if("headings"===r){const t=o.reduce(((t,e)=>(e.title.toLowerCase().includes(n)&&t.push({id:e.id,title:e.title.replace(i,"$1")}),t)),[]);e[r]=t.length?t:null}}))})),e}(t),t}))}}(Xr)};var Kr=t=>{const e=Wr[t];if(!e)throw new TypeError(`Unknown content loader "${t}".`);return e};const Qr=t=>t,Jr=(t=Qr)=>async e=>{const n=t(e),i=Kr("page");if(n.id)n.id.endsWith("/")?n.redirectTo=n.id.slice(0,-1):[n.page,n.byCategories,n.nav]=await Promise.all([i.load(n.lang,n.id),n.categories.length?i.byCategories(n.lang,n.categories):null,i.getNearestFor(n.lang,n.id,n.categories)]);else{const t=await async function(t,e){if(!e.categories)return t.at(e.lang,0);const n=await t.byCategories(e.lang,e.categories),i=e.categories.find((t=>n[t].length));return n[i][0]}(i,n);n.redirectTo=t.id}return n},Yr=(t=>({match:e,error:n,resolved:i})=>n?function(t){if("NOT_FOUND"===t.code)return{body:Kn``};throw t}(n):i.redirectTo?{redirect:{name:"page",params:{id:i.redirectTo,lang:e.params.lang}}}:{body:t(i,e.params)})((t=>({main:Kn``,sidebar:t.byCategories?Kn``:null})));var to=Object.freeze({__proto__:null,parse:function(t){return t?JSON.parse(`{"${t.replace(/&/g,'","').replace(/=/g,'":"')}"}`):{}},stringify:function(t){return t?Object.keys(t).reduce(((e,n)=>(e.push(`${n}=${t[n]}`),e)),[]).join("&"):""}});function eo(t){return t.restrictions?t.path.replace(/:([\w_-]+)(\?)?/g,((e,n,i="")=>{const r=t.restrictions[n];return r?`:${n}(${r})${i}`:n+i})):t.path}function no(t,e){let n=!1;const i=t.replace(/:([\w_-]+)\??/g,((t,i)=>(e[i]&&"undefined"!==e[i]||(n=!0),e[i])));return n?null:i}const io=function(t,e,n){var i,r;void 0===n&&(n={});var o,s,a,c,u,l,h,d=void 0===(i=n.history)?{}:i,p=n.sideEffects,f=n.external,g=void 0!==(r=n.invisibleRedirects)&&r,m=[],C=[],v=[],b=function(){l=void 0,h=void 0},w=function(){l&&l(),b()},y=function(){h&&h(),b()},x=function(){u&&(u=void 0,m.forEach((function(t){t()})))},k=function(t,e){if(!t.redirect||!g||$i(t.redirect)){a=t,c=e;var n={response:t,navigation:e,router:s};i=n,C.forEach((function(t){t(i)})),function(t){v.splice(0).forEach((function(e){e(t)})),p&&p.forEach((function(e){e(t)}))}(n)}var i;void 0===t.redirect||$i(t.redirect)||o.navigate(t.redirect,"replace")},A=function(t,e,n,i,r){x(),n.finish();var o=ji(t,e,r,s,f);y(),k(o,i)};return o=t((function(t){var n={action:t.action,previous:a},i=e.match(t.location);if(!i)return t.finish(),void y();var r=i.route,s=i.match;!function(t){return void 0!==t.methods.resolve}(r)?A(r,s,t,n,null):(m.length&&void 0===u&&(u=function(){o.cancel(),x(),w()},m.forEach((function(t){t(u)}))),r.methods.resolve(s,f).then((function(t){return{resolved:t,error:null}}),(function(t){return{error:t,resolved:null}})).then((function(e){t.cancelled||A(r,s,t,n,e)})))}),d),s={route:e.route,history:o,external:f,observe:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;return C.push(t),a&&i&&t({response:a,navigation:c,router:s}),function(){C=C.filter((function(e){return e!==t}))}},once:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;a&&i?t({response:a,navigation:c,router:s}):v.push(t)},cancel:function(t){return m.push(t),function(){m=m.filter((function(e){return e!==t}))}},url:function(t){var e,n=t.name,i=t.params,r=t.hash,a=t.query;if(n){var c=s.route(n);c&&(e=function(t,e){return t.methods.pathname(e)}(c,i))}return o.url({pathname:e,hash:r,query:a})},navigate:function(t){w();var e,n,i=t.url,r=t.state,s=t.method;if(o.navigate({url:i,state:r},s),t.cancelled||t.finished)return e=t.cancelled,n=t.finished,l=e,h=n,b},current:function(){return{response:a,navigation:c}},destroy:function(){o.destroy()}},o.current(),s}((function(t,e){if(void 0===e&&(e={}),!window||!window.location)throw new Error("Cannot use @hickory/browser without a DOM");var n,i,r=function(t){void 0===t&&(t={});var e=t.query,n=void 0===e?{}:e,i=n.parse,r=void 0===i?Ti:i,o=n.stringify,s=void 0===o?Li:o,a=t.base;return{location:function(t,e){var n=t.url,i=t.state;if(""===n||"#"===n.charAt(0)){e||(e={pathname:"/",hash:"",query:r()});var o={pathname:e.pathname,hash:"#"===n.charAt(0)?n.substring(1):e.hash,query:e.query};return i&&(o.state=i),o}var s,c=n.indexOf("#");-1!==c?(s=n.substring(c+1),n=n.substring(0,c)):s="";var u,l=n.indexOf("?");-1!==l&&(u=n.substring(l+1),n=n.substring(0,l));var h=r(u),d=a?a.remove(n):n;""===d&&(d="/");var p={hash:s,query:h,pathname:d};return i&&(p.state=i),p},keyed:function(t,e){return t.key=e,t},stringify:function(t){if("string"==typeof t){var e=t.charAt(0);return"#"===e||"?"===e?t:a?a.add(t):t}return(void 0!==t.pathname?a?a.add(t.pathname):t.pathname:"")+Di(s(t.query),"?")+Di(t.hash,"#")}}}(e),o=(n=0,{major:function(t){return t&&(n=t[0]+1),[n++,0]},minor:function(t){return[t[0],t[1]+1]}}),s={confirmNavigation:function(t,e,n){i?i(t,e,n||_i):e()},confirm:function(t){i=t||null}},a=s.confirm,c=s.confirmNavigation;function u(t){var e=window.location,n=e.pathname+e.search+e.hash,i=t||Ni(),s=i.key,a=i.state;s||(s=o.major(),window.history.replaceState({key:s,state:a},"",n));var c=r.location({url:n,state:a});return r.keyed(c,s)}function l(t){return r.stringify(t)}var h=void 0!==Ni().key?"pop":"push",d=function(t){var e,n=t.responseHandler,i=t.utils,r=t.keygen,o=t.current,s=t.push,a=t.replace;function c(t,n,i,r){var o={location:t,action:n,finish:function(){e===o&&(i(),e=void 0)},cancel:function(t){e===o&&(r(t),o.cancelled=!0,e=void 0)},cancelled:!1};return o}function u(t){var e=i.keyed(t,r.minor(o().key));return c(e,"replace",a.finish(e),a.cancel)}function l(t){var e=i.keyed(t,r.major(o().key));return c(e,"push",s.finish(e),s.cancel)}return{prepare:function(t,e){var n=o(),r=i.location(t,n);switch(e){case"anchor":return i.stringify(r)===i.stringify(n)?u(r):l(r);case"push":return l(r);case"replace":return u(r);default:throw new Error("Invalid navigation type: "+e)}},emitNavigation:function(t){e=t,n(t)},createNavigation:c,cancelPending:function(t){e&&(e.cancel(t),e=void 0)}}}({responseHandler:t,utils:r,keygen:o,current:function(){return b.location},push:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.pushState({key:n,state:i},"",e)}catch(t){window.location.assign(e)}b.location=t,h="push"}},cancel:Bi},replace:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.replaceState({key:n,state:i},"",e)}catch(t){window.location.replace(e)}b.location=t,h="replace"}},cancel:Bi}}),p=d.emitNavigation,f=d.cancelPending,g=d.createNavigation,m=d.prepare,C=!1;function v(t){if(C)C=!1;else if(!function(t){return void 0===t.state&&-1===navigator.userAgent.indexOf("CriOS")}(t)){f("pop");var e=u(t.state),n=b.location.key[0]-e.key[0],i=function(){C=!0,window.history.go(n)};c({to:e,from:b.location,action:"pop"},(function(){p(g(e,"pop",(function(){b.location=e,h="pop"}),(function(t){"pop"!==t&&i()})))}),i)}}window.addEventListener("popstate",v,!1);var b={location:u(),current:function(){p(g(b.location,h,Bi,Bi))},url:l,navigate:function(t,e){void 0===e&&(e="anchor");var n=m(t,e);f(n.action),c({to:n.location,from:b.location,action:n.action},(function(){p(n)}))},go:function(t){window.history.go(t)},confirm:a,cancel:function(){f()},destroy:function(){window.removeEventListener("popstate",v),p=Bi}};return b}),function(t){var e={},n=t.map((function(t){return Oi(t,e)}));return{match:function(t){for(var e=0,i=n;e{const i=n[e.controller];if(!i)throw new Error(`Did you forget to specify controller for route "${e.name}"?`);const r={name:e.name,path:eo(e),...i(e)};return e.meta&&!1===e.meta.encode&&(r.pathOptions={compile:{encode:t=>t}}),e.children&&(r.children=t(e.children,n)),r}))}(Ii,{Home:()=>({respond:()=>({body:{main:Kn``}})}),Page(t){const e=t.meta?t.meta.categories:[];return{resolve:Jr((({params:n})=>({...n,categories:e,id:no(t.path,n)}))),respond:Yr}}}).concat({name:"notFound",path:"(.*)",respond({match:t}){const{pathname:e}=t.location,n=e.indexOf("/",1),i=-1===n?e.slice(1):e.slice(1,n),{search:r,hash:o}=window.location;return gr.includes(i)?{body:Kn``}:{redirect:{url:`/${mr}${e}${r}${o}`}}}})),{history:{base:function(t,e){if("string"!=typeof t||"/"!==t.charAt(0)||"/"===t.charAt(t.length-1))throw new Error('The base segment "'+t+'" is not valid. The "base" option must begin with a forward slash and end with a non-forward slash character.');var n=e||{},i=n.emptyRoot,r=void 0!==i&&i,o=n.strict,s=void 0!==o&&o;return{add:function(e){if(r){if("/"===e)return t;if(e.startsWith("/?")||e.startsWith("/#"))return""+t+e.substr(1)}else if("?"===e.charAt(0)||"#"===e.charAt(0))return e;return""+t+e},remove:function(e){if(""===e)return"";if(!function(t,e){return new RegExp("^"+e+"(\\/|\\?|#|$)","i").test(t)}(e,t)){if(s)throw new Error('Expected a string that begins with "'+t+'", but received "'+e+'".');return e}if(e===t){if(s&&!r)throw new Error('Received string "'+t+'", which is the same as the base, but "emptyRoot" is not true.');return"/"}return e.substr(t.length)}}}(Pi),query:to}}),ro=io.url;io.url=t=>{const e={lang:Cr(),...t.params};return ro({...t,params:e})},"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");const oo=window.visualViewport||window;const so=$n(((t,e)=>n=>{const i=function(t,e="default"){const n="string"==typeof t?new Date(t):t;return fr(pr.lang,e).format(n)}(t,e);n.value!==i&&n.setValue(i)})),ao=(t,e,n)=>Yi((()=>Xi(t,e,n))),co=$n(((t,e)=>Yi((()=>er(Xi(t,e))))));class uo extends pi{constructor(){super(),this.Ut=null,this.Vt=null,this.Rt=null,this.Gt=!1,this.ready=!1,this.Ht=[]}connectedCallback(){super.connectedCallback(),this.Ht.push(io.observe((t=>{this.Ut=t.response,this.Zt()}),{initial:!0})),this.Ht.push(function(t,e){const n=window.matchMedia(t),i=()=>e(n.matches);return oo.addEventListener("resize",i),i(),()=>oo.removeEventListener("resize",i)}("(min-width: 768px)",(t=>this.Gt=!t))),document.addEventListener("keypress",(t=>{t.ctrlKey&&t.shiftKey&&22===t.keyCode&&console.log("bc89477")}),!1)}disconnectedCallback(){super.disconnectedCallback(),this.Ht.forEach((t=>t()))}updated(){this.Rt=this.Rt||this.shadowRoot.querySelector("menu-drawer")}Xt(){this.Rt&&this.Rt.toggle()}Zt(){this.Rt&&this.Rt.close()}notify(t,e={}){const n=document.createElement("app-notification");n.message=t,"function"==typeof e.onClick&&n.addEventListener("click",e.onClick,!1),this.Vt=this.Vt||function(){const t=document.createElement("div");return Object.assign(t.style,{position:"fixed",right:"10px",bottom:"10px",zIndex:50,width:"320px"}),document.body.appendChild(t),t}(),this.Vt.appendChild(n)}Wt(t){return this.Gt?Kn`${t}

${ao("menu.root")}

`:null}Kt(t){return"home"===this.Ut.name?"":this.Gt?"col-1":t?"col-2":"col-1"}render(){if(!this.Ut||!this.ready)return null;const{body:t}=this.Ut,e=t.sidebar?gi(t.sidebar):"";return Kn`
${this.Wt(e)}
${e}
${gi(t.main||t)}
`}}dn(uo,"cName","casl-docs"),dn(uo,"properties",{ready:{type:Boolean},Gt:{type:Boolean},Ut:{type:Object}}),uo.styles=[hi`:host{display:block}.stop-war{position:fixed;z-index:1000;top:5px;right:5px}`];var lo=hi`.row{display:flex}.row.wrap{flex-wrap:wrap}.row.align-center{align-items:center}.row.align-start{align-items:start}.col{flex-grow:1;flex-basis:0;max-width:100%}.col-fixed{flex-grow:0;flex-basis:auto}@media (min-width:768px){.container{margin:auto;max-width:1200px}}`;class ho extends pi{constructor(){super(),this.theme="default",this.menu=null,this.layout=""}render(){return Kn`
`}}dn(ho,"cName","app-root"),dn(ho,"properties",{theme:{type:String},layout:{type:String},menu:{type:Object}}),ho.styles=[lo,hi`:host{display:block}app-header{position:relative;position:sticky;top:0;z-index:10;background:rgba(255,255,255,.9);box-shadow:rgba(0,0,0,.1) 0 1px 2px 0}.col-1>main,.row>main{min-width:0;padding-left:10px;padding-right:10px}.aside,main{padding-bottom:30px}aside{display:none}@media (min-width:768px){.aside{position:sticky;top:54px;height:calc(100vh - 132px);overflow-y:auto;padding-top:2rem}.row>aside{display:block;flex-basis:260px;max-width:260px;min-width:200px;padding-left:20px;box-shadow:rgba(0,0,0,.1) 1px -1px 2px 0}.row>main{flex-basis:80%;margin:0 auto;max-width:800px}}`];var po=hi`.md pre{overflow:auto}.md a,.md app-link{color:#81a2be;text-decoration:underline;border-bottom:0}.md a:hover,.md app-link:hover{text-decoration:none;border-bottom:0}.md code:not([class]){color:#de935f;background:#f8f8f8;padding:2px 5px;margin:0 2px;border-radius:2px;white-space:nowrap;font-family:"Roboto Mono",Monaco,courier,monospace}.alert,.md blockquote{padding:.8rem 1rem;margin:0;border-left:4px solid #81a2be;background-color:#f8f8f8;position:relative;border-bottom-right-radius:2px;border-top-right-radius:2px}.alert:before,.md blockquote:before{position:absolute;top:.8rem;left:-12px;color:#fff;background:#81a2be;width:20px;height:20px;border-radius:100%;text-align:center;line-height:20px;font-weight:700;font-size:14px;content:'i'}.alert>p:first-child,.md blockquote>p:first-child{margin-top:0}.alert>p:last-child,.md blockquote>p:last-child{margin-bottom:0}.alert+.alert,.md blockquote+blockquote{margin-top:20px}.md table{border-collapse:collapse;width:100%}.md .responsive{width:100%;overflow-x:auto}.md td,.md th{border:1px solid #c6cbd1;padding:6px 13px}.md tr{border-top:1px solid #c6cbd1}.md .editor{width:100%;height:500px;border:0;border-radius:4px;overflow:hidden}.md h3::before{margin-left:-15px;margin-right:5px;content:'#';color:#81a2be}`,fo=hi`h1{margin:2rem 0 1rem;font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #ddd}h1,h2,h3,h4,h5{font-weight:400;cursor:pointer}.description{margin-top:10px;color:#333;padding-left:5px}.description img{max-width:100%;height:auto}.description>h1{display:none}`,go=hi`.btn{display:inline-block;outline:0;text-decoration:none;background-color:transparent;border:1px solid #877e87;border-radius:1rem;padding:.375rem 1.5rem;font-weight:700;appearance:none;-webkit-appearance:none;-moz-appearance:none;transition:color .2s cubic-bezier(.08,.52,.52,1),background .2s cubic-bezier(.08,.52,.52,1),border-color .2s cubic-bezier(.08,.52,.52,1);cursor:pointer;color:#444}.btn:hover{background-color:#202428;border-color:#202428;color:#fff}`,mo=hi`.hljs,code[data-filename]{display:block;overflow-x:auto;padding:1rem;background:#1d1f21;border-radius:7px;box-shadow:rgba(0,0,0,.55) 0 11px 11px 0;font-size:.8rem;color:#c5c8c6}.hljs span::selection,.hljs::selection,code[data-filename] span::selection,code[data-filename]::selection{background:#373b41}code[data-filename]{position:relative;padding-top:22px}code[data-filename]:before{position:absolute;top:0;right:0;font-size:.7rem;content:attr(data-filename);padding:2px 6px;border-radius:0 0 0 7px;border-left:1px solid #c5c8c6;border-bottom:1px solid #c5c8c6;color:#fff}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment{color:#707880}.hljs-meta,.hljs-meta .hljs-keyword{color:#f0c674}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-builtin-name,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media (min-width:768px){code[data-filename]{padding-top:1rem}code[data-filename]:before{font-size:inherit;opacity:.5;transition:opacity .5s}code[data-filename]:hover:before{opacity:1}}`,Co=hi`.alert-warning{border-left-color:#856404;background-color:#fff3cd}.alert-warning:before{background:#856404;content:'w'}`;const vo={github:Kn`GitHub icon`,twitter:Kn`Twitter icon`,medium:Kn`Medium icon`};class bo extends pi{constructor(...t){super(...t),dn(this,"year",(new Date).getFullYear())}render(){return Kn``}}dn(bo,"cName","app-footer"),bo.styles=[po,hi`:host{--app-footer-background:#838385;--app-footer-text-color:#fff;--app-footer-text-size:13px;display:block;padding:40px 0;background-color:#303846;font-size:var(--app-footer-text-size);text-align:center;color:var(--app-footer-text-color)}.copyright{white-space:pre-line}.links svg{width:18px;height:18px}.links a{margin:0 5px;text-decoration:none}`];class wo extends pi{constructor(){super(),this.theme="default",this.menu={items:[]},this.Qt=!1}Jt(){this.dispatchEvent(new CustomEvent("toggle-menu",{bubbles:!0,composed:!0}))}Yt(){return"default"===this.theme?Kn`
`:Kn``}te(){this.Qt=!this.Qt}ee(){return"mobile"!==this.theme?null:Kn``}update(t){return t.has("theme")&&(this.Qt="mobile"===this.theme),super.update(t)}render(){return Kn`

Do you like this package?

Support Ukraine 🇺🇦
${this.ee()}
${this.Yt()}
`}}dn(wo,"cName","app-header"),dn(wo,"properties",{menu:{type:Object},theme:{type:String},Qt:{type:Boolean}}),wo.styles=[lo,hi`:host{display:block}app-link{color:#000;text-decoration:none}.header{position:relative;display:flex;align-items:center;justify-content:center;padding:0 10px 0 1rem}.header-notification{background:rgba(84,172,237,.18);display:flex;flex-wrap:wrap;flex-direction:column;align-items:center;padding:10px;gap:0}.header-notification p{margin:0}.logo{padding-top:4px;line-height:1;font-weight:700;font-size:2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif;vertical-align:middle}.logo:hover{border-bottom-color:transparent}.menu-toggle{position:absolute;left:0;background:0 0;border:0;cursor:pointer}.menu-toggle:focus{outline:0}app-menu{margin-left:10px}.full-width-search{position:absolute;right:0;box-sizing:border-box;width:100%;height:100%;transition:width .3s ease-in-out}.full-width-search[compact]{width:35px;padding:0;height:auto}versions-select{vertical-align:middle;margin-left:-5px}@media (min-width:768px){.header{justify-content:space-between}.header-notification{flex-direction:row;justify-content:center;gap:5px}.logo{font-size:3rem}app-quick-search{border-radius:15px;border:1px solid #e3e3e3}versions-select{vertical-align:top;margin-left:-10px}}`];class yo extends pi{constructor(){super(),this.to="",this.active=!1,this.query=null,this.params=null,this.hash="",this.nav=!1,this.ne=null,this.ie=null}oe(){const t=this.se(),{pathname:e}=window.location;return!(t.length>e.length)&&(t===e||e.startsWith(t))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.ae.bind(this),!1),this.nav&&(this.ie=io.observe((()=>{this.active=this.oe()}),{initial:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}update(t){const e=["to","query","params","hash"].some((e=>t.has(e)));if((null===this.ne||e)&&(this.ne=this.ce()),this.nav&&t.has("active")){const t=this.active?"add":"remove";this.classList[t]("active")}return super.update(t)}se(){return this.ne=this.ne||this.ce(),this.ne}ce(){return io.url({name:this.to,hash:this.hash,params:this.params,query:this.query})}render(){return Kn``}ae(t){t.ctrlKey||(t.preventDefault(),io.navigate({url:this.ne}))}}dn(yo,"cName","app-link"),dn(yo,"properties",{to:{type:String},params:{type:Object},query:{type:Object},hash:{type:String},active:{type:Boolean},nav:{type:Boolean}}),yo.styles=hi`:host{display:inline-block;vertical-align:baseline;text-decoration:none;cursor:pointer;border-bottom:2px solid transparent}:host(.active),:host(:hover){border-bottom-color:#81a2be}a{font-size:inherit;color:inherit;text-decoration:inherit}a:hover{text-decoration:inherit}a.active{color:var(--app-link-active-color)}`;class xo extends pi{constructor(){super(),this.items=[]}render(){return Kn``}ue(t,e){const n=t.map((t=>Kn``));return Kn`
    ${n}
`}le({children:t}){return t?this.ue(t,"dropdown "+(this.expanded?"":"expandable")):""}}dn(xo,"cName","app-menu"),dn(xo,"properties",{items:{type:Array},expanded:{type:Boolean}}),xo.styles=hi`:host{display:block}ul{padding:0;margin:0}.dropdown-container{display:inline-block;position:relative;margin:0 1rem}.dropdown-container:hover .dropdown{display:block}.dropdown.expandable{display:none;max-height:calc(100vh - 61px);overflow-y:auto;position:absolute;top:100%;right:-15px;background-color:#fff;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:4px}.dropdown{box-sizing:border-box;padding:10px 0;text-align:left;white-space:nowrap}.dropdown li{display:block;margin:0;line-height:1.6rem}.dropdown li>ul{padding-left:0}.dropdown li:first-child h4{margin-top:0;padding-top:0;border-top:0}.dropdown a,.dropdown app-link,.dropdown h4{padding:0 24px 0 20px}.dropdown h4{margin:.45em 0 0;padding-top:.45rem;border-top:1px solid #eee}.dropdown-container a,.dropdown-container app-link{text-decoration:none}.dropdown a,.dropdown app-link,.nav a,.nav app-link{display:block;color:#202428;text-decoration:none}.dropdown a:hover,.dropdown app-link:hover,.nav a:hover,.nav app-link.active,.nav app-link:hover{color:#81a2be;border-bottom-color:transparent}.link{display:block;cursor:pointer;line-height:40px}.link:after{display:inline-block;content:'';vertical-align:middle;margin-top:-1px;margin-left:6px;margin-right:-14px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4f5959}`;class ko extends pi{constructor(){super(),this.article=null,this.category=""}render(){const{article:t}=this,e=this.category||t.categories[0];return Kn`${ao("article.author")} ${t.commentsCount||0}${ao("article.readMore")}`}}dn(ko,"cName","app-article-details"),dn(ko,"properties",{article:{type:Object,attribute:!1},category:{type:String}}),ko.styles=[hi`:host{margin-top:10px;color:var(--app-article-details-color,#999);font-size:11px}:host>*{margin-right:10px}app-link{margin-right:10px;color:var(--app-link-active-color)}app-link>[class^=icon-]{margin-right:5px}`];class Ao extends pi{constructor(){super(),this.he=null,this.de=Cr()}connectedCallback(){super.connectedCallback(),this.he=Zi((t=>{this.de=t,this.reload().then((()=>this.requestUpdate()))}))}disconnectedCallback(){this.he(),super.disconnectedCallback()}reload(){return Promise.reject(new Error(`${this.constructor.cName} should implement "reload" method`))}}function Fo(t){const e=t?`${t} - `:"";document.title=e+vr("name")}function Eo(t,e){if("object"==typeof t)return void Object.keys(t).forEach((e=>Eo(e,t[e])));const n=vr(`meta.${t}`),i=Array.isArray(e)?e.concat(n).join(", "):e||n;(function(t){let e=document.head.querySelector(`meta[name="${t}"]`);return e||(e=document.createElement("meta"),e.setAttribute("name",t),document.head.appendChild(e)),e})(t).setAttribute("content",i.replace(/[\n\r]+/g," "))}function $o({response:t}){const e=document.documentElement;e.lang!==t.params.lang&&(e.lang=t.params.lang);const n=`meta.${t.name}`;lr(n,pr)?(Fo(vr(`${n}.title`)),Eo("keywords",vr(`${n}.keywords`)),Eo("description",vr(`${n}.description`))):(Fo(),Eo("keywords"),Eo("description"))}function jo(t,e){const n=t.getElementById(e);if(!n)return;n.scrollIntoView(!0),document.documentElement.scrollTop-=85}function So(t,e){return er(dr(t.content,e))}class Oo extends Ao{constructor(){super(),this.pe=null,this.nav=[],this.name=null,this.vars={},this.type="page",this.content=So}connectedCallback(){super.connectedCallback(),this.shadowRoot.addEventListener("click",(t=>{!function(t,e){let n;if("H"===e.tagName[0]&&e.id)n=e.id;else{const n=function(t,e){let n=t,i=0;for(;n&&i<3;){if(n.tagName===e)return n;n=n.parentNode,i++}return null}(e,"A"),i=n?n.href.indexOf("#"):-1;-1!==i&&jo(t,n.href.slice(i+1))}if(n){const{location:e}=io.current().response,i=`${e.pathname}${window.location.search}#${n}`;io.navigate({url:i}),jo(t,n)}}(this.shadowRoot,t.target)}),!1)}async updated(t){(null===this.pe||t.has("name")||t.has("type"))&&await this.reload()}async reload(){this.pe=await Kr(this.type).load(Cr(),this.name),function(t){const e=t.meta||{};Fo(t.title),Eo("keywords",e.keywords||""),Eo("description",e.description||"")}(this.pe),await this.updateComplete,function(t){const{hash:e}=io.current().response.location;e?jo(t,e):window.scroll(0,0)}(this.shadowRoot)}ue(){const[t,e]=this.nav;return Kn``}render(){return this.pe?Kn`

${dr(this.pe.title)}

${this.content(this.pe,this.vars)}
${this.nav&&this.nav.length?this.ue():""}`:Kn``}}dn(Oo,"cName","app-page"),dn(Oo,"properties",{type:{type:String},name:{type:String},vars:{type:Object,attribute:!1},content:{type:Function,attribute:!1},nav:{type:Array},pe:{type:Object}}),Oo.styles=[fo,po,mo,hi`:host{display:block}app-page-nav{margin-top:20px}`];class zo extends pi{constructor(){super(),this.next=null,this.prev=null,this.pageType="page"}fe(t){const e=this[t];return e?Kn`${e.title}`:""}render(){return Kn`${this.fe("prev")} ${this.fe("next")}`}}dn(zo,"cName","app-page-nav"),dn(zo,"properties",{next:{type:Object},prev:{type:Object},pageType:{type:String}}),zo.styles=hi`:host{display:block}:host:after{display:table;clear:both;content:''}app-link{color:#81a2be;text-decoration:none}app-link:hover{border-bottom-color:transparent}.next{float:right;margin-left:30px}.next:after,.prev:before{display:inline-block;vertical-align:middle;content:'⇢'}.prev:before{content:'⇠'}`;const Mo=["isomorphic","versatile","declarative","typesafe","treeshakable"];function Do(t){return Kn`

${ao(`features.${t}.title`)}

${co(`features.${t}.description`)}

`}const To=()=>Kn`
${Mo.map(Do)}
`;To.styles=[hi`.features{padding:1rem 0;display:-ms-grid;display:grid;justify-content:center;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));-ms-grid-columns:${li(Mo.map((()=>"minmax(200px, 1fr)")).join(" "))}}.feature{padding:1rem}.feature h3{font-size:1.4rem}.feature p:last-child{margin-bottom:0}`];class Lo extends pi{render(){return Kn`

${ao("slogan")}

${ao("buttons.start")}${ao("buttons.source")}
${co("exampleCode")}
${To()}`}}dn(Lo,"cName","home-page"),Lo.styles=[lo,go,To.styles,mo,hi`:host{display:block}.bg{background:#fff;background:linear-gradient(90deg,#fff 0,#dee4ea 41%,#ebf5fd 60%,#525457 100%)}header{justify-content:center;padding:2rem 1rem}.main{padding-top:22px;text-align:center;justify-content:center}h1{white-space:pre-line;font-size:2.2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif}.buttons{display:inline-block;text-align:center}.buttons app-link{margin-right:5px}github-button{display:block;margin-top:10px}.details{min-width:300px}.col-example{display:none}@media (min-width:768px){.main>img{margin-right:30px}}@media (min-width:1024px){.main{text-align:left}.col-example{display:block}.example code{font-size:.7rem}}@media (min-width:1200px){.example code{font-size:.8rem}}`];var _o=window.document,No=window.Math,Bo=window.HTMLElement,Io=window.XMLHttpRequest,qo=function(t){return function(e,n,i){var r=t.createElement(e);if(null!=n)for(var o in n){var s=n[o];null!=s&&(null!=r[o]?r[o]=s:r.setAttribute(o,s))}if(null!=i)for(var a=0,c=i.length;a'}}},download:{heights:{16:{width:16,path:''}}},eye:{heights:{16:{width:16,path:''}}},heart:{heights:{16:{width:16,path:''}}},"issue-opened":{heights:{16:{width:16,path:''}}},"mark-github":{heights:{16:{width:16,path:''}}},package:{heights:{16:{width:16,path:''}}},play:{heights:{16:{width:16,path:''}}},"repo-forked":{heights:{16:{width:16,path:''}}},"repo-template":{heights:{16:{width:16,path:''}}},star:{heights:{16:{width:16,path:''}}}},Yo=function(t,e){t=Vo(t).replace(/^octicon-/,""),Uo(Jo,t)||(t="mark-github");var n=e>=24&&24 in Jo[t].heights?24:16,i=Jo[t].heights[n];return'"},ts={},es=function(t,e){var n=ts[t]||(ts[t]=[]);if(!(n.push(e)>1)){var i=function(t){var e;return function(){e||(e=1,t.apply(this,arguments))}}((function(){for(delete ts[t];e=n.shift();)e.apply(null,arguments)}));if(Go){var r=new Io;Zo(r,"abort",i),Zo(r,"error",i),Zo(r,"load",(function(){var t;try{t=JSON.parse(this.responseText)}catch(t){return void i(t)}i(200!==this.status,t)})),r.open("GET",t),r.send()}else{var o=this||window;o.ge=function(t){o.ge=null,i(200!==t.meta.status,t.data)};var s=qo(o.document)("script",{async:!0,src:t+(-1!==t.indexOf("?")?"&":"?")+"callback=_"}),a=function(){o.ge&&o.ge({meta:{}})};Zo(s,"load",a),Zo(s,"error",a),s.readyState&&function(t,e,n){var i="readystatechange",r=function(){if(e.test(t.readyState))return Xo(t,i,r),n.apply(this,arguments)};Zo(t,i,r)}(s,/de|m/,a),o.document.getElementsByTagName("head")[0].appendChild(s)}}},ns=function(t,e,n){var i=qo(t.ownerDocument),r=t.appendChild(i("style",{type:"text/css"})),o="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:20px;padding:3px 10px;font-size:12px;line-height:20px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}"+Qo(e["data-color-scheme"]);r.styleSheet?r.styleSheet.cssText=o:r.appendChild(t.ownerDocument.createTextNode(o));var s="large"===Vo(e["data-size"]),a=i("a",{className:"btn",href:e.href,rel:"noopener",target:"_blank",title:e.title||void 0,"aria-label":e["aria-label"]||void 0,innerHTML:Yo(e["data-icon"],s?16:14)},[" ",i("span",{},[e["data-text"]||""])]),c=t.appendChild(i("div",{className:"widget"+(s?" widget-lg":"")},[a])),u=a.hostname.replace(/\.$/,"");if(("."+u).substring(u.length-Ro.length)!=="."+Ro)return a.removeAttribute("href"),void n(c);var l=(" /"+a.pathname).split(/\/+/);if(((u===Ro||u==="gist."+Ro)&&"archive"===l[3]||u===Ro&&"releases"===l[3]&&("download"===l[4]||"latest"===l[4]&&"download"===l[5])||u==="codeload."+Ro)&&(a.target="_top"),"true"===Vo(e["data-show-count"])&&u===Ro&&"marketplace"!==l[1]&&"sponsors"!==l[1]&&"orgs"!==l[1]&&"users"!==l[1]&&"-"!==l[1]){var h,d;if(!l[2]&&l[1])d="followers",h="?tab=followers";else if(!l[3]&&l[2])d="stargazers_count",h="/stargazers";else if(l[4]||"subscription"!==l[3])if(l[4]||"fork"!==l[3]){if("issues"!==l[3])return void n(c);d="open_issues_count",h="/issues"}else d="forks_count",h="/network/members";else d="subscribers_count",h="/watchers";var p=l[2]?"/repos/"+l[1]+"/"+l[2]:"/users/"+l[1];es.call(this,"https://api.github.com"+p,(function(t,e){if(!t){var r=e[d];c.appendChild(i("a",{className:"social-count",href:e.html_url+h,rel:"noopener",target:"_blank","aria-label":r+" "+d.replace(/_count$/,"").replace("_"," ").slice(0,r<2?-1:void 0)+" on GitHub"},[(""+r).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}n(c)}))}else n(c)},is=window.devicePixelRatio||1,rs=function(t){return(is>1?No.ceil(No.round(t*is)/is*2)/2:No.ceil(t))||0},os=function(t,e){t.style.width=e[0]+"px",t.style.height=e[1]+"px"},ss=function(t,e){if(null!=t&&null!=e)if(t.getAttribute&&(t=function(t){for(var e={href:t.href,title:t.title,"aria-label":t.getAttribute("aria-label")},n=["icon","color-scheme","text","size","show-count"],i=0,r=n.length;i{this.shadowRoot.firstChild?this.shadowRoot.replaceChild(t,this.shadowRoot.firstChild):this.shadowRoot.appendChild(t)}))}}dn(as,"cName","github-button"),dn(as,"properties",{href:{type:String},size:{type:String},theme:{type:String},showCount:{type:Boolean},text:{type:String}});const cs={dropdown(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`
${er(e)}
${n.map((e=>Kn`${er(e.title)}`))}
`},page(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`${n.map((n=>Kn`${er(`${e} › ${n.title}`)}`))}`}};const us=Kn``,ls=Kn``;class hs extends pi{constructor(){super(),this.value="",this.suggestionsType="dropdown",this.compact=!1,this.toggler=!1,this.Ce=null,this.ve=this.ve.bind(this),this.be=function(t,e){let n;return function(...i){clearTimeout(n),n=setTimeout((()=>t.apply(this,i)),e)}}(this.be,500),this.ie=null}we(t){this.value=t.trim(),this.dispatchEvent(new CustomEvent("update",{detail:this.value}))}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.ve,!1),this.ie=io.observe((()=>this.ye()))}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.ve,!1),this.ie()}ye(){this.value&&(this.we(""),this.Ce=null,this.dispatchEvent(new CustomEvent("reset")))}ve(t){this.shadowRoot.contains(t.target)||(this.Ce=null)}async be(){if(!this.value)return void(this.Ce=null);const t=(await Kr("page").search(Cr(),this.value,{prefix:!0})).reduce(((t,e)=>{const n=e.doc.categories[0];return t.has(n)||t.set(n,[]),t.get(n).push(e),t}),new Map);this.Ce=Array.from(t)}xe(t){this.we(t.target.value),this.be()}ke(){this.dispatchEvent(new CustomEvent("click-icon"))}render(){return Kn`
${function(t,e){if(!t)return"";if(!t.length)return Kn`
${ao("search.noMatch")}
`;const n=cs[e||"dropdown"];return Kn`
${t.map((([t,e])=>Kn`
${ao(`categories.${t}`)}
${e.map(n)}`))}
`}(this.Ce,this.suggestionsType)}
`}}dn(hs,"cName","app-quick-search"),dn(hs,"properties",{value:{type:String},suggestionsType:{type:String},compact:{type:Boolean},toggler:{type:Boolean},Ce:{type:Array}}),hs.styles=[lo,hi`:host{display:block}.search-form{position:relative;border-radius:inherit;height:100%}.input{display:block;padding:1px 6px;color:#273849;transition:border-color 1s;white-space:nowrap;background:#fff;height:100%;border-radius:inherit}svg{width:16px;height:16px}.icon{line-height:.7;cursor:pointer}.icon,input{display:inline-block;vertical-align:middle}.input path{fill:#e3e3e3}input{height:100%;font-size:.9rem;box-sizing:border-box;outline:0;width:calc(100% - 20px);margin-left:5px;border:0;background-color:transparent}.suggestions{position:absolute;left:8px;z-index:1000;top:120%;background:#fff;padding:5px;overflow-y:auto}.suggestions.dropdown{border-radius:4px;border:1px solid #e3e3e3;width:500px;max-height:500px}.suggestions.page{left:-10px;width:101%;height:calc(100vh - 50px);border:0;border-radius:0}input:focus{outline:transparent}h5{margin:0;padding:5px 10px;background-color:#1b1f23;color:#fff}app-link{display:block;padding:5px;font-size:.9rem;border-bottom:0}app-link:hover{background:#eee}.title{flex-basis:40%;max-width:40%;border-right:1px solid #e3e3e3}.item{border-bottom:1px solid #e3e3e3}mark{font-weight:700;background:0 0}.compact .input{border-color:transparent;background:0 0}.compact input{display:none}.compact .input path{fill:#1b1f23}`];class ds extends pi{render(){return Kn``}Ae(t){const e=t.target.value,n=io.current().response;io.navigate({url:io.url({name:n.name,params:{...n.params,lang:e},query:n.location.query,hash:n.location.hash})})}}dn(ds,"cName","app-lang-picker");const ps={liqpay:{icon:"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%22107px%22%20height%3D%2222px%22%20viewBox%3D%220%200%20107%2022%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3EF598AEA9-571B-4BDB-8FEC-38F074CC2EC6%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20sketchtool.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22Personal%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Site_Personal-Copy%22%20transform%3D%22translate%28-60.000000%2C%20-12.000000%29%22%20fill%3D%22%237AB72B%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Header%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22logo_liqpay%22%20transform%3D%22translate%2860.000000%2C%2012.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2286.9547861%201.77262293%2094.3504229%2010.3403775%2086.9547861%2018.9094274%2089.0061259%2020.6791964%2097.9295835%2010.3403775%2089.0061259%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2295.9493035%201.77262293%20103.344617%2010.3403775%2095.9493035%2018.9094274%2097.9999958%2020.6791964%20106.923777%2010.3403775%2097.9999958%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M9.24568572%2C18.2702718%20C9.24568572%2C18.4533859%209.23654857%2C18.6068499%209.21827428%2C18.7303379%20C9.19967369%2C18.8541517%209.16997797%2C18.9593934%209.12886088%2C19.0463889%20C9.08741743%2C19.1337102%209.03716313%2C19.1975721%208.97744546%2C19.2386262%20C8.91772771%2C19.280006%208.8469149%2C19.300533%208.76435437%2C19.300533%20L0.894994994%2C19.300533%20C0.68386186%2C19.300533%200.484476477%2C19.2298288%200.296512512%2C19.0877688%20C0.108222222%2C18.9457087%200.0142402401%2C18.6961261%200.0142402401%2C18.339021%20L0.0142402401%2C1.88286186%20C0.0142402401%2C1.80955105%200.0325145146%2C1.74536336%200.0693893895%2C1.69062462%20C0.105937938%2C1.63556006%200.170224224%2C1.59222523%200.261921922%2C1.55996847%20C0.353619619%2C1.52803754%200.477297297%2C1.50066817%200.633281284%2C1.47753454%20C0.789265269%2C1.45505255%200.977229228%2C1.44332282%201.1974995%2C1.44332282%20C1.42658058%2C1.44332282%201.61682883%2C1.45505255%201.76824425%2C1.47753454%20C1.91965966%2C1.50066817%202.04105306%2C1.52803754%202.13307708%2C1.55996847%20C2.22444845%2C1.59222523%202.28906106%2C1.63556006%202.32560961%2C1.69062462%20C2.36215816%2C1.74568919%202.38075876%2C1.80955105%202.38075876%2C1.88286186%20L2.38075876%2C17.254021%20L8.76435437%2C17.254021%20C8.8469149%2C17.254021%208.91772771%2C17.274548%208.97744546%2C17.3159279%20C9.03683683%2C17.3573078%209.08741743%2C17.4166081%209.12886088%2C17.4941546%20C9.17030434%2C17.5720271%209.19999999%2C17.674988%209.21827428%2C17.8033634%20C9.23654857%2C17.9317387%209.24568572%2C18.0871576%209.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M14.2257518%2C18.9434279%20C14.2257518%2C19.0170646%2014.2071512%2C19.0809264%2014.1706026%2C19.1356651%20C14.1337277%2C19.1907297%2014.0694415%2C19.2340646%2013.9780701%2C19.2663214%20C13.886046%2C19.2985781%2013.764979%2C19.3256216%2013.6132373%2C19.3487553%20C13.4618218%2C19.3712372%2013.2715735%2C19.3829669%2013.0424925%2C19.3829669%20C12.8222222%2C19.3829669%2012.6339319%2C19.3712372%2012.4782743%2C19.3487553%20C12.3222903%2C19.3256216%2012.1986126%2C19.2982522%2012.1069149%2C19.2663214%20C12.0152172%2C19.2340646%2011.950931%2C19.1907297%2011.9143824%2C19.1356651%20C11.8775075%2C19.0806006%2011.8592332%2C19.0170646%2011.8592332%2C18.9434279%20L11.8592332%2C1.88286186%20C11.8592332%2C1.80955105%2011.8797918%2C1.74536336%2011.9212352%2C1.69062462%20C11.9626787%2C1.63556006%2012.0312072%2C1.59222523%2012.1274735%2C1.55996847%20C12.2237397%2C1.52803754%2012.3477437%2C1.50066817%2012.4988328%2C1.47753454%20C12.6502483%2C1.45505255%2012.8310331%2C1.44332282%2013.0424925%2C1.44332282%20C13.2715735%2C1.44332282%2013.4618218%2C1.45505255%2013.6132373%2C1.47753454%20C13.7646526%2C1.50066817%2013.886046%2C1.52803754%2013.9780701%2C1.55996847%20C14.0694415%2C1.59222523%2014.1340541%2C1.63556006%2014.1706026%2C1.69062462%20C14.2071512%2C1.74568919%2014.2257518%2C1.80955105%2014.2257518%2C1.88286186%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M36.0592673%2C20.8664519%20C36.0592673%2C21.0769354%2036.0478459%2C21.2532072%2036.025003%2C21.3949414%20C36.0018338%2C21.5370015%2035.9675696%2C21.6468048%2035.9218839%2C21.7246772%20C35.8758718%2C21.8022237%2035.8256176%2C21.8553334%2035.7704684%2C21.8827027%20C35.7153194%2C21.9100721%2035.6601702%2C21.9240826%2035.6053474%2C21.9240826%20C35.4219519%2C21.9240826%2035.1259739%2C21.848491%2034.7180661%2C21.6976336%20C34.3101582%2C21.5467763%2033.8399219%2C21.326518%2033.30801%2C21.038488%20C32.7760981%2C20.7498063%2032.2073113%2C20.3995435%2031.601976%2C19.9873738%20C30.9966406%2C19.5752042%2030.4095796%2C19.0946111%2029.8411191%2C18.5449429%20C29.3917678%2C18.8196141%2028.822981%2C19.0577928%2028.1350851%2C19.2591531%20C27.4471892%2C19.4605135%2026.6493213%2C19.5615195%2025.7411552%2C19.5615195%20C24.4019119%2C19.5615195%2023.2441061%2C19.3643949%2022.2674114%2C18.9707973%20C21.2907167%2C18.5771997%2020.4833854%2C18.0001622%2019.8460701%2C17.2400105%20C19.2084285%2C16.4798588%2018.73395%2C15.5346382%2018.421982%2C14.4036967%20C18.110014%2C13.2727553%2017.9543563%2C11.9746651%2017.9543563%2C10.5094265%20C17.9543563%2C9.09925229%2018.1240461%2C7.82396997%2018.4634254%2C6.6839054%20C18.8028048%2C5.54384084%2019.3118739%2C4.57320571%2019.9906327%2C3.77167418%20C20.6693914%2C2.97046846%2021.5178398%2C2.35237688%2022.5356516%2C1.9173994%20C23.5537898%2C1.48242192%2024.7412913%2C1.26477027%2026.0988088%2C1.26477027%20C27.3734395%2C1.26477027%2028.495023%2C1.46189489%2029.4625806%2C1.85549249%20C30.4301382%2C2.24941592%2031.2417117%2C2.82417268%2031.8976276%2C3.57943694%20C32.5532172%2C4.33502703%2033.0462963%2C5.26688889%2033.3765385%2C6.37469669%20C33.7067808%2C7.48283033%2033.8719019%2C8.7558318%2033.8719019%2C10.1933754%20C33.8719019%2C10.9352808%2033.8281742%2C11.6449294%2033.7410451%2C12.3226472%20C33.6539159%2C13.0006907%2033.5162062%2C13.6415901%2033.3285686%2C14.245997%20C33.1402783%2C14.8504039%2032.904018%2C15.4088694%2032.6201141%2C15.9217192%20C32.3355576%2C16.4348949%2032.0007467%2C16.896916%2031.6156817%2C17.3090856%20C32.284977%2C17.8584279%2032.872038%2C18.2868889%2033.3765385%2C18.593491%20C33.8807127%2C18.9004189%2034.2984104%2C19.1317552%2034.6283263%2C19.2871742%20C34.9585686%2C19.442919%2035.215061%2C19.555003%2035.3987828%2C19.6234265%20C35.5818518%2C19.6921757%2035.7195616%2C19.770048%2035.8115856%2C19.8570436%20C35.902957%2C19.9437132%2035.9675696%2C20.067527%2036.0041181%2C20.2278334%20C36.0406667%2C20.3878138%2036.0592673%2C20.6009039%2036.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20Z%20M31.3817057%2C10.3582433%20C31.3817057%2C9.35078979%2031.2922923%2C8.41697296%2031.1134655%2C7.55581531%20C30.9346386%2C6.69498349%2030.6363764%2C5.94656156%2030.219005%2C5.3098979%20C29.8016336%2C4.67356006%2029.2442683%2C4.17667568%2028.5475616%2C3.81957057%20C27.8505285%2C3.46246547%2026.9883744%2C3.28391292%2025.9610991%2C3.28391292%20C24.9338238%2C3.28391292%2024.0716697%2C3.47386937%2023.3746366%2C3.85410811%20C22.6776036%2C4.23434685%2022.1111011%2C4.74687087%2021.6754555%2C5.39265766%20C21.2398098%2C6.03811862%2020.9278418%2C6.78686637%2020.7398779%2C7.63857508%20C20.5519139%2C8.49028381%2020.4576056%2C9.39216967%2020.4576056%2C10.3448844%20C20.4576056%2C11.3888304%2020.5447347%2C12.3480616%2020.718993%2C13.2225781%20C20.8932512%2C14.0970946%2021.1866186%2C14.8552913%2021.5994214%2C15.4961907%20C22.0122242%2C16.1374159%2022.5646947%2C16.6343003%2023.2571591%2C16.986518%20C23.9496237%2C17.3390615%2024.8186306%2C17.5153334%2025.8641802%2C17.5153334%20C26.9005926%2C17.5153334%2027.7718839%2C17.3230961%2028.4780541%2C16.9386216%20C29.1842242%2C16.5541471%2029.7526847%2C16.034455%2030.1840881%2C15.3795451%20C30.6151652%2C14.724961%2030.9222382%2C13.9644835%2031.1059599%2C13.0994159%20C31.290008%2C12.2333708%2031.3817057%2C11.3197553%2031.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M48.8538698%2C6.7318018%20C48.8538698%2C7.62032883%2048.7070231%2C8.42153453%2048.4136556%2C9.13574474%20C48.1199619%2C9.85028075%2047.7006326%2C10.4592492%2047.155015%2C10.9626502%20C46.6093974%2C11.4663769%2045.9394495%2C11.8554129%2045.1461501%2C12.1300841%20C44.3528509%2C12.4047552%2043.4058519%2C12.5422538%2042.3054795%2C12.5422538%20L40.2829089%2C12.5422538%20L40.2829089%2C18.9434279%20C40.2829089%2C19.0170646%2040.2623504%2C19.0809264%2040.2209069%2C19.1356651%20C40.1794634%2C19.1907297%2040.1155035%2C19.2340646%2040.0283744%2C19.2663214%20C39.9412453%2C19.2985781%2039.8221362%2C19.3256216%2039.6707207%2C19.3487553%20C39.5193053%2C19.3712372%2039.3290571%2C19.3829669%2039.099976%2C19.3829669%20C38.8705686%2C19.3829669%2038.6803203%2C19.3712372%2038.5289049%2C19.3487553%20C38.3774895%2C19.3256216%2038.2557697%2C19.2982522%2038.1640721%2C19.2663214%20C38.0723744%2C19.2340646%2038.0080881%2C19.1907297%2037.9715396%2C19.1356651%20C37.9346647%2C19.0806006%2037.9163904%2C19.0170646%2037.9163904%2C18.9434279%20L37.9163904%2C2.54200751%20C37.9163904%2C2.17577928%2038.0126566%2C1.91479279%2038.2051892%2C1.75904805%20C38.3977217%2C1.6033033%2038.6130971%2C1.52543093%2038.8519679%2C1.52543093%20L42.6628068%2C1.52543093%20C43.0481982%2C1.52543093%2043.4172733%2C1.54139639%2043.7703584%2C1.57365315%20C44.1234435%2C1.60590991%2044.5404885%2C1.67433333%2045.0221461%2C1.77957507%20C45.5034775%2C1.88514264%2045.9942723%2C2.08194144%2046.4942042%2C2.3702973%20C46.9938098%2C2.65865315%2047.4180341%2C3.01380331%2047.7668769%2C3.43477027%20C48.1153934%2C3.85606306%2048.3836336%2C4.34382432%2048.5715976%2C4.89772823%20C48.7595616%2C5.45228378%2048.8538698%2C6.06353303%2048.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20Z%20M46.3636737%2C6.92403904%20C46.3636737%2C6.20070571%2046.2282483%2C5.5962988%2045.9577237%2C5.11049249%20C45.6871992%2C4.62533784%2045.3523884%2C4.26367117%2044.9532913%2C4.02549249%20C44.5545205%2C3.78731381%2044.1417177%2C3.63645646%2043.7152092%2C3.57226877%20C43.2887007%2C3.50840691%2042.8736136%2C3.47615015%2042.469948%2C3.47615015%20L40.2825826%2C3.47615015%20L40.2825826%2C10.6052192%20L42.4151251%2C10.6052192%20C43.1307588%2C10.6052192%2043.7243464%2C10.513988%2044.1968669%2C10.3305481%20C44.6690611%2C10.1477598%2045.0658739%2C9.89361563%2045.386979%2C9.56811561%20C45.7080841%2C9.24326726%2045.9508708%2C8.8539054%2046.1163183%2C8.40068168%20C46.2811131%2C7.94745795%2046.3636737%2C7.45513513%2046.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M65.8029329%2C18.4628348%20C65.87603%2C18.664521%2065.9151892%2C18.8267823%2065.9197578%2C18.9505961%20C65.924%2C19.0744099%2065.8897357%2C19.1682478%2065.8166386%2C19.2324354%20C65.7432153%2C19.2962973%2065.6218218%2C19.3373513%2065.4521321%2C19.3559234%20C65.2821161%2C19.3741697%2065.0553193%2C19.3836186%2064.7710891%2C19.3836186%20C64.4868588%2C19.3836186%2064.2597357%2C19.3767762%2064.090046%2C19.3630916%20C63.9203564%2C19.3494069%2063.7917838%2C19.3262733%2063.704981%2C19.2943423%20C63.6175255%2C19.2624114%2063.5535656%2C19.2187508%2063.5124484%2C19.164012%20C63.471005%2C19.1089475%2063.4321722%2C19.0401982%2063.3956237%2C18.9580901%20L61.8684164%2C14.6311231%20L54.4666827%2C14.6311231%20L53.0083303%2C18.9030256%20C52.9805926%2C18.9854595%2052.9440441%2C19.0568153%2052.898032%2C19.1157898%20C52.85202%2C19.1754159%2052.7857758%2C19.2259189%2052.6986467%2C19.2669729%20C52.6115176%2C19.308027%2052.4875135%2C19.3376772%2052.3272873%2C19.3562493%20C52.1667347%2C19.3744955%2051.9578859%2C19.3839445%2051.7013934%2C19.3839445%20C51.4354375%2C19.3839445%2051.2174514%2C19.3722147%2051.0480881%2C19.3497327%20C50.8783984%2C19.3265991%2050.7592893%2C19.2832643%2050.6904344%2C19.2190766%20C50.6219059%2C19.1552147%2050.5892733%2C19.061051%2050.5941682%2C18.9375631%20C50.5987367%2C18.8137492%2050.6375695%2C18.6511622%2050.710993%2C18.4498018%20L56.6817858%2C1.93857808%20C56.7183344%2C1.8378979%2056.7666306%2C1.75546396%2056.826022%2C1.69127628%20C56.8854134%2C1.62708859%2056.9728689%2C1.57658558%2057.0874094%2C1.54009309%20C57.2019499%2C1.5036006%2057.3487968%2C1.47818619%2057.5276236%2C1.4645015%20C57.7061241%2C1.45081682%2057.9335736%2C1.44397448%2058.2086667%2C1.44397448%20C58.5020341%2C1.44397448%2058.7451472%2C1.45081682%2058.938006%2C1.4645015%20C59.1305386%2C1.47818619%2059.2865225%2C1.5036006%2059.4056316%2C1.54009309%20C59.5247407%2C1.57691141%2059.6164384%2C1.62936937%2059.6807247%2C1.69811862%20C59.7446847%2C1.76686787%2059.7952653%2C1.85158258%2059.8321402%2C1.95226276%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20Z%20M58.1398118%2C3.88831982%20L58.1261061%2C3.88831982%20L55.0583123%2C12.7481757%20L61.2490491%2C12.7481757%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M74.4424224%2C12.3910706%20L74.4424224%2C18.9431021%20C74.4424224%2C19.0167388%2074.4241481%2C19.0806006%2074.3875996%2C19.1353393%20C74.351051%2C19.1904039%2074.2870911%2C19.2337387%2074.1960461%2C19.2659955%20C74.105001%2C19.2982522%2073.9816497%2C19.3252958%2073.8266446%2C19.3484295%20C73.6716396%2C19.3709114%2073.4846547%2C19.3826411%2073.266016%2C19.3826411%20C73.0379139%2C19.3826411%2072.8489709%2C19.3709114%2072.6982082%2C19.3484295%20C72.5477718%2C19.3252958%2072.4244204%2C19.2979264%2072.3288068%2C19.2659955%20C72.2328668%2C19.2337387%2072.166949%2C19.1904039%2072.1304004%2C19.1353393%20C72.0938519%2C19.0802747%2072.0759039%2C19.0167388%2072.0759039%2C18.9431021%20L72.0759039%2C12.3910706%20L67.0406887%2C2.36345496%20C66.9395275%2C2.15297147%2066.8775255%2C1.98810361%2066.855009%2C1.86885135%20C66.8318399%2C1.74992492%2066.855009%2C1.65836787%2066.9238638%2C1.59418018%20C66.9923924%2C1.53031832%2067.1163964%2C1.48926426%2067.2952232%2C1.4706922%20C67.4740501%2C1.45244595%2067.7145525%2C1.442997%2068.0173834%2C1.442997%20C68.2924765%2C1.442997%2068.5147047%2C1.45244595%2068.6847207%2C1.4706922%20C68.8544104%2C1.48926426%2068.9895095%2C1.51435285%2069.0906706%2C1.54628379%20C69.1915055%2C1.57854054%2069.2672132%2C1.62415616%2069.3174674%2C1.68378228%20C69.368048%2C1.7434084%2069.416018%2C1.819%2069.46203%2C1.91023123%20L71.9244885%2C7.02015766%20C72.1529169%2C7.50563814%2072.3813453%2C8.01392643%2072.6091212%2C8.54502253%20C72.8368969%2C9.07611859%2073.0695676%2C9.61177629%2073.3068068%2C10.1519955%20L73.3342182%2C10.1519955%20C73.5437198%2C9.63002255%2073.7600741%2C9.11065613%2073.9839339%2C8.5929189%20C74.2071411%2C8.07583333%2074.4332853%2C7.56526426%2074.6623664%2C7.06153753%20L77.1385308%2C1.92424174%20C77.1662681%2C1.83268469%2077.2051011%2C1.75481231%2077.255682%2C1.69062462%20C77.305936%2C1.62676277%2077.3744646%2C1.57854054%2077.46192%2C1.54628379%20C77.5490494%2C1.51435285%2077.6704426%2C1.48926426%2077.8264267%2C1.4706922%20C77.9824108%2C1.45244595%2078.1795116%2C1.442997%2078.4180559%2C1.442997%20C78.7482979%2C1.442997%2079.0074014%2C1.45472673%2079.1953657%2C1.47720871%20C79.3833291%2C1.50034235%2079.5138597%2C1.54367718%2079.5876096%2C1.60786487%20C79.6613595%2C1.67205255%2079.68616%2C1.76360961%2079.6633171%2C1.88253604%20C79.6404743%2C2.00178829%2079.5784723%2C2.16176877%2079.4776374%2C2.36312913%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E",image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAADkAQMAAAC2bMrzAAAABlBMVEX///8AAABVwtN+AAACK0lEQVRYw9XYMY7mIAyG4TeioOQIPgo3I8nNOApHoKSw8m1B5t+Z7VfrRSkiPWkibLANf21lSXqyAKemWTVxuyVJV1QdQAOoFFGU1N3uBVhcPTVaHkny0pO6UzWOZVrRVWmSZqV0qG73f6GaVVKSKJ3wCjSM0h300R9xFU13hg4v/ffzZ/4G03dZmtWLNPHS3a6fB2IwzdKi5QHV2cHTsYc3ckIqtDyOZQCgWZ2KPXBq8M806/OdU730JEHD7sA69pu+zuc0q8axOPY9GFGxBxposg86L3IOacdGSM26NYA0a5o1qXuRdMfWcWicC0rfYeNFTmPnZUzFrjzIoojS9/WddC8adgXVrAt78tAE8NKdCg2Onb8RdZ+EEkVpsmvRNI5Fy7qiql15NEzqSX3/VNKD3YqrO0TMS6cIkHoap/TkvQsBNete9rwVnfYZ7jQssGIPHMso8tL19oNPHsTVrFujQZIAQOpuV5YWgXXZvcy3ld0PttAKx6LB3gJKp8g511eGRlW7spL6Lp69vBmKhVV7siSlWSlKklOxK+srQwNqHqfGoZHmuxEOaYfNV1f+DxQab2w4+x4Upk+XGlMBsnw3VrtPsevT8UXUPQ0AqFL30gHsfnMwqA6gQZpVu+aHpAu7vs8Yo+mp0QCql3e65Sbp+uRgUM3DYdf8aVbplt5dCKwCnOr77uaU7gVhFWhZSdLEQZLGuXvEqPpOET8T5jTx3Vt9mzHG0pDrFxd5veytOF4pAAAAAElFTkSuQmCC"},mono:{icon:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAAAWCAMAAAAvk+g+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADPUExURQAAAPv7+/T09Lm5uf////z8/OLi4v7+/v39/QICAnt7e7S0tPDw8Pb29uvr63V1dRgYGKSkpNvb2+np6cDAwAgICOXl5VZWVsrKytXV1W5ubjMzM6enp/r6+sfHx+fn5/Ly8t/f38/Pz+7u7g4ODs3NzYWFhZmZmUFBQR4eHpGRkQUFBcTExLy8vJ2dndHR0To6Oq2trZKSktjY2BQUFKCgoICAgEhISI6OjrGwsSIiIltbW/79/i4uLiYmJk1NTaqqqpaWlmZmZmFhYYmJiVdCR2MAAAM3SURBVEjHvdbZkqJKEAbgH6EqM1EEUXBFcBC13fe1215m3v+ZzkWrrSfOuZmI7rygCCqivoDgryzQrXI5pu8vXG/U5KU5VkRkqJ8BwyfgXKao9doIfwQ0AUiF3wWw+QdAXgAQ0w8ANJ1vBjlr9AtjAFI7AEDV+IuF6psaWdZ/TvG4tCLrDoyPgF14Baq5NwDY/M0nNVH6X3CIinUP1gSQTrjfhyoToJpGyRfJD8PdKs+XZ8x8Adki67OILhciIouW/wIzAFIj9t/y4eH3sjzeHfuXbMymtaxnT6L21m4zcbqw3VaZKZ7mO+/uMiRSeuNu8zkmE5vx1p5ERMnkT2OfMTnTabnk/lkRLVHhaDGd8AVMXwDpqMUacs5ItbsAOp9gHoPAw8jtrmUdUriTblfmPvmYH59Efkf864h1gN8pmWiOPMi7Uo3RfC6jCicIBl4gzZSHqBglnNLbTzN+kr1TAgAMCtEJAFZXsOoXP9DQ8Ssy3sq2XN6jYfh4aRdqI6TODptUf2BDJk6r1AyCjqrNIuOABieQfOo3seIhJpVgEN/FothJ+gIAwCQXABg4V7DF9A6T2EaWdBESFb2g7MNlFT0hXcnAIZ5hp0yUFLOLCetp722MKiXwjGd2UaelbL3ziu9zqBsXDyfnQ3DM+AYS9WEy2ciKIgmR8yLah0usjkgzOTFRB0fDRImJ9pKPmyO3N5cqF+AZxDbqtBTIuq7uQL959YBJvCnp6376AEYD1Cyq45z4cInUGWkYPIXEeWmwib4i51XaFbEjnqHKCTyDyEadhti1Rrvi8w10ql8eXkL+ysADaB2k2XqbS4luIPeketh4ozab6A7zDcwLNTnpdIGqKsBTlmWjzkNMop7Yzg2s4756d5nLo0Xch8lso0bRxoN0351P0DiiyIUegPOByIT7Cmn+YqeHrtf4fENl0SdY4XSAt2ssqP0ABsUvMNUpU1EXiGKdEBvlLIuJyNExkdLaYVK6NkvZslKd5mZZgUgZflvndMiG1mRRrHNc1glzrLW6gnr9IK6+vT3xonvnyQ/0Qw7b7bqfTZsCoKd+oAEzET0zp/mPaut7jzZ4bAFEz0TWd4L/AJltcxCN1O75AAAAAElFTkSuQmCC",image:"/v6/b5deda1c1a121af1.svg"}},fs=Object.keys(ps);class gs extends pi{constructor(){super(),this.selected=""}connectedCallback(){super.connectedCallback(),1===fs.length&&(this.selected=fs[0])}Fe({target:t}){"IMG"===t.tagName?this.selected=t.getAttribute("data-name"):this.selected=""}render(){return Kn`
${fs.map((t=>Kn`${ao(`payment.${t}`)}`))}
${this.selected?function(t){const e=ps[t];if(!e)return console.warn(`Cannot find configuration for ${t} payment option`),null;let n;return e.image&&(n=Kn``),Kn`
${n}
`}(this.selected):""}`}}dn(gs,"cName","one-time-donations"),dn(gs,"properties",{selected:{type:String}}),gs.styles=hi`.options{margin:20px 0}.options img{margin:10px;cursor:pointer}.selected{text-align:center}`;class ms extends pi{constructor(){super(),this.items=null,this.type="page",this.categories=null}render(){const t=this.categories||Object.keys(this.items);return Kn``}}dn(ms,"cName","pages-by-categories"),dn(ms,"properties",{items:{type:Object},type:{type:String},categories:{type:Array}}),ms.styles=hi`:host{display:block}ul{list-style-type:none;margin:0;padding:0}nav>h3:first-child{margin-top:0}li{margin-top:8px}`;class Cs extends pi{constructor(){super(),this.type="info",this.message=""}render(){return Kn`${co(this.message)}`}}dn(Cs,"cName","app-notification"),dn(Cs,"properties",{type:{type:String},message:{type:String}}),Cs.styles=hi`:host{display:block;background:#1d1f21;border-radius:7px;padding:1rem;color:#fff;cursor:pointer}a{color:inherit}`;let vs=(t,e,n)=>(t.addEventListener(e,n,!1),()=>t.removeEventListener(e,n,!1));try{const t=Object.defineProperty({},"passive",{get:()=>(vs=(t,e,n)=>(t.addEventListener(e,n,{passive:!0}),()=>t.removeEventListener(e,n,{passive:!0})),!0)});window.addEventListener("test",null,t)}catch(vs){}var bs=(t,e,n)=>vs(t,e,n);const ws=window.requestAnimationFrame||window.webkitRequestAnimationFrame||(t=>setTimeout(t,1e3/60)),ys=window.document.documentElement,xs=(()=>{const t=["Webkit","Khtml","Moz","ms","O"];for(let e=0;ethis.t.removeEventListener(t,e,n)}open(){this.I("beforeopen"),Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),this.P(),this.S(this.g),this.l=!0;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),ks(t.panel,"transition",""),t.I("open")})),this}close(){if(!this.isOpen()&&!this.h)return this;this.I("beforeclose"),this.P(),this.S(0),this.l=!1;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),Ss.classList.remove("slideout-open"),ks(t.panel,"transition",""),ks(t.panel,"transform",""),t.I("close")})),this}toggle(){return this.isOpen()?this.close():this.open()}isOpen(){return this.l}S(t){this.i=t,ks(this.panel,"transform",`translateX(${t}px)`)}P(){ks(this.panel,"transition",`${xs}transform ${this.$}ms ${this.v}`)}k(){const t=()=>{Os=!1};let e;this.X=function(t,e,n){let i,r=!1;const o=()=>{n.call(t,i),r=!1};return bs(t,"scroll",(t=>{i=t,r||(ws(o),r=!0)}))}(js,0,(()=>{this.o||(clearTimeout(e),Os=!0,e=setTimeout(t,250))})),this.C=bs(this.panel,Es.start,(t=>{void 0!==t.touches&&(this.o=!1,this.h=!1,this.s=t.touches[0].pageX,this.u=!this.p||!this.isOpen()&&0!==this.menu.clientWidth)})),this.j=bs(this.panel,Es.cancel,(()=>{this.o=!1,this.h=!1})),this.D=bs(this.panel,Es.end,(()=>{if(this.o)if(this.I("translateend"),this.h&&Math.abs(this.i)>this.T)this.open();else if(this.g-Math.abs(this.i)<=this.T/2){this.P(),this.S(this.g);const t=this;this.panel.addEventListener($s.end,(function e(){this.panel.removeEventListener($s.end,e),ks(t.panel,"transition","")}))}else this.close();this.o=!1})),this.K=bs(this.panel,Es.move,(t=>{if(Os||this.u||void 0===t.touches||function(t){let e=t;for(;e.parentNode;){if(null!==e.getAttribute("data-slideout-ignore"))return e;e=e.parentNode}return null}(t.target))return;const e=t.touches[0].clientX-this.s;let n=e;if(this.i=e,Math.abs(n)>this.M||Math.abs(e)<=20)return;this.h=!0;const i=e*this.ge;this.l&&i>0||!this.l&&i<0||(this.o||this.I("translatestart"),i<=0&&(n=e+this.M*this.ge,this.h=!1),this.o&&Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),ks(this.panel,"transform",`translateX(${n}px)`),this.I("translate",n),this.o=!0)}))}enableTouch(){return this.p=!0,this}disableTouch(){return this.p=!1,this}destroy(){this.close(),this.C(),this.j(),this.D(),this.K(),this.X()}}class Ms extends pi{constructor(){super(),this.Ee=null,this.isOpen=!1,this.disabled=!1,this.$e=0}open(){this.isOpen=!0}close(){this.isOpen=!1}toggle(){this.isOpen=!this.isOpen}je(){const[t,e]=this.shadowRoot.children;this.Ee=new zs({menu:t,panel:e,eventsEmitter:this,padding:270,touch:!1});const n=()=>this.Ee.close();this.Ee.on("beforeopen",(()=>{this.isOpen=!0,this.$e=window.pageYOffset,t.classList.add("open"),e.style.top=-this.$e+"px",e.addEventListener("mousedown",n,!1),e.addEventListener("touchstart",n,!1),window.scroll(0,0)})),this.Ee.on("close",(()=>{this.isOpen=!1,t.classList.remove("open"),e.style.top="",window.scroll(0,this.$e),e.removeEventListener("mousedown",n,!1),e.removeEventListener("touchstart",n,!1)}))}updated(t){if(this.Ee||this.je(),this.isOpen!==this.Ee.isOpen()){const t=this.isOpen?"open":"close";this.Ee[t]()}if(t.has("disabled")){const t=this.disabled?"disableTouch":"enableTouch";this.Ee[t]()}}disconnectedCallback(){super.disconnectedCallback(),this.Ee.destroy(),this.Ee=null}render(){return Kn`
`}}async function Ds(){return(await cr("/versions.txt",{format:"txtArrayJSON",cache:!0})).body}function Ts(t){return window.location.href.replace("/v6/",`/${t}/`)}function Ls(t){window.location.href=Ts(t.target.value)}dn(Ms,"cName","menu-drawer"),dn(Ms,"properties",{isOpen:{type:Boolean},disabled:{type:Boolean}}),Ms.styles=hi`:host{display:block}.menu{display:none;padding:10px;width:256px;min-height:100vh;-webkit-overflow-scrolling:touch}.panel{position:relative;z-index:10;will-change:transform;min-height:100vh;background:#fff}.panel::before{position:absolute;left:0;top:0;bottom:0;width:100%;z-index:6000;background-color:transparent;transition:background-color .2s ease-in-out}.menu.open{display:block}.menu.open+.panel{position:fixed;left:0;right:0;top:0;overflow:hidden;min-height:100%;z-index:10;box-shadow:0 0 20px rgba(0,0,0,.5)}.menu.open+.panel::before{content:'';background-color:rgba(0,0,0,.5)}`;class _s extends pi{constructor(){super(),this.Se=[],this.Oe="v6",this.Oe&&this.Se.push({number:this.Oe})}async connectedCallback(){super.connectedCallback();const t=await Ds();this.Se=t.slice(0).reverse(),this.requestUpdate()}render(){return Kn``}}dn(_s,"cName","versions-select"),_s.styles=hi`:host{display:inline-block}select{display:block;font-size:16px;font-weight:700;color:#444;line-height:1.3;padding-left:.5em;padding-right:1.1em;box-sizing:border-box;margin:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23444444%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');background-repeat:no-repeat;background-position:right .5em top 50%;background-size:.5em auto;border:0;cursor:pointer}select::-ms-expand{display:none}select:focus{outline:0}`;class Ns extends pi{constructor(){super(),this.Se=[],this.Oe="v6"}async connectedCallback(){super.connectedCallback(),this.ie=io.observe((()=>this.requestUpdate())),this.Se=await Ds(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}render(){const t=this.Se[this.Se.length-1];return t&&t.number!==this.Oe?Kn`
${co("oldVersionAlert",{latestVersion:t.number,currentVersion:this.Oe,latestVersionUrl:Ts(t.number)})}
`:Kn``}}dn(Ns,"cName","old-version-alert"),Ns.styles=[po,Co,hi`a{color:inherit}`];const Bs=[uo,ho,bo,wo,yo,xo,ko,Oo,Lo,zo,hs,ds,as,ms,gs,Cs,Ms,_s,Ns];const{navigator:Is,location:qs}=window,Ps="localhost"===qs.hostname||"[::1]"===qs.hostname||qs.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),Us="serviceWorker"in Is,Vs=(...t)=>console.log(...t);function Rs(t,e){let n=!1;return Is.serviceWorker.addEventListener("controllerchange",(()=>{n||(n=!0,qs.reload())})),Is.serviceWorker.register(t).then((t=>{Vs("service worker is registered"),t.onupdatefound=()=>function(t,e){t&&(t.onstatechange=()=>{Vs("new worker state",t.state),"installed"===t.state&&(Is.serviceWorker.controller?(Vs("New content is available and will be used when all tabs for this page are closed. See https://bit.ly/CRA-PWA."),e&&e.onUpdate&&e.onUpdate(t)):(Vs("Content is cached for offline use."),e&&e.onSuccess&&e.onSuccess(t)))})}(t.installing,e)})).catch((t=>{console.error("Error during service worker registration:",t)}))}window.__isAppExecuted__=!0;const Gs=function(t){const e=document.querySelector(t);return Bs.forEach((t=>customElements.define(t.cName,t))),io.observe((async t=>{const n=t.response.params.lang||mr;Cr()!==n&&(await br(n),e.ready=!0),$o(t)})),e}("casl-docs");!function(t){Us&&window.addEventListener("load",(()=>{const e="/v6/sw.js";Ps?function(t,e){cr(t,{headers:{"Service-Worker":"script"},format:"raw",absoluteUrl:!0}).then((n=>{const i=n.headers["content-type"]||"";404===n.status||-1===i.indexOf("javascript")?(Vs("cannot detect service worker"),Is.serviceWorker.ready.then((t=>t.unregister())).then((()=>qs.reload()))):Rs(t,e)})).catch((()=>{Vs("No internet connection found. App is running in offline mode.")}))}(e,t):Rs(e,t)}))}({onUpdate(t){Gs.notify("updateAvailable",{onClick(){t.postMessage({type:"SKIP_WAITING"})}})}}); +//# sourceMappingURL=bootstrap.ac7e646d.js.map diff --git a/v6/bootstrap.6cc06c45.js.map b/v6/bootstrap.ac7e646d.js.map similarity index 99% rename from v6/bootstrap.6cc06c45.js.map rename to v6/bootstrap.ac7e646d.js.map index 94ae012ae..c79a85c15 100644 --- a/v6/bootstrap.6cc06c45.js.map +++ b/v6/bootstrap.ac7e646d.js.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap.6cc06c45.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/modules/web.immediate.js","../node_modules/lit-html/lib/dom.js","../node_modules/lit-html/lib/template.js","../node_modules/lit-html/lib/modify-template.js","../node_modules/lit-html/lib/directive.js","../node_modules/lit-html/lib/part.js","../node_modules/lit-html/lib/template-instance.js","../node_modules/lit-html/lib/template-result.js","../node_modules/lit-html/lib/parts.js","../node_modules/lit-html/lib/template-factory.js","../node_modules/lit-html/lib/render.js","../node_modules/lit-html/lib/default-template-processor.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-html/lib/shady-render.js","../node_modules/lit-element/lib/updating-element.js","../node_modules/lit-element/lib/css-tag.js","../node_modules/lit-element/lit-element.js","../node_modules/lit-html/directives/cache.js","../node_modules/path-to-regexp/index.js","../node_modules/@curi/router/dist/curi-router.es.js","../node_modules/@hickory/location-utils/dist/hickory-location-utils.es.js","../node_modules/@hickory/root/dist/hickory-root.es.js","../node_modules/@hickory/dom-utils/dist/hickory-dom-utils.es.js","../node_modules/@hickory/browser/dist/hickory-browser.es.js","../src/config/app.js","../node_modules/lit-translate/helpers.js","../node_modules/lit-translate/util.js","../node_modules/lit-translate/config.js","../node_modules/lit-translate/cleanup.js","../node_modules/lit-translate/directive.js","../node_modules/lit-html/directives/unsafe-html.js","../src/services/utils.js","../src/services/http.js","../CONTENT_1:/home/runner/work/casl/casl/docs-src/src/content/app","../src/services/i18n.js","../node_modules/minisearch/dist/es/index.js","../src/config/search.js","../CONTENT_2:/home/runner/work/casl/casl/docs-src/src/content/pages","../src/services/content.js","../src/services/ContentType.js","../src/services/error.js","../src/services/pageController.js","../src/services/querystring.js","../src/services/router.js","../node_modules/@curi/interactions/dist/curi-interactions.es.js","../src/hooks/watchMedia.js","../src/directives/i18n.js","../node_modules/lit-translate/directives/translate.js","../src/components/App.js","../src/styles/grid.js","../src/components/AppRoot.js","../src/styles/md.js","../src/styles/page.js","../src/styles/btn.js","../src/styles/code.js","../src/styles/alert.js","../src/components/AppFooter.js","../src/components/AppHeader.js","../src/assets/icons/menu.png","../src/components/AppLink.js","../src/components/AppMenu.js","../src/components/ArticleDetails.js","../src/components/I18nElement.js","../src/services/meta.js","../src/hooks/scrollToSection.js","../src/components/Page.js","../src/components/PageNav.js","../src/partials/caslFeatures.js","../src/components/HomePage.js","../src/assets/casl-shield.png","../node_modules/github-buttons/dist/buttons.esm.js","../src/components/GithubButton.js","../src/components/QuickSearch.js","../src/components/LangPicker.js","../src/components/OneTimeDonations.js","../src/assets/payment-options/liqpay.svg","../src/assets/payment-options/liqpay-qrcode.png","../src/assets/payment-options/monobank.png","../src/assets/payment-options/monobank-qrcode.svg","../src/components/PagesByCategories.js","../src/components/AppNotification.js","../node_modules/menu-drawer.js/dist/es/index.js","../src/components/MenuDrawer.js","../src/services/version.js","../src/components/VersionsSelect.js","../src/components/OldVersionAlert.js","../src/app.js","../src/serviceWorker.js","../src/bootstrap.js"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.11.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar task = require('../internals/task');\n\nvar FORCED = !global.setImmediate || !global.clearImmediate;\n\n// http://w3c.github.io/setImmediate/\n$({ global: true, bind: true, enumerable: true, forced: FORCED }, {\n // `setImmediate` method\n // http://w3c.github.io/setImmediate/#si-setImmediate\n setImmediate: task.set,\n // `clearImmediate` method\n // http://w3c.github.io/setImmediate/#si-clearImmediate\n clearImmediate: task.clear\n});\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * True if the custom elements polyfill is in use.\n */\nexport const isCEPolyfill = typeof window !== 'undefined' &&\n window.customElements != null &&\n window.customElements.polyfillWrapFlushCallback !==\n undefined;\n/**\n * Reparents nodes, starting from `start` (inclusive) to `end` (exclusive),\n * into another container (could be the same container), before `before`. If\n * `before` is null, it appends the nodes to the container.\n */\nexport const reparentNodes = (container, start, end = null, before = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.insertBefore(start, before);\n start = n;\n }\n};\n/**\n * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from\n * `container`.\n */\nexport const removeNodes = (container, start, end = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.removeChild(start);\n start = n;\n }\n};\n//# sourceMappingURL=dom.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * An expression marker with embedded unique key to avoid collision with\n * possible text in templates.\n */\nexport const marker = `{{lit-${String(Math.random()).slice(2)}}}`;\n/**\n * An expression marker used text-positions, multi-binding attributes, and\n * attributes with markup-like text values.\n */\nexport const nodeMarker = ``;\nexport const markerRegex = new RegExp(`${marker}|${nodeMarker}`);\n/**\n * Suffix appended to all bound attribute names.\n */\nexport const boundAttributeSuffix = '$lit$';\n/**\n * An updatable Template that tracks the location of dynamic parts.\n */\nexport class Template {\n constructor(result, element) {\n this.parts = [];\n this.element = element;\n const nodesToRemove = [];\n const stack = [];\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(element.content, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n // Keeps track of the last index associated with a part. We try to delete\n // unnecessary nodes, but we never want to associate two different parts\n // to the same index. They must have a constant node between.\n let lastPartIndex = 0;\n let index = -1;\n let partIndex = 0;\n const { strings, values: { length } } = result;\n while (partIndex < length) {\n const node = walker.nextNode();\n if (node === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n continue;\n }\n index++;\n if (node.nodeType === 1 /* Node.ELEMENT_NODE */) {\n if (node.hasAttributes()) {\n const attributes = node.attributes;\n const { length } = attributes;\n // Per\n // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap,\n // attributes are not guaranteed to be returned in document order.\n // In particular, Edge/IE can return them out of order, so we cannot\n // assume a correspondence between part index and attribute index.\n let count = 0;\n for (let i = 0; i < length; i++) {\n if (endsWith(attributes[i].name, boundAttributeSuffix)) {\n count++;\n }\n }\n while (count-- > 0) {\n // Get the template literal section leading up to the first\n // expression in this attribute\n const stringForPart = strings[partIndex];\n // Find the attribute name\n const name = lastAttributeNameRegex.exec(stringForPart)[2];\n // Find the corresponding attribute\n // All bound attributes have had a suffix added in\n // TemplateResult#getHTML to opt out of special attribute\n // handling. To look up the attribute value we also need to add\n // the suffix.\n const attributeLookupName = name.toLowerCase() + boundAttributeSuffix;\n const attributeValue = node.getAttribute(attributeLookupName);\n node.removeAttribute(attributeLookupName);\n const statics = attributeValue.split(markerRegex);\n this.parts.push({ type: 'attribute', index, name, strings: statics });\n partIndex += statics.length - 1;\n }\n }\n if (node.tagName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n }\n else if (node.nodeType === 3 /* Node.TEXT_NODE */) {\n const data = node.data;\n if (data.indexOf(marker) >= 0) {\n const parent = node.parentNode;\n const strings = data.split(markerRegex);\n const lastIndex = strings.length - 1;\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n for (let i = 0; i < lastIndex; i++) {\n let insert;\n let s = strings[i];\n if (s === '') {\n insert = createMarker();\n }\n else {\n const match = lastAttributeNameRegex.exec(s);\n if (match !== null && endsWith(match[2], boundAttributeSuffix)) {\n s = s.slice(0, match.index) + match[1] +\n match[2].slice(0, -boundAttributeSuffix.length) + match[3];\n }\n insert = document.createTextNode(s);\n }\n parent.insertBefore(insert, node);\n this.parts.push({ type: 'node', index: ++index });\n }\n // If there's no text, we must insert a comment to mark our place.\n // Else, we can trust it will stick around after cloning.\n if (strings[lastIndex] === '') {\n parent.insertBefore(createMarker(), node);\n nodesToRemove.push(node);\n }\n else {\n node.data = strings[lastIndex];\n }\n // We have a part for each match found\n partIndex += lastIndex;\n }\n }\n else if (node.nodeType === 8 /* Node.COMMENT_NODE */) {\n if (node.data === marker) {\n const parent = node.parentNode;\n // Add a new marker node to be the startNode of the Part if any of\n // the following are true:\n // * We don't have a previousSibling\n // * The previousSibling is already the start of a previous part\n if (node.previousSibling === null || index === lastPartIndex) {\n index++;\n parent.insertBefore(createMarker(), node);\n }\n lastPartIndex = index;\n this.parts.push({ type: 'node', index });\n // If we don't have a nextSibling, keep this node so we have an end.\n // Else, we can remove it to save future costs.\n if (node.nextSibling === null) {\n node.data = '';\n }\n else {\n nodesToRemove.push(node);\n index--;\n }\n partIndex++;\n }\n else {\n let i = -1;\n while ((i = node.data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n // TODO (justinfagnani): consider whether it's even worth it to\n // make bindings in comments work\n this.parts.push({ type: 'node', index: -1 });\n partIndex++;\n }\n }\n }\n }\n // Remove text binding nodes after the walk to not disturb the TreeWalker\n for (const n of nodesToRemove) {\n n.parentNode.removeChild(n);\n }\n }\n}\nconst endsWith = (str, suffix) => {\n const index = str.length - suffix.length;\n return index >= 0 && str.slice(index) === suffix;\n};\nexport const isTemplatePartActive = (part) => part.index !== -1;\n// Allows `document.createComment('')` to be renamed for a\n// small manual size-savings.\nexport const createMarker = () => document.createComment('');\n/**\n * This regex extracts the attribute name preceding an attribute-position\n * expression. It does this by matching the syntax allowed for attributes\n * against the string literal directly preceding the expression, assuming that\n * the expression is in an attribute-value position.\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\x09\\x0a\\x0c\\x0d\" are HTML space characters:\n * https://www.w3.org/TR/html5/infrastructure.html#space-characters\n *\n * \"\\0-\\x1F\\x7F-\\x9F\" are Unicode control characters, which includes every\n * space character except \" \".\n *\n * So an attribute is:\n * * The name: any character except a control character, space character, ('),\n * (\"), \">\", \"=\", or \"/\"\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nexport const lastAttributeNameRegex = \n// eslint-disable-next-line no-control-regex\n/([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n//# sourceMappingURL=template.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { isTemplatePartActive } from './template.js';\nconst walkerNodeFilter = 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */;\n/**\n * Removes the list of nodes from a Template safely. In addition to removing\n * nodes from the Template, the Template part indices are updated to match\n * the mutated Template DOM.\n *\n * As the template is walked the removal state is tracked and\n * part indices are adjusted as needed.\n *\n * div\n * div#1 (remove) <-- start removing (removing node is div#1)\n * div\n * div#2 (remove) <-- continue removing (removing node is still div#1)\n * div\n * div <-- stop removing since previous sibling is the removing node (div#1,\n * removed 4 nodes)\n */\nexport function removeNodesFromTemplate(template, nodesToRemove) {\n const { element: { content }, parts } = template;\n const walker = document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let part = parts[partIndex];\n let nodeIndex = -1;\n let removeCount = 0;\n const nodesToRemoveInTemplate = [];\n let currentRemovingNode = null;\n while (walker.nextNode()) {\n nodeIndex++;\n const node = walker.currentNode;\n // End removal if stepped past the removing node\n if (node.previousSibling === currentRemovingNode) {\n currentRemovingNode = null;\n }\n // A node to remove was found in the template\n if (nodesToRemove.has(node)) {\n nodesToRemoveInTemplate.push(node);\n // Track node we're removing\n if (currentRemovingNode === null) {\n currentRemovingNode = node;\n }\n }\n // When removing, increment count by which to adjust subsequent part indices\n if (currentRemovingNode !== null) {\n removeCount++;\n }\n while (part !== undefined && part.index === nodeIndex) {\n // If part is in a removed node deactivate it by setting index to -1 or\n // adjust the index as needed.\n part.index = currentRemovingNode !== null ? -1 : part.index - removeCount;\n // go to the next active part.\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n part = parts[partIndex];\n }\n }\n nodesToRemoveInTemplate.forEach((n) => n.parentNode.removeChild(n));\n}\nconst countNodes = (node) => {\n let count = (node.nodeType === 11 /* Node.DOCUMENT_FRAGMENT_NODE */) ? 0 : 1;\n const walker = document.createTreeWalker(node, walkerNodeFilter, null, false);\n while (walker.nextNode()) {\n count++;\n }\n return count;\n};\nconst nextActiveIndexInTemplateParts = (parts, startIndex = -1) => {\n for (let i = startIndex + 1; i < parts.length; i++) {\n const part = parts[i];\n if (isTemplatePartActive(part)) {\n return i;\n }\n }\n return -1;\n};\n/**\n * Inserts the given node into the Template, optionally before the given\n * refNode. In addition to inserting the node into the Template, the Template\n * part indices are updated to match the mutated Template DOM.\n */\nexport function insertNodeIntoTemplate(template, node, refNode = null) {\n const { element: { content }, parts } = template;\n // If there's no refNode, then put node at end of template.\n // No part indices need to be shifted in this case.\n if (refNode === null || refNode === undefined) {\n content.appendChild(node);\n return;\n }\n const walker = document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let insertCount = 0;\n let walkerIndex = -1;\n while (walker.nextNode()) {\n walkerIndex++;\n const walkerNode = walker.currentNode;\n if (walkerNode === refNode) {\n insertCount = countNodes(node);\n refNode.parentNode.insertBefore(node, refNode);\n }\n while (partIndex !== -1 && parts[partIndex].index === walkerIndex) {\n // If we've inserted the node, simply adjust all subsequent parts\n if (insertCount > 0) {\n while (partIndex !== -1) {\n parts[partIndex].index += insertCount;\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n return;\n }\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n }\n}\n//# sourceMappingURL=modify-template.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nconst directives = new WeakMap();\n/**\n * Brands a function as a directive factory function so that lit-html will call\n * the function during template rendering, rather than passing as a value.\n *\n * A _directive_ is a function that takes a Part as an argument. It has the\n * signature: `(part: Part) => void`.\n *\n * A directive _factory_ is a function that takes arguments for data and\n * configuration and returns a directive. Users of directive usually refer to\n * the directive factory as the directive. For example, \"The repeat directive\".\n *\n * Usually a template author will invoke a directive factory in their template\n * with relevant arguments, which will then return a directive function.\n *\n * Here's an example of using the `repeat()` directive factory that takes an\n * array and a function to render an item:\n *\n * ```js\n * html`
    <${repeat(items, (item) => html`
  • ${item}
  • `)}
`\n * ```\n *\n * When `repeat` is invoked, it returns a directive function that closes over\n * `items` and the template function. When the outer template is rendered, the\n * return directive function is called with the Part for the expression.\n * `repeat` then performs it's custom logic to render multiple items.\n *\n * @param f The directive factory function. Must be a function that returns a\n * function of the signature `(part: Part) => void`. The returned function will\n * be called with the part object.\n *\n * @example\n *\n * import {directive, html} from 'lit-html';\n *\n * const immutable = directive((v) => (part) => {\n * if (part.value !== v) {\n * part.setValue(v)\n * }\n * });\n */\nexport const directive = (f) => ((...args) => {\n const d = f(...args);\n directives.set(d, true);\n return d;\n});\nexport const isDirective = (o) => {\n return typeof o === 'function' && directives.has(o);\n};\n//# sourceMappingURL=directive.js.map","/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = {};\n/**\n * A sentinel value that signals a NodePart to fully clear its content.\n */\nexport const nothing = {};\n//# sourceMappingURL=part.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { isCEPolyfill } from './dom.js';\nimport { isTemplatePartActive } from './template.js';\n/**\n * An instance of a `Template` that can be attached to the DOM and updated\n * with new values.\n */\nexport class TemplateInstance {\n constructor(template, processor, options) {\n this.__parts = [];\n this.template = template;\n this.processor = processor;\n this.options = options;\n }\n update(values) {\n let i = 0;\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.setValue(values[i]);\n }\n i++;\n }\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.commit();\n }\n }\n }\n _clone() {\n // There are a number of steps in the lifecycle of a template instance's\n // DOM fragment:\n // 1. Clone - create the instance fragment\n // 2. Adopt - adopt into the main document\n // 3. Process - find part markers and create parts\n // 4. Upgrade - upgrade custom elements\n // 5. Update - set node, attribute, property, etc., values\n // 6. Connect - connect to the document. Optional and outside of this\n // method.\n //\n // We have a few constraints on the ordering of these steps:\n // * We need to upgrade before updating, so that property values will pass\n // through any property setters.\n // * We would like to process before upgrading so that we're sure that the\n // cloned fragment is inert and not disturbed by self-modifying DOM.\n // * We want custom elements to upgrade even in disconnected fragments.\n //\n // Given these constraints, with full custom elements support we would\n // prefer the order: Clone, Process, Adopt, Upgrade, Update, Connect\n //\n // But Safari does not implement CustomElementRegistry#upgrade, so we\n // can not implement that order and still have upgrade-before-update and\n // upgrade disconnected fragments. So we instead sacrifice the\n // process-before-upgrade constraint, since in Custom Elements v1 elements\n // must not modify their light DOM in the constructor. We still have issues\n // when co-existing with CEv0 elements like Polymer 1, and with polyfills\n // that don't strictly adhere to the no-modification rule because shadow\n // DOM, which may be created in the constructor, is emulated by being placed\n // in the light DOM.\n //\n // The resulting order is on native is: Clone, Adopt, Upgrade, Process,\n // Update, Connect. document.importNode() performs Clone, Adopt, and Upgrade\n // in one step.\n //\n // The Custom Elements v1 polyfill supports upgrade(), so the order when\n // polyfilled is the more ideal: Clone, Process, Adopt, Upgrade, Update,\n // Connect.\n const fragment = isCEPolyfill ?\n this.template.element.content.cloneNode(true) :\n document.importNode(this.template.element.content, true);\n const stack = [];\n const parts = this.template.parts;\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(fragment, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n let partIndex = 0;\n let nodeIndex = 0;\n let part;\n let node = walker.nextNode();\n // Loop through all the nodes and parts of a template\n while (partIndex < parts.length) {\n part = parts[partIndex];\n if (!isTemplatePartActive(part)) {\n this.__parts.push(undefined);\n partIndex++;\n continue;\n }\n // Progress the tree walker until we find our next part's node.\n // Note that multiple parts may share the same node (attribute parts\n // on a single element), so this loop may not run at all.\n while (nodeIndex < part.index) {\n nodeIndex++;\n if (node.nodeName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n if ((node = walker.nextNode()) === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n node = walker.nextNode();\n }\n }\n // We've arrived at our part's node.\n if (part.type === 'node') {\n const part = this.processor.handleTextExpression(this.options);\n part.insertAfterNode(node.previousSibling);\n this.__parts.push(part);\n }\n else {\n this.__parts.push(...this.processor.handleAttributeExpressions(node, part.name, part.strings, this.options));\n }\n partIndex++;\n }\n if (isCEPolyfill) {\n document.adoptNode(fragment);\n customElements.upgrade(fragment);\n }\n return fragment;\n }\n}\n//# sourceMappingURL=template-instance.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\nimport { reparentNodes } from './dom.js';\nimport { boundAttributeSuffix, lastAttributeNameRegex, marker, nodeMarker } from './template.js';\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = window.trustedTypes &&\n trustedTypes.createPolicy('lit-html', { createHTML: (s) => s });\nconst commentMarker = ` ${marker} `;\n/**\n * The return type of `html`, which holds a Template and the values from\n * interpolated expressions.\n */\nexport class TemplateResult {\n constructor(strings, values, type, processor) {\n this.strings = strings;\n this.values = values;\n this.type = type;\n this.processor = processor;\n }\n /**\n * Returns a string of HTML used to create a `