diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml index acd2b11..8cf87bb 100644 --- a/.github/workflows/hugo.yml +++ b/.github/workflows/hugo.yml @@ -37,7 +37,7 @@ jobs: build: runs-on: ubuntu-latest env: - HUGO_VERSION: 0.128.2 + HUGO_VERSION: 0.136.5 steps: - name: Install Hugo CLI run: | diff --git a/docs/.gitignore b/docs/.gitignore index 27ef517..756a352 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -10,3 +10,7 @@ hugo.linux # Temporary lock file while building .hugo_build.lock + +# Exclude Terraform files used for testing examples +.terraform +.terraform.lock.hcl diff --git a/docs/content/_index.md b/docs/content/_index.md index 61aca4f..5bbe141 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -1,8 +1,5 @@ --- title: Azure Landing Zones Documentation -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- Welcome to the Azure Landing Zones technical documentation site. @@ -22,7 +19,7 @@ The Azure Landing Zones journey is a multi-step process that starts with the ent graph LR; A[Enterprise bootstrap] --> B[Azure Landing Zones platform]; B --> C[Subscription vending]; - C --> D[Applicaiton landing zones]; + C --> D[Application landing zones]; D --> E[Workloads]; ``` @@ -32,27 +29,7 @@ The enterprise bootstrap is the first step in the Azure Landing Zones journey. It is the process of setting up the foundational components that will be used to deploy and manage Azure Landing Zones. In this step we ensure we have the correct access and some subscriptions to work with. -### Access - -You will need the correct access to Azure to deploy the core components for Azure Landing Zones. -You need to be able to create management groups, and assign policy and roles. -The built-in role `Management Group Contributor` provides the necessary permissions to create and manage management groups. -This is typically assigned at the parent management group under which the Azure Landing Zones will be deployed. - -It is also possible to have a organizational root management group provided to you by your organization but you will require `Owner` permissions on this management group to deploy the Azure Landing Zones platform. -This is becasue Azure Landing Zones assigns policies with DeployIfNotExists and modify effects, which require role assignments to be created. - -### Azure subscriptions - -You will need some Azure subscriptions to work with to deploy the core compoents for Azure Landing Zones, e.g. the central Log Analytics workspace, the core networking components, etc. - -We typically recommend these subscriptions are created in the Azure Portal or using the CLI tools. - -We recommend the following subscriptions: - -- **connectivity** - this subscription is used to deploy the core networking components for the Azure Landing Zones. -- **management** - this subscription is used to deploy the core management components for the Azure Landing Zones. -- **identity** (Optional) - this subscription is used to host AD-DS domain controllers. +See the [Enterprise Bootstrap](enterprisebootstrap) section for more information. ### Azure Landing Zones platform @@ -74,7 +51,7 @@ The reference management group and policy structure for Azure Landing Zones is p Subscription vending is the process of automating the creation of new subscriptions for use by the organization. To be able to automate the creation of subscriptions, you will need to have the correct permissions. -These permissions are asssigned at the billing scope and the process is documented [here](https://learn.microsoft.com/azure/cost-management-billing/manage/programmatically-create-subscription). +These permissions are assigned at the billing scope and the process is documented [here](https://learn.microsoft.com/azure/cost-management-billing/manage/programmatically-create-subscription). ### Application landing zones @@ -83,3 +60,7 @@ Application landing zones build upon subscription vending to provide application ### Workloads Workloads are the applications and services that are deployed into the Azure Landing Zones. + +## Next steps + +To get started with the Azure Landing Zones journey, let's look at the [enterprise bootstrap](enterprisebootstrap) process. diff --git a/docs/content/accalerator/_index.md b/docs/content/accalerator/_index.md index a272ef0..f690dde 100644 --- a/docs/content/accalerator/_index.md +++ b/docs/content/accalerator/_index.md @@ -1,8 +1,5 @@ --- title: Accelerator -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- TBC... diff --git a/docs/content/bicep/1_enterprisebootstrap.md b/docs/content/bicep/1_enterprisebootstrap.md deleted file mode 100644 index 4799bed..0000000 --- a/docs/content/bicep/1_enterprisebootstrap.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 1. Enterprise Bootstrap -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true ---- - -TBC... diff --git a/docs/content/bicep/2_platform.md.md b/docs/content/bicep/2_platform.md.md index 6728234..f4fe45e 100644 --- a/docs/content/bicep/2_platform.md.md +++ b/docs/content/bicep/2_platform.md.md @@ -1,8 +1,5 @@ --- title: 2. Platform -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- TBC... diff --git a/docs/content/bicep/3_networking.md b/docs/content/bicep/3_networking.md index b2a3d9f..5d04643 100644 --- a/docs/content/bicep/3_networking.md +++ b/docs/content/bicep/3_networking.md @@ -1,8 +1,5 @@ --- title: 3. Networking -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- TBC... diff --git a/docs/content/bicep/4_subscriptionvending.md b/docs/content/bicep/4_subscriptionvending.md index cbfa02a..a0162f0 100644 --- a/docs/content/bicep/4_subscriptionvending.md +++ b/docs/content/bicep/4_subscriptionvending.md @@ -1,8 +1,5 @@ --- title: 4. Subscription Vending -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- TBC... diff --git a/docs/content/bicep/5_applicationlandingzones.md b/docs/content/bicep/5_applicationlandingzones.md index 579df36..4188d3b 100644 --- a/docs/content/bicep/5_applicationlandingzones.md +++ b/docs/content/bicep/5_applicationlandingzones.md @@ -1,8 +1,5 @@ --- title: 5. Application Landing Zones -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- TBC... diff --git a/docs/content/bicep/_index.md b/docs/content/bicep/_index.md index c3030e5..c7d691f 100644 --- a/docs/content/bicep/_index.md +++ b/docs/content/bicep/_index.md @@ -1,8 +1,5 @@ --- title: Bicep -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true --- TBC... diff --git a/docs/content/enterprisebootstrap.md b/docs/content/enterprisebootstrap.md new file mode 100644 index 0000000..563cb1f --- /dev/null +++ b/docs/content/enterprisebootstrap.md @@ -0,0 +1,47 @@ +--- +title: Enterprise Bootstrap +--- + +Before we begin our Azure Landing Zones journey proper, we need some pre-requisites in place. + +## Azure Subscriptions + +We recommend setting up 3 subscriptions for Azure landing zones. +These are management, identity and connectivity. + +- **Management**: This is used to deploy the bootstrap and management resources, such as log analytics and automation accounts. +- **Connectivity**: This is used to deploy the hub networking resources, such as virtual networks and firewalls. +- **Identity**: (Optional) This is used to deploy the identity resources, such as Azure AD and Azure AD Domain Services. You will not need this if you do not have any AD-DS or [Entra Domain Services](https://azure.microsoft.com/products/microsoft-entra-ds) requirements. + +You can read more about the management, identity and connectivity subscriptions in the [Landing Zone docs](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/deploy-landing-zones-with-terraform). + +To create the subscriptions you will need access to a billing agreement. +The following links detail the permissions required for each type of agreement: + +- [Enterprise Agreement (EA)](https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/create-enterprise-subscription) +- [Microsoft Customer Agreement (MCA)](https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/create-subscription) + +Once you have the access required, create the three subscriptions following your desired naming convention. + +Take note of the subscription id of each subscription as we will need them later. + +## Azure Authentication and Permissions + +You need either an Azure User Account or Service Principal with the following permissions to run the bootstrap: + +- `Owner` on your chosen parent management group for the Azure landing zone. This could be `Tenant Root Group` or a new management group you create under there if preferred. + - Owner is required as this account will be granting permissions for the identities that run the management group deployment. Those identities will be granted least privilege permissions. +- `Owner` on each of your Azure landing zone subscriptions. + +## Next Steps + +Now choose your next step! + +The Accelerator allows you to quickly get started with IaC and DevOps best practices for Azure Landing Zones. +It supports both Terraform and Bicep. + +You can also opt to use Bicep and Terraform directly. + +- [**Accelerator**](/Azure-Landing-Zones/accelerator/) +- [**Bicep**](/Azure-Landing-Zones/bicep/) +- [**Terraform**](/Azure-Landing-Zones/terraform/) diff --git a/docs/content/terraform/1_enterprisebootstrap.md b/docs/content/terraform/1_enterprisebootstrap.md deleted file mode 100644 index 4799bed..0000000 --- a/docs/content/terraform/1_enterprisebootstrap.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 1. Enterprise Bootstrap -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true ---- - -TBC... diff --git a/docs/content/terraform/1_managementcomponents.md b/docs/content/terraform/1_managementcomponents.md new file mode 100644 index 0000000..43df5a0 --- /dev/null +++ b/docs/content/terraform/1_managementcomponents.md @@ -0,0 +1,37 @@ +--- +title: 1. Management components +--- + +Core to Azure Landing Zones is the concept of centralized logging. +We recommend beginning with the deployment of the management components, which include the following: + +- **Log Analytics workspace**: Used to collect and analyze logs from Azure resources. +- **Automation account**: (Optional) Used to automate tasks in Azure. +- **Azure Monitor Agent Resources**: The identity and data collection rules required for AMA. + +We have a Terraform module that deploys these resources for you: + +## Getting started + +First let's create a `terraform.tf` file in a new directory and add the following code: + +{{< include file="/static/examples/tf/1_management/terraform.tf" language="terraform" >}} + +Here we specify the minimum version of Terraform we want to use. +We set [pessimistic version constraints](https://developer.hashicorp.com/terraform/language/expressions/version-constraints) to allow only the minor version to change. +This will prevent a new major version from being used, which could introduce breaking changes. + +## Add the ALZ Management module + +Create a file called `main.tf` in the same directory and add the following code: + +{{< include file="/static/examples/tf/1_management/main.tf" language="terraform" >}} + +## Plan and apply + +We recommend using CI/CD to deploy your infrastructure, the Accelerator is a great way to get started with this. +However you can also run Terraform locally: + +Run `terraform init` to download the module and initialize the directory. +Next, run `terraform plan` to see what resources will be created. +Finally, run `terraform apply` to create the resources. diff --git a/docs/content/terraform/2_platform.md.md b/docs/content/terraform/2_platform.md.md deleted file mode 100644 index 6728234..0000000 --- a/docs/content/terraform/2_platform.md.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 2. Platform -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true ---- - -TBC... diff --git a/docs/content/terraform/3_networking.md b/docs/content/terraform/3_networking.md deleted file mode 100644 index 7048aba..0000000 --- a/docs/content/terraform/3_networking.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: 3. Networking -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true ---- - -TBC... -## Hub & Spoke - -## Virtual WAN diff --git a/docs/content/terraform/3_subscriptionvending.md b/docs/content/terraform/3_subscriptionvending.md new file mode 100644 index 0000000..cda7a3d --- /dev/null +++ b/docs/content/terraform/3_subscriptionvending.md @@ -0,0 +1,5 @@ +--- +title: 2. Subscription Vending +--- + +TBC... diff --git a/docs/content/terraform/4_applicationlandingzones.md b/docs/content/terraform/4_applicationlandingzones.md new file mode 100644 index 0000000..4188d3b --- /dev/null +++ b/docs/content/terraform/4_applicationlandingzones.md @@ -0,0 +1,5 @@ +--- +title: 5. Application Landing Zones +--- + +TBC... diff --git a/docs/content/terraform/4_subscriptionvending.md b/docs/content/terraform/4_subscriptionvending.md deleted file mode 100644 index cbfa02a..0000000 --- a/docs/content/terraform/4_subscriptionvending.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 4. Subscription Vending -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true ---- - -TBC... diff --git a/docs/content/terraform/5_applicationlandingzones.md b/docs/content/terraform/5_applicationlandingzones.md deleted file mode 100644 index 579df36..0000000 --- a/docs/content/terraform/5_applicationlandingzones.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 5. Application Landing Zones -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true ---- - -TBC... diff --git a/docs/content/terraform/_index.md b/docs/content/terraform/_index.md index 694c8c0..5958523 100644 --- a/docs/content/terraform/_index.md +++ b/docs/content/terraform/_index.md @@ -1,8 +1,58 @@ --- -title: Terraform -geekdocNav: true -geekdocAlign: left -geekdocAnchor: true +title: Azure Landing Zones with Terraform --- -TBC... +ALZ ❤️ AVM - A new approach to Azure Landing Zones with Terraform + +Based on continuous feedback from the community, we have adopted a more modular approach to deploying Azure Landing Zones with Terraform. +This new approach is based on the Azure Virtual Network Module (AVM) and is designed to be more flexible. + +## Why have we made this change? + +We received feedback from our community that the following improvements were needed: + +### Customization + +You asked us to be able to fully customize the configuration of each component. +Examples included defining a custom management group hierarchy, or setting specific settings (and names!) on resources. +This requirement was front and center in our minds when designing the new approach. + +***You can now fully customize the configuration of each component (including the resource names 😇).*** + +### Modularity + +You didn't like that the module contained a combination of components that you may not need, and that you had to deploy the entire module even if you only wanted to use a subset of the components. + +You also asked that we make it easier for organizations to have different teams manage different components of the Azure Landing Zone. + +***You can now choose your own adventure and pick and choose only the components you need.*** + +## What is the new approach? + +The new approach is based on Azure Virtual Network Modules (AVM) and is designed to be more flexible. + +Here is the list of modules that pertain to Azure Landing Zones and covers the scope of the original ALZ Terraform module: + +- [ALZ core](https://registry.terraform.io/modules/Azure/avm-ptn-alz/azurerm/latest) +- [ALZ management](https://registry.terraform.io/modules/Azure/avm-ptn-alz-management/azurerm/latest) +- [Hub networking](https://registry.terraform.io/modules/Azure/avm-ptn-hubnetworking/azurerm/latest) +- [Virtual network gateway](https://registry.terraform.io/modules/Azure/avm-ptn-virtualwan/azurerm/latest) +- [Virtual WAN](https://registry.terraform.io/modules/Azure/avm-ptn-virtualwan/azurerm/latest) +- [Private link DNS zones](https://registry.terraform.io/modules/Azure/avm-ptn-network-private-link-private-dns-zones/azurerm/latest) + +Using these modules together, you can create a fully customized Azure Landing Zone. + +## How do I get started? + +We recognize that this is a significant change, and we want to make it as easy as possible for you to get started. +We have created this documentation site to centralize the integration documentation for the new modular approach. + +In here you will find examples and guidance on how to use the new modules to build your very own Azure Landing Zone. + +{{< hint type=note title="Deployment order" >}} +We recommend deploying the management components first, followed by the hub networking components and then finally the management groups and policy. + +This is because we need certain resources to exist so that we can reference them in Azure Policy. +{{< /hint >}} + +[Get started with deploying the management components](1_managementcomponents) diff --git a/docs/hugo.toml b/docs/hugo.toml index 06ed475..35f0e85 100644 --- a/docs/hugo.toml +++ b/docs/hugo.toml @@ -27,7 +27,7 @@ tag = "tags" [params] # (Optional, default 6) Set how many table of contents levels to be showed on page. # Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/) -# You can also specify this parameter per page in front matter. +# You can also specify this paramet.Site.IsMultiLingualer per page in front matter. geekdocToC = 2 # (Optional, default static/brand.svg) Set the path to a logo for the Geekdoc @@ -42,6 +42,15 @@ geekdocMenuBundle = false # per page if enabled. Can be enabled per page via 'geekdocCollapseSection'. geekdocCollapseAllSections = false +# Defautl align left +geekdocAlign = "left" + +# Default include nav +geekdockNav = true + +# Defautl include anchor +geekdockAnchor = true + # (Optional, default true) Show page navigation links at the bottom of each # docs page (bundle menu only). geekdocNextPrev = true diff --git a/docs/static/examples/tf/1_management/main.tf b/docs/static/examples/tf/1_management/main.tf new file mode 100644 index 0000000..aad3b2e --- /dev/null +++ b/docs/static/examples/tf/1_management/main.tf @@ -0,0 +1,21 @@ +locals { + management_resource_suffix = "changeme" + management_resource_group_name = "rg-alzmanagement" + automation_account_name = "aa-${local.management_resource_suffix}" + log_analytics_workspace_name = "law-${local.management_resource_suffix}" + location = "swedencentral" +} + +provider "azurerm" { + features {} +} + +module "alz_management" { + source = "Azure/avm-ptn-alz-management/azurerm" + version = "0.4.0" + + automation_account_name = local.automation_account_name + location = local.location + log_analytics_workspace_name = local.log_analytics_workspace_name + resource_group_name = local.management_resource_group_name +} diff --git a/docs/static/examples/tf/1_management/terraform.tf b/docs/static/examples/tf/1_management/terraform.tf new file mode 100644 index 0000000..e780cbe --- /dev/null +++ b/docs/static/examples/tf/1_management/terraform.tf @@ -0,0 +1,3 @@ +terraform { + required_version = "~> 1.6" +} diff --git a/docs/themes/hugo-geekdoc/.nvmrc b/docs/themes/hugo-geekdoc/.nvmrc new file mode 100644 index 0000000..b009dfb --- /dev/null +++ b/docs/themes/hugo-geekdoc/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/docs/themes/hugo-geekdoc/README.md b/docs/themes/hugo-geekdoc/README.md index 99358d8..b03365f 100644 --- a/docs/themes/hugo-geekdoc/README.md +++ b/docs/themes/hugo-geekdoc/README.md @@ -1,7 +1,7 @@ # Geekdoc [![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/hugo-geekdoc/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/hugo-geekdoc) -[![Hugo Version](https://img.shields.io/badge/hugo-0.112-blue.svg)](https://gohugo.io) +[![Hugo Version](https://img.shields.io/badge/hugo-0.124-blue.svg)](https://gohugo.io) [![GitHub release](https://img.shields.io/github/v/release/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/releases/latest) [![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors) [![License: MIT](https://img.shields.io/github/license/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE) diff --git a/docs/themes/hugo-geekdoc/VERSION b/docs/themes/hugo-geekdoc/VERSION index 0131a13..795460f 100644 --- a/docs/themes/hugo-geekdoc/VERSION +++ b/docs/themes/hugo-geekdoc/VERSION @@ -1 +1 @@ -v0.47.0 +v1.1.0 diff --git a/docs/themes/hugo-geekdoc/data/assets.json b/docs/themes/hugo-geekdoc/data/assets.json index 0f61adf..4999ae5 100644 --- a/docs/themes/hugo-geekdoc/data/assets.json +++ b/docs/themes/hugo-geekdoc/data/assets.json @@ -1,367 +1,387 @@ { "main.js": { - "src": "js/main-09678822.bundle.min.js", - "integrity": "sha512-GCYuTkVsjEdMpK2AQuS/pHOOJ5DrXO03gkTYclc0FP8P7L0FEa0QKA43bVT41mISGSj9ILCP1yuM1LeeNxQqIA==" + "src": "js/main-2e274343.bundle.min.js", + "integrity": "sha512-Atj/tzetkQMROhw9Vq9Eg5cDA5Zw0j04fDL3AZNrqod5fQqakcgtNBSMvmEIOLPq6YiWX5Qu9x89m71mc/YjmA==" }, "colortheme.js": { - "src": "js/colortheme-5cd55a83.bundle.min.js", - "integrity": "sha512-LSPeKNXq7s3OsNuiZNWMLtHQiosK5c5n4YKcs24Gpj0Y5IVwZu2sAHZdXn6i23hT6NjDCpqNkAIGmIxS4trhYQ==" + "src": "js/colortheme-662de488.bundle.min.js", + "integrity": "sha512-bwxOkIbX+Q5GC6o0wPHaoxMope9EXjyHsSB6S+DorQTPIcYMV1TYow9GvYUsSBqQtNoZGjGH7xqvu0Pv5R5viQ==" }, "mermaid.js": { - "src": "js/mermaid-3ef5414c.bundle.min.js", - "integrity": "sha512-arDXAwNWNuOEooRIkl5nF0ygTbh+AIfBUQnIz/RBQjDX+KGVZc2bJDTgs8qvuwt1PkJmEi9EyL7f3kMywwKEyw==" + "src": "js/mermaid-3292ee5a.bundle.min.js", + "integrity": "sha512-nPoabkrwg+nX3uFEf732rFIth8e7YfDSwYBh+DACCqdUUvLaYgtXyvOpuutmuP2k1TG+Ctv9i+Z/htfD0g30wQ==" }, "katex.js": { - "src": "js/katex-1983cc83.bundle.min.js", - "integrity": "sha512-ZySFoehcoCQmI2dTHJU6FJy2LAL6IydddoNm62hkJ151tgC5Y6L81jPcbA2n2qKueyA/U4ODv/fvhRJXp+DT1w==" + "src": "js/katex-81adfa46.bundle.min.js", + "integrity": "sha512-49TWTdFXXXZNF9ymn4qV82hU88VaU5ojctok5CpPWgjNvrGSwe5zvbMolBwFCIqtjGRGe62uDNChs7ku5x/hjg==" }, "search.js": { - "src": "js/search-49cf88d4.bundle.min.js", - "integrity": "sha512-F9UY++rD6ugV6dTRejwnZNhZwbgi1T0as8CXppSaODHFcwFB4u/15CGaZ58jc1QA2PZCiIfe4pLJsK8CgHDYGQ==" + "src": "js/search-d0afef64.bundle.min.js", + "integrity": "sha512-QXG9TV2XCEH9ad4nmFIUBdyhcJP3kSWQgt9Dyi7Q93tzQl8NUxPjeywxYSpRujtyrWuZAwiLy8FdRbDHA/UIhw==" }, - "js/130-a8f5fd5a.chunk.min.js": { - "src": "js/130-a8f5fd5a.chunk.min.js", - "integrity": "sha512-ZLr/UBC/pVrIxw46fL3qTIupe7MIf3ZcAOarENTRnxAGIGog3BUy5Pf4en5dwuXexkmerFqNNK22UbFZ1JSTrg==" + "js/826-2ac63153.chunk.min.js": { + "src": "js/826-2ac63153.chunk.min.js", + "integrity": "sha512-nhQQaQ3XaOuGg7VNH5ajPX+rFR7cEQUBMWwSdseczWRqfWs5jP0klAE9ANyHHRKgwcD5Fr8erbzztZcvCqrcsQ==" }, - "js/946-1b52cc58.chunk.min.js": { - "src": "js/946-1b52cc58.chunk.min.js", - "integrity": "sha512-6DMQSQRfI95J4r0L1F7G1Iq0eLZE576b6GKKiG5zyEuEjhUTgbYhdcxQ6JFIb0Tde5bri0++HEvtAX9+M5tRgQ==" + "js/663-31678b4b.chunk.min.js": { + "src": "js/663-31678b4b.chunk.min.js", + "integrity": "sha512-CJpdyIoHoUAxbqutsgLgmQou8fzqhkmbgjSWp2h1OuTSswTpEa53ZVfYLY1fOZOykfSf7xxX3FIeOZYdnvt5hw==" }, - "js/469-f2469208.chunk.min.js": { - "src": "js/469-f2469208.chunk.min.js", - "integrity": "sha512-0XIvTRVgo9xdg4Xk/GVW2WuXWGXQ9DwhEmyb+3Wz9uvCOdMbMsmigEIyyMJllVvxP2Cgru04XCkd6Fs5TyamaQ==" + "js/911-59f72ec0.chunk.min.js": { + "src": "js/911-59f72ec0.chunk.min.js", + "integrity": "sha512-dUO8yfgcStImwWHVQ4QC3bvddy9rmKwfio+ion/2OBNJMnrTe9+MNF4ytBSRycKh3gPDnIZ73QPz2S6m9UMoEg==" }, - "js/453-841ef5d0.chunk.min.js": { - "src": "js/453-841ef5d0.chunk.min.js", - "integrity": "sha512-MFbK3w3smpbKZOwL7b5LC0r9XMifZtCPznNa6OjYE//6wJ330/yyN9hQH/+ut2Tbb0r13+Ipfl2a+bMp9xqmHg==" + "js/564-301f7508.chunk.min.js": { + "src": "js/564-301f7508.chunk.min.js", + "integrity": "sha512-niJuOcvXtUYwtE2ZekOD+erNGcNUvrCOq1MIdxGxoYZrrfcFz0GdkOG1h+0w0yi4nDBW24H1XfXeC9pz92ttkw==" }, - "js/361-fd12fb6b.chunk.min.js": { - "src": "js/361-fd12fb6b.chunk.min.js", - "integrity": "sha512-N/i/eX3bGOXpy59x+D7h1UtnfkhUKH1ErsudMMP41pRHqKTxBhHMVr9CefUEOKp3eFWzugGEKfLgKm7XR0EQ8Q==" + "js/81-3a33b512.chunk.min.js": { + "src": "js/81-3a33b512.chunk.min.js", + "integrity": "sha512-OE+7EaNX9jzliiJ0WxyGyQVI1b3FBir/CcDK1mA+mB9X2UnmIZiFXl4fqWh425m4pm509ybjn56FCqfq6BBbnw==" }, - "js/943-2329fd45.chunk.min.js": { - "src": "js/943-2329fd45.chunk.min.js", - "integrity": "sha512-7GsQ7jL8fmK3idqKsxebCKsUVE/PLUN60JfUq0mrJgOvRCJ9onF48LTNja+xcE6lt8U5fgXu90TU4ihKB/xAYw==" + "js/223-a5ce106a.chunk.min.js": { + "src": "js/223-a5ce106a.chunk.min.js", + "integrity": "sha512-snerbVUJiiyg5LgPt5LEW4rdXfF4msMQpTIAMd5ck+T+RMJqCK0xmWtI8FDvh5CrSg3cCoXL1gxRtxq0ux1qOw==" }, - "js/869-e12842bc.chunk.min.js": { - "src": "js/869-e12842bc.chunk.min.js", - "integrity": "sha512-wc+Eymyyq7An5vIKmjthlXdjDeK4WlEkhbt3MvLRONP7qQVB4RVa3Me7d7arK5eRdzHCpKGi9idoPm9NTCup2w==" + "js/674-17bd4f73.chunk.min.js": { + "src": "js/674-17bd4f73.chunk.min.js", + "integrity": "sha512-6j6RF20vhXVfAjmZNJVfvWS+aiG+WnucH4Mo38IR80e/z0yl/Dfdzv1AGM1o+XjIYv22kC6toShhG3HqKFy+FQ==" }, - "js/843-3cad57ab.chunk.min.js": { - "src": "js/843-3cad57ab.chunk.min.js", - "integrity": "sha512-asnZIebCk7tlrq2AF7TUV9CKuy98QKSq/xYAhglS6HOHVBYDXDGyVtrctV7Fj0D/K2Lf6jZ8TFGQSylksxnrNA==" + "js/344-91b41751.chunk.min.js": { + "src": "js/344-91b41751.chunk.min.js", + "integrity": "sha512-SMKFT2rVPNAdj7cAG9SP2jSof6CSLVJcn2+rIe3d1GZlJmkstfW13pJIzjENt6FaNGk4e2LRrLw0lDepS+PrCA==" }, - "js/803-1eafdda4.chunk.min.js": { - "src": "js/803-1eafdda4.chunk.min.js", - "integrity": "sha512-ZqqD4WkSEMthlUDLXC8zwtvIXCekJvZsg9iqEk1yd5iCZm0IZrcAYq8pftp90B9T9xVKsYMgL7Dn5HnbJdB2cA==" + "js/573-ba5e956a.chunk.min.js": { + "src": "js/573-ba5e956a.chunk.min.js", + "integrity": "sha512-mzl0rfnKpsqzuUA2my2vBW4Uv5BJM9OEnMFYylg4GC5OtAe/8Yg21lQLzZGb6tpO9d90L5eKhavhYNYLjvhSnQ==" }, - "js/478-2cf0f688.chunk.min.js": { - "src": "js/478-2cf0f688.chunk.min.js", - "integrity": "sha512-gtcC/mc5DFo/SSaN3NA+qEBL190b5JI/uFpWF2QDVzuU3ZxQnWMjeyzMT5u5OUOMQd26U+cRybl8N+fYD5PLgA==" + "js/382-2d69f8f9.chunk.min.js": { + "src": "js/382-2d69f8f9.chunk.min.js", + "integrity": "sha512-m9ot8NxGRXVIY4tLzR7FcjTSB05kOwXS0uPMeDXfk0VfcivlIMBnRC+Y+PEPhg0oDMAxjm1QOQOyrxZtmbG/8Q==" }, - "js/925-46d6527e.chunk.min.js": { - "src": "js/925-46d6527e.chunk.min.js", - "integrity": "sha512-rxgu2Q8iOZVwEFIlxI0wtb80OfmEjqG+yfWT3YHyKGUEUQa++07cZCBLQ3p/g8Gu4z8ZCk6QV9luBxHvrrpljg==" + "js/998-31a2dbbe.chunk.min.js": { + "src": "js/998-31a2dbbe.chunk.min.js", + "integrity": "sha512-DE82+VXR4rdeNg0ZF/uxITgw1h48qk4dwc7gyqj0ExvzoyjfU72kPwc+I+KPq0GTLgqVfQLTBR98rDAoXquJ4g==" }, - "js/706-7d8b0e60.chunk.min.js": { - "src": "js/706-7d8b0e60.chunk.min.js", - "integrity": "sha512-JuRNj/UTpUsVZrv/SH/AQAZrQvRoczz/L57/0OKD4i1qES/Mh1goL9lgh6YKywPHwy/25KnBkRc5+FZ0binxvw==" + "js/265-4e4c541c.chunk.min.js": { + "src": "js/265-4e4c541c.chunk.min.js", + "integrity": "sha512-ZUYu22EG4MgQBRlKCaOLuWJHbR/9nx01h4ApQt6UY9SKirMU/bLv38XyCh0cQU2SNamxZz+9WkTBivisAegaoA==" }, - "js/689-a6543b15.chunk.min.js": { - "src": "js/689-a6543b15.chunk.min.js", - "integrity": "sha512-t2zhb5BzgRTBeIGZ/LWx7Lj6lMjVVRvQBC3BQZLUnKL63OP0bgoqHKIXIWAZLEYoRVqAzumIs99m9aGWN6B9XA==" + "js/590-754a9e66.chunk.min.js": { + "src": "js/590-754a9e66.chunk.min.js", + "integrity": "sha512-8Zc4jXRB25q0vBMls6tApZCcGsCH3FHb44Uhi3GzA4ajrpWi/4CUwDKJghBwSxsyMQSAT99WsfAbB3W/+Z1Hog==" }, - "js/426-d392b5f7.chunk.min.js": { - "src": "js/426-d392b5f7.chunk.min.js", - "integrity": "sha512-uo3+Arelp4r/EyT4dZYx6/WCpcfnFMhbfz4WH/iXe98IzDbu/eAiNU+leb3Nrwd4i/pjLks+9kfjf/NPkYWsKA==" + "js/932-3e97de09.chunk.min.js": { + "src": "js/932-3e97de09.chunk.min.js", + "integrity": "sha512-9iSKm2kk5N5N9ud0rISALq4lPjWDnUCaHUNRg796pJmEsFiN/UVHp+YITb5wu0xJHfbNbcUaivNrRAu5mGQm2g==" }, - "js/635-51e27587.chunk.min.js": { - "src": "js/635-51e27587.chunk.min.js", - "integrity": "sha512-n1FVnHtRwljJV9Q75Pqnv5uhiWUYCcGGKaKzO8GO8uLc0vOXFaZ5q2zAicYQIpbANz8OxKGagjYnc5iua+IltA==" + "js/862-ff5166f8.chunk.min.js": { + "src": "js/862-ff5166f8.chunk.min.js", + "integrity": "sha512-bZUXeBkedttZ40rUgaUQzHxm8LxAw0j9WYtcACbyDhpVvxSElXifoF0rOnl88Krqnr3sFTpYwWvimqJNIf93cQ==" }, - "js/331-abf8602d.chunk.min.js": { - "src": "js/331-abf8602d.chunk.min.js", - "integrity": "sha512-DDzkZxxhbY5Cf9s2KsqXHEmp1emK8RkpB+X1+73uqtYSGMH1MapzWh3zdx4CpR/DDYNVg/Gf/Q/0hGcEacfSlA==" + "js/334-f60074e8.chunk.min.js": { + "src": "js/334-f60074e8.chunk.min.js", + "integrity": "sha512-w44Ocym3ZQ1+1w0v+aw5XWEEXH+vRsGoG+lbEYqpgpt8n97drS1v7ALq65JMtfoeTaNdSq6s2uKoa6J68f6Ecw==" }, - "js/68-103d5339.chunk.min.js": { - "src": "js/68-103d5339.chunk.min.js", - "integrity": "sha512-K6XYGdsXrC/6y4E8rLDqcTeTECYP/1dn993zSDl7ltlzneerIzm0akOmlZX3FDid8ijSi7CNULlNPZQpbOn9Kw==" + "js/4-934f5a40.chunk.min.js": { + "src": "js/4-934f5a40.chunk.min.js", + "integrity": "sha512-YS4+dBcjQNzJ5PJq+X0b8Zy+w5o7QU/n4MdIjqM0dHWkCwVhWZUdgNZciRrIdVZ6jfuNi+cZSbq+FcplFVvPIw==" }, - "js/420-4dcd7780.chunk.min.js": { - "src": "js/420-4dcd7780.chunk.min.js", - "integrity": "sha512-8FkVhFyMIvw2uA+HszrjrCdrv6wQHOKJ0uxIyutMFZTvjVtO87DCvt8Ahv9qqzaffensLm/11+hAjIzCTTd5Yg==" + "js/258-c1edc5c0.chunk.min.js": { + "src": "js/258-c1edc5c0.chunk.min.js", + "integrity": "sha512-Bt1oQsbXvq8UMlHjMWKvpkm9J06La/x7dSSsnY+StgXcjvC5afY6Reb1cHNDvq4RhwS1ricju4ZPzwJuoR5dag==" }, - "js/741-decd4dbd.chunk.min.js": { - "src": "js/741-decd4dbd.chunk.min.js", - "integrity": "sha512-SieG1mmlbY8BojwRMaORnD0DVFGpaelrQOxt72NNaQ/AGJYCTv0UTlwiYhQ729MkCpgae/hobLwPyeJqPNfvKA==" + "js/317-0413318d.chunk.min.js": { + "src": "js/317-0413318d.chunk.min.js", + "integrity": "sha512-fnTLyit39LnWgFZmugajmzNYCI6j3fhciDk6Pymu+ZV7nOh8/6wNIA2Ir/9bqW20esEjaoIzDIS7H8NaovxtKA==" }, - "js/376-8acf1e69.chunk.min.js": { - "src": "js/376-8acf1e69.chunk.min.js", - "integrity": "sha512-NAB7Uh5Ct2psMDB4zXfT44hs0i/1BrLLoM+8WTk5Gonh76UogDHIQ0nQt2iGsvG8gZ0X+2e4Jsr4PXEIuIQVcA==" + "js/907-a936ddbe.chunk.min.js": { + "src": "js/907-a936ddbe.chunk.min.js", + "integrity": "sha512-OCL2vqRhRApbjGH+kiqsDJkkM31r7ifRDfXdVZFZl4vYGc6I+xaSOuR1mV57eRYhT2B3rahRvw0hqBT//kXmyw==" }, - "js/229-f9d2d88a.chunk.min.js": { - "src": "js/229-f9d2d88a.chunk.min.js", - "integrity": "sha512-VVh3MPlcuvSFz8xWQ1vP8QyNt9Qb875S2kQXnVOM1rVw1EjK42d3K6JgVwUBwV2Bafc2LrCsmAuZAlx+57k+2g==" + "js/70-826e03f2.chunk.min.js": { + "src": "js/70-826e03f2.chunk.min.js", + "integrity": "sha512-jh+v8KpvKhE+SBgoGCKp56gVspoqFgNpVWakuRIoK2v6cosBwjYFwzYh1JXi89ntkKVngVWNmH0CWi+Iad7s2Q==" }, - "js/199-d90790f5.chunk.min.js": { - "src": "js/199-d90790f5.chunk.min.js", - "integrity": "sha512-MDsGCdohyI85qYnSq2pNWzLnCxfGzDnZdS+F761+cW8k/P8+P7s4U6W1ric31pFIW7v/ANYWSstR9FDFia8iJA==" + "js/604-d2d497f5.chunk.min.js": { + "src": "js/604-d2d497f5.chunk.min.js", + "integrity": "sha512-76Dzpe8EHYz8lf45kawhC6JkYknTBIN0bK29i4yt21Wrf499z6Ql31hpdlUm3EsiW2rYFNpoqLI47oq6bU0THg==" }, - "js/162-a1ab78bd.chunk.min.js": { - "src": "js/162-a1ab78bd.chunk.min.js", - "integrity": "sha512-wI6IXoLZMwe/Fp3R0ihm4Xr4gDblKL4Ys6Yeg60HoJGYGx+DOu+76g8WVFITcbUkFi1UiJDZpQYXin8CffZ43Q==" + "js/130-395cb664.chunk.min.js": { + "src": "js/130-395cb664.chunk.min.js", + "integrity": "sha512-egScF+3+l5OM+Ec+eNRX4UiWoZ9icpTxjOWGt8oLPS/Efp1cjGYBq/rpgb6NQAkcAS6Jm6350BuSiGVtpY00dg==" }, - "js/194-be4cbb11.chunk.min.js": { - "src": "js/194-be4cbb11.chunk.min.js", - "integrity": "sha512-II36WdnnYF/FFhR4UjmKTFRoI/GrxukTQkymBeUrU/gZPJg34jr8e3FgUXZNvFl2vU7Nj30M3qb8izhXLVPffA==" + "js/501-f9886899.chunk.min.js": { + "src": "js/501-f9886899.chunk.min.js", + "integrity": "sha512-fdXTCRVOX0ef3jNoTYmJsoPmnt7m1B0dKxV/Q+EjmALlJRoM0MUSaZRa9DbuW8DCaVdW2bwKB2xburkykELXYA==" }, - "js/274-ebda0489.chunk.min.js": { - "src": "js/274-ebda0489.chunk.min.js", - "integrity": "sha512-VmmqW5ZNZrmYKkOrhFVvdcT019n80Jb1842RqERTObkjF4oGJU2AfgMrxEyCmaafidZADS8DLnzCsu8B7Wu/jQ==" + "js/890-c9907c95.chunk.min.js": { + "src": "js/890-c9907c95.chunk.min.js", + "integrity": "sha512-gD2gqeomVVlkJ6wgB1VcUPizRgyG4JdQJ0t98yt9pVb07uzkhAAhKSddzxP/OF3tUA2bYZHrUYcgEkDAX5JOjQ==" }, - "js/944-4463b3c5.chunk.min.js": { - "src": "js/944-4463b3c5.chunk.min.js", - "integrity": "sha512-yEcPG808zIQDxPjw4mRTa+sEry5Cv7wkxZYHpVlwdo4N0T3F9v1pR+Ct95/9jE/dE/wV6NCg4fb4Pu9SwREIYA==" + "js/452-e65d6d68.chunk.min.js": { + "src": "js/452-e65d6d68.chunk.min.js", + "integrity": "sha512-oOJ9nLMs4Ih5X9kyj5828RYSUg+7Wzcz4QEhURKPZWO1F1dSFNfmih2LJcFvjSdNp8wDepvAUQcQLDz3F7MX9g==" }, - "js/55-eecfba3f.chunk.min.js": { - "src": "js/55-eecfba3f.chunk.min.js", - "integrity": "sha512-XXyzX6KOiFasf6EvoDumuoLskOvtSaRtsul342L8j0jp7PuzqiNhMj5CPQprnqJcOZtjED/Kp2EVbAVsJeoE3Q==" + "js/723-47eb515a.chunk.min.js": { + "src": "js/723-47eb515a.chunk.min.js", + "integrity": "sha512-W5+LIxRrc4yIVvFTgX3mx/Wd1K/HPhtr1j6IanCDprpeNAl2if5eMlCDZDhUJYZSm7ta4s4lb+IkdGaSf7EEKg==" }, - "js/983-2d527157.chunk.min.js": { - "src": "js/983-2d527157.chunk.min.js", - "integrity": "sha512-dM7zoeoBOuc02O49iAVHX3KRUyAm63ZX+NdYZGD2uUl31ndcnlW3GpwHZBCQT8gEd8F3LVTW3x+S1Q579MFJrA==" + "js/720-970f726e.chunk.min.js": { + "src": "js/720-970f726e.chunk.min.js", + "integrity": "sha512-KZoim0oHUzo3JWb5J9AV6RNVm43jnQJyRBbV8gYTS6te6+h4VYg62lbjrapFwBQmHOMkcyLCp1dH2PqHvL36Qg==" }, - "js/548-1c05943b.chunk.min.js": { - "src": "js/548-1c05943b.chunk.min.js", - "integrity": "sha512-ktHNAbHwfkuY9B8kkT1bjOAF/GFfE8mI36Xi+1aOcjCdL9IR49pXvTPWHVnREc+pQ5F6BUohf3GgWYlTllzlGw==" + "js/387-3546ecdc.chunk.min.js": { + "src": "js/387-3546ecdc.chunk.min.js", + "integrity": "sha512-XA2Opiddehmv/Po1naDCYg2seMBBqYOzJbDT1WTvT8gLNVuQaI61Fw1hbCxIIOz2t/5LtnqErZc+tond4WuO5Q==" }, - "js/626-4f608392.chunk.min.js": { - "src": "js/626-4f608392.chunk.min.js", - "integrity": "sha512-7S6ohob2+4G0X8FgsYQnPmZqAZUKRSjycTrvlmzNUS3gXYVGUOs1mQeqpPwHwQkU5F4TqzjStMvwgBOUWlrRKA==" + "js/913-4409c8d7.chunk.min.js": { + "src": "js/913-4409c8d7.chunk.min.js", + "integrity": "sha512-F4tEFFwhvQNpmU5uKbwwSrPFCl9OUc7VIhvs8mf0FgGtUtWkyzv5EHM3qqxksYO1NPcHM0vyPPDNJzVQAers7Q==" }, - "js/245-61d50476.chunk.min.js": { - "src": "js/245-61d50476.chunk.min.js", - "integrity": "sha512-FVVXOBvY3MTPoT98u6d6IeQtZCiVIcXoF23YSyWLjpsVmk8CcJaFrs2O9T5sluQ6u5k2L0ZDbUkygUKyI1J+cQ==" + "js/567-38dd778c.chunk.min.js": { + "src": "js/567-38dd778c.chunk.min.js", + "integrity": "sha512-qTLTZWwjSeEh+B5dvHK4tasCqW36AUD0OIK4ihl1I0dOXcyUDrH3MczQwA/hP9xY1f7TXfIjWtB1QjqRy/SjiQ==" + }, + "js/731-7b5d66f3.chunk.min.js": { + "src": "js/731-7b5d66f3.chunk.min.js", + "integrity": "sha512-jk2QFiAKNpc3Zjy14hvR4qCsAraoW82zKUMU1kZvGqtTbe9u3DyfiAz8aPj3//hioR93N4uBtcSbMOQaj2UqzA==" + }, + "js/165-ccff0039.chunk.min.js": { + "src": "js/165-ccff0039.chunk.min.js", + "integrity": "sha512-zYPY0S3QHGSRdNCoIxreRyOlQv6lOJ8XXs8+e+Yii9GKpES7s2ZqCw9AxMqOeBkcyvkcmtsoo1ErhjtN1WyuLw==" + }, + "js/670-2fb0c100.chunk.min.js": { + "src": "js/670-2fb0c100.chunk.min.js", + "integrity": "sha512-fDkG5YKslYJ+sg2MYVwDHzkbkQ4EdU4kRQBJEeIk8q5iBukultPyCCqujwmRLxm3l2CyYPY6+C48dNLSLKwoYw==" + }, + "js/805-68e3b42f.chunk.min.js": { + "src": "js/805-68e3b42f.chunk.min.js", + "integrity": "sha512-VAK7eQPqRw3EDz7adpECJjriCv10iNm68D2wayKasUUIeoP6B3HiZUFKm4CBJs9SML3ydbVEtxiRGsLe2DOzNA==" + }, + "js/3-bc686a20.chunk.min.js": { + "src": "js/3-bc686a20.chunk.min.js", + "integrity": "sha512-Eyh34TaDGnAFJbhgGi9TXMNrlbPpmSiCjULVtYNXe3Urdzz132HQIkaUMT3XZJgM2vgXJbeQmPtYkW6sR1W3Tg==" }, "favicon/apple-touch-startup-image-2048x2732.png": { "src": "favicon/apple-touch-startup-image-2048x2732.png", - "integrity": "sha512-YokE0NKCcDD/prfUCXQEs4vuVJJobwjlFbUV7G0JNWNflpfIvddwFWYi/rpxXmimyxP46hv8jS+5oekNDtWMHw==" + "integrity": "sha512-pp/8QkfwltmJfJZv6lzhl9bbE+0ltO1lcpXR3432kiV2VCl1SXOiTiJYzU/lVmTO1wMrdyFwHdk0C0ZPauVmUg==" }, "favicon/apple-touch-startup-image-2732x2048.png": { "src": "favicon/apple-touch-startup-image-2732x2048.png", - "integrity": "sha512-nCB9v/9CbzLz8sWSItEAYvUMNiFxL7ue2a9kGVlQxsH7SKbI1WDnElVqz/wmS66mEUPtgCazXEDXmZ61AgEojg==" + "integrity": "sha512-DOw5FcezHTkJ2dDT8agLZlIfrNZoxc0/OTlrkmuYgpRJiIkJykxAYQed0Ysu/MBkfwe6lWDydhlpV8oomWMKgw==" + }, + "main.scss": { + "src": "main-4434ec39.min.css", + "integrity": "sha512-r/q6wo+L6sb+dLwtDEwjwVIhQNZct+bmxfFkwHhb8irzzmXXO7mrM4jL/K4zfNYNUviw3D+Qj2qWRvrwGb+FTg==" }, "favicon/apple-touch-startup-image-1668x2388.png": { "src": "favicon/apple-touch-startup-image-1668x2388.png", - "integrity": "sha512-AUEabfLce1eUE4gl5aT+bu1o5xQx1xhKeBDAqDqVzLWIm7GcCAvNzUYFc2Q+8XsRz3xyipeCchx3pcmCptR01A==" + "integrity": "sha512-Stx19Yj7N6TXbMiFMq03kLQYs1X+ft6zmpwVa/+06q8I48P+8dG64MnC8zvl0PqzYWGwcBtCa8m+/qy5JQHzmw==" }, - "favicon/apple-touch-startup-image-2388x1668.png": { - "src": "favicon/apple-touch-startup-image-2388x1668.png", - "integrity": "sha512-HElqvqhRP5wNGCkVnq9DK63ote1m9cjGU4D75USjVenObeJC3H5Q52/Htep/KShxP6lbqYmzbZaJXbJn+DR7eA==" + "favicon/apple-touch-startup-image-1668x2224.png": { + "src": "favicon/apple-touch-startup-image-1668x2224.png", + "integrity": "sha512-OJnVL7cFjpYgoqph0ZAAZ0bQMeHZHyYzeasV314vTyarpeyVDZuw0j/U2F/7ldxgFVP+Z67RNfLGfSr6SKqujw==" }, "favicon/apple-touch-startup-image-2224x1668.png": { "src": "favicon/apple-touch-startup-image-2224x1668.png", - "integrity": "sha512-oZUXN3bw5WljJTtAQ6GsjpR1+WFebJ4CRwg49fcQnv4Qnw+MZWOMgtU+dK69mwkwL629Ur0S2tL/njFUaCY9GQ==" + "integrity": "sha512-h86d25uMsQo1wqWrc0Bm7hwQPx1/WMpIcuFXq6TV4v7QLix8jaBeXjCz6d/JG9dQVqp0rJj2L2Koh9KR4iLlbQ==" }, - "favicon/apple-touch-startup-image-1668x2224.png": { - "src": "favicon/apple-touch-startup-image-1668x2224.png", - "integrity": "sha512-0BLXRqxQg3T8EaP1feuMRtEwGe4mRxN4J/V9DUH4mPfDhO+KlkOQPt5hMSkZgm/iRCN3ontRfUqQuM9o7rNlNw==" + "favicon/apple-touch-startup-image-2388x1668.png": { + "src": "favicon/apple-touch-startup-image-2388x1668.png", + "integrity": "sha512-HrLClFRnn0TKngyeMONGPw8WFltiAd/+456Z2w+/tRYlhblrxfNxddoacMhAfywJuZL2bnMrDFxgIeisKV7UZg==" }, "favicon/apple-touch-startup-image-1640x2160.png": { "src": "favicon/apple-touch-startup-image-1640x2160.png", - "integrity": "sha512-NIOwjDakge6LbQOi6yJ95+6fDt8r6G4a/DciK3UpznPon27rcYnHSLzQcjQPhaB3ipq6m4N+0+00xn7UtgqBlQ==" - }, - "favicon/apple-touch-startup-image-2160x1640.png": { - "src": "favicon/apple-touch-startup-image-2160x1640.png", - "integrity": "sha512-sIFsy+zli4JyDj5zBsotkiPpFvF9dsMhpvIgUVE+LqPIwZFYkE2GtKnP+KVNNykAFVsDkcy3QZthcm9KK5/UkQ==" + "integrity": "sha512-bkGRXPNafzTvHm7iqK90kmtvdUIg1davqSECk72QWcc8KQhB58+j6Y/Lsv4PNhuki/3CafltGYPwq5DC/uFwLg==" }, "favicon/apple-touch-startup-image-1620x2160.png": { "src": "favicon/apple-touch-startup-image-1620x2160.png", - "integrity": "sha512-RHyTtirEIbYgcbi7o4OA9ERX20kKWPkVUxkOMU4r4QEUs00mdXGFgFcoJi9ppH8zvlQJ+axSe1k0kqglEeeGxg==" + "integrity": "sha512-a52rXNm6ZAK3hBxTW9ySrYEX76I11+P20QU4eS1spuSHH9byqr82n2C2vWsB3ASOvJgF6L9X2m1gTfcezcWa2Q==" + }, + "favicon/apple-touch-startup-image-2160x1640.png": { + "src": "favicon/apple-touch-startup-image-2160x1640.png", + "integrity": "sha512-lAMwiXWTpWy3R8WXVK0Pxyfzh+nVf6TWxB1CS28nckPIvoJZ01UDW7MX15R6VJH4hC6b9yBwRFqgiWI3ey7XIg==" }, "favicon/apple-touch-startup-image-2160x1620.png": { "src": "favicon/apple-touch-startup-image-2160x1620.png", - "integrity": "sha512-8lp0hbQZ0tLs8G5UaHOnFg3B8YCeoB7Hwh+MIrSyPJN5L6bsknvHKh7OJ+CSe8y6bNMw3oaF8McuFZdwAFz8pg==" - }, - "favicon/apple-touch-startup-image-1488x2266.png": { - "src": "favicon/apple-touch-startup-image-1488x2266.png", - "integrity": "sha512-BrZPqZBUqE4P6wGmGstthjdoJS0ZHMH3+ZayiHZ98kU2uFaalUJ06ufYtqwtYGAjt1gm+jRcecWpXQS/dSuctQ==" - }, - "favicon/apple-touch-startup-image-2266x1488.png": { - "src": "favicon/apple-touch-startup-image-2266x1488.png", - "integrity": "sha512-9IY9tbEUW6SA5+SVO7ZPRrHLUhxxWfNjgzzy4zjJoRKs3dkCZjfIblJ/LryGxVn8ADdMsQ95NnoHsrdDl2DNnA==" + "integrity": "sha512-q4BwNvR4nA/lX+O3hw5SAhDnyOAsxK2QbaUt0J2rBVr9nhewmvgyvPEQTt/rI2+v5Obt8ofbB1nKKTUKpCPpTQ==" }, "favicon/apple-touch-startup-image-1536x2048.png": { "src": "favicon/apple-touch-startup-image-1536x2048.png", - "integrity": "sha512-vBTv46G4vFcoEZH1UBNDg6rsFbXq89BJaJxMUAvYJiRg/KBpufEHw1kgWTA2oNCYlNRhMT0hjxNJmmqtu2COwg==" + "integrity": "sha512-gvsMZlTvNSZUJ52q80FFfNk+oLaAw2w8EEcX3ns9QYdNJAhn51+VHnceIw49xiQpMZxu8djiEDhmGAbrnBc8Aw==" }, "favicon/apple-touch-startup-image-2048x1536.png": { "src": "favicon/apple-touch-startup-image-2048x1536.png", - "integrity": "sha512-OI4gHQ4IldAV8SyUc2ho9SbbYyp+XwDruORa1fQ//ajtHrnOhcJwbHKITDU/txXi9Mu8lNoQF4ZL0KlwbgWACQ==" + "integrity": "sha512-HddG543jHxr+S6DljYFOj+mOrh5xQfIv+Ca2aCDuY+AU15vXWvuMeRAaNB5eGaXUA5ngSrGkPSR6cZItcipmFg==" + }, + "favicon/apple-touch-startup-image-1488x2266.png": { + "src": "favicon/apple-touch-startup-image-1488x2266.png", + "integrity": "sha512-M+iU7dAuzTuuhlkFLwLOnkC/hsN6pFEuwngs+PmKEQeHnWw/nzIsfovwEjQTm5Bz7h/bbwaF8szZFHGh2lNl5A==" + }, + "favicon/apple-touch-startup-image-2266x1488.png": { + "src": "favicon/apple-touch-startup-image-2266x1488.png", + "integrity": "sha512-SOCJUsMcfWiGiQFMdQ7lhUZrjio+/jwrHidpBmMZqxQL8TESi0ODeU3F1ARleaPF+rvjcWmpFpmFN7kn9tkaAA==" }, "favicon/apple-touch-startup-image-1284x2778.png": { "src": "favicon/apple-touch-startup-image-1284x2778.png", - "integrity": "sha512-QponzIbyJK4swXUNcRvBOA2PxLVMtpler77JaGFFEekuBLDSEjgqlFQpUU8OP9D7azxV4hbCuo3mIBk+ACVU0A==" - }, - "favicon/apple-touch-startup-image-2796x1290.png": { - "src": "favicon/apple-touch-startup-image-2796x1290.png", - "integrity": "sha512-9vFVbbDidzf6kotWFjrbzjX+Hb3e9iMj3dcOoIi4sCPiWs1f7Syje/YHCEAcvexGl/lBmx2dQGeGuh240Dbk5Q==" + "integrity": "sha512-HytWl/niNY0h8Z2g+lCOn7O9/fpBS+oPU73GnBNCd7CDwHs+IpzZ0duuRlKmfdH8x80y2bsK5DHcRDQo8TJOPQ==" }, "favicon/apple-touch-startup-image-1290x2796.png": { "src": "favicon/apple-touch-startup-image-1290x2796.png", - "integrity": "sha512-lPcXLHVgYWacvHsaYIGTBEgEkihk11RA9rOu7GYdaYcwsZ589w9SVPnKz2ZrWbAnumFBJcSbtsjFbnKtUN1Y/g==" - }, - "favicon/apple-touch-startup-image-2778x1284.png": { - "src": "favicon/apple-touch-startup-image-2778x1284.png", - "integrity": "sha512-Y3JKY94vTDTwDyfkevU9SzMFCCwCxc+5E6HXGbWNrDEC2G/pBjfc0Dtj7vjUWwXYkGlvz83mv6lOwyx977qDww==" + "integrity": "sha512-uE8D0pZL30x6zd3sq8tPPcmC6Q8g2dSrnypzZGllIkfSGVoj+tSEKcYrS+/L6DPM3jMuF69TNScufJtVA+Qupg==" }, "favicon/apple-touch-startup-image-1242x2688.png": { "src": "favicon/apple-touch-startup-image-1242x2688.png", - "integrity": "sha512-idI9QV970BBuqHVUK3Iz8/VIJIxbUSdsO0lRMhhhuM946UwU6hxkmEALjIAOUVsoNocLx83IDJQ3xFzvJdmqhg==" + "integrity": "sha512-IR0rOpZn1Vs2fT7UavU7MA8D/PDGS7XmaTwkiPxLi3207GPDxZdQHIKA0vIJSodDGJT/ajON/zxDciq/6Jd00Q==" }, - "favicon/apple-touch-startup-image-2688x1242.png": { - "src": "favicon/apple-touch-startup-image-2688x1242.png", - "integrity": "sha512-pheYOnXH6xTfyN6Fu/WWt8Iri0Gi5GYgz+omDYRJDm0Hqvbzj9d5qdSWFNajsP4cq7SIWvufk4HTKM8HRlJcmQ==" + "favicon/apple-touch-startup-image-1242x2208.png": { + "src": "favicon/apple-touch-startup-image-1242x2208.png", + "integrity": "sha512-V2CpCg23Xb5d0wHJS0dDPjXs9Mk2CxMOn2cx/b9zC2RWBR9QF/F33zI+MioRQ9RPqCZwt093erdAiEiOonDS3Q==" + }, + "favicon/apple-touch-startup-image-2796x1290.png": { + "src": "favicon/apple-touch-startup-image-2796x1290.png", + "integrity": "sha512-Hn5Bsg7wYJhZhE+UmIMBS0lg+lHWjcrNjY/23Qxvk8keWq/D+LEz8UBA8+b9xaCF+HXo39l41keoix9bvg4zyg==" + }, + "favicon/apple-touch-startup-image-2778x1284.png": { + "src": "favicon/apple-touch-startup-image-2778x1284.png", + "integrity": "sha512-CF8j/XPdlQUQHNjxGO59cS2GVyskflUEPnCqKOWellvVq+RdRa7r3952bNVlUrfzdCoaeszmZS4n71qn2ZTyTA==" + }, + "favicon/apple-touch-startup-image-2208x1242.png": { + "src": "favicon/apple-touch-startup-image-2208x1242.png", + "integrity": "sha512-Ime4TqPHk2qrjA8eHM50as6Sgnlvn3pCkLlI1B/yBDvZ4CPWxDidSmWeJHeV//3dThozo95VllD1bvz/cw8gQA==" }, "favicon/apple-touch-startup-image-1179x2556.png": { "src": "favicon/apple-touch-startup-image-1179x2556.png", - "integrity": "sha512-pMG0JoxB6oSXTlvDmMqd9eSTw4AKh79yoezlt4rY84c/j0rNq5TDlA9ufFbxlaG7AmmPLuIHjpF/QkxEsvcOVQ==" + "integrity": "sha512-CGw2nqsLTTrX3YjpHGuJD18Mv8tHySni96E6Z6pTGwfAKK1l6UCqFtbRlUZQ2MlN8vudm4aFifKtPDlFyyAOzw==" }, "favicon/apple-touch-startup-image-1170x2532.png": { "src": "favicon/apple-touch-startup-image-1170x2532.png", - "integrity": "sha512-7SGtX4osQ9usUAR0Y+Tzhm1yNgbuFqakrfUdpIq1Ew+G3CaKPz7yAIhAOaVzZjx/1845xF2xIuzQDqaUv1MZOg==" + "integrity": "sha512-Bctz35gi47GseEkA5EmsAVmtS60Vhlrc0czWW4UY0cQqIGO0VfoGvSXaccCNesY8VMgVWoZayLxcwrUWbUKK9A==" }, - "favicon/apple-touch-startup-image-1242x2208.png": { - "src": "favicon/apple-touch-startup-image-1242x2208.png", - "integrity": "sha512-tt0ce2lqND4xuWki9CvqM5EXGZ7NX4v9RwYIZ9VFD1z3uxqBhWCcCNvVoSxRRWM+dYwsarkPg1K/hx0V3lkP5g==" + "favicon/apple-touch-startup-image-2688x1242.png": { + "src": "favicon/apple-touch-startup-image-2688x1242.png", + "integrity": "sha512-ZamHO4IC0SZ5XhNCI0HaeGaKiDgLhuwWZ12z9Rt0auKt9bvtVucJgI74iAmRXE9zZNE5nmZwMuhajd+dzmZamg==" }, - "favicon/apple-touch-startup-image-2208x1242.png": { - "src": "favicon/apple-touch-startup-image-2208x1242.png", - "integrity": "sha512-bvniXuoGpDamwT44txRGN9oddmRNAIhmqNxeUknES1xC6i5wyBwREP9sAwPnpEhN331l6Cn5Wb1qdGA9QaLlxw==" + "favicon/apple-touch-startup-image-1125x2436.png": { + "src": "favicon/apple-touch-startup-image-1125x2436.png", + "integrity": "sha512-FNQGGCfYgeFjeFzLFNmqcB9bcWaEX6rGk1bUS+oetvVQBU9iZ/YYp9go1A5oeifV1MMX290mlcDwG4i/mg2I0g==" + }, + "favicon/favicon.ico": { + "src": "favicon/favicon.ico", + "integrity": "sha512-oyLtFbxhoEnH/aFDXDWkC+S1LT5M7VHeH+f+FOLsy8JzsswzGR0VkLu/BFvzyVQTzexmfNjP4ZFm6QJYW1/7hw==" }, "favicon/apple-touch-startup-image-2556x1179.png": { "src": "favicon/apple-touch-startup-image-2556x1179.png", - "integrity": "sha512-ITdm5LRh+q3NInMJTTOZoAxYELGjGZ9SpVdNHNp5ybF1qTxX/nkssKXMfAJ/dfm37kyxRPWyQyXQ/KUHJLSocQ==" + "integrity": "sha512-Jtknw0tI9ryKINVqgtOWLR8dZgc6cPhrh1XrDwQHRGvfdwTcU2/AGVr1w9mj59RZNnMZZgikpdW0ebZuUe4YjA==" }, "favicon/apple-touch-startup-image-2532x1170.png": { "src": "favicon/apple-touch-startup-image-2532x1170.png", - "integrity": "sha512-4Qc/I1TX0EHaDimxw8frjq0WFaSvBd+t5pWziJ3j6EgPCjWGjpMS+p2ydudjsztvXi7zpOVWNnSLtt7XsTtFcA==" - }, - "favicon/apple-touch-startup-image-1125x2436.png": { - "src": "favicon/apple-touch-startup-image-1125x2436.png", - "integrity": "sha512-h9ZTyMSymNZHrZtOpWb5N2DJ4vircBLXwHRJogSUxWTqaaMv1v9niPpGPG+wPPkE385kGt34FvHcUJduQltZdg==" + "integrity": "sha512-vAjXBduB/PLTvOwTsCf+VvkRq5PNhxCjDMJ408ul3wFjUb7owqU/LKspOtkNuxOE2H9u2aXqJhdcR61AUdeP8Q==" }, "favicon/apple-touch-startup-image-2436x1125.png": { "src": "favicon/apple-touch-startup-image-2436x1125.png", - "integrity": "sha512-zbbCawkNNm/X+dfE9EKwShnCNlgekifcgyizmbWo+hhqzANicUVRr0mdHbiHtiYTvaT9r+5bp82CCGSXV1I92Q==" - }, - "main.scss": { - "src": "main-c93819e1.min.css", - "integrity": "sha512-8Rgb1yYpTWoY1ehn3iYLL54xVXSYqFMoHc+S0R3Nao02AqnUhxHEcUSDd8xQ2q0IB6TxU7P0QGWAqWLD319dHw==" + "integrity": "sha512-yW+pbc/y6e4ZtL/PfbA77bs++nyHDjt2LewdNSgHoFytdO/0IzCi2th64HrqjkXAnwieqnqBIHOmfQDb6ntOxw==" }, "favicon/apple-touch-icon-1024x1024.png": { "src": "favicon/apple-touch-icon-1024x1024.png", - "integrity": "sha512-x4EPwmg4HpFLbCAC4JFhaPNIwuNQCPLfjWqK9ai9I1+oLOhtZbgNbKxjBz/AxFS60IYVhyZvJCyFQMYbIC+SxQ==" + "integrity": "sha512-uNxs8UKFz57bkfl4uezhkIl4VfZIuSOV6lcaE/0VIYbx8hFZ7SJTShz9wiIzPMZsCSHKMY5P7uhr0FigLGD+3w==" + }, + "katex.css": { + "src": "katex-59efccf3.min.css", + "integrity": "sha512-LoA9jYWADilujFvJrka88siGszaREbfUaqz+lfLV+JJvNCxFCliO5Xxao82BEGTAgFPaWsDRe08PU9CrASv0HA==" }, "favicon/apple-touch-startup-image-828x1792.png": { "src": "favicon/apple-touch-startup-image-828x1792.png", - "integrity": "sha512-4cxF+n/FQtSCnoGbBMnp1aeTR3qnW6/DtzowLnlDRpCnSxRjSXOg7AizEx1dw0ICoqN7rQE3/+elGjgog7uxsg==" + "integrity": "sha512-lOKELuDZcqdtCvvU+wU4XbRSGVx4j5fXOViEIy8vJ/H/vad9Nb1HjXA517Mo2X3KE+xWpKBa7iaRKONe2NR77A==" }, "favicon/apple-touch-startup-image-1792x828.png": { "src": "favicon/apple-touch-startup-image-1792x828.png", - "integrity": "sha512-1oo0qYsLrdER2jKA50krWOfppk6+zUwYXkoJ5pcRESF2wZFHT1DbuLF7j9ULJNgWIc4OiL1FF6PsGbX4UVO0jg==" + "integrity": "sha512-Q0rPW22UcOSrAk1Cc+VJElqo1FUOxN6M5yk6rr19l15aDfwMmlWVLVCEEuYr7YN9Yd7P6oFIP5krWpBwP8XevA==" }, "favicon/apple-touch-startup-image-750x1334.png": { "src": "favicon/apple-touch-startup-image-750x1334.png", - "integrity": "sha512-XJxhIzy72gE1Cpgf2LYQRRBwm6mwmuXZ0dCaJMebL+dhBCotd9kANbQhVOZXwhajwpxVZrwDnoQFBW551wmXyw==" - }, - "favicon/favicon.ico": { - "src": "favicon/favicon.ico", - "integrity": "sha512-oyLtFbxhoEnH/aFDXDWkC+S1LT5M7VHeH+f+FOLsy8JzsswzGR0VkLu/BFvzyVQTzexmfNjP4ZFm6QJYW1/7hw==" + "integrity": "sha512-zFiwOUbcWZ5ZT6WIoo5JH5sBgNRKgaw+38nZ4INvrJksTXVYiTSNK+HI+g/fpjATMD3oIy3zRD1QD5MF0xcI+A==" }, "favicon/apple-touch-startup-image-1334x750.png": { "src": "favicon/apple-touch-startup-image-1334x750.png", - "integrity": "sha512-z9MTHnbgUAFNt+UEklBBTTdRhvOEDgOr0/ZRFxKibO3qN3l9oRLtWFkgbl/3eNhUpfq57KYsc+IU4/w1ok2jQw==" + "integrity": "sha512-wS3VX86WIIMYLFcu6PTWwilPBtW2/eQgoFC4nUPbxOhA6tDCv0jXfLhpFBk0kEPvtFGqIzdMIwkhB3Q9z2WuEQ==" }, "favicon/apple-touch-startup-image-640x1136.png": { "src": "favicon/apple-touch-startup-image-640x1136.png", - "integrity": "sha512-uq4us0Q1DP1lHqmRSDXrU/gorQahSLk+oKQ7TgczYMNLhKnhi+Y2hHk8FqXvB2B3dJrgyepd0XD2ZMiZudq2bA==" + "integrity": "sha512-Ol0z2NW7PjFrVwo5GQ0IolK6IsFJyji9biOIE7BW9wuid/H8VhMW6/j4Sxh9SZ/v0NEtQqaA5VOjvLT7hcpxVA==" }, "favicon/apple-touch-startup-image-1136x640.png": { "src": "favicon/apple-touch-startup-image-1136x640.png", - "integrity": "sha512-Ix/GZO3qGzFYVpIlNa7jYkVyq7n1kAaQZx2Pobw+fqGGE1GqElPKCdUwCBCmxC9OM3qrdA9qB9AHg8IdOqNb/w==" - }, - "katex.css": { - "src": "katex-59efccf3.min.css", - "integrity": "sha512-LoA9jYWADilujFvJrka88siGszaREbfUaqz+lfLV+JJvNCxFCliO5Xxao82BEGTAgFPaWsDRe08PU9CrASv0HA==" + "integrity": "sha512-l7AF6JJHQNpeEOT32Tj+sZsyigN+FIer/RLxKqwLzXZ3cPMizSjmL5FjfoyZ7waJfDpxV448BWJcpObDEp2f0Q==" }, "favicon/android-chrome-512x512.png": { "src": "favicon/android-chrome-512x512.png", - "integrity": "sha512-+zvj9hEahF0mXa6M9DCcmUfrRL2A9DRtRBbIZuD+adAX+KrGEKq/86X6v1zpxq3C34TXFtSroQ51Us0H0sZO9Q==" + "integrity": "sha512-XmRxXro8tWSW9pyhfNcuoIVqHqOHH051Lh8NpsR0bMMILrx4QSIGI+IOKo2DYafyJ32rRXQ9XapCUigUoU9lVA==" }, "favicon/android-chrome-384x384.png": { "src": "favicon/android-chrome-384x384.png", - "integrity": "sha512-MN160lMatZUhdpfOjITGN2NRViQENPh59k2sMVyzelDawyWrm9CrK8U/9u642UL0kEhsBc+stqMxsLIPs/0IUA==" + "integrity": "sha512-aaWWtDDKoURtcZjVjuEygWnAX3JmiMIkzG2gw0e90QU2BBiMEFRh+Dq5lONs3NKviyhKrWjYXktnLzbBDgwYqw==" }, "favicon/mstile-310x310.png": { "src": "favicon/mstile-310x310.png", - "integrity": "sha512-yznL6hsezsoaIlzrRBhdlvfqaotZ4fDs2O6yFs4ksJ38llkYLEQOK0dR8vRZj7IrBA9cPBpFnF8a7zren1/dsw==" + "integrity": "sha512-0cJZvExwO4YX9shSiRIio61MHiRYzmd1ZKJcIuurb30a85VAebz64fGkg5WgaljhDufbzQV8juSMSMdjVU1PaQ==" }, "favicon/android-chrome-256x256.png": { "src": "favicon/android-chrome-256x256.png", - "integrity": "sha512-EoDoPR6+AyBjbQe+6nQuk8ztSv6IyE5r5+ALh8HWjvAIKfoB9gfMuuKlo6PJVFxWyEDgJLpjhmqPMNwrBjK/og==" + "integrity": "sha512-7K6tC2Nt0G4xGWOnXI0eHTnflCfBnmoZI+41wRXubcINCVj9zfE1urbpRvWXu+JEkyoD+/1i/SHKJvlj0V8Qng==" }, "favicon/android-chrome-192x192.png": { "src": "favicon/android-chrome-192x192.png", - "integrity": "sha512-jURssFPJfNTqdQQM6YGPRIejKPiCmHdydbOkKux0RVGtQdIM/JqpTOIxYtJoWxIATm4yUuoowB8ZLR6irsiTsw==" + "integrity": "sha512-vFuJFgoHAo1gYkmVDylyiAHTUEAzZWmusNxCf4BKZucXjB1O5WSNrnaDHd/P1U3If7pTDG3zM3R8xll9qn/TFw==" }, "favicon/apple-touch-icon-167x167.png": { "src": "favicon/apple-touch-icon-167x167.png", - "integrity": "sha512-r21EOceDocSx20MdajHg68eSKbmmHv/bm+1GwZ7cVQmzqiTOAVNgvG7Q7UD3hWzT6PY+YlbU7d2Smfzwgd+NVg==" + "integrity": "sha512-n9IE0XrWkdUJCWDP+BXWGZ3f8YPWUt0j1YbpOql6ECHbBv94MqBZsCNgAAZcz2nlngn6B/VsLquKPF+C73uAaA==" }, "favicon/apple-touch-icon-180x180.png": { "src": "favicon/apple-touch-icon-180x180.png", - "integrity": "sha512-EyF0U+VyXr/sfsXNbJwdTQ5IHTRkiy4dp3dnYqgwy5NTelKNTXoo8yn70jm7h5t83BBrNVIGvXfgTUVGjsXQqw==" + "integrity": "sha512-MOwxPnc3afecYk/ITIQPavTxfNlk68gSBXzbhrf+cYuXaXx+OKApfhsfT0MwS0RjFsi50lirbvtJyyWUce+AnA==" }, "favicon/apple-touch-icon-precomposed.png": { "src": "favicon/apple-touch-icon-precomposed.png", - "integrity": "sha512-EyF0U+VyXr/sfsXNbJwdTQ5IHTRkiy4dp3dnYqgwy5NTelKNTXoo8yn70jm7h5t83BBrNVIGvXfgTUVGjsXQqw==" + "integrity": "sha512-MOwxPnc3afecYk/ITIQPavTxfNlk68gSBXzbhrf+cYuXaXx+OKApfhsfT0MwS0RjFsi50lirbvtJyyWUce+AnA==" }, "favicon/apple-touch-icon.png": { "src": "favicon/apple-touch-icon.png", - "integrity": "sha512-EyF0U+VyXr/sfsXNbJwdTQ5IHTRkiy4dp3dnYqgwy5NTelKNTXoo8yn70jm7h5t83BBrNVIGvXfgTUVGjsXQqw==" + "integrity": "sha512-MOwxPnc3afecYk/ITIQPavTxfNlk68gSBXzbhrf+cYuXaXx+OKApfhsfT0MwS0RjFsi50lirbvtJyyWUce+AnA==" }, "favicon/apple-touch-icon-152x152.png": { "src": "favicon/apple-touch-icon-152x152.png", - "integrity": "sha512-lRnGXbXzsVrCxAbIg+I40XjDAsNROy/6BPlPC/+2F9v3p+3g9vcy0F8HA/DlVD1I52HYfNH2p1ux1DbZArdGRQ==" + "integrity": "sha512-Tl7OztU9EPEmqAB5g1fZbDfJILIFGGRYoXVRLmBli4G/kDRcZMhsZPEpwjcaElSsZ6Vf+GOBX5w+y/37wcLNmA==" }, "favicon/apple-touch-icon-144x144.png": { "src": "favicon/apple-touch-icon-144x144.png", - "integrity": "sha512-l79kJAsLq1OgOOq2n2BW21kYMTNd51vkjJwc7q1GYIswhF88t1hoHFQSfVDjIeYChjWKGwxBvHwEwIvjDBW7eQ==" + "integrity": "sha512-RcXaoNQ/5TvDfRK3B16Xmbool22kaq9anaZ/+bxz6T4IkXly6Ss4V7E7sjAHY0z9VdBi8RlOXmCf1QVF/bO1UQ==" }, "favicon/android-chrome-144x144.png": { "src": "favicon/android-chrome-144x144.png", - "integrity": "sha512-bT2lgHn/yXT3P6/li3MKnzS7wg9O8gNzZiRn0Wb4/mRGCHnNcWgtbKBQUf3OKDgoX3RLux+RtERWl5Ii4ByGwA==" + "integrity": "sha512-MwJ9846H56kKjlblEn11IvX5wwgw8thJRda/Oz17yUs75jussMZX4XX5CFgp+Fgcj00FydeEm2x5QX4aay2H4w==" }, "favicon/mstile-144x144.png": { "src": "favicon/mstile-144x144.png", - "integrity": "sha512-bT2lgHn/yXT3P6/li3MKnzS7wg9O8gNzZiRn0Wb4/mRGCHnNcWgtbKBQUf3OKDgoX3RLux+RtERWl5Ii4ByGwA==" + "integrity": "sha512-MwJ9846H56kKjlblEn11IvX5wwgw8thJRda/Oz17yUs75jussMZX4XX5CFgp+Fgcj00FydeEm2x5QX4aay2H4w==" }, "favicon/mstile-310x150.png": { "src": "favicon/mstile-310x150.png", - "integrity": "sha512-r+sceTi0g2LBKAWM7DHlg3oZwo4cWy+fKjlCydQD3EonqCFDzYXiRDbry3YErC9WNBBliP2bM4xMTrTZgm+Kwg==" + "integrity": "sha512-533u9y8NEHRs6GP6+n7s7h296T50Y8dwB8FcS5htN7k+V9hWfurx6zfeqw6nDA9r9viOcKQXlJ/XfZLEpaMGMA==" }, "favicon/mstile-150x150.png": { "src": "favicon/mstile-150x150.png", - "integrity": "sha512-GPqhaPXp69HpgcB2Ah/xazMg3W3KmL8XMOH8nhvKUkU3o3JSkw1DIaEzZgtL7upFEkXluCdyRAt/6Dm16fh+DQ==" + "integrity": "sha512-jm3Ncpm56VyOSvOsiKRMhX/AYl6vbZr9n80if2QsEyx/Rk9/+owriCEhlKkQ0krUrlEvvAh4Yy40JIiB7GHZYw==" }, "favicon/apple-touch-icon-114x114.png": { "src": "favicon/apple-touch-icon-114x114.png", - "integrity": "sha512-H+TUSPPwtVHdJabqOhKdPxWjB9nBs+PMgjvU8+k2ODvo3LKfBoJGm1GZ3yxYcI5NN4a7lp/CEl3dpl7ip3WGrg==" + "integrity": "sha512-ZiGvyFWIDPl9YZ+NOn93b/7EpDtrw97agCizkuDdFRLr9I2u9FFZTnoik7LJapL3dnDGYD0E8qTJULOwMAthzA==" }, "favicon/apple-touch-icon-120x120.png": { "src": "favicon/apple-touch-icon-120x120.png", - "integrity": "sha512-lmal7rWGjyN5/sPczKKS2f9PArcANPIpGSIBXeihN9qOXty8XmZXIRdxlgWD+57jqTnJVTAeJSkK0dXFaQnG2Q==" + "integrity": "sha512-0PVV+vO18IoVIOgedCOGdzRv6DF/71ygDGR7ijVJOT06xOsACnKooiS25YcXg6sVYjSBNO9omRGqYS+icunJCw==" }, "favicon/manifest.webmanifest": { "src": "favicon/manifest.webmanifest", @@ -369,7 +389,7 @@ }, "favicon/android-chrome-96x96.png": { "src": "favicon/android-chrome-96x96.png", - "integrity": "sha512-rY/ZP3MD9/rW30HxMcFIqMWmFE8NDcxtqZZV2TjfHedwuE6DQKtx+KnvrLZdB6yZ7AhdsmsGsqn/a+WukRV6rw==" + "integrity": "sha512-Ml8MN6tFQcvVu1M9uFZyZxrtkJwcQv1i/VBs+6YDFvfNkGkvAMGmD3xmvS6qPbc6zazvpncQoAwihcwDYQ1DdQ==" }, "mobile.scss": { "src": "mobile-79ddc617.min.css", @@ -377,35 +397,35 @@ }, "favicon/apple-touch-icon-72x72.png": { "src": "favicon/apple-touch-icon-72x72.png", - "integrity": "sha512-ZatvjdL1snYdxe3iXsOU0ltj2Ci3v+zK/GOZ6sb64zDrUSn7VO7imIyGcMUJEX9GJ2Blg5o5R7JFQaCS+ejuJg==" + "integrity": "sha512-xtDi3mPErMdQnOCAF36WY9+Yb9IEgFiWZxcwfI8ZyzLM+zSVXieiTNgvMp3Q7FKbYzuO/YbcY34aSpDeNbwSkw==" }, "favicon/apple-touch-icon-76x76.png": { "src": "favicon/apple-touch-icon-76x76.png", - "integrity": "sha512-WwGHnql4UjcNS6UwgjUR7UVaXeLtL32VfbFmNloqRECNEgrNe7DCl4ojpNFB/VX2LjP2dzZl7D0GKdzM1PF+6Q==" + "integrity": "sha512-5mXpJ0SOGLyJhM+1sKauzI78IZ2e3KX0Ut6bakTWECIS+GMtGU9i4YX2kCgIlf6MYD8NlHhNjgjTXguCQvpOkQ==" }, "favicon/android-chrome-72x72.png": { "src": "favicon/android-chrome-72x72.png", - "integrity": "sha512-5+665FIGx0WNd2RMotKVPKd6Hr5B91p3PEJDk5tphr8YT6TjMRlOAO3S1JiyRgYX1Ad2zvBy16O9m2xe6Oq+/g==" + "integrity": "sha512-yRiTvAL7S+LN+QqFT20OKvlUxy76dWOdYDt/oYrlvlITmWTB+IT3zscjYV3a+eQK0aaBnI3BYvyPpP0Jl0cp/w==" }, "favicon/mstile-70x70.png": { "src": "favicon/mstile-70x70.png", - "integrity": "sha512-uk2TelCQgggqSrlXZqNI1jvoS9c1whC2No7MVAwo5A436F9YnrN8UcRQR8FIqXcf1QYdDqgu7T/PsfdKJGpXqA==" + "integrity": "sha512-YR17fb3y2Mop9r3sGULUWVS08KBsjl541ijD4NfjH9B7MHXot+bKNm+xtqlYSrTNnh1Q5swG1pE8ilH8aT77kA==" }, "favicon/apple-touch-icon-57x57.png": { "src": "favicon/apple-touch-icon-57x57.png", - "integrity": "sha512-i9gj+VyNSIRC+MzON9tQLFnJeILsNOSBM+pQ7Xvlvme9T+tddMojY1bdqsy7EbYt0wxmjAg+4OaTPWCP6mq29A==" + "integrity": "sha512-3QaWN6DLuPtw8MP7aduHbuO1xiPEJlWE5WCckCnbLThBoYUOB1RV8flSAFAE11UpmqefMB4r2sWwuGRuHFSCtg==" }, "favicon/apple-touch-icon-60x60.png": { "src": "favicon/apple-touch-icon-60x60.png", - "integrity": "sha512-s0boJ/PY8f+qT/WS73RM5n9UNxtUvjemVOvKpC2Yz8e1iT7zxhQUwg4FRQ3kWMe0jGjA33unYfH0h7HPyXhfgQ==" + "integrity": "sha512-tHDTnMw35Ydrn4aUvkaXwVUsqBjboI2vqm3n2lL5jf21t6SMoekze+YFNC0MBNWEG08ajVQ9L7Qljf9Z2evhBA==" }, "favicon/favicon-48x48.png": { "src": "favicon/favicon-48x48.png", - "integrity": "sha512-lJ6dZkyrr8SJezHQg048oTdSW2Y7hsBdYITYStFpbiBUNMoVcrqzLl9I6pkuwfitMevjJNr5VZA0EDvy+4fhFQ==" + "integrity": "sha512-Yp178+WA3ntd5AMrdskywuc8ubmWN9qqghWXAyyzbpBBMhKplIP2BveCOP6R16ZUGOcyzPnzjSRY3yESXjcZCQ==" }, "favicon/android-chrome-48x48.png": { "src": "favicon/android-chrome-48x48.png", - "integrity": "sha512-4TLfus/Gh7ss8fkmuvguqSV7onXq8kkXwqqRq2nabo9L1T1N4055IGHV2ByPF6DQPs6iJO0848eF4LJHs12Fxg==" + "integrity": "sha512-pPHYffX13GvEmTZMLvEocQDWE7rdp0KIM7cdY3w24+3H37j5vbo7K2xsCR92GpzBNXkw0hzcJcdyktaT+E1sag==" }, "favicon/favicon-32x32.png": { "src": "favicon/favicon-32x32.png", diff --git a/docs/themes/hugo-geekdoc/eslint.config.js b/docs/themes/hugo-geekdoc/eslint.config.js new file mode 100644 index 0000000..42e87cb --- /dev/null +++ b/docs/themes/hugo-geekdoc/eslint.config.js @@ -0,0 +1,22 @@ +import eslint from "@eslint/js"; +import globals from "globals"; +import babelParser from "@babel/eslint-parser"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; + +export default [ + eslint.configs.recommended, + { + languageOptions: { + globals: { + ...globals.browser, + }, + parser: babelParser, + ecmaVersion: 2022, + sourceType: "module", + parserOptions: { + requireConfigFile: false, + }, + }, + }, + eslintPluginPrettierRecommended, +]; diff --git a/docs/themes/hugo-geekdoc/layouts/partials/language.html b/docs/themes/hugo-geekdoc/layouts/partials/language.html index fdcafd2..b796cd6 100644 --- a/docs/themes/hugo-geekdoc/layouts/partials/language.html +++ b/docs/themes/hugo-geekdoc/layouts/partials/language.html @@ -1,4 +1,4 @@ -{{ if .Site.IsMultiLingual }} +{{ if hugo.IsMultilingual }}