From a4645aca6d0139d6fad8bb55a19c50cf2c55e2b4 Mon Sep 17 00:00:00 2001 From: CAIRO Date: Sat, 9 Nov 2024 16:41:02 -0300 Subject: [PATCH 01/44] cria docs do gitpages --- gitpages-galt/docs/home.md | 1 + gitpages-galt/docs/visaoproduto.md | 1 + gitpages-galt/docs/visaoprojeto.md | 1 + gitpages-galt/mkdocs.yml | 14 ++++++++++++++ index.html | 1 - 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 gitpages-galt/docs/home.md create mode 100644 gitpages-galt/docs/visaoproduto.md create mode 100644 gitpages-galt/docs/visaoprojeto.md create mode 100644 gitpages-galt/mkdocs.yml delete mode 100644 index.html diff --git a/gitpages-galt/docs/home.md b/gitpages-galt/docs/home.md new file mode 100644 index 0000000..a09a0d6 --- /dev/null +++ b/gitpages-galt/docs/home.md @@ -0,0 +1 @@ +# Portal Galt diff --git a/gitpages-galt/docs/visaoproduto.md b/gitpages-galt/docs/visaoproduto.md new file mode 100644 index 0000000..565bdd4 --- /dev/null +++ b/gitpages-galt/docs/visaoproduto.md @@ -0,0 +1 @@ +# Visão de Produto \ No newline at end of file diff --git a/gitpages-galt/docs/visaoprojeto.md b/gitpages-galt/docs/visaoprojeto.md new file mode 100644 index 0000000..e284358 --- /dev/null +++ b/gitpages-galt/docs/visaoprojeto.md @@ -0,0 +1 @@ +# Visão de Projeto \ No newline at end of file diff --git a/gitpages-galt/mkdocs.yml b/gitpages-galt/mkdocs.yml new file mode 100644 index 0000000..e73bc36 --- /dev/null +++ b/gitpages-galt/mkdocs.yml @@ -0,0 +1,14 @@ +site_name: Portal Galt + +nav: + - Home: 'home.md' + - Visão de Produto e Projetos: + - Visão de Produto: 'visaoproduto.md' + - Visão de Projeto: 'visaoprojeto.md' + + +theme: + name: material + language: pt + palette: + primary: green diff --git a/index.html b/index.html deleted file mode 100644 index 446f4c8..0000000 --- a/index.html +++ /dev/null @@ -1 +0,0 @@ -olá mundo From afd225efdeebe68409329eed00ce93b20ace97b3 Mon Sep 17 00:00:00 2001 From: CAIRO Date: Sat, 9 Nov 2024 19:29:18 -0300 Subject: [PATCH 02/44] =?UTF-8?q?adicionando=20o=20conte=C3=BAdo=20de=20Vi?= =?UTF-8?q?s=C3=A3o=20de=20Produto=20e=20Projeto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gitpages-galt/docs/images/Galt.png | Bin 0 -> 119902 bytes gitpages-galt/docs/images/diagrama.png | Bin 0 -> 113681 bytes gitpages-galt/docs/images/image.png | Bin 0 -> 5805 bytes gitpages-galt/docs/images/logo.png | Bin 0 -> 117192 bytes gitpages-galt/docs/visaoproduto.md | 163 ++++++++++++++++++++++++- gitpages-galt/docs/visaoprojeto.md | 80 +++++++++++- 6 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 gitpages-galt/docs/images/Galt.png create mode 100644 gitpages-galt/docs/images/diagrama.png create mode 100644 gitpages-galt/docs/images/image.png create mode 100644 gitpages-galt/docs/images/logo.png diff --git a/gitpages-galt/docs/images/Galt.png b/gitpages-galt/docs/images/Galt.png new file mode 100644 index 0000000000000000000000000000000000000000..6e36e2278f679102e34c20d115865dc50d9f46bf GIT binary patch literal 119902 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 z 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

Galt Vestibulares é um cursinho popular criado em 2015 por 4 alunos da Universidade de Brasília. O cursinho oferece aulas gratuitas para alunos de baixa renda focadas em ajudá-los a passar no vestibular. As aulas ocorrem de forma presencial e online. Em cada sala, há aulas focadas em uma prova específica: ENEM, vestibular tradicional da UnB ou PAS. A organização é responsável por impactar mais de 400 estudantes e 200 voluntários todos os anos.

+ +

A missão da organização é ter um duplo impacto: proporcionar acesso ao ensino superior para alunos interessados, mas que não teriam condições de arcar com um cursinho pré-vestibular, e oferecer uma oportunidade para os professores voluntários, que geralmente são estudantes de licenciatura em busca de experiência docente. Muitos desses professores encontram dificuldades em ingressar diretamente no ensino público ou privado.

+ +

O Galt tem como diferencial o fato de que a parte administrativa, ou seja, todas as responsabilidades fora de sala de aula, são realizadas por outros voluntários dedicados. O Galt possui sete diretorias executivas, cada uma com sua equipe específica, como Marketing, Dados, Ensino, Pedagógico, Gente e Gestão, entre outras. Esses voluntários, geralmente, também são estudantes universitários, mas atuam em áreas relacionadas à sua diretoria. Cerca de metade dos voluntários, aproximadamente 100 pessoas, fazem parte da equipe administrativa e não têm contato diário com os alunos, com exceção da Diretoria Pedagógica, que serve como conexão entre os alunos e a administração, sendo responsável por coletar comentários e feedback dos estudantes.

+ +## Identificação da Oportunidade ou Problema +

O Galt Vestibulares tem dois grupos principais de voluntários: o corpo de professores e o corpo administrativo. Os professores têm contato diário com os alunos, enquanto o corpo administrativo não possui esse contato direto. A comunicação oficial entre o administrativo e os alunos é feita por e-mail, e a Diretora Pedagógica atua como representante do administrativo. A diretora costuma fornecer seu número pessoal aos alunos e se mantém disponível para esclarecer dúvidas. Dessa forma, as dúvidas são respondidas de maneira individual e manual.

+ +

O e-mail funciona em muitos casos. No entanto, ele apresenta algumas falhas que um software poderia solucionar. Os alunos muitas vezes perdem os e-mails recebidos, especialmente quando precisam recuperar informações enviadas semanas ou meses atrás. Isso os leva a buscar esclarecimentos com colegas de classe ou diretamente com a diretora pedagógica. Uma plataforma exclusiva para notícias e avisos do Galt resolveria as limitações do e-mail.

+ +

Um exemplo disso são os eventos extracurriculares organizados pelo administrativo. É comum a Diretoria Pedagógica receber várias mensagens de alunos com dúvidas sobre detalhes de eventos para os quais receberam convites por e-mail semanas antes. Normalmente, os alunos sabem que o evento vai acontecer porque os professores avisam em sala de aula, mas não se lembram ou não anotam os detalhes. Além disso, muitos alunos não costumam revisar seus e-mails, que ficam desorganizados entre spams e outros assuntos alheios ao Galt.

+ +

A Figura, a seguir apresenta o diagrama de Ishikawa contendo as causas e o problema atual do Galt Vestibulares.

+![diagrama](/images/diagrama.png) + +## Desafios do Projeto + +

Com base na ideia inicial do projeto, o grupo identificou alguns desafios principais que poderão surgir +durante o desenvolvimento:

+ +* **Integração com Planilhas Excel:** +Esse ponto exige que o sistema seja capaz de interpretar e armazenar dados variados a partir de +uploads feitos pela administração, garantindo que diferentes tipos de informações (notas, +históricos, etc.) sejam lidos corretamente. Problemas com a compatibilidade de formato ou +falhas de importação de dados podem comprometer a experiência e a precisão dos dados. + +* **Autenticação e Controle de Acesso:** +Como a aplicação será utilizada tanto por alunos quanto pela administração e professores, é +essencial que a autenticação e os níveis de acesso de cada perfil sejam bem definidos e seguros. +Esse controle é fundamental para que cada usuário tenha acesso apenas ao conteúdo necessário, +evitando problemas de segurança e garantindo a privacidade dos dados + +* **Escalabilidade:** +O cursinho impacta centenas de estudantes e voluntários todos os anos, o que demanda um +sistema escalável, capaz de suportar um aumento contínuo de usuários e dados. Para isso, é +provável que seja necessária uma arquitetura robusta e soluções em nuvem que garantam o +desempenho e a continuidade do sistema a longo prazo. + + +## Segmentação de Clientes +

O Portal Galt atenderá 3 segmentos de clientes:

+ +* **Alunos (16-25 anos):** Este grupo é formado por jovens vestibulandos que compõem a maioria dos +usuários do Galt Vestibulares. São estudantes de baixa renda com o desejo de ingressar no ensino +superior de forma acessível e com uma preparação de alta qualidade. +* **Equipe Educacional (20-50 anos):** Este segmento é composto por professores, psicólogos e +monitores que trabalham de forma voluntária. +* **Equipe Administrativa (20-50 anos):** São os voluntários que organizam e coordenam o cursinho, +garantindo que tudo funcione de forma organizada para os alunos e professores. + +# +# +# + +# **Solução Proposta** + +## Objetivos do Produto + +

O objetivo do produto é criar um portal informativo focado no Galt, onde todos os membros administrativos e professores poderão publicar atualizações e conteúdos relevantes.

O portal Galt contribuirá para a comunicação entre a administração e os alunos, pois permitirá que a equipe administrativa e os professores publiquem posts, que podem ser avisos sobre as aulas ou informações sobre vestibulares, por exemplo. Dessa forma, os alunos terão um espaço centralizado com conteúdos do Galt Vestibulares, organizado conforme as necessidades do cursinho.

+ +## Características da Solução + +* **Portal de notícias do cursinho:** Um espaço onde alunos e professores podem acessar atualizações, +novidades e comunicados importantes do cursinho em tempo real. +* **Consulta de resultado dos simulados:** Funcionalidade que permite aos alunos visualizarem seus +resultados nos simulados, com feedback e comparação de desempenho. +* **Integração com planilha Excel:** Os administradores podem fazer o upload de planilhas Excel para +atualizar dados como notas e matrículas diretamente na plataforma. +* **Gráficos de desempenho dos simulados:** Gráficos de desempenho dos simulados: Representações visuais que ajudam os alunos a +acompanharem sua evolução ao longo dos simulados. +* **Conta individual para alunos:** Cada aluno terá uma conta para acessar seu histórico de notas, ver as +notícias e consultar seus resultados. +* **Conta para professores:** Cada professor terá uma conta para postar atualizações e compartilhar recursos +educacionais com os alunos. +* **Conta para administradores:** Os administradores poderão fazer postagens, gerenciar o conteúdo de +notícias e atualizar resultados dos simulados. +* **Grade horária:** Funcionalidade para os administradores organizarem e disponibilizarem o cronograma +de aulas e atividades do cursinho. + +## Tecnologias a Serem Utilizadas + +

Para o desenvolvimento da solução proposta, serão utilizadas as tecnologias Next.js e Django. Next.js +será empregado como framework frontend, Django, por sua vez, será a base para o backend. Para o banco de +dados será usado PostgreSQL.

+

Next.js é capaz de criar interfaces responsivas para a plataforma e dá suporte para criação de gráficos. +Django é um framework com grande aderência da comunidade web de grande confiabilidade, ele é capaz de +lidar com o tráfego demandado pelo projeto. PostgreSQL é uma boa escolha para banco de dados que tem uma +boa compatibilidade com Django e consegue lidar com grandes bases de dados.

+ + +## Pesquisa de Mercado e Análise Competitiva +

Para a análise de mercado e diferenciação foi feita uma pesquisa de mercado baseado em pesquisas na +internet e conversa com membros do Galt. Podemos considerar algumas plataformas já consolidadas que +poderiam atender de maneira semelhante ao Galt Vestibulares, embora com abordagens variadas:

+

O Google Classroom é uma plataforma amplamente utilizada por instituições educacionais para +gerenciar conteúdo e interações. Ela fornece suporte básico para compartilhamento de conteúdo e +acompanhamento de progresso, mas a plataforma é focada em comunicação entre aluno e professor. Portanto, +falta funcionalidades para administrativo da organização se comunicar com todos os alunos.

+

O Quality é uma plataforma estruturada para escolas, com funcionalidades que atendem a várias +necessidades acadêmicas e administrativas, mas pode ser complexa demais para cursos preparatórios devido +ao excesso de recursos.

+

A edukante, voltada para gestão escolar completa, também oferece uma ampla gama de +funcionalidades, mas sua estrutura multifuncional pode ser excessiva para cursos específicos, que necessitam +de uma plataforma mais direcionada para o acompanhamento dos alunos.

+

Essas análises indicam que a plataforma do Portal Galt pode se diferenciar oferecendo um sistema +com acompanhamento personalizado com foco nas necessidades do cliente, integração com planilhas de dados +acadêmicos, assim como autenticação que garante a segurança e acessibilidade de dados tanto para alunos +quanto para a equipe educacional e administrativa.

+ +## Análise de Viabilidade +

Com base nas informações levantadas e no uso de tecnologias como Next.js e Django, além da +disponibilidade de todos os membros do grupo na parte da noite, o projeto para o Galt Vestibulares se mostra +viável. A seguir, detalhamos os pontos principais que reforçam essa viabilidade:

+

Para o front-end, a escolha do Next.js é ideal, pois ele facilita a construção de interfaces dinâmicas e +escaláveis, que são essenciais para o portal de notícias e a consulta de resultados dos simulados. Já o Django, +selecionado para o back-end, é uma escolha robusta para gerenciar dados com segurança, autenticação e +estruturação de APIs REST, principalmente para aplicações que exigem permissões de acesso diferenciadas para +administradores, professores e alunos.

+

A liderança do Galt esté animada com o projeto e já se comprometeu com reuniões periódicas. A diretoria +de dados contribui bastante com a descrição do problema e de regras de negócio. Também um dos membros, +Pedro Cruz, é ex-membro do Galt na parte administrativa. Portanto, dentro da equipe tem uma pessoa com grande +conhecimento das regras de negócio e do dia-a-dia da empresa.

+

A equipe já possui experiência prévia no desenvolvimento de aplicações web e familiaridade com as +tecnologias que serão utilizadas. Além disso, contará com suporte técnico de colegas, do professor e do cliente, +que fornecerá orientações claras sobre os requisitos.

+ +## Impacto da Solução +

Espera-se que a plataforma para os alunos traga vários benefícios para o Galt, diretos e indiretos. +Dentre esses benefícios estão:

+ +### *Meio de comunicação oficial* +

A plataforma vai facilitar a comunicação entre administração e alunos, trazendo um meio de +comunicação oficial e rápido para a administração. Sem precisar de usar somente a comunicação física por +meio de professores, grupos não-oficiais de whatsapp ou email.

+ +### *Evitar perguntas repetidas* +

Devido a forma de comunicação atual, é recorrente alunos perguntarem várias vezes informações sobre +o cursinho que a administração já respondeu várias vezes. Com uma plataforma unificada, os alunos vão ter +um lugar para tirar dúvidas e então mitigar esse problema. +

+ +### *Comunicação Perene* +

A plataforma será um meio de comunicação onde o aluno pode rever informações que já foram dadas. Por +exemplo, o resultado dos simulados hoje é enviado por email. Se o aluno quiser ver seu resultado de dois ou +três meses atrás. Ele tem de buscar na sua caixa de email no meio de spam e várias outras informações alheias +ao Galt. Na plataforma Galt o aluno conseguiria rever todos os seus resultados de forma mais simples.

+ +### *Conformidade com a LGPD* +

A plataforma terá total conformidade com a LGPD. Todos os dados de alunos e voluntários será guardado +e utilizado conforme a lei.

+ +## *Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 30/10/2024 | 1.0 | Criação do documento de Visão de Produto | Bruno de Oliveira, Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | +| 09/11/2024 | 1.1 | Terminando a visão de projeto, adequando a comentários do professor | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | \ No newline at end of file diff --git a/gitpages-galt/docs/visaoprojeto.md b/gitpages-galt/docs/visaoprojeto.md index e284358..a4cf20a 100644 --- a/gitpages-galt/docs/visaoprojeto.md +++ b/gitpages-galt/docs/visaoprojeto.md @@ -1 +1,79 @@ -# Visão de Projeto \ No newline at end of file +# *Estratégias de Engenharia de Software* + +## Estratégia Priorizada + +

Abordagem: Ágil

+ +

Ciclo de Vida: Incremental e Iterativo

+ +

Processo: ScrumXP

+ +## Quadro Comparativo + +| Características | OpenUP | ScrumXP | +| ---------- | ----------- | -------------- | +| Abordagem Geral | | | +| Foco em Arquitetura | | | +| Estrutura de Processos | | | +| Flexibilidade de Requisitos | | | +| Colaboração com Clientes | | | +| Complexidade do Processo | | | +| Qualidade Técnica | | | +| Práticas de Desenvolvimento | | | +| Adaptação ao Projeto | | | +| Documentação | | | +| Controle de Qualidade | | | +| Escalabilidade | | | +| Suporte a Equipes de Desenvolvimento | | | + +## Justificativa + +# *Cronograma e Entregas* +

Visto a proposta do produto e a estratégia de software, propões este cronograma de entregas:

+ +| Sprint | Início | Fim | Objetivo | Entregas Esperadas | Validação do Cliente | +| ---------- | ----------- | -------------- |---------- | ----------- | -------------- | +| Sprint 1 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 2 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 3 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 4 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 5 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 6 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 7 | ----------- | -------------- | ---------- | ----------- | -------------- | + +# *Interação entre Equipe e Cliente* + +## Composição da Equipe + +

A composição da equipe no desenvolvimento da solução inclui:

+ +| Papel | Descrição | Responsável | Participantes | +| ---------- | ----------- | -------------- | -------------- | +| Desenvolvedor Back-end | ----------- | -------------- | -------------- | +| Desenvolvedor Front-end | ----------- | -------------- | -------------- | +| Analista de QA | ----------- | -------------- | -------------- | +| Product Owner (PO) | ----------- | -------------- | -------------- | +| Gerente de Projeto | ----------- | -------------- | -------------- | + +## Comunicação + +

A comunicação entre a equipe e o cliente será organizada com ferramentas e métodos específicos para garantir alinhamento e eficiência. Para mensagens rápidas e alinhamentos pontuais, utilizaremos o WhatsApp, tanto para a equipe quanto para o cliente. Reuniões mais detalhadas serão realizadas pelo Google Meet, com encontros de equipe programados a cada duas semanas para revisar o progresso e definir as próximas etapas. A comunicação interna entre os membros será feita principalmente pelo WhatsApp e Microsoft Teams, garantindo contato direto e imediato.

+ +

Para gerenciar a documentação e o compartilhamento de arquivos, usaremos o GitHub, Google Drive e Microsoft OneDrive. Esses recursos centralizarão os documentos, assegurando que todos os membros tenham acesso às versões mais atualizadas.

+ +## Processo de Validação + +

A validação do produto será realizada de forma contínua ao longo do processo, com base nas práticas do método ScrumXP, com entregas incrementais a cada duas semanas. A cada entrega de release (Sprint), entraremos em contato com o cliente para apresentar o progresso e obter feedback. Dessa forma, será mais fácil identificar e ajustar requisitos ou funcionalidades conforme o projeto é desenvolvido, garantindo que o produto permaneça alinhado às necessidades e expectativas do cliente desde as primeiras etapas até sua finalização. Esse método permite minimizar retrabalho e garantir um desenvolvimento mais ágil e eficiente, mantendo o cliente sempre alinhado com o avanço do projeto.

+ +# *Lições Aprendidas* + +## Unidade 1 + +# *Referências Bibliográficas* + +## *Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 09/11/2024 | 1.0 | Criação do documento de Visão do Projeto | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | + From 5a0453b87a20f54e5cb2c7dbffb0e1e445ecedbe Mon Sep 17 00:00:00 2001 From: CAIRO Date: Sun, 10 Nov 2024 10:35:32 -0300 Subject: [PATCH 03/44] fazendo o deploy do docs no gitpages --- gitpages-galt/docs/cronograma.md | 18 + gitpages-galt/docs/estrategias.md | 39 + .../docs/{visaoprojeto.md => interacao.md} | 56 +- gitpages-galt/docs/introducao.md | 63 + gitpages-galt/docs/licoesaprendidas.md | 3 + .../docs/{visaoproduto.md => solucao.md} | 73 +- gitpages-galt/mkdocs.yml | 31 +- gitpages-galt/site/404.html | 502 ++ gitpages-galt/site/assets/images/favicon.png | Bin 0 -> 1870 bytes .../assets/javascripts/bundle.dff1b7c8.min.js | 29 + .../javascripts/bundle.dff1b7c8.min.js.map | 8 + .../javascripts/lunr/min/lunr.ar.min.js | 1 + .../javascripts/lunr/min/lunr.da.min.js | 18 + .../javascripts/lunr/min/lunr.de.min.js | 18 + .../javascripts/lunr/min/lunr.du.min.js | 18 + .../javascripts/lunr/min/lunr.es.min.js | 18 + .../javascripts/lunr/min/lunr.fi.min.js | 18 + .../javascripts/lunr/min/lunr.fr.min.js | 18 + .../javascripts/lunr/min/lunr.he.min.js | 1 + .../javascripts/lunr/min/lunr.hi.min.js | 1 + .../javascripts/lunr/min/lunr.hu.min.js | 18 + .../javascripts/lunr/min/lunr.hy.min.js | 1 + .../javascripts/lunr/min/lunr.it.min.js | 18 + .../javascripts/lunr/min/lunr.ja.min.js | 1 + .../javascripts/lunr/min/lunr.jp.min.js | 1 + .../javascripts/lunr/min/lunr.kn.min.js | 1 + .../javascripts/lunr/min/lunr.ko.min.js | 1 + .../javascripts/lunr/min/lunr.multi.min.js | 1 + .../javascripts/lunr/min/lunr.nl.min.js | 18 + .../javascripts/lunr/min/lunr.no.min.js | 18 + .../javascripts/lunr/min/lunr.pt.min.js | 18 + .../javascripts/lunr/min/lunr.ro.min.js | 18 + .../javascripts/lunr/min/lunr.ru.min.js | 18 + .../javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + .../javascripts/lunr/min/lunr.sv.min.js | 18 + .../javascripts/lunr/min/lunr.ta.min.js | 1 + .../javascripts/lunr/min/lunr.te.min.js | 1 + .../javascripts/lunr/min/lunr.th.min.js | 1 + .../javascripts/lunr/min/lunr.tr.min.js | 18 + .../javascripts/lunr/min/lunr.vi.min.js | 1 + .../javascripts/lunr/min/lunr.zh.min.js | 1 + .../site/assets/javascripts/lunr/tinyseg.js | 206 + .../site/assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.dfff1995.min.js | 42 + .../workers/search.dfff1995.min.js.map | 8 + .../assets/stylesheets/main.046329b4.min.css | 1 + .../stylesheets/main.046329b4.min.css.map | 1 + .../stylesheets/palette.85d0ee34.min.css | 1 + .../stylesheets/palette.85d0ee34.min.css.map | 1 + gitpages-galt/site/cronograma/index.html | 624 ++ gitpages-galt/site/estrategias/index.html | 693 ++ gitpages-galt/site/home/index.html | 529 ++ gitpages-galt/site/images/Galt.png | Bin 0 -> 119902 bytes gitpages-galt/site/images/diagrama.png | Bin 0 -> 113681 bytes gitpages-galt/site/images/image.png | Bin 0 -> 5805 bytes gitpages-galt/site/images/logo.png | Bin 0 -> 117192 bytes gitpages-galt/site/interacao/index.html | 656 ++ gitpages-galt/site/introducao/index.html | 672 ++ .../site/licoesaprendidas/index.html | 569 ++ gitpages-galt/site/search/search_index.json | 1 + gitpages-galt/site/sitemap.xml | 3 + gitpages-galt/site/sitemap.xml.gz | Bin 0 -> 127 bytes gitpages-galt/site/solucao/index.html | 757 ++ 64 files changed, 12458 insertions(+), 122 deletions(-) create mode 100644 gitpages-galt/docs/cronograma.md create mode 100644 gitpages-galt/docs/estrategias.md rename gitpages-galt/docs/{visaoprojeto.md => interacao.md} (55%) create mode 100644 gitpages-galt/docs/introducao.md create mode 100644 gitpages-galt/docs/licoesaprendidas.md rename gitpages-galt/docs/{visaoproduto.md => solucao.md} (55%) create mode 100644 gitpages-galt/site/404.html create mode 100644 gitpages-galt/site/assets/images/favicon.png create mode 100644 gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js create mode 100644 gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js.map create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/tinyseg.js create mode 100644 gitpages-galt/site/assets/javascripts/lunr/wordcut.js create mode 100644 gitpages-galt/site/assets/javascripts/workers/search.dfff1995.min.js create mode 100644 gitpages-galt/site/assets/javascripts/workers/search.dfff1995.min.js.map create mode 100644 gitpages-galt/site/assets/stylesheets/main.046329b4.min.css create mode 100644 gitpages-galt/site/assets/stylesheets/main.046329b4.min.css.map create mode 100644 gitpages-galt/site/assets/stylesheets/palette.85d0ee34.min.css create mode 100644 gitpages-galt/site/assets/stylesheets/palette.85d0ee34.min.css.map create mode 100644 gitpages-galt/site/cronograma/index.html create mode 100644 gitpages-galt/site/estrategias/index.html create mode 100644 gitpages-galt/site/home/index.html create mode 100644 gitpages-galt/site/images/Galt.png create mode 100644 gitpages-galt/site/images/diagrama.png create mode 100644 gitpages-galt/site/images/image.png create mode 100644 gitpages-galt/site/images/logo.png create mode 100644 gitpages-galt/site/interacao/index.html create mode 100644 gitpages-galt/site/introducao/index.html create mode 100644 gitpages-galt/site/licoesaprendidas/index.html create mode 100644 gitpages-galt/site/search/search_index.json create mode 100644 gitpages-galt/site/sitemap.xml create mode 100644 gitpages-galt/site/sitemap.xml.gz create mode 100644 gitpages-galt/site/solucao/index.html diff --git a/gitpages-galt/docs/cronograma.md b/gitpages-galt/docs/cronograma.md new file mode 100644 index 0000000..5b67ca1 --- /dev/null +++ b/gitpages-galt/docs/cronograma.md @@ -0,0 +1,18 @@ +# Cronograma e Entregas +

Visto a proposta do produto e a estratégia de software, propões este cronograma de entregas:

+ +| Sprint | Início | Fim | Objetivo | Entregas Esperadas | Validação do Cliente | +| ---------- | ----------- | -------------- |---------- | ----------- | -------------- | +| Sprint 1 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 2 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 3 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 4 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 5 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 6 | ----------- | -------------- | ---------- | ----------- | -------------- | +| Sprint 7 | ----------- | -------------- | ---------- | ----------- | -------------- | + +*Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 09/11/2024 | 1.0 | Criação do documento de Visão do Projeto | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | \ No newline at end of file diff --git a/gitpages-galt/docs/estrategias.md b/gitpages-galt/docs/estrategias.md new file mode 100644 index 0000000..173d87d --- /dev/null +++ b/gitpages-galt/docs/estrategias.md @@ -0,0 +1,39 @@ +# Estratégias de Engenharia de Software + +## Estratégia Priorizada + +* Abordagem: Ágil + +* Ciclo de Vida: Incremental e Iterativo + +* Processo: ScrumXP + +## Quadro Comparativo + +| Características | OpenUP | ScrumXP | +| ---------- | ----------- | -------------- | +| Abordagem Geral | | | +| Foco em Arquitetura | | | +| Estrutura de Processos | | | +| Flexibilidade de Requisitos | | | +| Colaboração com Clientes | | | +| Complexidade do Processo | | | +| Qualidade Técnica | | | +| Práticas de Desenvolvimento | | | +| Adaptação ao Projeto | | | +| Documentação | | | +| Controle de Qualidade | | | +| Escalabilidade | | | +| Suporte a Equipes de Desenvolvimento | | | + +## Justificativa + + + + +*Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 09/11/2024 | 1.0 | Criação do documento de Visão do Projeto | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | + diff --git a/gitpages-galt/docs/visaoprojeto.md b/gitpages-galt/docs/interacao.md similarity index 55% rename from gitpages-galt/docs/visaoprojeto.md rename to gitpages-galt/docs/interacao.md index a4cf20a..20a2356 100644 --- a/gitpages-galt/docs/visaoprojeto.md +++ b/gitpages-galt/docs/interacao.md @@ -1,47 +1,4 @@ -# *Estratégias de Engenharia de Software* - -## Estratégia Priorizada - -

Abordagem: Ágil

- -

Ciclo de Vida: Incremental e Iterativo

- -

Processo: ScrumXP

- -## Quadro Comparativo - -| Características | OpenUP | ScrumXP | -| ---------- | ----------- | -------------- | -| Abordagem Geral | | | -| Foco em Arquitetura | | | -| Estrutura de Processos | | | -| Flexibilidade de Requisitos | | | -| Colaboração com Clientes | | | -| Complexidade do Processo | | | -| Qualidade Técnica | | | -| Práticas de Desenvolvimento | | | -| Adaptação ao Projeto | | | -| Documentação | | | -| Controle de Qualidade | | | -| Escalabilidade | | | -| Suporte a Equipes de Desenvolvimento | | | - -## Justificativa - -# *Cronograma e Entregas* -

Visto a proposta do produto e a estratégia de software, propões este cronograma de entregas:

- -| Sprint | Início | Fim | Objetivo | Entregas Esperadas | Validação do Cliente | -| ---------- | ----------- | -------------- |---------- | ----------- | -------------- | -| Sprint 1 | ----------- | -------------- | ---------- | ----------- | -------------- | -| Sprint 2 | ----------- | -------------- | ---------- | ----------- | -------------- | -| Sprint 3 | ----------- | -------------- | ---------- | ----------- | -------------- | -| Sprint 4 | ----------- | -------------- | ---------- | ----------- | -------------- | -| Sprint 5 | ----------- | -------------- | ---------- | ----------- | -------------- | -| Sprint 6 | ----------- | -------------- | ---------- | ----------- | -------------- | -| Sprint 7 | ----------- | -------------- | ---------- | ----------- | -------------- | - -# *Interação entre Equipe e Cliente* +# Interação entre Equipe e Cliente ## Composição da Equipe @@ -65,15 +22,8 @@

A validação do produto será realizada de forma contínua ao longo do processo, com base nas práticas do método ScrumXP, com entregas incrementais a cada duas semanas. A cada entrega de release (Sprint), entraremos em contato com o cliente para apresentar o progresso e obter feedback. Dessa forma, será mais fácil identificar e ajustar requisitos ou funcionalidades conforme o projeto é desenvolvido, garantindo que o produto permaneça alinhado às necessidades e expectativas do cliente desde as primeiras etapas até sua finalização. Esse método permite minimizar retrabalho e garantir um desenvolvimento mais ágil e eficiente, mantendo o cliente sempre alinhado com o avanço do projeto.

-# *Lições Aprendidas* - -## Unidade 1 - -# *Referências Bibliográficas* - -## *Histórico de Revisão* +*Histórico de Revisão* | Data | Versão | Descrição | Autores | | ---------- | ----------- | -------------- | -------------- | -| 09/11/2024 | 1.0 | Criação do documento de Visão do Projeto | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | - +| 09/11/2024 | 1.0 | Criação do documento de Visão do Projeto | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | \ No newline at end of file diff --git a/gitpages-galt/docs/introducao.md b/gitpages-galt/docs/introducao.md new file mode 100644 index 0000000..9a400e6 --- /dev/null +++ b/gitpages-galt/docs/introducao.md @@ -0,0 +1,63 @@ +# Cenário Atual do Cliente e do Negócio +![logo galt](/images/Galt.png) + +## Introdução ao Negócio e Contexto +

Galt Vestibulares é um cursinho popular criado em 2015 por 4 alunos da Universidade de Brasília. O cursinho oferece aulas gratuitas para alunos de baixa renda focadas em ajudá-los a passar no vestibular. As aulas ocorrem de forma presencial e online. Em cada sala, há aulas focadas em uma prova específica: ENEM, vestibular tradicional da UnB ou PAS. A organização é responsável por impactar mais de 400 estudantes e 200 voluntários todos os anos.

+ +

A missão da organização é ter um duplo impacto: proporcionar acesso ao ensino superior para alunos interessados, mas que não teriam condições de arcar com um cursinho pré-vestibular, e oferecer uma oportunidade para os professores voluntários, que geralmente são estudantes de licenciatura em busca de experiência docente. Muitos desses professores encontram dificuldades em ingressar diretamente no ensino público ou privado.

+ +

O Galt tem como diferencial o fato de que a parte administrativa, ou seja, todas as responsabilidades fora de sala de aula, são realizadas por outros voluntários dedicados. O Galt possui sete diretorias executivas, cada uma com sua equipe específica, como Marketing, Dados, Ensino, Pedagógico, Gente e Gestão, entre outras. Esses voluntários, geralmente, também são estudantes universitários, mas atuam em áreas relacionadas à sua diretoria. Cerca de metade dos voluntários, aproximadamente 100 pessoas, fazem parte da equipe administrativa e não têm contato diário com os alunos, com exceção da Diretoria Pedagógica, que serve como conexão entre os alunos e a administração, sendo responsável por coletar comentários e feedback dos estudantes.

+ +## Identificação da Oportunidade ou Problema +

O Galt Vestibulares tem dois grupos principais de voluntários: o corpo de professores e o corpo administrativo. Os professores têm contato diário com os alunos, enquanto o corpo administrativo não possui esse contato direto. A comunicação oficial entre o administrativo e os alunos é feita por e-mail, e a Diretora Pedagógica atua como representante do administrativo. A diretora costuma fornecer seu número pessoal aos alunos e se mantém disponível para esclarecer dúvidas. Dessa forma, as dúvidas são respondidas de maneira individual e manual.

+ +

O e-mail funciona em muitos casos. No entanto, ele apresenta algumas falhas que um software poderia solucionar. Os alunos muitas vezes perdem os e-mails recebidos, especialmente quando precisam recuperar informações enviadas semanas ou meses atrás. Isso os leva a buscar esclarecimentos com colegas de classe ou diretamente com a diretora pedagógica. Uma plataforma exclusiva para notícias e avisos do Galt resolveria as limitações do e-mail.

+ +

Um exemplo disso são os eventos extracurriculares organizados pelo administrativo. É comum a Diretoria Pedagógica receber várias mensagens de alunos com dúvidas sobre detalhes de eventos para os quais receberam convites por e-mail semanas antes. Normalmente, os alunos sabem que o evento vai acontecer porque os professores avisam em sala de aula, mas não se lembram ou não anotam os detalhes. Além disso, muitos alunos não costumam revisar seus e-mails, que ficam desorganizados entre spams e outros assuntos alheios ao Galt.

+ +

A Figura, a seguir apresenta o diagrama de Ishikawa contendo as causas e o problema atual do Galt Vestibulares.

+![diagrama](/images/diagrama.png) + +## Desafios do Projeto + +

Com base na ideia inicial do projeto, o grupo identificou alguns desafios principais que poderão surgir +durante o desenvolvimento:

+ +* **Integração com Planilhas Excel:** +Esse ponto exige que o sistema seja capaz de interpretar e armazenar dados variados a partir de +uploads feitos pela administração, garantindo que diferentes tipos de informações (notas, +históricos, etc.) sejam lidos corretamente. Problemas com a compatibilidade de formato ou +falhas de importação de dados podem comprometer a experiência e a precisão dos dados. + +* **Autenticação e Controle de Acesso:** +Como a aplicação será utilizada tanto por alunos quanto pela administração e professores, é +essencial que a autenticação e os níveis de acesso de cada perfil sejam bem definidos e seguros. +Esse controle é fundamental para que cada usuário tenha acesso apenas ao conteúdo necessário, +evitando problemas de segurança e garantindo a privacidade dos dados + +* **Escalabilidade:** +O cursinho impacta centenas de estudantes e voluntários todos os anos, o que demanda um +sistema escalável, capaz de suportar um aumento contínuo de usuários e dados. Para isso, é +provável que seja necessária uma arquitetura robusta e soluções em nuvem que garantam o +desempenho e a continuidade do sistema a longo prazo. + + +## Segmentação de Clientes +

O Portal Galt atenderá 3 segmentos de clientes:

+ +* **Alunos (16-25 anos):** Este grupo é formado por jovens vestibulandos que compõem a maioria dos +usuários do Galt Vestibulares. São estudantes de baixa renda com o desejo de ingressar no ensino +superior de forma acessível e com uma preparação de alta qualidade. +* **Equipe Educacional (20-50 anos):** Este segmento é composto por professores, psicólogos e +monitores que trabalham de forma voluntária. +* **Equipe Administrativa (20-50 anos):** São os voluntários que organizam e coordenam o cursinho, +garantindo que tudo funcione de forma organizada para os alunos e professores. + + + +*Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 30/10/2024 | 1.0 | Criação do documento de Visão de Produto | Bruno de Oliveira, Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | +| 09/11/2024 | 1.1 | Terminando a visão de projeto, adequando a comentários do professor | Cairo Florenço, João Pedro, Paola Rebeca, Pedro Fonseca | \ No newline at end of file diff --git a/gitpages-galt/docs/licoesaprendidas.md b/gitpages-galt/docs/licoesaprendidas.md new file mode 100644 index 0000000..29bd19f --- /dev/null +++ b/gitpages-galt/docs/licoesaprendidas.md @@ -0,0 +1,3 @@ +# Lições Aprendidas + +## Unidade 1 \ No newline at end of file diff --git a/gitpages-galt/docs/visaoproduto.md b/gitpages-galt/docs/solucao.md similarity index 55% rename from gitpages-galt/docs/visaoproduto.md rename to gitpages-galt/docs/solucao.md index 4f7b013..01a01a5 100644 --- a/gitpages-galt/docs/visaoproduto.md +++ b/gitpages-galt/docs/solucao.md @@ -1,67 +1,8 @@ -# **Cenário Atual do Cliente e do Negócio** -![logo galt](/images/Galt.png) - -## Introdução ao Negócio e Contexto -

Galt Vestibulares é um cursinho popular criado em 2015 por 4 alunos da Universidade de Brasília. O cursinho oferece aulas gratuitas para alunos de baixa renda focadas em ajudá-los a passar no vestibular. As aulas ocorrem de forma presencial e online. Em cada sala, há aulas focadas em uma prova específica: ENEM, vestibular tradicional da UnB ou PAS. A organização é responsável por impactar mais de 400 estudantes e 200 voluntários todos os anos.

- -

A missão da organização é ter um duplo impacto: proporcionar acesso ao ensino superior para alunos interessados, mas que não teriam condições de arcar com um cursinho pré-vestibular, e oferecer uma oportunidade para os professores voluntários, que geralmente são estudantes de licenciatura em busca de experiência docente. Muitos desses professores encontram dificuldades em ingressar diretamente no ensino público ou privado.

- -

O Galt tem como diferencial o fato de que a parte administrativa, ou seja, todas as responsabilidades fora de sala de aula, são realizadas por outros voluntários dedicados. O Galt possui sete diretorias executivas, cada uma com sua equipe específica, como Marketing, Dados, Ensino, Pedagógico, Gente e Gestão, entre outras. Esses voluntários, geralmente, também são estudantes universitários, mas atuam em áreas relacionadas à sua diretoria. Cerca de metade dos voluntários, aproximadamente 100 pessoas, fazem parte da equipe administrativa e não têm contato diário com os alunos, com exceção da Diretoria Pedagógica, que serve como conexão entre os alunos e a administração, sendo responsável por coletar comentários e feedback dos estudantes.

- -## Identificação da Oportunidade ou Problema -

O Galt Vestibulares tem dois grupos principais de voluntários: o corpo de professores e o corpo administrativo. Os professores têm contato diário com os alunos, enquanto o corpo administrativo não possui esse contato direto. A comunicação oficial entre o administrativo e os alunos é feita por e-mail, e a Diretora Pedagógica atua como representante do administrativo. A diretora costuma fornecer seu número pessoal aos alunos e se mantém disponível para esclarecer dúvidas. Dessa forma, as dúvidas são respondidas de maneira individual e manual.

- -

O e-mail funciona em muitos casos. No entanto, ele apresenta algumas falhas que um software poderia solucionar. Os alunos muitas vezes perdem os e-mails recebidos, especialmente quando precisam recuperar informações enviadas semanas ou meses atrás. Isso os leva a buscar esclarecimentos com colegas de classe ou diretamente com a diretora pedagógica. Uma plataforma exclusiva para notícias e avisos do Galt resolveria as limitações do e-mail.

- -

Um exemplo disso são os eventos extracurriculares organizados pelo administrativo. É comum a Diretoria Pedagógica receber várias mensagens de alunos com dúvidas sobre detalhes de eventos para os quais receberam convites por e-mail semanas antes. Normalmente, os alunos sabem que o evento vai acontecer porque os professores avisam em sala de aula, mas não se lembram ou não anotam os detalhes. Além disso, muitos alunos não costumam revisar seus e-mails, que ficam desorganizados entre spams e outros assuntos alheios ao Galt.

- -

A Figura, a seguir apresenta o diagrama de Ishikawa contendo as causas e o problema atual do Galt Vestibulares.

-![diagrama](/images/diagrama.png) - -## Desafios do Projeto - -

Com base na ideia inicial do projeto, o grupo identificou alguns desafios principais que poderão surgir -durante o desenvolvimento:

- -* **Integração com Planilhas Excel:** -Esse ponto exige que o sistema seja capaz de interpretar e armazenar dados variados a partir de -uploads feitos pela administração, garantindo que diferentes tipos de informações (notas, -históricos, etc.) sejam lidos corretamente. Problemas com a compatibilidade de formato ou -falhas de importação de dados podem comprometer a experiência e a precisão dos dados. - -* **Autenticação e Controle de Acesso:** -Como a aplicação será utilizada tanto por alunos quanto pela administração e professores, é -essencial que a autenticação e os níveis de acesso de cada perfil sejam bem definidos e seguros. -Esse controle é fundamental para que cada usuário tenha acesso apenas ao conteúdo necessário, -evitando problemas de segurança e garantindo a privacidade dos dados - -* **Escalabilidade:** -O cursinho impacta centenas de estudantes e voluntários todos os anos, o que demanda um -sistema escalável, capaz de suportar um aumento contínuo de usuários e dados. Para isso, é -provável que seja necessária uma arquitetura robusta e soluções em nuvem que garantam o -desempenho e a continuidade do sistema a longo prazo. - - -## Segmentação de Clientes -

O Portal Galt atenderá 3 segmentos de clientes:

- -* **Alunos (16-25 anos):** Este grupo é formado por jovens vestibulandos que compõem a maioria dos -usuários do Galt Vestibulares. São estudantes de baixa renda com o desejo de ingressar no ensino -superior de forma acessível e com uma preparação de alta qualidade. -* **Equipe Educacional (20-50 anos):** Este segmento é composto por professores, psicólogos e -monitores que trabalham de forma voluntária. -* **Equipe Administrativa (20-50 anos):** São os voluntários que organizam e coordenam o cursinho, -garantindo que tudo funcione de forma organizada para os alunos e professores. - -# -# -# - -# **Solução Proposta** +# Solução Proposta ## Objetivos do Produto -

O objetivo do produto é criar um portal informativo focado no Galt, onde todos os membros administrativos e professores poderão publicar atualizações e conteúdos relevantes.

O portal Galt contribuirá para a comunicação entre a administração e os alunos, pois permitirá que a equipe administrativa e os professores publiquem posts, que podem ser avisos sobre as aulas ou informações sobre vestibulares, por exemplo. Dessa forma, os alunos terão um espaço centralizado com conteúdos do Galt Vestibulares, organizado conforme as necessidades do cursinho.

+

O objetivo do produto é criar um portal informativo focado no Galt, onde todos os membros administrativos e professores poderão publicar atualizações e conteúdos relevantes.

O portal Galt contribuirá para a comunicação entre a administração e os alunos, pois permitirá que a equipe administrativa e os professores publiquem posts, que poderão ser avisos sobre as aulas ou informações sobre vestibulares, por exemplo. Dessa forma, os alunos terão um espaço centralizado com conteúdos do Galt Vestibulares, organizado conforme as necessidades do cursinho.

## Características da Solução @@ -133,28 +74,28 @@ que fornecerá orientações claras sobre os requisitos.

Espera-se que a plataforma para os alunos traga vários benefícios para o Galt, diretos e indiretos. Dentre esses benefícios estão:

-### *Meio de comunicação oficial* +### ***Meio de comunicação oficial***

A plataforma vai facilitar a comunicação entre administração e alunos, trazendo um meio de comunicação oficial e rápido para a administração. Sem precisar de usar somente a comunicação física por meio de professores, grupos não-oficiais de whatsapp ou email.

-### *Evitar perguntas repetidas* +### ***Evitar perguntas repetidas***

Devido a forma de comunicação atual, é recorrente alunos perguntarem várias vezes informações sobre o cursinho que a administração já respondeu várias vezes. Com uma plataforma unificada, os alunos vão ter um lugar para tirar dúvidas e então mitigar esse problema.

-### *Comunicação Perene* +### ***Comunicação Perene***

A plataforma será um meio de comunicação onde o aluno pode rever informações que já foram dadas. Por exemplo, o resultado dos simulados hoje é enviado por email. Se o aluno quiser ver seu resultado de dois ou três meses atrás. Ele tem de buscar na sua caixa de email no meio de spam e várias outras informações alheias ao Galt. Na plataforma Galt o aluno conseguiria rever todos os seus resultados de forma mais simples.

-### *Conformidade com a LGPD* +### ***Conformidade com a LGPD***

A plataforma terá total conformidade com a LGPD. Todos os dados de alunos e voluntários será guardado e utilizado conforme a lei.

-## *Histórico de Revisão* +*Histórico de Revisão* | Data | Versão | Descrição | Autores | | ---------- | ----------- | -------------- | -------------- | diff --git a/gitpages-galt/mkdocs.yml b/gitpages-galt/mkdocs.yml index e73bc36..c239b0c 100644 --- a/gitpages-galt/mkdocs.yml +++ b/gitpages-galt/mkdocs.yml @@ -3,12 +3,37 @@ site_name: Portal Galt nav: - Home: 'home.md' - Visão de Produto e Projetos: - - Visão de Produto: 'visaoproduto.md' - - Visão de Projeto: 'visaoprojeto.md' + - Cenário Atual do Cliente e Negócio: 'introducao.md' + - Solução Proposta: 'solucao.md' + - Estratégias de Engenharia de Software: 'estrategias.md' + - Cronograma e Entregas: 'cronograma.md' + - Interação entre Equipe e Cliente: 'interacao.md' + - Lições Aprendidas: 'licoesaprendidas.md' theme: name: material language: pt palette: - primary: green + - scheme: default + toggle: + icon: material/toggle-switch-off-outline + name: Switch to dark mode + primary: teal + accent: black + - scheme: slate + toggle: + icon: material/toggle-switch + name: Switch to light mode + primary: teal + accent: lime + features: + - navigation.tabs + - navigation.sections + - toc.integrate + - navigation.top + - search.suggest + - search.highlight + - content.tabs.link + plugins: + - search diff --git a/gitpages-galt/site/404.html b/gitpages-galt/site/404.html new file mode 100644 index 0000000..c68d833 --- /dev/null +++ b/gitpages-galt/site/404.html @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + Portal Galt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + + +
+
+
+ + + + +
+
+ +

404 - Not found

+ +
+
+ + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitpages-galt/site/assets/images/favicon.png b/gitpages-galt/site/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js b/gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js new file mode 100644 index 0000000..a89e799 --- /dev/null +++ b/gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var gi=Object.create;var dr=Object.defineProperty;var xi=Object.getOwnPropertyDescriptor;var yi=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Ei=Object.getPrototypeOf,hr=Object.prototype.hasOwnProperty,Xr=Object.prototype.propertyIsEnumerable;var Jr=(e,t,r)=>t in e?dr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,I=(e,t)=>{for(var r in t||(t={}))hr.call(t,r)&&Jr(e,r,t[r]);if(Ht)for(var r of Ht(t))Xr.call(t,r)&&Jr(e,r,t[r]);return e};var Zr=(e,t)=>{var r={};for(var o in e)hr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Ht)for(var o of Ht(e))t.indexOf(o)<0&&Xr.call(e,o)&&(r[o]=e[o]);return r};var br=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var wi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of yi(t))!hr.call(e,n)&&n!==r&&dr(e,n,{get:()=>t[n],enumerable:!(o=xi(t,n))||o.enumerable});return e};var $t=(e,t,r)=>(r=e!=null?gi(Ei(e)):{},wi(t||!e||!e.__esModule?dr(r,"default",{value:e,enumerable:!0}):r,e));var to=br((vr,eo)=>{(function(e,t){typeof vr=="object"&&typeof eo!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(vr,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(A){return!!(A&&A!==document&&A.nodeName!=="HTML"&&A.nodeName!=="BODY"&&"classList"in A&&"contains"in A.classList)}function c(A){var it=A.type,Ne=A.tagName;return!!(Ne==="INPUT"&&s[it]&&!A.readOnly||Ne==="TEXTAREA"&&!A.readOnly||A.isContentEditable)}function p(A){A.classList.contains("focus-visible")||(A.classList.add("focus-visible"),A.setAttribute("data-focus-visible-added",""))}function m(A){A.hasAttribute("data-focus-visible-added")&&(A.classList.remove("focus-visible"),A.removeAttribute("data-focus-visible-added"))}function f(A){A.metaKey||A.altKey||A.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(A){o=!1}function d(A){a(A.target)&&(o||c(A.target))&&p(A.target)}function b(A){a(A.target)&&(A.target.classList.contains("focus-visible")||A.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),m(A.target))}function _(A){document.visibilityState==="hidden"&&(n&&(o=!0),re())}function re(){document.addEventListener("mousemove",Y),document.addEventListener("mousedown",Y),document.addEventListener("mouseup",Y),document.addEventListener("pointermove",Y),document.addEventListener("pointerdown",Y),document.addEventListener("pointerup",Y),document.addEventListener("touchmove",Y),document.addEventListener("touchstart",Y),document.addEventListener("touchend",Y)}function Z(){document.removeEventListener("mousemove",Y),document.removeEventListener("mousedown",Y),document.removeEventListener("mouseup",Y),document.removeEventListener("pointermove",Y),document.removeEventListener("pointerdown",Y),document.removeEventListener("pointerup",Y),document.removeEventListener("touchmove",Y),document.removeEventListener("touchstart",Y),document.removeEventListener("touchend",Y)}function Y(A){A.target.nodeName&&A.target.nodeName.toLowerCase()==="html"||(o=!1,Z())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",_,!0),re(),r.addEventListener("focus",d,!0),r.addEventListener("blur",b,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var Vr=br((Mt,Dr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Dr=="object"?Dr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return vi}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),m=i(817),f=i.n(m);function u(F){try{return document.execCommand(F)}catch(S){return!1}}var d=function(S){var y=f()(S);return u("cut"),y},b=d;function _(F){var S=document.documentElement.getAttribute("dir")==="rtl",y=document.createElement("textarea");y.style.fontSize="12pt",y.style.border="0",y.style.padding="0",y.style.margin="0",y.style.position="absolute",y.style[S?"right":"left"]="-9999px";var R=window.pageYOffset||document.documentElement.scrollTop;return y.style.top="".concat(R,"px"),y.setAttribute("readonly",""),y.value=F,y}var re=function(S,y){var R=_(S);y.container.appendChild(R);var P=f()(R);return u("copy"),R.remove(),P},Z=function(S){var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},R="";return typeof S=="string"?R=re(S,y):S instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(S==null?void 0:S.type)?R=re(S.value,y):(R=f()(S),u("copy")),R},Y=Z;function A(F){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?A=function(y){return typeof y}:A=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},A(F)}var it=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},y=S.action,R=y===void 0?"copy":y,P=S.container,q=S.target,Me=S.text;if(R!=="copy"&&R!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&A(q)==="object"&&q.nodeType===1){if(R==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(R==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return Y(Me,{container:P});if(q)return R==="cut"?b(q):Y(q,{container:P})},Ne=it;function Ie(F){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(y){return typeof y}:Ie=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},Ie(F)}function pi(F,S){if(!(F instanceof S))throw new TypeError("Cannot call a class as a function")}function Gr(F,S){for(var y=0;y0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof P.action=="function"?P.action:this.defaultAction,this.target=typeof P.target=="function"?P.target:this.defaultTarget,this.text=typeof P.text=="function"?P.text:this.defaultText,this.container=Ie(P.container)==="object"?P.container:document.body}},{key:"listenClick",value:function(P){var q=this;this.listener=p()(P,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(P){var q=P.delegateTarget||P.currentTarget,Me=this.action(q)||"copy",kt=Ne({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(P){return ur("action",P)}},{key:"defaultTarget",value:function(P){var q=ur("target",P);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(P){return ur("text",P)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(P){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return Y(P,q)}},{key:"cut",value:function(P){return b(P)}},{key:"isSupported",value:function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof P=="string"?[P]:P,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),y}(a()),vi=bi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(m,f,u,d,b){var _=p.apply(this,arguments);return m.addEventListener(u,_,b),{destroy:function(){m.removeEventListener(u,_,b)}}}function c(m,f,u,d,b){return typeof m.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof m=="string"&&(m=document.querySelectorAll(m)),Array.prototype.map.call(m,function(_){return a(_,f,u,d,b)}))}function p(m,f,u,d){return function(b){b.delegateTarget=s(b.target,f),b.delegateTarget&&d.call(m,b)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,d,b){if(!u&&!d&&!b)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(b))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,d,b);if(s.nodeList(u))return m(u,d,b);if(s.string(u))return f(u,d,b);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,d,b){return u.addEventListener(d,b),{destroy:function(){u.removeEventListener(d,b)}}}function m(u,d,b){return Array.prototype.forEach.call(u,function(_){_.addEventListener(d,b)}),{destroy:function(){Array.prototype.forEach.call(u,function(_){_.removeEventListener(d,b)})}}}function f(u,d,b){return a(document.body,u,d,b)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var _a=/["'&<>]/;Pn.exports=Aa;function Aa(e){var t=""+e,r=_a.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function U(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||a(u,d)})})}function a(u,d){try{c(o[u](d))}catch(b){f(i[0][3],b)}}function c(u){u.value instanceof Ze?Promise.resolve(u.value.v).then(p,m):f(i[0][2],u)}function p(u){a("next",u)}function m(u){a("throw",u)}function f(u,d){u(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function no(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Pe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(_){t={error:_}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var m=this.initialTeardown;if(C(m))try{m()}catch(_){i=_ instanceof It?_.errors:[_]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=Ee(f),d=u.next();!d.done;d=u.next()){var b=d.value;try{io(b)}catch(_){i=i!=null?i:[],_ instanceof It?i=D(D([],U(i)),U(_.errors)):i.push(_)}}}catch(_){o={error:_}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)io(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&De(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&De(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var xr=Pe.EMPTY;function Pt(e){return e instanceof Pe||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function io(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?xr:(this.currentObservers=null,a.push(r),new Pe(function(){o.currentObservers=null,De(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new uo(r,o)},t}(j);var uo=function(e){ie(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:xr},t}(x);var yt={now:function(){return(yt.delegate||Date).now()},delegate:void 0};var Et=function(e){ie(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=yt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=mt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(mt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(Wt);var vo=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(Ut);var Te=new vo(bo);var T=new j(function(e){return e.complete()});function Nt(e){return e&&C(e.schedule)}function Mr(e){return e[e.length-1]}function Qe(e){return C(Mr(e))?e.pop():void 0}function Oe(e){return Nt(Mr(e))?e.pop():void 0}function Dt(e,t){return typeof Mr(e)=="number"?e.pop():t}var lt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Vt(e){return C(e==null?void 0:e.then)}function zt(e){return C(e[pt])}function qt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=ki();function Yt(e){return C(e==null?void 0:e[Qt])}function Bt(e){return oo(this,arguments,function(){var r,o,n,i;return Rt(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,Ze(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,Ze(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,Ze(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Gt(e){return C(e==null?void 0:e.getReader)}function W(e){if(e instanceof j)return e;if(e!=null){if(zt(e))return Hi(e);if(lt(e))return $i(e);if(Vt(e))return Ri(e);if(qt(e))return go(e);if(Yt(e))return Ii(e);if(Gt(e))return Pi(e)}throw Kt(e)}function Hi(e){return new j(function(t){var r=e[pt]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function $i(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?L(function(n,i){return e(n,i,o)}):de,ge(1),r?He(t):Io(function(){return new Xt}))}}function Po(){for(var e=[],t=0;t=2,!0))}function le(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var m,f,u,d=0,b=!1,_=!1,re=function(){f==null||f.unsubscribe(),f=void 0},Z=function(){re(),m=u=void 0,b=_=!1},Y=function(){var A=m;Z(),A==null||A.unsubscribe()};return g(function(A,it){d++,!_&&!b&&re();var Ne=u=u!=null?u:r();it.add(function(){d--,d===0&&!_&&!b&&(f=kr(Y,c))}),Ne.subscribe(it),!m&&d>0&&(m=new tt({next:function(Ie){return Ne.next(Ie)},error:function(Ie){_=!0,re(),f=kr(Z,n,Ie),Ne.error(Ie)},complete:function(){b=!0,re(),f=kr(Z,s),Ne.complete()}}),W(A).subscribe(m))})(p)}}function kr(e,t){for(var r=[],o=2;oe.next(document)),e}function z(e,t=document){return Array.from(t.querySelectorAll(e))}function N(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function Re(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}var ea=M(h(document.body,"focusin"),h(document.body,"focusout")).pipe(ke(1),V(void 0),l(()=>Re()||document.body),B(1));function er(e){return ea.pipe(l(t=>e.contains(t)),G())}function Je(e){return{x:e.offsetLeft,y:e.offsetTop}}function Uo(e){return M(h(window,"load"),h(window,"resize")).pipe(Ae(0,Te),l(()=>Je(e)),V(Je(e)))}function tr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return M(h(e,"scroll"),h(window,"resize")).pipe(Ae(0,Te),l(()=>tr(e)),V(tr(e)))}function No(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)No(e,r)}function O(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)No(o,n);return o}function rr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function ht(e){let t=O("script",{src:e});return $(()=>(document.head.appendChild(t),M(h(t,"load"),h(t,"error").pipe(v(()=>St(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),k(()=>document.head.removeChild(t)),ge(1))))}var Do=new x,ta=$(()=>typeof ResizeObserver=="undefined"?ht("https://unpkg.com/resize-observer-polyfill"):H(void 0)).pipe(l(()=>new ResizeObserver(e=>{for(let t of e)Do.next(t)})),v(e=>M(Ve,H(e)).pipe(k(()=>e.disconnect()))),B(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function xe(e){return ta.pipe(w(t=>t.observe(e)),v(t=>Do.pipe(L(({target:r})=>r===e),k(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function or(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Vo=new x,ra=$(()=>H(new IntersectionObserver(e=>{for(let t of e)Vo.next(t)},{threshold:0}))).pipe(v(e=>M(Ve,H(e)).pipe(k(()=>e.disconnect()))),B(1));function nr(e){return ra.pipe(w(t=>t.observe(e)),v(t=>Vo.pipe(L(({target:r})=>r===e),k(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function zo(e,t=16){return dt(e).pipe(l(({y:r})=>{let o=he(e),n=bt(e);return r>=n.height-o.height-t}),G())}var ir={drawer:N("[data-md-toggle=drawer]"),search:N("[data-md-toggle=search]")};function qo(e){return ir[e].checked}function Ke(e,t){ir[e].checked!==t&&ir[e].click()}function We(e){let t=ir[e];return h(t,"change").pipe(l(()=>t.checked),V(t.checked))}function oa(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function na(){return M(h(window,"compositionstart").pipe(l(()=>!0)),h(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function Ko(){let e=h(window,"keydown").pipe(L(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:qo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),L(({mode:t,type:r})=>{if(t==="global"){let o=Re();if(typeof o!="undefined")return!oa(o,r)}return!0}),le());return na().pipe(v(t=>t?T:e))}function fe(){return new URL(location.href)}function ot(e){location.href=e.href}function Qo(){return new x}function Yo(){return location.hash.slice(1)}function Pr(e){let t=O("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function ia(e){return M(h(window,"hashchange"),e).pipe(l(Yo),V(Yo()),L(t=>t.length>0),B(1))}function Bo(e){return ia(e).pipe(l(t=>ce(`[id="${t}"]`)),L(t=>typeof t!="undefined"))}function Fr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function Go(){let e=matchMedia("print");return M(h(window,"beforeprint").pipe(l(()=>!0)),h(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function jr(e,t){return e.pipe(v(r=>r?t():T))}function ar(e,t={credentials:"same-origin"}){return me(fetch(`${e}`,t)).pipe(pe(()=>T),v(r=>r.status!==200?St(()=>new Error(r.statusText)):H(r)))}function Ue(e,t){return ar(e,t).pipe(v(r=>r.json()),B(1))}function Jo(e,t){let r=new DOMParser;return ar(e,t).pipe(v(o=>o.text()),l(o=>r.parseFromString(o,"text/xml")),B(1))}function Xo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Zo(){return M(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(l(Xo),V(Xo()))}function en(){return{width:innerWidth,height:innerHeight}}function tn(){return h(window,"resize",{passive:!0}).pipe(l(en),V(en()))}function rn(){return Q([Zo(),tn()]).pipe(l(([e,t])=>({offset:e,size:t})),B(1))}function sr(e,{viewport$:t,header$:r}){let o=t.pipe(X("size")),n=Q([o,r]).pipe(l(()=>Je(e)));return Q([r,t,n]).pipe(l(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function aa(e){return h(e,"message",t=>t.data)}function sa(e){let t=new x;return t.subscribe(r=>e.postMessage(r)),t}function on(e,t=new Worker(e)){let r=aa(t),o=sa(t),n=new x;n.subscribe(o);let i=o.pipe(J(),ee(!0));return n.pipe(J(),qe(r.pipe(K(i))),le())}var ca=N("#__config"),vt=JSON.parse(ca.textContent);vt.base=`${new URL(vt.base,fe())}`;function ue(){return vt}function te(e){return vt.features.includes(e)}function be(e,t){return typeof t!="undefined"?vt.translations[e].replace("#",t.toString()):vt.translations[e]}function ye(e,t=document){return N(`[data-md-component=${e}]`,t)}function ne(e,t=document){return z(`[data-md-component=${e}]`,t)}function pa(e){let t=N(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(l(()=>N(".md-typeset",e)),l(r=>({hash:__md_hash(r.innerHTML)})))}function nn(e){if(!te("announce.dismiss")||!e.childElementCount)return T;if(!e.hidden){let t=N(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return $(()=>{let t=new x;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),pa(e).pipe(w(r=>t.next(r)),k(()=>t.complete()),l(r=>I({ref:e},r)))})}function ma(e,{target$:t}){return t.pipe(l(r=>({hidden:r!==e})))}function an(e,t){let r=new x;return r.subscribe(({hidden:o})=>{e.hidden=o}),ma(e,t).pipe(w(o=>r.next(o)),k(()=>r.complete()),l(o=>I({ref:e},o)))}function la(e,t){let r=$(()=>Q([Uo(e),dt(t)])).pipe(l(([{x:o,y:n},i])=>{let{width:s,height:a}=he(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return er(e).pipe(v(o=>r.pipe(l(n=>({active:o,offset:n})),ge(+!o||1/0))))}function sn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return $(()=>{let i=new x,s=i.pipe(J(),ee(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),nr(e).pipe(K(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),M(i.pipe(L(({active:a})=>a)),i.pipe(ke(250),L(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Ae(16,Te)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(Rr(125,Te),L(()=>!!e.offsetParent),l(()=>e.offsetParent.getBoundingClientRect()),l(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(K(s),L(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),h(n,"mousedown").pipe(K(s),oe(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let m=e.parentElement.closest(".md-annotation");m instanceof HTMLElement?m.focus():(p=Re())==null||p.blur()}}),r.pipe(K(s),L(a=>a===o),ze(125)).subscribe(()=>e.focus()),la(e,t).pipe(w(a=>i.next(a)),k(()=>i.complete()),l(a=>I({ref:e},a)))})}function Wr(e){return O("div",{class:"md-tooltip",id:e},O("div",{class:"md-tooltip__inner md-typeset"}))}function cn(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return O("aside",{class:"md-annotation",tabIndex:0},Wr(t),O("a",{href:r,class:"md-annotation__index",tabIndex:-1},O("span",{"data-md-annotation-id":e})))}else return O("aside",{class:"md-annotation",tabIndex:0},Wr(t),O("span",{class:"md-annotation__index",tabIndex:-1},O("span",{"data-md-annotation-id":e})))}function pn(e){return O("button",{class:"md-clipboard md-icon",title:be("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Ur(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,O("del",null,p)," "],[]).slice(0,-1),i=ue(),s=new URL(e.location,i.base);te("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=ue();return O("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},O("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&O("div",{class:"md-search-result__icon md-icon"}),r>0&&O("h1",null,e.title),r<=0&&O("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return O("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&O("p",{class:"md-search-result__terms"},be("search.result.term.missing"),": ",...n)))}function mn(e){let t=e[0].score,r=[...e],o=ue(),n=r.findIndex(m=>!`${new URL(m.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(m=>m.scoreUr(m,1)),...c.length?[O("details",{class:"md-search-result__more"},O("summary",{tabIndex:-1},O("div",null,c.length>0&&c.length===1?be("search.result.more.one"):be("search.result.more.other",c.length))),...c.map(m=>Ur(m,1)))]:[]];return O("li",{class:"md-search-result__item"},p)}function ln(e){return O("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>O("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?rr(r):r)))}function Nr(e){let t=`tabbed-control tabbed-control--${e}`;return O("div",{class:t,hidden:!0},O("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function fn(e){return O("div",{class:"md-typeset__scrollwrap"},O("div",{class:"md-typeset__table"},e))}function fa(e){let t=ue(),r=new URL(`../${e.version}/`,t.base);return O("li",{class:"md-version__item"},O("a",{href:`${r}`,class:"md-version__link"},e.title))}function un(e,t){return O("div",{class:"md-version"},O("button",{class:"md-version__current","aria-label":be("select.version")},t.title),O("ul",{class:"md-version__list"},e.map(fa)))}function ua(e){return e.tagName==="CODE"?z(".c, .c1, .cm",e):[e]}function da(e){let t=[];for(let r of ua(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function dn(e,t){t.append(...Array.from(e.childNodes))}function cr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of da(t)){let[,c]=a.textContent.match(/\((\d+)\)/);ce(`:scope > li:nth-child(${c})`,e)&&(s.set(c,cn(c,i)),a.replaceWith(s.get(c)))}return s.size===0?T:$(()=>{let a=new x,c=a.pipe(J(),ee(!0)),p=[];for(let[m,f]of s)p.push([N(".md-typeset",f),N(`:scope > li:nth-child(${m})`,e)]);return o.pipe(K(c)).subscribe(m=>{e.hidden=!m,e.classList.toggle("md-annotation-list",m);for(let[f,u]of p)m?dn(f,u):dn(u,f)}),M(...[...s].map(([,m])=>sn(m,t,{target$:r}))).pipe(k(()=>a.complete()),le())})}function hn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return hn(t)}}function bn(e,t){return $(()=>{let r=hn(e);return typeof r!="undefined"?cr(r,e,t):T})}var gn=$t(Vr());var ha=0;function xn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return xn(t)}}function vn(e){return xe(e).pipe(l(({width:t})=>({scrollable:bt(e).width>t})),X("scrollable"))}function yn(e,t){let{matches:r}=matchMedia("(hover)"),o=$(()=>{let n=new x;if(n.subscribe(({scrollable:s})=>{s&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),gn.default.isSupported()&&(e.closest(".copy")||te("content.code.copy")&&!e.closest(".no-copy"))){let s=e.closest("pre");s.id=`__code_${ha++}`,s.insertBefore(pn(s.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let s=xn(i);if(typeof s!="undefined"&&(i.classList.contains("annotate")||te("content.code.annotate"))){let a=cr(s,e,t);return vn(e).pipe(w(c=>n.next(c)),k(()=>n.complete()),l(c=>I({ref:e},c)),qe(xe(i).pipe(l(({width:c,height:p})=>c&&p),G(),v(c=>c?a:T))))}}return vn(e).pipe(w(s=>n.next(s)),k(()=>n.complete()),l(s=>I({ref:e},s)))});return te("content.lazy")?nr(e).pipe(L(n=>n),ge(1),v(()=>o)):o}function ba(e,{target$:t,print$:r}){let o=!0;return M(t.pipe(l(n=>n.closest("details:not([open])")),L(n=>e===n),l(()=>({action:"open",reveal:!0}))),r.pipe(L(n=>n||!o),w(()=>o=e.open),l(n=>({action:n?"open":"close"}))))}function En(e,t){return $(()=>{let r=new x;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),ba(e,t).pipe(w(o=>r.next(o)),k(()=>r.complete()),l(o=>I({ref:e},o)))})}var wn=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var zr,ga=0;function xa(){return typeof mermaid=="undefined"||mermaid instanceof Element?ht("https://unpkg.com/mermaid@9.4.3/dist/mermaid.min.js"):H(void 0)}function Sn(e){return e.classList.remove("mermaid"),zr||(zr=xa().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:wn,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),l(()=>{}),B(1))),zr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${ga++}`,r=O("div",{class:"mermaid"}),o=e.textContent;mermaid.mermaidAPI.render(t,o,(n,i)=>{let s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})}),zr.pipe(l(()=>({ref:e})))}var Tn=O("table");function On(e){return e.replaceWith(Tn),Tn.replaceWith(fn(e)),H({ref:e})}function ya(e){let t=z(":scope > input",e),r=t.find(o=>o.checked)||t[0];return M(...t.map(o=>h(o,"change").pipe(l(()=>N(`label[for="${o.id}"]`))))).pipe(V(N(`label[for="${r.id}"]`)),l(o=>({active:o})))}function Mn(e,{viewport$:t}){let r=Nr("prev");e.append(r);let o=Nr("next");e.append(o);let n=N(".tabbed-labels",e);return $(()=>{let i=new x,s=i.pipe(J(),ee(!0));return Q([i,xe(e)]).pipe(Ae(1,Te),K(s)).subscribe({next([{active:a},c]){let p=Je(a),{width:m}=he(a);e.style.setProperty("--md-indicator-x",`${p.x}px`),e.style.setProperty("--md-indicator-width",`${m}px`);let f=tr(n);(p.xf.x+c.width)&&n.scrollTo({left:Math.max(0,p.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Q([dt(n),xe(n)]).pipe(K(s)).subscribe(([a,c])=>{let p=bt(n);r.hidden=a.x<16,o.hidden=a.x>p.width-c.width-16}),M(h(r,"click").pipe(l(()=>-1)),h(o,"click").pipe(l(()=>1))).pipe(K(s)).subscribe(a=>{let{width:c}=he(n);n.scrollBy({left:c*a,behavior:"smooth"})}),te("content.tabs.link")&&i.pipe(je(1),oe(t)).subscribe(([{active:a},{offset:c}])=>{let p=a.innerText.trim();if(a.hasAttribute("data-md-switching"))a.removeAttribute("data-md-switching");else{let m=e.offsetTop-c.y;for(let u of z("[data-tabs]"))for(let d of z(":scope > input",u)){let b=N(`label[for="${d.id}"]`);if(b!==a&&b.innerText.trim()===p){b.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-m});let f=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([p,...f])])}}),i.pipe(K(s)).subscribe(()=>{for(let a of z("audio, video",e))a.pause()}),ya(e).pipe(w(a=>i.next(a)),k(()=>i.complete()),l(a=>I({ref:e},a)))}).pipe(rt(ae))}function Ln(e,{viewport$:t,target$:r,print$:o}){return M(...z(".annotate:not(.highlight)",e).map(n=>bn(n,{target$:r,print$:o})),...z("pre:not(.mermaid) > code",e).map(n=>yn(n,{target$:r,print$:o})),...z("pre.mermaid",e).map(n=>Sn(n)),...z("table:not([class])",e).map(n=>On(n)),...z("details",e).map(n=>En(n,{target$:r,print$:o})),...z("[data-tabs]",e).map(n=>Mn(n,{viewport$:t})))}function Ea(e,{alert$:t}){return t.pipe(v(r=>M(H(!0),H(!1).pipe(ze(2e3))).pipe(l(o=>({message:r,active:o})))))}function _n(e,t){let r=N(".md-typeset",e);return $(()=>{let o=new x;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ea(e,t).pipe(w(n=>o.next(n)),k(()=>o.complete()),l(n=>I({ref:e},n)))})}function wa({viewport$:e}){if(!te("header.autohide"))return H(!1);let t=e.pipe(l(({offset:{y:n}})=>n),Ce(2,1),l(([n,i])=>[nMath.abs(i-n.y)>100),l(([,[n]])=>n),G()),o=We("search");return Q([e,o]).pipe(l(([{offset:n},i])=>n.y>400&&!i),G(),v(n=>n?r:H(!1)),V(!1))}function An(e,t){return $(()=>Q([xe(e),wa(t)])).pipe(l(([{height:r},o])=>({height:r,hidden:o})),G((r,o)=>r.height===o.height&&r.hidden===o.hidden),B(1))}function Cn(e,{header$:t,main$:r}){return $(()=>{let o=new x,n=o.pipe(J(),ee(!0));return o.pipe(X("active"),Ge(t)).subscribe(([{active:i},{hidden:s}])=>{e.classList.toggle("md-header--shadow",i&&!s),e.hidden=s}),r.subscribe(o),t.pipe(K(n),l(i=>I({ref:e},i)))})}function Sa(e,{viewport$:t,header$:r}){return sr(e,{viewport$:t,header$:r}).pipe(l(({offset:{y:o}})=>{let{height:n}=he(e);return{active:o>=n}}),X("active"))}function kn(e,t){return $(()=>{let r=new x;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=ce(".md-content h1");return typeof o=="undefined"?T:Sa(o,t).pipe(w(n=>r.next(n)),k(()=>r.complete()),l(n=>I({ref:e},n)))})}function Hn(e,{viewport$:t,header$:r}){let o=r.pipe(l(({height:i})=>i),G()),n=o.pipe(v(()=>xe(e).pipe(l(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),X("bottom"))));return Q([o,n,t]).pipe(l(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),G((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Ta(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return H(...e).pipe(se(r=>h(r,"change").pipe(l(()=>r))),V(e[Math.max(0,t.index)]),l(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),B(1))}function $n(e){let t=O("meta",{name:"theme-color"});document.head.appendChild(t);let r=O("meta",{name:"color-scheme"});return document.head.appendChild(r),$(()=>{let o=new x;o.subscribe(i=>{document.body.setAttribute("data-md-color-switching","");for(let[s,a]of Object.entries(i.color))document.body.setAttribute(`data-md-color-${s}`,a);for(let s=0;s{let i=ye("header"),s=window.getComputedStyle(i);return r.content=s.colorScheme,s.backgroundColor.match(/\d+/g).map(a=>(+a).toString(16).padStart(2,"0")).join("")})).subscribe(i=>t.content=`#${i}`),o.pipe(_e(ae)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")});let n=z("input",e);return Ta(n).pipe(w(i=>o.next(i)),k(()=>o.complete()),l(i=>I({ref:e},i)))})}var qr=$t(Vr());function Oa(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function Rn({alert$:e}){qr.default.isSupported()&&new j(t=>{new qr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Oa(N(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),l(()=>be("clipboard.copied"))).subscribe(e)}function Ma(e){if(e.length<2)return[""];let[t,r]=[...e].sort((n,i)=>n.length-i.length).map(n=>n.replace(/[^/]+$/,"")),o=0;if(t===r)o=t.length;else for(;t.charCodeAt(o)===r.charCodeAt(o);)o++;return e.map(n=>n.replace(t.slice(0,o),""))}function pr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return H(t);{let r=ue();return Jo(new URL("sitemap.xml",e||r.base)).pipe(l(o=>Ma(z("loc",o).map(n=>n.textContent))),pe(()=>T),He([]),w(o=>__md_set("__sitemap",o,sessionStorage,e)))}}function In({location$:e,viewport$:t}){let r=ue();if(location.protocol==="file:")return T;let o=pr().pipe(l(p=>p.map(m=>`${new URL(m,r.base)}`))),n=h(document.body,"click").pipe(oe(o),v(([p,m])=>{if(!(p.target instanceof Element))return T;let f=p.target.closest("a");if(f===null)return T;if(f.target||p.metaKey||p.ctrlKey)return T;let u=new URL(f.href);return u.search=u.hash="",m.includes(`${u}`)?(p.preventDefault(),H(new URL(f.href))):T}),le());n.pipe(ge(1)).subscribe(()=>{let p=ce("link[rel=icon]");typeof p!="undefined"&&(p.href=p.href)}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),n.pipe(oe(t)).subscribe(([p,{offset:m}])=>{history.scrollRestoration="manual",history.replaceState(m,""),history.pushState(null,"",p)}),n.subscribe(e);let i=e.pipe(V(fe()),X("pathname"),je(1),v(p=>ar(p).pipe(pe(()=>(ot(p),T))))),s=new DOMParser,a=i.pipe(v(p=>p.text()),v(p=>{let m=s.parseFromString(p,"text/html");for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...te("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let d=ce(u),b=ce(u,m);typeof d!="undefined"&&typeof b!="undefined"&&d.replaceWith(b)}let f=ye("container");return Fe(z("script",f)).pipe(v(u=>{let d=m.createElement("script");if(u.src){for(let b of u.getAttributeNames())d.setAttribute(b,u.getAttribute(b));return u.replaceWith(d),new j(b=>{d.onload=()=>b.complete()})}else return d.textContent=u.textContent,u.replaceWith(d),T}),J(),ee(m))}),le());return h(window,"popstate").pipe(l(fe)).subscribe(e),e.pipe(V(fe()),Ce(2,1),v(([p,m])=>p.pathname===m.pathname&&p.hash!==m.hash?H(m):T)).subscribe(p=>{var m,f;history.state!==null||!p.hash?window.scrollTo(0,(f=(m=history.state)==null?void 0:m.y)!=null?f:0):(history.scrollRestoration="auto",Pr(p.hash),history.scrollRestoration="manual")}),a.pipe(oe(e)).subscribe(([,p])=>{var m,f;history.state!==null||!p.hash?window.scrollTo(0,(f=(m=history.state)==null?void 0:m.y)!=null?f:0):Pr(p.hash)}),a.pipe(v(()=>t),X("offset"),ke(100)).subscribe(({offset:p})=>{history.replaceState(p,"")}),a}var jn=$t(Fn());function Wn(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,jn.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Lt(e){return e.type===1}function mr(e){return e.type===3}function Un(e,t){let r=on(e);return M(H(location.protocol!=="file:"),We("search")).pipe($e(o=>o),v(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:te("search.suggest")}}})),r}function Nn({document$:e}){let t=ue(),r=Ue(new URL("../versions.json",t.base)).pipe(pe(()=>T)),o=r.pipe(l(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(l(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),v(n=>h(document.body,"click").pipe(L(i=>!i.metaKey&&!i.ctrlKey),oe(o),v(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?T:(i.preventDefault(),H(c))}}return T}),v(i=>{let{version:s}=n.get(i);return pr(new URL(i)).pipe(l(a=>{let p=fe().href.replace(t.base,"");return a.includes(p.split("#")[0])?new URL(`../${s}/${p}`,t.base):new URL(i)}))})))).subscribe(n=>ot(n)),Q([r,o]).subscribe(([n,i])=>{N(".md-header__topic").appendChild(un(n,i))}),e.pipe(v(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases)if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of ne("outdated"))a.hidden=!1})}function ka(e,{worker$:t}){let{searchParams:r}=fe();r.has("q")&&(Ke("search",!0),e.value=r.get("q"),e.focus(),We("search").pipe($e(i=>!i)).subscribe(()=>{let i=new URL(location.href);i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=er(e),n=M(t.pipe($e(Lt)),h(e,"keyup"),o).pipe(l(()=>e.value),G());return Q([n,o]).pipe(l(([i,s])=>({value:i,focus:s})),B(1))}function Dn(e,{worker$:t}){let r=new x,o=r.pipe(J(),ee(!0));Q([t.pipe($e(Lt)),r],(i,s)=>s).pipe(X("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(X("focus")).subscribe(({focus:i})=>{i&&Ke("search",i)}),h(e.form,"reset").pipe(K(o)).subscribe(()=>e.focus());let n=N("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),ka(e,{worker$:t}).pipe(w(i=>r.next(i)),k(()=>r.complete()),l(i=>I({ref:e},i)),B(1))}function Vn(e,{worker$:t,query$:r}){let o=new x,n=zo(e.parentElement).pipe(L(Boolean)),i=e.parentElement,s=N(":scope > :first-child",e),a=N(":scope > :last-child",e);We("search").subscribe(m=>a.setAttribute("role",m?"list":"presentation")),o.pipe(oe(r),Hr(t.pipe($e(Lt)))).subscribe(([{items:m},{value:f}])=>{switch(m.length){case 0:s.textContent=f.length?be("search.result.none"):be("search.result.placeholder");break;case 1:s.textContent=be("search.result.one");break;default:let u=rr(m.length);s.textContent=be("search.result.other",u)}});let c=o.pipe(w(()=>a.innerHTML=""),v(({items:m})=>M(H(...m.slice(0,10)),H(...m.slice(10)).pipe(Ce(4),Ir(n),v(([f])=>f)))),l(mn),le());return c.subscribe(m=>a.appendChild(m)),c.pipe(se(m=>{let f=ce("details",m);return typeof f=="undefined"?T:h(f,"toggle").pipe(K(o),l(()=>f))})).subscribe(m=>{m.open===!1&&m.offsetTop<=i.scrollTop&&i.scrollTo({top:m.offsetTop})}),t.pipe(L(mr),l(({data:m})=>m)).pipe(w(m=>o.next(m)),k(()=>o.complete()),l(m=>I({ref:e},m)))}function Ha(e,{query$:t}){return t.pipe(l(({value:r})=>{let o=fe();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function zn(e,t){let r=new x,o=r.pipe(J(),ee(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(K(o)).subscribe(n=>n.preventDefault()),Ha(e,t).pipe(w(n=>r.next(n)),k(()=>r.complete()),l(n=>I({ref:e},n)))}function qn(e,{worker$:t,keyboard$:r}){let o=new x,n=ye("search-query"),i=M(h(n,"keydown"),h(n,"focus")).pipe(_e(ae),l(()=>n.value),G());return o.pipe(Ge(i),l(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let m=a[a.length-1];m.startsWith(p[p.length-1])&&(p[p.length-1]=m)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(L(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(L(mr),l(({data:a})=>a)).pipe(w(a=>o.next(a)),k(()=>o.complete()),l(()=>({ref:e})))}function Kn(e,{index$:t,keyboard$:r}){let o=ue();try{let n=Un(o.search,t),i=ye("search-query",e),s=ye("search-result",e);h(e,"click").pipe(L(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>Ke("search",!1)),r.pipe(L(({mode:c})=>c==="search")).subscribe(c=>{let p=Re();switch(c.type){case"Enter":if(p===i){let m=new Map;for(let f of z(":first-child [href]",s)){let u=f.firstElementChild;m.set(f,parseFloat(u.getAttribute("data-md-score")))}if(m.size){let[[f]]=[...m].sort(([,u],[,d])=>d-u);f.click()}c.claim()}break;case"Escape":case"Tab":Ke("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let m=[i,...z(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,m.indexOf(p))+m.length+(c.type==="ArrowUp"?-1:1))%m.length);m[f].focus()}c.claim();break;default:i!==Re()&&i.focus()}}),r.pipe(L(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=Dn(i,{worker$:n});return M(a,Vn(s,{worker$:n,query$:a})).pipe(qe(...ne("search-share",e).map(c=>zn(c,{query$:a})),...ne("search-suggest",e).map(c=>qn(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ve}}function Qn(e,{index$:t,location$:r}){return Q([t,r.pipe(V(fe()),L(o=>!!o.searchParams.get("h")))]).pipe(l(([o,n])=>Wn(o.config)(n.searchParams.get("h"))),l(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=O("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function $a(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return Q([r,t]).pipe(l(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),G((i,s)=>i.height===s.height&&i.locked===s.locked))}function Kr(e,o){var n=o,{header$:t}=n,r=Zr(n,["header$"]);let i=N(".md-sidebar__scrollwrap",e),{y:s}=Je(i);return $(()=>{let a=new x,c=a.pipe(J(),ee(!0)),p=a.pipe(Ae(0,Te));return p.pipe(oe(t)).subscribe({next([{height:m},{height:f}]){i.style.height=`${m-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe($e()).subscribe(()=>{for(let m of z(".md-nav__link--active[href]",e)){let f=or(m);if(typeof f!="undefined"){let u=m.offsetTop-f.offsetTop,{height:d}=he(f);f.scrollTo({top:u-d/2})}}}),me(z("label[tabindex]",e)).pipe(se(m=>h(m,"click").pipe(l(()=>m),K(c)))).subscribe(m=>{let f=N(`[id="${m.htmlFor}"]`);N(`[aria-labelledby="${m.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),$a(e,r).pipe(w(m=>a.next(m)),k(()=>a.complete()),l(m=>I({ref:e},m)))})}function Yn(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Tt(Ue(`${r}/releases/latest`).pipe(pe(()=>T),l(o=>({version:o.tag_name})),He({})),Ue(r).pipe(pe(()=>T),l(o=>({stars:o.stargazers_count,forks:o.forks_count})),He({}))).pipe(l(([o,n])=>I(I({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return Ue(r).pipe(l(o=>({repositories:o.public_repos})),He({}))}}function Bn(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return Ue(r).pipe(pe(()=>T),l(({star_count:o,forks_count:n})=>({stars:o,forks:n})),He({}))}function Gn(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return Yn(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return Bn(r,o)}return T}var Ra;function Ia(e){return Ra||(Ra=$(()=>{let t=__md_get("__source",sessionStorage);if(t)return H(t);if(ne("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return T}return Gn(e.href).pipe(w(o=>__md_set("__source",o,sessionStorage)))}).pipe(pe(()=>T),L(t=>Object.keys(t).length>0),l(t=>({facts:t})),B(1)))}function Jn(e){let t=N(":scope > :last-child",e);return $(()=>{let r=new x;return r.subscribe(({facts:o})=>{t.appendChild(ln(o)),t.classList.add("md-source__repository--active")}),Ia(e).pipe(w(o=>r.next(o)),k(()=>r.complete()),l(o=>I({ref:e},o)))})}function Pa(e,{viewport$:t,header$:r}){return xe(document.body).pipe(v(()=>sr(e,{header$:r,viewport$:t})),l(({offset:{y:o}})=>({hidden:o>=10})),X("hidden"))}function Xn(e,t){return $(()=>{let r=new x;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(te("navigation.tabs.sticky")?H({hidden:!1}):Pa(e,t)).pipe(w(o=>r.next(o)),k(()=>r.complete()),l(o=>I({ref:e},o)))})}function Fa(e,{viewport$:t,header$:r}){let o=new Map,n=z("[href^=\\#]",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=ce(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(X("height"),l(({height:a})=>{let c=ye("main"),p=N(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),le());return xe(document.body).pipe(X("height"),v(a=>$(()=>{let c=[];return H([...o].reduce((p,[m,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return p.set([...c=[...c,m]].reverse(),u)},new Map))}).pipe(l(c=>new Map([...c].sort(([,p],[,m])=>p-m))),Ge(i),v(([c,p])=>t.pipe(Cr(([m,f],{offset:{y:u},size:d})=>{let b=u+d.height>=Math.floor(a.height);for(;f.length;){let[,_]=f[0];if(_-p=u&&!b)f=[m.pop(),...f];else break}return[m,f]},[[],[...c]]),G((m,f)=>m[0]===f[0]&&m[1]===f[1])))))).pipe(l(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),V({prev:[],next:[]}),Ce(2,1),l(([a,c])=>a.prev.length{let i=new x,s=i.pipe(J(),ee(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[m]]of a.entries())m.classList.add("md-nav__link--passed"),m.classList.toggle("md-nav__link--active",p===a.length-1)}),te("toc.follow")){let a=M(t.pipe(ke(1),l(()=>{})),t.pipe(ke(250),l(()=>"smooth")));i.pipe(L(({prev:c})=>c.length>0),Ge(o.pipe(_e(ae))),oe(a)).subscribe(([[{prev:c}],p])=>{let[m]=c[c.length-1];if(m.offsetHeight){let f=or(m);if(typeof f!="undefined"){let u=m.offsetTop-f.offsetTop,{height:d}=he(f);f.scrollTo({top:u-d/2,behavior:p})}}})}return te("navigation.tracking")&&t.pipe(K(s),X("offset"),ke(250),je(1),K(n.pipe(je(1))),Ot({delay:250}),oe(i)).subscribe(([,{prev:a}])=>{let c=fe(),p=a[a.length-1];if(p&&p.length){let[m]=p,{hash:f}=new URL(m.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),Fa(e,{viewport$:t,header$:r}).pipe(w(a=>i.next(a)),k(()=>i.complete()),l(a=>I({ref:e},a)))})}function ja(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(l(({offset:{y:s}})=>s),Ce(2,1),l(([s,a])=>s>a&&a>0),G()),i=r.pipe(l(({active:s})=>s));return Q([i,n]).pipe(l(([s,a])=>!(s&&a)),G(),K(o.pipe(je(1))),ee(!0),Ot({delay:250}),l(s=>({hidden:s})))}function ei(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new x,s=i.pipe(J(),ee(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(K(s),X("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),h(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),ja(e,{viewport$:t,main$:o,target$:n}).pipe(w(a=>i.next(a)),k(()=>i.complete()),l(a=>I({ref:e},a)))}function ti({document$:e,tablet$:t}){e.pipe(v(()=>z(".md-toggle--indeterminate")),w(r=>{r.indeterminate=!0,r.checked=!1}),se(r=>h(r,"change").pipe($r(()=>r.classList.contains("md-toggle--indeterminate")),l(()=>r))),oe(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function Wa(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function ri({document$:e}){e.pipe(v(()=>z("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),L(Wa),se(t=>h(t,"touchstart").pipe(l(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function oi({viewport$:e,tablet$:t}){Q([We("search"),t]).pipe(l(([r,o])=>r&&!o),v(r=>H(r).pipe(ze(r?400:100))),oe(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function Ua(){return location.protocol==="file:"?ht(`${new URL("search/search_index.js",Qr.base)}`).pipe(l(()=>__index),B(1)):Ue(new URL("search/search_index.json",Qr.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var nt=Wo(),At=Qo(),gt=Bo(At),Yr=Ko(),Se=rn(),lr=Fr("(min-width: 960px)"),ii=Fr("(min-width: 1220px)"),ai=Go(),Qr=ue(),si=document.forms.namedItem("search")?Ua():Ve,Br=new x;Rn({alert$:Br});te("navigation.instant")&&In({location$:At,viewport$:Se}).subscribe(nt);var ni;((ni=Qr.version)==null?void 0:ni.provider)==="mike"&&Nn({document$:nt});M(At,gt).pipe(ze(125)).subscribe(()=>{Ke("drawer",!1),Ke("search",!1)});Yr.pipe(L(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=ce("link[rel=prev]");typeof t!="undefined"&&ot(t);break;case"n":case".":let r=ce("link[rel=next]");typeof r!="undefined"&&ot(r);break;case"Enter":let o=Re();o instanceof HTMLLabelElement&&o.click()}});ti({document$:nt,tablet$:lr});ri({document$:nt});oi({viewport$:Se,tablet$:lr});var Xe=An(ye("header"),{viewport$:Se}),_t=nt.pipe(l(()=>ye("main")),v(e=>Hn(e,{viewport$:Se,header$:Xe})),B(1)),Na=M(...ne("consent").map(e=>an(e,{target$:gt})),...ne("dialog").map(e=>_n(e,{alert$:Br})),...ne("header").map(e=>Cn(e,{viewport$:Se,header$:Xe,main$:_t})),...ne("palette").map(e=>$n(e)),...ne("search").map(e=>Kn(e,{index$:si,keyboard$:Yr})),...ne("source").map(e=>Jn(e))),Da=$(()=>M(...ne("announce").map(e=>nn(e)),...ne("content").map(e=>Ln(e,{viewport$:Se,target$:gt,print$:ai})),...ne("content").map(e=>te("search.highlight")?Qn(e,{index$:si,location$:At}):T),...ne("header-title").map(e=>kn(e,{viewport$:Se,header$:Xe})),...ne("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?jr(ii,()=>Kr(e,{viewport$:Se,header$:Xe,main$:_t})):jr(lr,()=>Kr(e,{viewport$:Se,header$:Xe,main$:_t}))),...ne("tabs").map(e=>Xn(e,{viewport$:Se,header$:Xe})),...ne("toc").map(e=>Zn(e,{viewport$:Se,header$:Xe,main$:_t,target$:gt})),...ne("top").map(e=>ei(e,{viewport$:Se,header$:Xe,main$:_t,target$:gt})))),ci=nt.pipe(v(()=>Da),qe(Na),B(1));ci.subscribe();window.document$=nt;window.location$=At;window.target$=gt;window.keyboard$=Yr;window.viewport$=Se;window.tablet$=lr;window.screen$=ii;window.print$=ai;window.alert$=Br;window.component$=ci;})(); +//# sourceMappingURL=bundle.dff1b7c8.min.js.map + diff --git a/gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js.map b/gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js.map new file mode 100644 index 0000000..82d9023 --- /dev/null +++ b/gitpages-galt/site/assets/javascripts/bundle.dff1b7c8.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "src/assets/javascripts/bundle.ts", "node_modules/rxjs/node_modules/tslib/tslib.es6.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/round/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/templates/tooltip/index.tsx", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/annotation/block/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/mermaid/index.css", "src/assets/javascripts/components/content/mermaid/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], + "sourceRoot": "../../..", + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget(location$)\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ location$, viewport$ })\n .subscribe(document$)\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement)\n active.click()\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, {\n viewport$, header$, main$, target$\n })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction,\n ...fns: UnaryFunction[]\n): UnaryFunction;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate(\n init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void\n): OperatorFunction {\n return (source: Observable) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber, liftedSource: Observable) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an \ No newline at end of file From 6d510fdeff8256211cfc40582101e5afa5078682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=9B=C2=9BJo=C3=A3o=20Pedro?= Date: Tue, 19 Nov 2024 17:03:50 -0300 Subject: [PATCH 21/44] =?UTF-8?q?docs(#2):=20Ajustando=20a=20solu=C3=A7?= =?UTF-8?q?=C3=A3o=20proposta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/solucao.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/solucao.md b/docs/solucao.md index 4a62cb3..28882f5 100644 --- a/docs/solucao.md +++ b/docs/solucao.md @@ -1,10 +1,10 @@ # Solução Proposta -## Objetivos do Produto +## Objetivos do Produto -

O objetivo do produto é criar um portal informativo focado no Galt, onde todos os membros administrativos e professores poderão publicar atualizações e conteúdos relevantes.

O portal Galt contribuirá para a comunicação entre a administração e os alunos, pois permitirá que a equipe administrativa e os professores publiquem posts, que poderão ser avisos sobre as aulas ou informações sobre vestibulares, por exemplo. Dessa forma, os alunos terão um espaço centralizado com conteúdos do Galt Vestibulares, organizado conforme as necessidades do cursinho.

+

O produto tem como objetivo aprimorar a comunicação entre administradores, professores e alunos do Galt Vestibulares por meio de um portal web. Nesse ambiente, os membros administrativos e professores do cursinho poderão publicar atualizações e conteúdos relevantes de forma eficiente e acessível.

O portal contará com funcionalidades dedicadas, como espaços para publicação de resultados de simulados, acompanhamento da frequência dos alunos e divulgação de notícias importantes relacionadas ao cursinho. Com isso, os alunos terão acesso centralizado e organizado a todas as informações essenciais, atendendo às demandas específicas do Galt Vestibulares e contribuindo para a eficiência de sua gestão educacional.

-## Características da Solução +## Características da Solução * **Portal de notícias do cursinho:** Um espaço onde alunos e professores podem acessar atualizações, novidades e comunicados importantes do cursinho em tempo real. From a4d9909a0095ae90bc311fee342bc44f1a0a2834 Mon Sep 17 00:00:00 2001 From: Pedro Cruz Date: Thu, 21 Nov 2024 08:00:01 -0300 Subject: [PATCH 22/44] =?UTF-8?q?adicionando=20se=C3=A7=C3=A3o=20video=20a?= =?UTF-8?q?presenta=C3=A7=C3=A3o=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index 68e8262..70f7f72 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,6 +10,7 @@ nav: - Cronograma e Entregas: 'cronograma.md' - Interação entre Equipe e Cliente: 'interacao.md' - Lições Aprendidas: 'licoesaprendidas.md' + - Video de apresetanção: video_u1.md theme: From 64c5b895399da4b17d6f6fa87d425d95113071ca Mon Sep 17 00:00:00 2001 From: Pedro Cruz Date: Thu, 21 Nov 2024 08:00:36 -0300 Subject: [PATCH 23/44] =?UTF-8?q?adicionando=20se=C3=A7=C3=A3o=20do=20vide?= =?UTF-8?q?o=20de=20apresenta=C3=A7=C3=A3o=20u1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 70f7f72..fc425c8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,7 +10,7 @@ nav: - Cronograma e Entregas: 'cronograma.md' - Interação entre Equipe e Cliente: 'interacao.md' - Lições Aprendidas: 'licoesaprendidas.md' - - Video de apresetanção: video_u1.md + - Video de apresetanção Unidade 1: video_u1.md theme: From cc7f70ba7fed4f518c4d4e8fd55b5c93d6c9207e Mon Sep 17 00:00:00 2001 From: Pedro Cruz Date: Thu, 21 Nov 2024 08:03:08 -0300 Subject: [PATCH 24/44] =?UTF-8?q?tirando=20tag=20de=20video=20n=C3=A3o=20f?= =?UTF-8?q?uncional?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/video_u1.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/video_u1.md b/docs/video_u1.md index 521d0f7..e039444 100644 --- a/docs/video_u1.md +++ b/docs/video_u1.md @@ -1,8 +1,4 @@ # Video de apresentação Unidade 1 ## Video - - \ No newline at end of file From a16e74fcb02e01a19cc77049473417c509c6b5cb Mon Sep 17 00:00:00 2001 From: Pedro Cruz Date: Thu, 21 Nov 2024 08:17:50 -0300 Subject: [PATCH 25/44] resolvendo typos --- docs/{video_u1.md => videos_apresentacao.md} | 4 ++-- mkdocs.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename docs/{video_u1.md => videos_apresentacao.md} (89%) diff --git a/docs/video_u1.md b/docs/videos_apresentacao.md similarity index 89% rename from docs/video_u1.md rename to docs/videos_apresentacao.md index e039444..3b001c5 100644 --- a/docs/video_u1.md +++ b/docs/videos_apresentacao.md @@ -1,4 +1,4 @@ -# Video de apresentação Unidade 1 +# Videos de apresentação -## Video +## Unidade 1 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index fc425c8..0c8f8c4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,7 +10,7 @@ nav: - Cronograma e Entregas: 'cronograma.md' - Interação entre Equipe e Cliente: 'interacao.md' - Lições Aprendidas: 'licoesaprendidas.md' - - Video de apresetanção Unidade 1: video_u1.md + - Videos de apresetanção: videos_apresentacao.md theme: From 89feb6c894e9b9155647b10e4c2be0f374d307e0 Mon Sep 17 00:00:00 2001 From: Pedro Cruz Date: Thu, 21 Nov 2024 20:49:22 -0300 Subject: [PATCH 26/44] issue#3: sources missing, solved --- docs/estrategias.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/estrategias.md b/docs/estrategias.md index 55b6bea..8fb0cc5 100644 --- a/docs/estrategias.md +++ b/docs/estrategias.md @@ -25,6 +25,8 @@ | Controle de Qualidade | Validações incrementais e revisão da arquitetura | Confiança nos ritos do ScrumXP como o pair programing e a validação com o cliente | | Escalabilidade | Pode ser aplicado com equipes grandes e projetos complexos | Indicado para equipes menores, mas pode ser escalável | | Suporte a Equipes de Desenvolvimento | Papéis definidos e hirarquia clara | Equipes menores e mais colaborativas | +fonte: slide de sala de aula "Unidade 1 - Aula - Aborgadens, Ciclos de Vida e Processo.pdf" +exemplo ecofashion "TEMPLATE - REQ - 2024.2 - Visao do Produto e Projeto.pdf" ## Justificativa From 805c1c9eb9d79bd8e42db09637497efe6c9096b4 Mon Sep 17 00:00:00 2001 From: CA1RO Date: Fri, 22 Nov 2024 13:25:52 -0300 Subject: [PATCH 27/44] =?UTF-8?q?docs[interacao]:=20adiciona=20o=20papel?= =?UTF-8?q?=20de=20Analista=20de=20Requisitos=20na=20composi=C3=A7=C3=A3o?= =?UTF-8?q?=20da=20equipe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs: #5 --- docs/interacao.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/interacao.md b/docs/interacao.md index 8b706da..a49bb16 100644 --- a/docs/interacao.md +++ b/docs/interacao.md @@ -11,6 +11,8 @@ | Analista de QA | Responsável por testar a solução para garantir a qualidade e a correção do sistema antes da entrega, identificando possíveis bugs e validando funcionalidades. | Bruno de Oliveira | Bruno de Oliveira | | Product Owner (PO) | Trabalha diretamente com o cliente para entender e definir os requisitos, priorizar funcionalidades e garantir que o produto final atenda às expectativas do cliente. | Ane Carolina | Ane Carolina | | Gerente de Projeto | Supervisiona o andamento do projeto, define metas, coordena a equipe e mantém o cronograma do projeto. | Pedro Fonseca | Pedro Fonseca | +| Analista de Requisitos | Trabalha na definição dos requisitos funcionais e não funcionais +do sistema e garante que eles sejam atendidos. | Todos os integrantes do time | Todos os integrantes do time | ## Comunicação From fb45e45bbc5f27ba3efb8ea25e354491422c67a4 Mon Sep 17 00:00:00 2001 From: CA1RO Date: Fri, 22 Nov 2024 13:29:10 -0300 Subject: [PATCH 28/44] =?UTF-8?q?docs[intera=C3=A7=C3=A3o]:=20arrumando=20?= =?UTF-8?q?tabela?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/interacao.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/interacao.md b/docs/interacao.md index a49bb16..7d13473 100644 --- a/docs/interacao.md +++ b/docs/interacao.md @@ -11,8 +11,7 @@ | Analista de QA | Responsável por testar a solução para garantir a qualidade e a correção do sistema antes da entrega, identificando possíveis bugs e validando funcionalidades. | Bruno de Oliveira | Bruno de Oliveira | | Product Owner (PO) | Trabalha diretamente com o cliente para entender e definir os requisitos, priorizar funcionalidades e garantir que o produto final atenda às expectativas do cliente. | Ane Carolina | Ane Carolina | | Gerente de Projeto | Supervisiona o andamento do projeto, define metas, coordena a equipe e mantém o cronograma do projeto. | Pedro Fonseca | Pedro Fonseca | -| Analista de Requisitos | Trabalha na definição dos requisitos funcionais e não funcionais -do sistema e garante que eles sejam atendidos. | Todos os integrantes do time | Todos os integrantes do time | +| Analista de Requisitos | Trabalha na definição dos requisitos funcionais e não funcionaisdo sistema e garante que eles sejam atendidos. | Todos os integrantes do time | Todos os integrantes do time | ## Comunicação From f10933beabdaf80b8797e5634351c8e2ba0121a7 Mon Sep 17 00:00:00 2001 From: CA1RO Date: Fri, 22 Nov 2024 13:33:37 -0300 Subject: [PATCH 29/44] =?UTF-8?q?docs[intera=C3=A7=C3=A3o]:=20fix=20r?= =?UTF-8?q?=C3=A1pido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/interacao.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interacao.md b/docs/interacao.md index 7d13473..7e49d2c 100644 --- a/docs/interacao.md +++ b/docs/interacao.md @@ -11,7 +11,7 @@ | Analista de QA | Responsável por testar a solução para garantir a qualidade e a correção do sistema antes da entrega, identificando possíveis bugs e validando funcionalidades. | Bruno de Oliveira | Bruno de Oliveira | | Product Owner (PO) | Trabalha diretamente com o cliente para entender e definir os requisitos, priorizar funcionalidades e garantir que o produto final atenda às expectativas do cliente. | Ane Carolina | Ane Carolina | | Gerente de Projeto | Supervisiona o andamento do projeto, define metas, coordena a equipe e mantém o cronograma do projeto. | Pedro Fonseca | Pedro Fonseca | -| Analista de Requisitos | Trabalha na definição dos requisitos funcionais e não funcionaisdo sistema e garante que eles sejam atendidos. | Todos os integrantes do time | Todos os integrantes do time | +| Analista de Requisitos | Trabalha na definição dos requisitos funcionais e não funcionaisdo sistema e garante que eles sejam atendidos. | Paola Rebeca | Todos os integrantes do time | ## Comunicação From d48bde27b1d5fa68fe30723dc0a3aa50d4255b20 Mon Sep 17 00:00:00 2001 From: Paola Nascimento <132537333+paolaalim@users.noreply.github.com> Date: Wed, 4 Dec 2024 21:29:07 -0300 Subject: [PATCH 30/44] Add files via upload --- docs/images/Diagrama Ishikawa Portal Galt.png | Bin 0 -> 117120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/Diagrama Ishikawa Portal Galt.png diff --git a/docs/images/Diagrama Ishikawa Portal Galt.png b/docs/images/Diagrama Ishikawa Portal Galt.png new file mode 100644 index 0000000000000000000000000000000000000000..b543a58983f1a64c3020f941bb8cf46e65e59d56 GIT binary patch literal 117120 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

Sf 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 literal 0 HcmV?d00001 From bc9aac5019cf5fa88552a7ab4fe98230b3f60088 Mon Sep 17 00:00:00 2001 From: CA1RO Date: Fri, 13 Dec 2024 13:04:42 -0300 Subject: [PATCH 31/44] docs: pequenos ajustes --- docs/interacao.md | 2 +- docs/solucao.md | 2 -- mkdocs.yml | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/interacao.md b/docs/interacao.md index 7e49d2c..3adc2ac 100644 --- a/docs/interacao.md +++ b/docs/interacao.md @@ -8,7 +8,7 @@ | ---------- | ----------- | -------------- | -------------- | | Desenvolvedor Back-end | Responsável pela criação e manutenção dos sistemas e funcionalidades no lado do servidor, assegurando que o backend suporte todas as funcionalidades necessárias e integrando-se com o frontend. | Cairo Florenço | Cairo Florenço, Pedro Fonseca | | Desenvolvedor Front-end | Responsável pela construção da interface do usuário e da interação do cliente com o sistema, garantindo uma experiência intuitiva e responsiva. | João Pedro | João Pedro, Paola Rebeca | -| Analista de QA | Responsável por testar a solução para garantir a qualidade e a correção do sistema antes da entrega, identificando possíveis bugs e validando funcionalidades. | Bruno de Oliveira | Bruno de Oliveira | +| Analista de QA | Responsável por testar a solução para garantir a qualidade e a correção do sistema antes da entrega, identificando possíveis bugs e validando funcionalidades. | Bruno de Oliveira | Todos os integrantes do time | | Product Owner (PO) | Trabalha diretamente com o cliente para entender e definir os requisitos, priorizar funcionalidades e garantir que o produto final atenda às expectativas do cliente. | Ane Carolina | Ane Carolina | | Gerente de Projeto | Supervisiona o andamento do projeto, define metas, coordena a equipe e mantém o cronograma do projeto. | Pedro Fonseca | Pedro Fonseca | | Analista de Requisitos | Trabalha na definição dos requisitos funcionais e não funcionaisdo sistema e garante que eles sejam atendidos. | Paola Rebeca | Todos os integrantes do time | diff --git a/docs/solucao.md b/docs/solucao.md index 28882f5..72c32b3 100644 --- a/docs/solucao.md +++ b/docs/solucao.md @@ -16,8 +16,6 @@ atualizar dados como notas e matrículas diretamente na plataforma. acompanharem sua evolução ao longo dos simulados. * **Conta individual para alunos:** Cada aluno terá uma conta para acessar seu histórico de notas, ver as notícias e consultar seus resultados. -* **Conta para professores:** Cada professor terá uma conta para postar atualizações e compartilhar recursos -educacionais com os alunos. * **Conta para administradores:** Os administradores poderão fazer postagens, gerenciar o conteúdo de notícias e atualizar resultados dos simulados. * **Grade horária:** Funcionalidade para os administradores organizarem e disponibilizarem o cronograma diff --git a/mkdocs.yml b/mkdocs.yml index 0c8f8c4..47839fa 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,8 +9,8 @@ nav: - Estratégias de Engenharia de Software: 'estrategias.md' - Cronograma e Entregas: 'cronograma.md' - Interação entre Equipe e Cliente: 'interacao.md' - - Lições Aprendidas: 'licoesaprendidas.md' - Videos de apresetanção: videos_apresentacao.md + - Lições Aprendidas: 'licoesaprendidas.md' theme: From ba2ae76e54e43843d006ef2598b3baf30af8c086 Mon Sep 17 00:00:00 2001 From: CAIRO Date: Sat, 14 Dec 2024 17:56:30 -0300 Subject: [PATCH 32/44] docs(requisitos): adiciona pagina de requisitos de software --- docs/requisitos.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 61 insertions(+) create mode 100644 docs/requisitos.md diff --git a/docs/requisitos.md b/docs/requisitos.md new file mode 100644 index 0000000..8d17b2d --- /dev/null +++ b/docs/requisitos.md @@ -0,0 +1,60 @@ +# Requisitos de Software + +> "É uma declaração que identifica características ou restrições de um produto ou processo, as quais devem ser atendidas. Podendo ser, por exemplo, funcional ou não funcionais, sendo inequívoca, testável (verificável), mensurável, e necessária para a aceitabilidade do produto ou processo (pelos clientes ou diretrizes internas de garantia de qualidade)." +> — baseado em Management Aspects of Requirements Engineering, por Jeremy Dick, Elizabeth Hull e Ken Jackson (Springer, 2017, p. 207-230). + +## Requisitos Funcionais + + +

Definem as funcionalidades que o sistema precisa oferecer e podem variar de acordo com o tipo de software em desenvolvimento, as características do público-alvo esperado e a abordagem adotada pela equipe na elaboração e documentação dos requisitos, considerando também as necessidades específicas do produto e as metas de entrega.

+ +**Requisitos Funcionais do Portal Galt** + +| Requisito | Nome e descrição | +| ---------- | ----------- | +| **RF01** | Logar na plataforma: O usuário poderá acessar a plataforma através de login e senha. | +| **RF02** | Visualizar notícias: O usuário poderá visualizar as notícias postadas na plataforma. | +| **RF03** | Criar conta de alunos: O administrador poderá criar conta para os alunos. | +| **RF04** | Visualizar conta de alunos: O administrador poderá visualizar os alunos registrador na plataforma. | +| **RF05** | Editar conta de alunos: O administrador poderá editar informações da conta de alunos. | +| **RF06** | Deletar conta de alunos: O administrador poderá deletar a conta de um aluno. | +| **RF07** | Criar notícias: O administrador deve conseguir criar notícias para os alunos. | +| **RF08** | Editar notícias: O administrador deve conseguir editar notícias publicadas. | +| **RF09** | Visualizar notícias: O usuário deve conseguir ver as notícias postadas na plataforma. | +| **RF10** | Excluir notícias: O administrador dever conseguir excluir noticias. | +| **RF11** | Postar notas de simulados: O administrador deve conseguir postar notas de simulados de alunos. | +| **RF12** | Editar notas de simulados: O administrador deve conseguir editar as notas de simulados dos alunos. | +| **RF13** | Excluir notas de simulado: O administrador deve conseguir excluir a nota de simulado de um aluno. | +| **RF14** | Visualizar notas de simulado: O administrador deve conseguir visualizar as notas de todos os alunos, enquanto o aluno poderá acessar apenas as notas dos simulados realizados por ele. | +| **RF15** | Registrar frequências: O administrador deve conseguir registrar a frequência dos alunos. | +| **RF16** | Editar frequências: O administrador deve conseguir editar a frequência dos alunos. | +| **RF17** | Excluir frequências: O administrador deve conseguir excluir a frequência dos alunos. | +| **RF18** | Visualizar frequências: O administrador deve conseguir visualizar a frequência de todos os alunos, enquanto o aluno poderá acessar apenas a própria frequência. | +| **RF19** | Adicionar cronograma: O administrador poderá adicionar um cronograma de aulas a uma turma. | +| **RF20** | Editar cronograma: O administrador poderá editar o cronograma de uma turma. | +| **RF21** | Visualizar cronograma: O administrador deve conseguir visualizar o cronograma de todas as turmas, enquanto o aluno poderá acessar apenas o cronograma da própria turma. | +| **RF22** | Criar turma: O administrador poderá criar uma turma e registar os alunos que estarão nela. | +| **RF23** | Excluir turma: O administrador poderá excluir uma turma. | +| **RF24** | Editar turma: O administrador poderá editar informações de uma turma. | +| **RF25** | Visualizar turma: O administrador poderá visualizar informações de uma turma. | +| **RF26** | Gerar gráficos de desempenho: O aluno poderá gerar gráficos relacionados ao seu desempenho nos simulados. | + +## Requisitos Não Funcionais + +

Refere-se a restrições que impactam os serviços ou funcionalidades oferecidos pelo sistema. Essas limitações envolvem flexibilidade, portabilidade, confiabilidade, entre outras características fundamentais para assegurar a eficiência e a qualidade do sistema.

+ +**Requisitos Não Funcionais do Portal Galt** + +| Requisito | Nome e descrição | +| ---------- | ----------- | +| **RF01** | Usabilidade: O site deve ser responsivo, garantindo usabilidade via dispositivos móveis e desktops | +| **RF02** | Desempenho: O site deve ser capaz de comportar o pico de requisições de todos os alunos (~ 400 alunos) | +| **RF03** | Confiabilidade: Os dados dos usuários devem ser protegidos conforme a LGPD, garantindo segurança e confiança no sistema. | +| **RF04** | Suportabilidade: O site deve funcionar nos navegadores mais utilizados. | +| **RF05** | Implementação: O código deve ser desenvolvido de forma que permita a criação e execução de testes automatizados. | + +*Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 14/12/2024 | 1.0 | Criação da página de Requisitos de Software | Cairo Florenço | diff --git a/mkdocs.yml b/mkdocs.yml index 47839fa..e0c133e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,6 +9,7 @@ nav: - Estratégias de Engenharia de Software: 'estrategias.md' - Cronograma e Entregas: 'cronograma.md' - Interação entre Equipe e Cliente: 'interacao.md' + - Requisitos de Software: 'requisitos.md' - Videos de apresetanção: videos_apresentacao.md - Lições Aprendidas: 'licoesaprendidas.md' From 2bdb986a975b6afc4460f3beba9e9d1fe4a66eed Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 13:26:44 -0300 Subject: [PATCH 33/44] table for US and Epics --- docs/backlog.html | 115 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/backlog.html diff --git a/docs/backlog.html b/docs/backlog.html new file mode 100644 index 0000000..00239d3 --- /dev/null +++ b/docs/backlog.html @@ -0,0 +1,115 @@ +# Histórico de revisão +| Data | Versão | Descrição | Autores | +| ---- | ------- | ---------- | ------ | +| 15/12/2024 | 0.1 | Criando backlog | Pedro Cruz| +# Épicos e User Stories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ÉpicoUser Storydescriçãoobjetivo
EP01 - Gerenciamento de contas[US01] Login na Plataforma eu, como usuário, quero logar na plataforma para ter acesso ao site Conseguir acessar informações pessoais sobre o cursinho
[US02] Criação de Contaseu ,como administrador, quero poder deletar contas para poder gerenciar melhor o site
[US03] Atualização de Contas de Alunoseu ,como administrador, quero poder atualizar as informações das contas de alunos para poder administrar e atualizar informações
[US04] Exclusão Contaseu ,como administrador, quero poder deletar contas para poder administrar e atualizar informações
EP02 - Gerenciamento de notícias[US05] Acesso de Notíciaseu , como usuário, quero acessar notícias da administração para me atualizar sobre o Galt.informar os alunos sobre eventos do Galt
[US06] Criação de Notíciaseu, como administrador, quero criar notícias para informar os alunos sobre eventos do Galt.
[US07] Atualizar Notíciaseu, como administrador, quero notícias notícias para informar os alunos sobre eventos do Galt.
[US08] Exclusão de Notíciaseu, como administrador, quero deletar notícias para informar organizar o feed de notícias.
EP03 - processamento e visualização de resultado de simulados[US09] Acesso a notas de simuladoseu, como aluno, quero acessar minhas notas de simulado para me ajudar nos estudos.Informar os alunos das notas de simulados
[US10] Postagem de Notas dos Simuladoseu , como administrador, quero poder mandar as notas dos simulado dos alunos para informá-los das notas
[US11] Exclusão de Notas dos Simuladoseu , como administrador, quero poder excluir as notas dos simulado dos alunos para informá-los das notas
[US12] Gráficos de desempenho de simuladoseu, como aluno, quero ter acesso a gráficos de desempenho dos resultados de simulados para conhecer melhor sobre meu desempenho
EP04 - Gerenciamento de turmas[US13] Criação de contas de alunos por turmaeu, como administrador, quero poder criar várias contas de alunos por turma para automatizar o processo de matrícula de alunos.Poder gerenciar vários alunos por meio de turmas
[US14] Criação de Turmaeu , como administrador, quero poder criar uma turma para organizar melhor meus alunos e informações
[US15] Edição de Turmaeu, como administrador, quero poder editar as informações relacionadas a uma turma para poder alterar informações necessárias.
[US16] Exclusão de Turmaeu , como administrador, quero poder excluir uma turma que vai deixar de existir
[US17] Visualização de Turmaeu , como administrador, quero poder visualizar uma turma para ter informações dela.
EP05 - Gerenciamento de cronogramas[US18] Acesso de Cronogramaeu, como aluno, quero acessar o cronograma da minha turma para saber quais aulas eu vou terinformar os alunos sobre as aulas e horarios
[US19] Criação de cronogramaeu, como administrador, quero poder criar um cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários.
[US20] Visualização de cronogramaeu, como administrador, quero poder visualizar um cronograma de uma turma, para saber quais aulas os alunos terão.
[US21] Edição de cronogramaeu, como administrador, quero poder adicionar o cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários.
EP06 - Gerenciamento de frequências[US22] Acesso de Frequênciaseu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho.Acesso à quantidade de faltas e presenças de cada aluno individualmente
[US22] Acesso de Frequênciaseu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho.
[US23] Lançamento de Frequênciaeu ,como administrador, quero poder lançar a frequência dos alunos para informá-los das faltas e presença deles.
[US24] Atualização de Frequênciaeu ,como administrador, quero poder atualizar a frequência dos alunos para informá-los das faltas e presença deles.
[US25] Exclusão de Frequênciaeu ,como administrador, quero poder excluir a frequência dos alunos para informá-los das faltas e presença deles.
+# Requisitos não funcionais + +# Valoração + +# MVP 1 + +# DoR e DoD \ No newline at end of file From 3040a115cfa7b9ba14472fc8d7eb2850539fb4b5 Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 13:50:47 -0300 Subject: [PATCH 34/44] =?UTF-8?q?Requisitos=20funcionais=20e=20n=C3=A3o=20?= =?UTF-8?q?funcionais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/backlog.html | 115 --------------------- docs/backlog.md | 248 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 248 insertions(+), 115 deletions(-) delete mode 100644 docs/backlog.html create mode 100644 docs/backlog.md diff --git a/docs/backlog.html b/docs/backlog.html deleted file mode 100644 index 00239d3..0000000 --- a/docs/backlog.html +++ /dev/null @@ -1,115 +0,0 @@ -# Histórico de revisão -| Data | Versão | Descrição | Autores | -| ---- | ------- | ---------- | ------ | -| 15/12/2024 | 0.1 | Criando backlog | Pedro Cruz| -# Épicos e User Stories - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ÉpicoUser Storydescriçãoobjetivo
EP01 - Gerenciamento de contas[US01] Login na Plataforma eu, como usuário, quero logar na plataforma para ter acesso ao site Conseguir acessar informações pessoais sobre o cursinho
[US02] Criação de Contaseu ,como administrador, quero poder deletar contas para poder gerenciar melhor o site
[US03] Atualização de Contas de Alunoseu ,como administrador, quero poder atualizar as informações das contas de alunos para poder administrar e atualizar informações
[US04] Exclusão Contaseu ,como administrador, quero poder deletar contas para poder administrar e atualizar informações
EP02 - Gerenciamento de notícias[US05] Acesso de Notíciaseu , como usuário, quero acessar notícias da administração para me atualizar sobre o Galt.informar os alunos sobre eventos do Galt
[US06] Criação de Notíciaseu, como administrador, quero criar notícias para informar os alunos sobre eventos do Galt.
[US07] Atualizar Notíciaseu, como administrador, quero notícias notícias para informar os alunos sobre eventos do Galt.
[US08] Exclusão de Notíciaseu, como administrador, quero deletar notícias para informar organizar o feed de notícias.
EP03 - processamento e visualização de resultado de simulados[US09] Acesso a notas de simuladoseu, como aluno, quero acessar minhas notas de simulado para me ajudar nos estudos.Informar os alunos das notas de simulados
[US10] Postagem de Notas dos Simuladoseu , como administrador, quero poder mandar as notas dos simulado dos alunos para informá-los das notas
[US11] Exclusão de Notas dos Simuladoseu , como administrador, quero poder excluir as notas dos simulado dos alunos para informá-los das notas
[US12] Gráficos de desempenho de simuladoseu, como aluno, quero ter acesso a gráficos de desempenho dos resultados de simulados para conhecer melhor sobre meu desempenho
EP04 - Gerenciamento de turmas[US13] Criação de contas de alunos por turmaeu, como administrador, quero poder criar várias contas de alunos por turma para automatizar o processo de matrícula de alunos.Poder gerenciar vários alunos por meio de turmas
[US14] Criação de Turmaeu , como administrador, quero poder criar uma turma para organizar melhor meus alunos e informações
[US15] Edição de Turmaeu, como administrador, quero poder editar as informações relacionadas a uma turma para poder alterar informações necessárias.
[US16] Exclusão de Turmaeu , como administrador, quero poder excluir uma turma que vai deixar de existir
[US17] Visualização de Turmaeu , como administrador, quero poder visualizar uma turma para ter informações dela.
EP05 - Gerenciamento de cronogramas[US18] Acesso de Cronogramaeu, como aluno, quero acessar o cronograma da minha turma para saber quais aulas eu vou terinformar os alunos sobre as aulas e horarios
[US19] Criação de cronogramaeu, como administrador, quero poder criar um cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários.
[US20] Visualização de cronogramaeu, como administrador, quero poder visualizar um cronograma de uma turma, para saber quais aulas os alunos terão.
[US21] Edição de cronogramaeu, como administrador, quero poder adicionar o cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários.
EP06 - Gerenciamento de frequências[US22] Acesso de Frequênciaseu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho.Acesso à quantidade de faltas e presenças de cada aluno individualmente
[US22] Acesso de Frequênciaseu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho.
[US23] Lançamento de Frequênciaeu ,como administrador, quero poder lançar a frequência dos alunos para informá-los das faltas e presença deles.
[US24] Atualização de Frequênciaeu ,como administrador, quero poder atualizar a frequência dos alunos para informá-los das faltas e presença deles.
[US25] Exclusão de Frequênciaeu ,como administrador, quero poder excluir a frequência dos alunos para informá-los das faltas e presença deles.
-# Requisitos não funcionais - -# Valoração - -# MVP 1 - -# DoR e DoD \ No newline at end of file diff --git a/docs/backlog.md b/docs/backlog.md new file mode 100644 index 0000000..4dab86b --- /dev/null +++ b/docs/backlog.md @@ -0,0 +1,248 @@ +# Histórico de revisão +| Data | Versão | Descrição | Autores | +| ---- | ------- | ---------- | ------ | +| 15/12/2024 | 0.1 | Criando backlog | Pedro Cruz| +# Épicos e User Stories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ÉpicoUser Storydescriçãoobjetivo
EP01 - Gerenciamento de contas[US01] Login na Plataforma eu, como usuário, quero logar na plataforma para ter acesso ao site Conseguir acessar informações pessoais sobre o cursinho
[US02] Criação de Contaseu ,como administrador, quero poder deletar contas para poder gerenciar melhor o site
[US03] Atualização de Contas de Alunoseu ,como administrador, quero poder atualizar as informações das contas de alunos para poder administrar e atualizar informações
[US04] Exclusão Contaseu ,como administrador, quero poder deletar contas para poder administrar e atualizar informações
EP02 - Gerenciamento de notícias[US05] Acesso de Notíciaseu , como usuário, quero acessar notícias da administração para me atualizar sobre o Galt.informar os alunos sobre eventos do Galt
[US06] Criação de Notíciaseu, como administrador, quero criar notícias para informar os alunos sobre eventos do Galt.
[US07] Atualizar Notíciaseu, como administrador, quero notícias notícias para informar os alunos sobre eventos do Galt.
[US08] Exclusão de Notíciaseu, como administrador, quero deletar notícias para informar organizar o feed de notícias.
EP03 - processamento e visualização de resultado de simulados[US09] Acesso a notas de simuladoseu, como aluno, quero acessar minhas notas de simulado para me ajudar nos estudos.Informar os alunos das notas de simulados
[US10] Postagem de Notas dos Simuladoseu , como administrador, quero poder mandar as notas dos simulado dos alunos para informá-los das notas
[US11] Exclusão de Notas dos Simuladoseu , como administrador, quero poder excluir as notas dos simulado dos alunos para informá-los das notas
[US12] Gráficos de desempenho de simuladoseu, como aluno, quero ter acesso a gráficos de desempenho dos resultados de simulados para conhecer melhor sobre meu desempenho
EP04 - Gerenciamento de turmas[US13] Criação de contas de alunos por turmaeu, como administrador, quero poder criar várias contas de alunos por turma para automatizar o processo de matrícula de alunos.Poder gerenciar vários alunos por meio de turmas
[US14] Criação de Turmaeu , como administrador, quero poder criar uma turma para organizar melhor meus alunos e informações
[US15] Edição de Turmaeu, como administrador, quero poder editar as informações relacionadas a uma turma para poder alterar informações necessárias.
[US16] Exclusão de Turmaeu , como administrador, quero poder excluir uma turma que vai deixar de existir
[US17] Visualização de Turmaeu , como administrador, quero poder visualizar uma turma para ter informações dela.
EP05 - Gerenciamento de cronogramas[US18] Acesso de Cronogramaeu, como aluno, quero acessar o cronograma da minha turma para saber quais aulas eu vou terinformar os alunos sobre as aulas e horarios
[US19] Criação de cronogramaeu, como administrador, quero poder criar um cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários.
[US20] Visualização de cronogramaeu, como administrador, quero poder visualizar um cronograma de uma turma, para saber quais aulas os alunos terão.
[US21] Edição de cronogramaeu, como administrador, quero poder adicionar o cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários.
EP06 - Gerenciamento de frequências[US22] Acesso de Frequênciaseu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho.Acesso à quantidade de faltas e presenças de cada aluno individualmente
[US22] Acesso de Frequênciaseu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho.
[US23] Lançamento de Frequênciaeu ,como administrador, quero poder lançar a frequência dos alunos para informá-los das faltas e presença deles.
[US24] Atualização de Frequênciaeu ,como administrador, quero poder atualizar a frequência dos alunos para informá-los das faltas e presença deles.
[US25] Exclusão de Frequênciaeu ,como administrador, quero poder excluir a frequência dos alunos para informá-los das faltas e presença deles.
+ +# Requisitos funcionais +| Requisito | Descrição | +| --------- | ------------------------------------- | +| RF01 | O usuário poderá acessar a plataforma através de login e senha | +| RF02 |O usuário poderá visualizar as notícias postadas na plataforma | +| RF03 |A plataforma terá dois tipos de usuários, alunos e administradores (regra de negócio) | +| RF04 |O administrador poderá criar conta para os alunos por turma | +| RF05 |O administrador poderá deletar contas por turma | +| RF06 |O administrador poderá editar informações da conta de alunos | +| RF07 |O administrador poderá visualizar os alunos registrador em uma turma | +| RF08 |O administrador acessar perfil dos alunos por nome e por turma | +| RF09 |O administrador deve conseguir postar notícias para os alunos | +| RF10 |O administrador deve conseguir postar notas de simulados de alunos | +| RF11 |O administrador deve conseguir registrar frequência de alunos | +| RF12 |O administrador deve conseguir adicionar e atualizar o cronograma de aulas da turma | +| RF13 |O aluno poderá acessar o resultado do seu simulado | +| RF14 |O aluno poderá acessar a frequência dele | +| RF15 |O aluno está somente em uma turma (regra de negócio) | +| RF16 |O aluno não poderá ver as informações de outros alunos (regra de negócio) | +| RF17 |O aluno poderá buscar por posts por meio de palavras chaves | +| RF18 |O aluno poderá acessar o cronograma das aulas da turma que ele está cadastrado | + +# Requisitos não funcionais +| RNF01 | O site deve ser responsivo, garantindo usabilidade via dispositivos móveis e desktops | +| RNF02 | O site deve funcionar nos navegadores mais utilizados | +| RNF03 | Os dados dos usuários devem ser protegidos conforme a LGPD | +| RNF04 | O site deve ser capaz de comportar o pico de requisições de todos os alunos (~ 400 alunos) | +| RNF05 | A interface deve ser intuitiva para os alunos e professores | + + +# Valoração + + + ÉpicoUser StoryValor de negocioComplexidade + + + EP01 - Gerenciamento de contas[US01] Login na Plataforma eu, como usuário, quero logar na plataforma para ter acesso ao site Conseguir acessar informações pessoais sobre o cursinho + + [US02] Criação de Contaseu ,como administrador, quero poder deletar contas para poder gerenciar melhor o site + + + [US03] Atualização de Contas de Alunoseu ,como administrador, quero poder atualizar as informações das contas de alunos para poder administrar e atualizar informações + + + [US04] Exclusão Contaseu ,como administrador, quero poder deletar contas para poder administrar e atualizar informações + + + + EP02 - Gerenciamento de notícias + [US05] Acesso de Notíciaseu , como usuário, quero acessar notícias da administração para me atualizar sobre o Galt.informar os alunos sobre eventos do Galt + + + [US06] Criação de Notíciaseu, como administrador, quero criar notícias para informar os alunos sobre eventos do Galt. + + + [US07] Atualizar Notíciaseu, como administrador, quero notícias notícias para informar os alunos sobre eventos do Galt. + + + [US08] Exclusão de Notíciaseu, como administrador, quero deletar notícias para informar organizar o feed de notícias. + + + EP03 - processamento e visualização de resultado de simulados + [US09] Acesso a notas de simuladoseu, como aluno, quero acessar minhas notas de simulado para me ajudar nos estudos.Informar os alunos das notas de simulados + + + [US10] Postagem de Notas dos Simuladoseu , como administrador, quero poder mandar as notas dos simulado dos alunos para informá-los das notas + + + [US11] Exclusão de Notas dos Simuladoseu , como administrador, quero poder excluir as notas dos simulado dos alunos para informá-los das notas + + + [US12] Gráficos de desempenho de simuladoseu, como aluno, quero ter acesso a gráficos de desempenho dos resultados de simulados para conhecer melhor sobre meu desempenho + + + EP04 - Gerenciamento de turmas + [US13] Criação de contas de alunos por turmaeu, como administrador, quero poder criar várias contas de alunos por turma para automatizar o processo de matrícula de alunos.Poder gerenciar vários alunos por meio de turmas + + + [US14] Criação de Turma + eu , como administrador, quero poder criar uma turma para organizar melhor meus alunos e informações + + + [US15] Edição de Turma + eu, como administrador, quero poder editar as informações relacionadas a uma turma para poder alterar informações necessárias. + + + [US16] Exclusão de Turma + eu , como administrador, quero poder excluir uma turma que vai deixar de existir + + + [US17] Visualização de Turma + eu , como administrador, quero poder visualizar uma turma para ter informações dela. + + + EP05 - Gerenciamento de cronogramas + [US18] Acesso de Cronograma + eu, como aluno, quero acessar o cronograma da minha turma para saber quais aulas eu vou ter + informar os alunos sobre as aulas e horarios + + + [US19] Criação de cronograma + eu, como administrador, quero poder criar um cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários. + + + [US20] Visualização de cronograma + eu, como administrador, quero poder visualizar um cronograma de uma turma, para saber quais aulas os alunos terão. + + + [US21] Edição de cronograma + eu, como administrador, quero poder adicionar o cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários. + + + EP06 - Gerenciamento de frequências + [US22] Acesso de Frequências + eu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho. + Acesso à quantidade de faltas e presenças de cada aluno individualmente + + + [US22] Acesso de Frequências + eu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho. + + + [US23] Lançamento de Frequência + eu ,como administrador, quero poder lançar a frequência dos alunos para informá-los das faltas e presença deles. + + + [US24] Atualização de Frequência + eu ,como administrador, quero poder atualizar a frequência dos alunos para informá-los das faltas e presença deles. + + + [US25] Exclusão de Frequência + eu ,como administrador, quero poder excluir a frequência dos alunos para informá-los das faltas e presença deles. + + + + +# MVP 1 + +# DoR e DoD \ No newline at end of file From ec81c9a3a45ab136adc3cc015dd2202296d76c7a Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 14:01:15 -0300 Subject: [PATCH 35/44] =?UTF-8?q?Valora=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/backlog.md | 300 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 198 insertions(+), 102 deletions(-) diff --git a/docs/backlog.md b/docs/backlog.md index 4dab86b..7ccf534 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -138,111 +138,207 @@ # Valoração - - - ÉpicoUser StoryValor de negocioComplexidade - - - EP01 - Gerenciamento de contas[US01] Login na Plataforma eu, como usuário, quero logar na plataforma para ter acesso ao site Conseguir acessar informações pessoais sobre o cursinho - - [US02] Criação de Contaseu ,como administrador, quero poder deletar contas para poder gerenciar melhor o site - - - [US03] Atualização de Contas de Alunoseu ,como administrador, quero poder atualizar as informações das contas de alunos para poder administrar e atualizar informações - - - [US04] Exclusão Contaseu ,como administrador, quero poder deletar contas para poder administrar e atualizar informações - - - - EP02 - Gerenciamento de notícias - [US05] Acesso de Notíciaseu , como usuário, quero acessar notícias da administração para me atualizar sobre o Galt.informar os alunos sobre eventos do Galt - - - [US06] Criação de Notíciaseu, como administrador, quero criar notícias para informar os alunos sobre eventos do Galt. - - - [US07] Atualizar Notíciaseu, como administrador, quero notícias notícias para informar os alunos sobre eventos do Galt. - - - [US08] Exclusão de Notíciaseu, como administrador, quero deletar notícias para informar organizar o feed de notícias. - - - EP03 - processamento e visualização de resultado de simulados - [US09] Acesso a notas de simuladoseu, como aluno, quero acessar minhas notas de simulado para me ajudar nos estudos.Informar os alunos das notas de simulados - - - [US10] Postagem de Notas dos Simuladoseu , como administrador, quero poder mandar as notas dos simulado dos alunos para informá-los das notas - - - [US11] Exclusão de Notas dos Simuladoseu , como administrador, quero poder excluir as notas dos simulado dos alunos para informá-los das notas - - - [US12] Gráficos de desempenho de simuladoseu, como aluno, quero ter acesso a gráficos de desempenho dos resultados de simulados para conhecer melhor sobre meu desempenho - - - EP04 - Gerenciamento de turmas - [US13] Criação de contas de alunos por turmaeu, como administrador, quero poder criar várias contas de alunos por turma para automatizar o processo de matrícula de alunos.Poder gerenciar vários alunos por meio de turmas - - - [US14] Criação de Turma - eu , como administrador, quero poder criar uma turma para organizar melhor meus alunos e informações - - - [US15] Edição de Turma - eu, como administrador, quero poder editar as informações relacionadas a uma turma para poder alterar informações necessárias. - - - [US16] Exclusão de Turma - eu , como administrador, quero poder excluir uma turma que vai deixar de existir - - - [US17] Visualização de Turma - eu , como administrador, quero poder visualizar uma turma para ter informações dela. - - - EP05 - Gerenciamento de cronogramas - [US18] Acesso de Cronograma - eu, como aluno, quero acessar o cronograma da minha turma para saber quais aulas eu vou ter - informar os alunos sobre as aulas e horarios - - - [US19] Criação de cronograma - eu, como administrador, quero poder criar um cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários. - - - [US20] Visualização de cronograma - eu, como administrador, quero poder visualizar um cronograma de uma turma, para saber quais aulas os alunos terão. - - - [US21] Edição de cronograma - eu, como administrador, quero poder adicionar o cronograma de aulas de uma turma, para informar os alunos de suas aulas e os horários. - - - EP06 - Gerenciamento de frequências - [US22] Acesso de Frequências - eu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho. - Acesso à quantidade de faltas e presenças de cada aluno individualmente - - - [US22] Acesso de Frequências - eu, como aluno, quero conseguir acessar minha frequência para saber a quantidade de faltas que tenho. - - - [US23] Lançamento de Frequência - eu ,como administrador, quero poder lançar a frequência dos alunos para informá-los das faltas e presença deles. - - - [US24] Atualização de Frequência - eu ,como administrador, quero poder atualizar a frequência dos alunos para informá-los das faltas e presença deles. - - - [US25] Exclusão de Frequência - eu ,como administrador, quero poder excluir a frequência dos alunos para informá-los das faltas e presença deles. - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
épicoUS'svalor de Negocio POComplexidadeTotalmédia por épico
EP01 - cadastroUS014333MVP
US02434MVP
US03434MVP
US04423MVP
EP02 - noticiaUS053233
US06333
US07333
US08323
EP03 - simuladoUS095344MVP
US10544MVP
US11433MVP
US12444MVP
EP04 - turmaUS133433
US14333
US15323
US16323
US17322
EP05 - cronogramaUS183233
US19333
US20323
US21333
EP06 - frequenciaUS225344MVP
US23544MVP
US24534MVP
US25524MVP
# MVP 1 +MVP 1 será composto pelos épicos EP01 - Cadastro, EP03 - simulado, EP05 - frequencia # DoR e DoD \ No newline at end of file From e6138219f399cf1cdf94384b9bfdbc543025eb41 Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 14:05:07 -0300 Subject: [PATCH 36/44] =?UTF-8?q?legenda=20da=20valora=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/backlog.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/backlog.md b/docs/backlog.md index 7ccf534..3d4beb0 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -138,6 +138,35 @@ # Valoração +Utilizamos dois eixos para medir o valor de cada história de usuário, O valor de negócio foi feito pelo PO. A complexidade foi uma média das notas dadas por todos os membros da equipe de desenvolvimento. + + + + + + + + + + + + + + + + + + + + + + + + + + +
legenda12345
valor de negociopouco importantepoderia terdesejávelnecessáriomuito importante
complexidademuito simplessimplesmoderadocomplexomuito complexo
+ From d0f65b23aa6038dacb6662954b4be282a91107fc Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 14:09:48 -0300 Subject: [PATCH 37/44] adiconando backlog --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index e0c133e..c9a68d3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,6 +12,7 @@ nav: - Requisitos de Software: 'requisitos.md' - Videos de apresetanção: videos_apresentacao.md - Lições Aprendidas: 'licoesaprendidas.md' + - Backlog do Produto: 'backlog.md' theme: From 2502737d0061e14e8898e186ef308c65a4b63739 Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 14:15:53 -0300 Subject: [PATCH 38/44] consertos Backlog --- docs/backlog.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/backlog.md b/docs/backlog.md index 3d4beb0..a30e1e9 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -1,8 +1,13 @@ # Histórico de revisão | Data | Versão | Descrição | Autores | | ---- | ------- | ---------- | ------ | -| 15/12/2024 | 0.1 | Criando backlog | Pedro Cruz| +| 15/12/2024 | 0.1 | Criando backlog | Pedro Cruz | + + # Épicos e User Stories + +aqui está a lista de épcios e histórias de usuários identificados pela equipe. +
épico
@@ -108,6 +113,7 @@
ÉpicoUser Storydescriçãoobjetivo
# Requisitos funcionais + | Requisito | Descrição | | --------- | ------------------------------------- | | RF01 | O usuário poderá acessar a plataforma através de login e senha | @@ -130,6 +136,7 @@ | RF18 |O aluno poderá acessar o cronograma das aulas da turma que ele está cadastrado | # Requisitos não funcionais + | RNF01 | O site deve ser responsivo, garantindo usabilidade via dispositivos móveis e desktops | | RNF02 | O site deve funcionar nos navegadores mais utilizados | | RNF03 | Os dados dos usuários devem ser protegidos conforme a LGPD | @@ -140,6 +147,7 @@ # Valoração Utilizamos dois eixos para medir o valor de cada história de usuário, O valor de negócio foi feito pelo PO. A complexidade foi uma média das notas dadas por todos os membros da equipe de desenvolvimento. +## Legenda @@ -167,6 +175,7 @@ Utilizamos dois eixos para medir o valor de cada história de usuário, O valor
legenda
+## tabela de valoração @@ -175,7 +184,7 @@ Utilizamos dois eixos para medir o valor de cada história de usuário, O valor - + @@ -368,6 +377,6 @@ Utilizamos dois eixos para medir o valor de cada história de usuário, O valor # MVP 1 -MVP 1 será composto pelos épicos EP01 - Cadastro, EP03 - simulado, EP05 - frequencia +Devido a priorização da PO, foi identificado que os épicos de cadastro, simulado e frequência são os de mais importância para a empresa. Portanto, o MVP 1 será composto pelos épicos EP01 - Cadastro, EP03 - simulado, EP05 - frequencia. # DoR e DoD \ No newline at end of file From 538fcc5d4365c9def26bb649b9e922c8f2ec1705 Mon Sep 17 00:00:00 2001 From: pedro cruz Date: Sun, 15 Dec 2024 14:17:26 -0300 Subject: [PATCH 39/44] =?UTF-8?q?conserto=20tabela=20req=20n=C3=A3o=20func?= =?UTF-8?q?ionais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/backlog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/backlog.md b/docs/backlog.md index a30e1e9..606c95b 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -137,6 +137,8 @@ aqui está a lista de épcios e histórias de usuários identificados pela equip # Requisitos não funcionais +| Requisito | Descrição | +| --------- | ------------------------------------- | | RNF01 | O site deve ser responsivo, garantindo usabilidade via dispositivos móveis e desktops | | RNF02 | O site deve funcionar nos navegadores mais utilizados | | RNF03 | Os dados dos usuários devem ser protegidos conforme a LGPD | From 6b887e683bff8eb5039106d68f6a4e5f51b76613 Mon Sep 17 00:00:00 2001 From: CAIRO Date: Sun, 15 Dec 2024 23:10:55 -0300 Subject: [PATCH 40/44] docs(atividades): adiciona pagina de atividades e tecnicas de ER --- docs/engderequisitos.md | 141 ++++++++++++++++++++++++++++++++++++++++ docs/estrategias.md | 5 +- docs/requisitos.md | 10 +-- mkdocs.yml | 1 + 4 files changed, 150 insertions(+), 7 deletions(-) create mode 100644 docs/engderequisitos.md diff --git a/docs/engderequisitos.md b/docs/engderequisitos.md new file mode 100644 index 0000000..b117bbf --- /dev/null +++ b/docs/engderequisitos.md @@ -0,0 +1,141 @@ +# Engenharia de Requisitos + +## Atividades e Técnicas da ER e ScrumXP + +### **Planejamento da Release** + +| Atividades de ER | Prática | Técnica | Resultado Esperado | +| ---------- | ----------- | -------------- | -------------- | +| Elicitação e Descoberta | Levantamento de Requisitos | Entrevista, Análise de Dominío de Negócio | Descoberta de requisitos de alto nível e mapeamento do objetivo de entrega da release | +| Análise e Consenso | Priorização de Requisitos | Priorização MoSCoW | Garantir que as funcionalidades essenciais sejam entregues primeiro, enquanto as menos críticas podem ser trabalhadas conforme o tempo permite. | +| Declaração | Registro dos Requisitos | Temas, Épicos e Histórias de Usuário | Histórias de usuário registradas e compreendidas pela equipe e pelo PO. | +| Organização e Atualização | Organização de Requisitos | Pontos por História | Organização do backlog do produto com histórias ordenadas por nível de importância | + + +*Elicitação e Descoberta:* + +* **Entrevista:** Reuniões realizadas com o PO para melhor entendimento do problema atual e das caracteristicas que a solução deve ter. Resultando no alinhamento da Visão de Produto do time. +* **Análise de Domínio de Negócio:** Entender de forma mais aprofundada o contexto do negócio a ser desenvolvido, com o objetivo de alinhar os requisitos identificados às necessidades estratégicas da organização. + +*Análise e Consenso:* + +* **Priorização MoSCoW:** Classifica os requisitos em quatro categorias: Must have (essenciais), Should have (importantes), Could have (desejáveis) e Won’t have (não incluir), dessa forma, é definido o que vai ser prioridades no projeto. + +*Declaração:* + +* **Temas, Épicos e Histórias de Usuário:** Permite descrever os requisitos com um nível mais alto de detalhes, garantindo à equipe uma compreensão precisa das características que uma funcionalidade do produto deve ter. + +*Organização e Atualização:* + +* **Pontos por Histórias:** Estratégia que pontua as histórias de acordo com a importância delas. No caso do projeto Portal Galt, as histórias foram pontuadas de acordo com o valor de negócio e a complexidade de cada uma. + +### **Planejamento da Sprint** + +| Atividades de ER | Prática | Técnica | Resultado Esperado | +| ---------- | ----------- | -------------- | -------------- | +| Elicitação e Descoberta | ----------- | -------------- | -------------- | +| Análise e Consenso | ----------- | -------------- | -------------- | +| Declaração | ----------- | -------------- | -------------- | +| Organização e Atualização | ----------- | -------------- | -------------- | + +*Elicitação e Descoberta:* + +* +* +* + +*Análise e Consenso:* + +* +* +* + +*Organização e Atualização:* + +* +* +* + +*Declaração:* + +* +* +* + +### **Execução da Sprint** + +| Atividades de ER | Prática | Técnica | Resultado Esperado | +| ---------- | ----------- | -------------- | -------------- | +| Representação | ----------- | -------------- | -------------- | +| Verificação e Validação | ----------- | -------------- | -------------- | +| Organização e Atualização | ----------- | -------------- | -------------- | + +*Representação:* + +* +* +* + +*Verificação e Validação:* + +* +* +* + +*Organização e Atualização:* + +* +* +* + +### **Revisão da Sprint** + +| Atividades de ER | Prática | Técnica | Resultado Esperado | +| ---------- | ----------- | -------------- | -------------- | +| Verificação e Validação | ----------- | -------------- | -------------- | +| Organização e Atualização | ----------- | -------------- | -------------- | + +*Verificação e Validação:* + +* +* +* + +*Organização e Atualização:* + +* +* +* + +### **Planejamento da Próxima Release** + +| Atividades de ER | Prática | Técnica | Resultado Esperado | +| ---------- | ----------- | -------------- | -------------- | +| Elicitação e Descoberta | ----------- | -------------- | -------------- | +| Análise e Consenso | ----------- | -------------- | -------------- | +| Organização e Atualização | ----------- | -------------- | -------------- | +| Declaração | ----------- | -------------- | -------------- | + +*Elicitação e Descoberta:* + +* +* +* + +*Análise e Consenso:* + +* +* +* + +*Organização e Atualização:* + +* +* +* + +*Declaração:* + +* +* +* diff --git a/docs/estrategias.md b/docs/estrategias.md index 8fb0cc5..c52b156 100644 --- a/docs/estrategias.md +++ b/docs/estrategias.md @@ -25,8 +25,9 @@ | Controle de Qualidade | Validações incrementais e revisão da arquitetura | Confiança nos ritos do ScrumXP como o pair programing e a validação com o cliente | | Escalabilidade | Pode ser aplicado com equipes grandes e projetos complexos | Indicado para equipes menores, mas pode ser escalável | | Suporte a Equipes de Desenvolvimento | Papéis definidos e hirarquia clara | Equipes menores e mais colaborativas | -fonte: slide de sala de aula "Unidade 1 - Aula - Aborgadens, Ciclos de Vida e Processo.pdf" -exemplo ecofashion "TEMPLATE - REQ - 2024.2 - Visao do Produto e Projeto.pdf" + +> Fonte: slide de sala de aula "Unidade 1 - Aula - Aborgadens, Ciclos de Vida e Processo.pdf" +> Exemplo ecofashion "TEMPLATE - REQ - 2024.2 - Visao do Produto e Projeto.pdf" ## Justificativa diff --git a/docs/requisitos.md b/docs/requisitos.md index 8d17b2d..a1d0939 100644 --- a/docs/requisitos.md +++ b/docs/requisitos.md @@ -47,11 +47,11 @@ | Requisito | Nome e descrição | | ---------- | ----------- | -| **RF01** | Usabilidade: O site deve ser responsivo, garantindo usabilidade via dispositivos móveis e desktops | -| **RF02** | Desempenho: O site deve ser capaz de comportar o pico de requisições de todos os alunos (~ 400 alunos) | -| **RF03** | Confiabilidade: Os dados dos usuários devem ser protegidos conforme a LGPD, garantindo segurança e confiança no sistema. | -| **RF04** | Suportabilidade: O site deve funcionar nos navegadores mais utilizados. | -| **RF05** | Implementação: O código deve ser desenvolvido de forma que permita a criação e execução de testes automatizados. | +| **RNF01** | Usabilidade: O site deve ser responsivo, garantindo usabilidade via dispositivos móveis e desktops | +| **RNF02** | Desempenho: O site deve ser capaz de comportar o pico de requisições de todos os alunos (~ 400 alunos) | +| **RNF03** | Confiabilidade: Os dados dos usuários devem ser protegidos conforme a LGPD, garantindo segurança e confiança no sistema. | +| **RNF04** | Suportabilidade: O site deve funcionar nos navegadores mais utilizados. | +| **RNF05** | Implementação: O código deve ser desenvolvido de forma que permita a criação e execução de testes automatizados. | *Histórico de Revisão* diff --git a/mkdocs.yml b/mkdocs.yml index c9a68d3..c45409a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,6 +10,7 @@ nav: - Cronograma e Entregas: 'cronograma.md' - Interação entre Equipe e Cliente: 'interacao.md' - Requisitos de Software: 'requisitos.md' + - Engenharia de Requisitos: 'engderequisitos.md' - Videos de apresetanção: videos_apresentacao.md - Lições Aprendidas: 'licoesaprendidas.md' - Backlog do Produto: 'backlog.md' From 0f3fba3a938caaf13ea56a458139709c4931a25b Mon Sep 17 00:00:00 2001 From: CAIRO Date: Sun, 15 Dec 2024 23:12:48 -0300 Subject: [PATCH 41/44] =?UTF-8?q?docs(atividades):=20adiciona=20historico?= =?UTF-8?q?=20de=20revis=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/engderequisitos.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/engderequisitos.md b/docs/engderequisitos.md index b117bbf..c4c938c 100644 --- a/docs/engderequisitos.md +++ b/docs/engderequisitos.md @@ -139,3 +139,10 @@ * * * + + +*Histórico de Revisão* + +| Data | Versão | Descrição | Autores | +| ---------- | ----------- | -------------- | -------------- | +| 15/12/2024 | 1.0 | Criação da página Engenharia de Requisitos | Cairo Florenço | \ No newline at end of file From c311c7a589610925157a8de2865620847381db93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=9B=C2=9BJo=C3=A3o=20Pedro?= Date: Mon, 16 Dec 2024 12:18:36 -0300 Subject: [PATCH 42/44] docs(atividades): adiciona caracteristicas elicitacao e descoberta --- docs/engderequisitos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/engderequisitos.md b/docs/engderequisitos.md index c4c938c..faf70b3 100644 --- a/docs/engderequisitos.md +++ b/docs/engderequisitos.md @@ -33,7 +33,7 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Elicitação e Descoberta | ----------- | -------------- | -------------- | +| Elicitação e Descoberta | Levantamento de Requisitos | Entrevista, Análise de domínio do negócio | descoberta de requisitos de alto nível. Mapeamento do objetivo de entrega da release | | Análise e Consenso | ----------- | -------------- | -------------- | | Declaração | ----------- | -------------- | -------------- | | Organização e Atualização | ----------- | -------------- | -------------- | From a5ea4371c65610454e8c0ef09946f717bcd80d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=9B=C2=9BJo=C3=A3o=20Pedro?= Date: Mon, 16 Dec 2024 12:51:07 -0300 Subject: [PATCH 43/44] docs(atividades): preenchimento das tabelas de atividade da ER --- docs/engderequisitos.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/engderequisitos.md b/docs/engderequisitos.md index faf70b3..22e88fe 100644 --- a/docs/engderequisitos.md +++ b/docs/engderequisitos.md @@ -6,10 +6,10 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Elicitação e Descoberta | Levantamento de Requisitos | Entrevista, Análise de Dominío de Negócio | Descoberta de requisitos de alto nível e mapeamento do objetivo de entrega da release | +| Elicitação e Descoberta | Levantamento de Requisitos | Entrevista, Análise de Dominío de Negócio | Descoberta de requisitos de alto nível e mapeamento do objetivo de entrega da release. | | Análise e Consenso | Priorização de Requisitos | Priorização MoSCoW | Garantir que as funcionalidades essenciais sejam entregues primeiro, enquanto as menos críticas podem ser trabalhadas conforme o tempo permite. | | Declaração | Registro dos Requisitos | Temas, Épicos e Histórias de Usuário | Histórias de usuário registradas e compreendidas pela equipe e pelo PO. | -| Organização e Atualização | Organização de Requisitos | Pontos por História | Organização do backlog do produto com histórias ordenadas por nível de importância | +| Organização e Atualização | Organização de Requisitos | Pontos por História | Organização do backlog do produto com histórias ordenadas por nível de importância. | *Elicitação e Descoberta:* @@ -33,10 +33,10 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Elicitação e Descoberta | Levantamento de Requisitos | Entrevista, Análise de domínio do negócio | descoberta de requisitos de alto nível. Mapeamento do objetivo de entrega da release | -| Análise e Consenso | ----------- | -------------- | -------------- | -| Declaração | ----------- | -------------- | -------------- | -| Organização e Atualização | ----------- | -------------- | -------------- | +| Elicitação e Descoberta | Refinamento de Requisitos | Entrevista, Análise Documental | Descoberta e Definição dos requisitos da sprint vindoura. | +| Análise e Consenso | Análise de dependências | Discussões em equipe, análise de tarefas | Consenso da equipe da capacidade de entrega e possibilidades para a sprint. | +| Declaração | Definição dos critérios de aceitação | Critérios de aceitação detalhados, User Stories | revisão e refinamento das histórias de usuário. | +| Organização e Atualização | Refinamento dos requisitos | análise Documental, Discussão em equipe | Definição do Backlog baseado nos requisitos. | *Elicitação e Descoberta:* @@ -66,9 +66,9 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Representação | ----------- | -------------- | -------------- | -| Verificação e Validação | ----------- | -------------- | -------------- | -| Organização e Atualização | ----------- | -------------- | -------------- | +| Representação | Criação de protótipos | Prototipagem | Obter versões preliminares do sistema para validar ideias e requisitos. | +| Verificação e Validação | Reuniões entre a equipe e revisão de código | Feedback entre pares | Obter feedback contínuo entre a equipe para alinhar o desenvolvimento. | +| Organização e Atualização | Organizar tarefas da sprint | discussão em equipe | Garantir que as funcionalidades essenciais sejam entregues primeiro, enquanto as menos críticas podem ser trabalhadas conforme o tempo permite. | *Representação:* @@ -92,8 +92,8 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Verificação e Validação | ----------- | -------------- | -------------- | -| Organização e Atualização | ----------- | -------------- | -------------- | +| Verificação e Validação | Reunião com o cliente | Feedback, workshop de requisitos | Obtenção de feedback e refinamento das User Stories com base nas sugestões e críticas do cliente. | +| Organização e Atualização | Atualização de User Stories | Incorporar feedback | Atualização das User Stories conforme o feedback obtido. | *Verificação e Validação:* @@ -111,10 +111,10 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Elicitação e Descoberta | ----------- | -------------- | -------------- | -| Análise e Consenso | ----------- | -------------- | -------------- | -| Organização e Atualização | ----------- | -------------- | -------------- | -| Declaração | ----------- | -------------- | -------------- | +| Elicitação e Descoberta | | Identificação de novos requisitos | brainstorming, análise de tarefas e reunião com o PO | +| Análise e Consenso | Priorização estratégica | Análise de domínio de requisito e priorização MoSCoW | Lista dos requisitos que incluidos na proxíma release. | +| Organização e Atualização | Revisão do backlog | Revisão do backlog da release | Atualização das entregas do backlog para a release seguinte. | +| Declaração | Definição de épicos de e User Stories | Criação dos épicos e histórias de usuários | Histórias de Usuários definidas para serem trabalhadas na proxíma release. | *Elicitação e Descoberta:* @@ -145,4 +145,5 @@ | Data | Versão | Descrição | Autores | | ---------- | ----------- | -------------- | -------------- | -| 15/12/2024 | 1.0 | Criação da página Engenharia de Requisitos | Cairo Florenço | \ No newline at end of file +| 15/12/2024 | 1.0 | Criação da página Engenharia de Requisitos | Cairo Florenço | +| 16/12/2021 | 1.1 | Preenchimento das tabelas de atividades da ER | João Pedro | \ No newline at end of file From cda62de55db3f4376a5a7efb32216259a931147f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=9B=C2=9BJo=C3=A3o=20Pedro?= Date: Mon, 16 Dec 2024 12:54:00 -0300 Subject: [PATCH 44/44] docs(atividades): preenchimento das tabelas de atividade da ER --- docs/engderequisitos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/engderequisitos.md b/docs/engderequisitos.md index 22e88fe..cc771d7 100644 --- a/docs/engderequisitos.md +++ b/docs/engderequisitos.md @@ -111,7 +111,7 @@ | Atividades de ER | Prática | Técnica | Resultado Esperado | | ---------- | ----------- | -------------- | -------------- | -| Elicitação e Descoberta | | Identificação de novos requisitos | brainstorming, análise de tarefas e reunião com o PO | +| Elicitação e Descoberta | Identifição de novos requisitos | Identificação de novos requisitos | brainstorming, análise de tarefas e reunião com o PO | | Análise e Consenso | Priorização estratégica | Análise de domínio de requisito e priorização MoSCoW | Lista dos requisitos que incluidos na proxíma release. | | Organização e Atualização | Revisão do backlog | Revisão do backlog da release | Atualização das entregas do backlog para a release seguinte. | | Declaração | Definição de épicos de e User Stories | Criação dos épicos e histórias de usuários | Histórias de Usuários definidas para serem trabalhadas na proxíma release. |
épicoComplexidade Total média por épicodentro do MVP
EP01 - cadastro

iq& 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 literal 0 HcmV?d00001 diff --git a/gitpages-galt/docs/images/diagrama.png b/gitpages-galt/docs/images/diagrama.png new file mode 100644 index 0000000000000000000000000000000000000000..2da8d92f016b84c884bd5f8524a4ead247e22750 GIT binary patch literal 113681 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 z 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 literal 0 HcmV?d00001 diff --git a/gitpages-galt/docs/images/image.png b/gitpages-galt/docs/images/image.png new file mode 100644 index 0000000000000000000000000000000000000000..75fe85e0977b4461fe11135414344fe5a57a263a GIT binary patch literal 5805 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€ZT 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⪙(OOr6U)AETnE4A&B9Q38p9|7Z~XJ5Y={Fy6t`H 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 literal 0 HcmV?d00001 diff --git a/gitpages-galt/docs/visaoproduto.md b/gitpages-galt/docs/visaoproduto.md index 565bdd4..4f7b013 100644 --- a/gitpages-galt/docs/visaoproduto.md +++ b/gitpages-galt/docs/visaoproduto.md @@ -1 +1,162 @@ -# Visão de Produto \ No newline at end of file +# **Cenário Atual do Cliente e do Negócio** +![logo galt](/images/Galt.png) + +## Introdução ao Negócio e Contexto +