ngx-sp-infra 2.0.21 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,138 +1,138 @@
1
- # NgxSpInfra - Biblioteca de funcionalidades e componentes 🚀
2
- [![Deploy no NPM](https://github.com/SISPROV6/ngx-sp-infra/actions/workflows/main.yml/badge.svg)](https://github.com/SISPROV6/ngx-sp-infra/actions/workflows/main.yml)
3
- [![versão mais recente](https://badge.fury.io/js/ngx-sp-infra.svg)](//npmjs.com/package/ngx-sp-infra)
4
- ![downloads](https://img.shields.io/npm/dm/ngx-sp-infra.svg)
5
-
6
- ## Índice
7
-
8
- - [Introdução](#introdução)
9
- - [Uso](#uso)
10
- - [Testes](#testes)
11
- - [Publicação](#publicação)
12
- - [Manual](#manual)
13
- - [Automatizada](#automatizada)
14
- - [Automatização de Publicação](#automatização-de-publicação)
15
- - [Contribuição](#contribuição)
16
-
17
- ## Introdução
18
- Este projeto engloba funcionalidades genéricas da nossa infraestrutura como código (infra-as-code) que podem ser reutilizadas em outros projetos.
19
-
20
- ## Uso
21
- Para usar a biblioteca em um projeto Angular, siga estas etapas:
22
- 1. Instalar a biblioteca - utilizando o comando ```npm install ngx-sp-infra@latest --force``` _(O uso do --force é necessário por enquanto)_
23
- 2. Importar módulo - deve ter o InfraModule/ProjectModule nos imports do módulo/componente que está utilizando
24
- ```typescript
25
- // Em uma estrutura de uma tela de Usuários, por exemplo
26
- // No arquivo usuarios.module.ts:
27
- @NgModule( {
28
- declarations: [
29
- // ...outros componentes
30
- PainelUsuariosComponent,
31
- FormularioUsuarioComponent
32
- ],
33
- imports: [
34
- // ...outros imports
35
- ProjectModule,
36
- UsuariosRoutingModule
37
- ],
38
- exports: [
39
- // ...
40
- ]
41
- })
42
- export class UsuariosModule { }
43
- ```
44
- > [!IMPORTANT]
45
- > Nunca importe ambos os módulos ProjectModule e InfraModule juntos!
46
- > O InfraModule já está incluído dentro do ProjectModule, portanto, em projetos de Produtos, use apenas o ProjectModule.
47
-
48
- ## Testes
49
- Antes de publicar a biblioteca para o NPM é muito importante realizar testes robustos do funcionamento da nova feature ou correção que foi realizada. Para realizar testes locais segue-se o seguinte passo-a-passo:
50
-
51
- 1. Com o projeto NgxSpInfra aberto em uma IDE execute o comando `ng build --watch`
52
- 2. No projeto que será usado para teste modifique o arquivo angular.json e adicione a propriedade "preserveSymlinks" dentro de `build > options` como no exemplo abaixo:
53
- ```json
54
- {
55
- // ...restante do conteúdo
56
- "build": {
57
- "builder": "@angular-devkit/build-angular:browser",
58
- "options": {
59
- "preserveSymlinks": true,
60
- // ...restante do conteúdo
61
- },
62
- // ...restante do conteúdo
63
- },
64
- }
65
- ```
66
- 3. Por fim, execute os dois comandos abaixo:
67
- ```bash
68
- npm uninstall ngx-sp-infra --force
69
- ```
70
- ```bash
71
- npm i "file:C:/SisproCloud/INFRA/Fontes/Sp_106_Imports/NgxSpInfra/dist/ngx-sp-infra"
72
- ```
73
-
74
- > [!TIP]
75
- > Se for necessário, utilize o `--force` ...principalmente no uninstall
76
-
77
- E pronto! Agora graças ao `ng build --watch` sempre que uma alteração for salva no projeto NgxSpInfra os arquivos na dist irão se atualizar também e a instalação no projeto de teste observavará exatamente estes arquivos.
78
-
79
- ## Publicação
80
- A publicação do pacote no NPM pode ser feita de forma manual ou automatizada.
81
-
82
- #### Manual
83
- Para a publicação manual (preferencialmente usando SVN ao invés de Git), siga estas etapas:
84
- 1. Executar o comando de build: No terminal, rode um dos seguintes comandos:
85
- - ```npm run build:patch``` _- incrementa uma versão PATCH (0.0.1) e faz o build_
86
- - ```npm run build:minor``` _- incrementa uma versão MINOR (0.1.0) e faz o build_
87
- - ```npm run build:major``` _- incrementa uma versão MAJOR (1.0.0) e faz o build_
88
-
89
- 2. O sistema deve perguntar ao usuário se ele deseja adicionar um sufixo à versão:
90
- - Para uma versão de teste, digite "test" ou "-test" e aperte ENTER
91
- - Para uma versão oficial, não é necessário digitar nada, apenas aperte ENTER
92
-
93
- 3. Logo depois, o sistema deve perguntar ao usuário se ele deseja realizar o commit da tag de versão, digite "N"
94
-
95
- 4. Independete das respostas anteriores, será feito um build da aplicação e por fim, o sistema deve perguntar ao usuário se ele deseja fazer um commit no repositório do GitHub, digite "N"
96
-
97
- 5. Publicar no NPM:
98
- - `cd dist/ngx-sp-infra`
99
- - `npm adduser` OU `npm login` _- depende se você já possui conta no NPM ou não_
100
- - `npm publish --access public --tag latest`
101
-
102
- #### Automatizada
103
- Para publicação automatizada (apenas quando utilizar git) devem ser seguidas as etapas abaixo:
104
- 1. Executar o comando de build: No terminal, rode um dos seguintes comandos:
105
- - ```npm run build:patch``` _- incrementa uma versão PATCH (0.0.1) e faz o build_
106
- - ```npm run build:minor``` _- incrementa uma versão MINOR (0.1.0) e faz o build_
107
- - ```npm run build:major``` _- incrementa uma versão MAJOR (1.0.0) e faz o build_
108
-
109
- 2. O sistema deve perguntar ao usuário se ele deseja adicionar um sufixo à versão:
110
- - Para uma versão de teste, digite "test" ou "-test" e aperte ENTER
111
- - Para uma versão oficial, não é necessário digitar nada, apenas aperte ENTER
112
-
113
- 3. Logo depois, o sistema deve perguntar ao usuário se ele deseja realizar o commit da tag de versão, digite "S" e pressione ENTER
114
-
115
- 4. Independete das respostas anteriores, será feito um build da aplicação e o sistema deve perguntar ao usuário se ele deseja fazer um commit no repositório do GitHub, digite "S" e pressione ENTER
116
-
117
- 5. Por fim o sistema perguntará ao usuário em que branch ele fará o commit, informe a branch correta (geralmente a atual) e pressione ENTER
118
-
119
- > [!IMPORTANT]
120
- > O deploy automático só será feito após commit nas branches `main` e `test`. Outras branches não realizarão o deploy para o NPM.
121
-
122
- ## Automatização de Publicação
123
- A automatização da publicação é realizada utilizando GitHub Actions.
124
-
125
- ### Como funciona:
126
- - Workflow: Um workflow específico é configurado para observar as branches main e test. Quando há um commit nessas branches, ele verifica as alterações e, caso o diretório dist tenha sido modificado, a ação de publicação no NPM é disparada automaticamente.
127
- - Etapas: O workflow inclui etapas como a instalação de dependências, execução de builds, e a publicação no NPM. Tudo é gerenciado através de scripts e do token de autenticação NPM armazenado nos segredos do GitHub.
128
- - Segurança: Apenas commits em branches específicas acionam a publicação, garantindo que somente código aprovado chegue ao NPM.
129
-
130
- ## Contribuição
131
- Se você deseja contribuir para a biblioteca, siga estas etapas:
132
-
133
- 1. Faça um clone do repositório.
134
- 2. Crie uma branch para sua feature ou correção com base na main.
135
- 3. Faça suas alterações e teste-as localmente (verifique o tópico de [Testes](#testes)).
136
- 4. Faça um `git commit` e `git push` na sua branch.
137
- 5. Abra um PR (Pull Request) para a branch test (ou main caso seja uma correção)
138
- 6. Caso ela seja aprovada e o merge feito, siga as etapas no tópido de [Publicação](#publicação)
1
+ # NgxSpInfra - Biblioteca de funcionalidades e componentes 🚀
2
+ [![Deploy no NPM](https://github.com/SISPROV6/ngx-sp-infra/actions/workflows/main.yml/badge.svg)](https://github.com/SISPROV6/ngx-sp-infra/actions/workflows/main.yml)
3
+ [![versão mais recente](https://badge.fury.io/js/ngx-sp-infra.svg)](//npmjs.com/package/ngx-sp-infra)
4
+ ![downloads](https://img.shields.io/npm/dm/ngx-sp-infra.svg)
5
+
6
+ ## Índice
7
+
8
+ - [Introdução](#introdução)
9
+ - [Uso](#uso)
10
+ - [Testes](#testes)
11
+ - [Publicação](#publicação)
12
+ - [Manual](#manual)
13
+ - [Automatizada](#automatizada)
14
+ - [Automatização de Publicação](#automatização-de-publicação)
15
+ - [Contribuição](#contribuição)
16
+
17
+ ## Introdução
18
+ Este projeto engloba funcionalidades genéricas da nossa infraestrutura como código (infra-as-code) que podem ser reutilizadas em outros projetos.
19
+
20
+ ## Uso
21
+ Para usar a biblioteca em um projeto Angular, siga estas etapas:
22
+ 1. Instalar a biblioteca - utilizando o comando ```npm install ngx-sp-infra@latest --force``` _(O uso do --force é necessário por enquanto)_
23
+ 2. Importar módulo - deve ter o InfraModule/ProjectModule nos imports do módulo/componente que está utilizando
24
+ ```typescript
25
+ // Em uma estrutura de uma tela de Usuários, por exemplo
26
+ // No arquivo usuarios.module.ts:
27
+ @NgModule( {
28
+ declarations: [
29
+ // ...outros componentes
30
+ PainelUsuariosComponent,
31
+ FormularioUsuarioComponent
32
+ ],
33
+ imports: [
34
+ // ...outros imports
35
+ ProjectModule,
36
+ UsuariosRoutingModule
37
+ ],
38
+ exports: [
39
+ // ...
40
+ ]
41
+ })
42
+ export class UsuariosModule { }
43
+ ```
44
+ > [!IMPORTANT]
45
+ > Nunca importe ambos os módulos ProjectModule e InfraModule juntos!
46
+ > O InfraModule já está incluído dentro do ProjectModule, portanto, em projetos de Produtos, use apenas o ProjectModule.
47
+
48
+ ## Testes
49
+ Antes de publicar a biblioteca para o NPM é muito importante realizar testes robustos do funcionamento da nova feature ou correção que foi realizada. Para realizar testes locais segue-se o seguinte passo-a-passo:
50
+
51
+ 1. Com o projeto NgxSpInfra aberto em uma IDE execute o comando `ng build --watch`
52
+ 2. No projeto que será usado para teste modifique o arquivo angular.json e adicione a propriedade "preserveSymlinks" dentro de `build > options` como no exemplo abaixo:
53
+ ```json
54
+ {
55
+ // ...restante do conteúdo
56
+ "build": {
57
+ "builder": "@angular-devkit/build-angular:browser",
58
+ "options": {
59
+ "preserveSymlinks": true,
60
+ // ...restante do conteúdo
61
+ },
62
+ // ...restante do conteúdo
63
+ },
64
+ }
65
+ ```
66
+ 3. Por fim, execute os dois comandos abaixo:
67
+ ```bash
68
+ npm uninstall ngx-sp-infra --force
69
+ ```
70
+ ```bash
71
+ npm i "file:C:/SisproCloud/INFRA/Fontes/Sp_106_Imports/NgxSpInfra/dist/ngx-sp-infra"
72
+ ```
73
+
74
+ > [!TIP]
75
+ > Se for necessário, utilize o `--force` ...principalmente no uninstall
76
+
77
+ E pronto! Agora graças ao `ng build --watch` sempre que uma alteração for salva no projeto NgxSpInfra os arquivos na dist irão se atualizar também e a instalação no projeto de teste observavará exatamente estes arquivos.
78
+
79
+ ## Publicação
80
+ A publicação do pacote no NPM pode ser feita de forma manual ou automatizada.
81
+
82
+ #### Manual
83
+ Para a publicação manual (preferencialmente usando SVN ao invés de Git), siga estas etapas:
84
+ 1. Executar o comando de build: No terminal, rode um dos seguintes comandos:
85
+ - ```npm run build:patch``` _- incrementa uma versão PATCH (0.0.1) e faz o build_
86
+ - ```npm run build:minor``` _- incrementa uma versão MINOR (0.1.0) e faz o build_
87
+ - ```npm run build:major``` _- incrementa uma versão MAJOR (1.0.0) e faz o build_
88
+
89
+ 2. O sistema deve perguntar ao usuário se ele deseja adicionar um sufixo à versão:
90
+ - Para uma versão de teste, digite "test" ou "-test" e aperte ENTER
91
+ - Para uma versão oficial, não é necessário digitar nada, apenas aperte ENTER
92
+
93
+ 3. Logo depois, o sistema deve perguntar ao usuário se ele deseja realizar o commit da tag de versão, digite "N"
94
+
95
+ 4. Independete das respostas anteriores, será feito um build da aplicação e por fim, o sistema deve perguntar ao usuário se ele deseja fazer um commit no repositório do GitHub, digite "N"
96
+
97
+ 5. Publicar no NPM:
98
+ - `cd dist/ngx-sp-infra`
99
+ - `npm adduser` OU `npm login` _- depende se você já possui conta no NPM ou não_
100
+ - `npm publish --access public --tag latest`
101
+
102
+ #### Automatizada
103
+ Para publicação automatizada (apenas quando utilizar git) devem ser seguidas as etapas abaixo:
104
+ 1. Executar o comando de build: No terminal, rode um dos seguintes comandos:
105
+ - ```npm run build:patch``` _- incrementa uma versão PATCH (0.0.1) e faz o build_
106
+ - ```npm run build:minor``` _- incrementa uma versão MINOR (0.1.0) e faz o build_
107
+ - ```npm run build:major``` _- incrementa uma versão MAJOR (1.0.0) e faz o build_
108
+
109
+ 2. O sistema deve perguntar ao usuário se ele deseja adicionar um sufixo à versão:
110
+ - Para uma versão de teste, digite "test" ou "-test" e aperte ENTER
111
+ - Para uma versão oficial, não é necessário digitar nada, apenas aperte ENTER
112
+
113
+ 3. Logo depois, o sistema deve perguntar ao usuário se ele deseja realizar o commit da tag de versão, digite "S" e pressione ENTER
114
+
115
+ 4. Independete das respostas anteriores, será feito um build da aplicação e o sistema deve perguntar ao usuário se ele deseja fazer um commit no repositório do GitHub, digite "S" e pressione ENTER
116
+
117
+ 5. Por fim o sistema perguntará ao usuário em que branch ele fará o commit, informe a branch correta (geralmente a atual) e pressione ENTER
118
+
119
+ > [!IMPORTANT]
120
+ > O deploy automático só será feito após commit nas branches `main` e `test`. Outras branches não realizarão o deploy para o NPM.
121
+
122
+ ## Automatização de Publicação
123
+ A automatização da publicação é realizada utilizando GitHub Actions.
124
+
125
+ ### Como funciona:
126
+ - Workflow: Um workflow específico é configurado para observar as branches main e test. Quando há um commit nessas branches, ele verifica as alterações e, caso o diretório dist tenha sido modificado, a ação de publicação no NPM é disparada automaticamente.
127
+ - Etapas: O workflow inclui etapas como a instalação de dependências, execução de builds, e a publicação no NPM. Tudo é gerenciado através de scripts e do token de autenticação NPM armazenado nos segredos do GitHub.
128
+ - Segurança: Apenas commits em branches específicas acionam a publicação, garantindo que somente código aprovado chegue ao NPM.
129
+
130
+ ## Contribuição
131
+ Se você deseja contribuir para a biblioteca, siga estas etapas:
132
+
133
+ 1. Faça um clone do repositório.
134
+ 2. Crie uma branch para sua feature ou correção com base na main.
135
+ 3. Faça suas alterações e teste-as localmente (verifique o tópico de [Testes](#testes)).
136
+ 4. Faça um `git commit` e `git push` na sua branch.
137
+ 5. Abra um PR (Pull Request) para a branch test (ou main caso seja uma correção)
138
+ 6. Caso ela seja aprovada e o merge feito, siga as etapas no tópido de [Publicação](#publicação)
@@ -40,6 +40,7 @@ import { FieldContadorMessageComponent } from './widgets/field-contador-message/
40
40
  import { LibSpinnerComponent } from './widgets/spinner/spinner.component';
41
41
  import { LoadingBtnDirective } from './directives/loading-btn.directive';
42
42
  import { NavProdutosComponent } from './widgets/nav-produtos/nav-produtos.component';
43
+ import { InputTrimComponent } from './widgets/input-trim/input-trim.component';
43
44
  import * as i0 from "@angular/core";
44
45
  import * as i1 from "ngx-bootstrap/modal";
45
46
  import * as i2 from "ngx-bootstrap/accordion";
@@ -50,6 +51,7 @@ export class InfraModule {
50
51
  FieldControlErrorComponent,
51
52
  FieldErrorMessageComponent,
52
53
  FieldContadorMessageComponent,
54
+ InputTrimComponent,
53
55
  LoadingButtonComponent,
54
56
  AlertComponent,
55
57
  ConfirmComponent,
@@ -86,6 +88,7 @@ export class InfraModule {
86
88
  FieldControlErrorComponent,
87
89
  FieldErrorMessageComponent,
88
90
  FieldContadorMessageComponent,
91
+ InputTrimComponent,
89
92
  LoadingButtonComponent,
90
93
  AlertComponent,
91
94
  ConfirmComponent,
@@ -130,6 +133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
130
133
  FieldControlErrorComponent,
131
134
  FieldErrorMessageComponent,
132
135
  FieldContadorMessageComponent,
136
+ InputTrimComponent,
133
137
  LoadingButtonComponent,
134
138
  AlertComponent,
135
139
  ConfirmComponent,
@@ -176,6 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
176
180
  FieldControlErrorComponent,
177
181
  FieldErrorMessageComponent,
178
182
  FieldContadorMessageComponent,
183
+ InputTrimComponent,
179
184
  LoadingButtonComponent,
180
185
  AlertComponent,
181
186
  ConfirmComponent,
@@ -207,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
207
212
  providers: [],
208
213
  }]
209
214
  }] });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvaW5mcmEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRFQUE0RSxDQUFDO0FBQzFILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFt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RTt3QkFDUCxZQUFZO3dCQUNaLFdBQVcsQ0FBQyxPQUFPLEVBQUU7d0JBQ3JCLGVBQWUsQ0FBQyxPQUFPLEVBQUU7d0JBQ3pCLGFBQWEsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLDZCQUE2Qjt3QkFDN0Isc0JBQXNCO3dCQUN0QixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsNEJBQTRCO3dCQUM1QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsU0FBUzt3QkFDVCxXQUFXO3dCQUNYLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUVqQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFFcEIsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCx5QkFBeUI7d0JBRXpCLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFFZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RhbFV0aWxzU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9tb2RhbC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2FjY29yZGlvbic7XG5pbXBvcnQgeyBNb2RhbE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS9jb25maXJtLW1vZGFsL2NvbmZpcm0tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNhdmVDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2Uvc2F2ZS9zYXZlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZyYUJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2JyZWFkY3J1bWIvaW5mcmEtYnJlYWRjcnVtYi1pdGVtL2luZnJhLWJyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5mcmFCcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2JyZWFkY3J1bWIvaW5mcmEtYnJlYWRjcnVtYi9pbmZyYS1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2JyZWFkY3J1bWIvcG9ydGFscmgtYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21ib2JveENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmllbGRDb250cm9sRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvZmllbGQtY29udHJvbC1lcnJvci9maWVsZC1jb250cm9sLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZEVycm9yTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9maWVsZC1lcnJvci1tZXNzYWdlL2ZpZWxkLWVycm9yLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRpbmdCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvbG9hZGluZy1idXR0b24vbG9hZGluZy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ZnU3RvcmFnZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9zdmctc3RvcmFnZS9zdmctc3RvcmFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9VcmxQaXBlIH0gZnJvbSAnLi9waXBlcy90by11cmwucGlwZSc7XG5pbXBvcnQgeyBDcGZDbnBqUGlwZSB9IGZyb20gJy4vcGlwZXMvY3BmLWNucGoucGlwZSc7XG5pbXBvcnQgeyBGaWx0ZXJCeVBpcGUgfSBmcm9tICcuL3dpZGdldHMvY29tYm9ib3gvcGlwZXMvZmlsdGVyLWJ5LnBpcGUnO1xuaW1wb3J0IHsgTGltaXRUb1BpcGUgfSBmcm9tICcuL3dpZGdldHMvY29tYm9ib3gvcGlwZXMvbGltaXQtdG8ucGlwZSc7XG5pbXBvcnQgeyBTZWFyY2hUcmVlUGlwZSB9IGZyb20gJy4vd2lkZ2V0cy90cmVlL3BpcGVzL3NlYXJjaC10cmVlLnBpcGUnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi93aWRnZXRzL2NsaWNrLW91dHNpZGUvY2xpY2tvdXRzaWRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPcmRlcmluZ0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9vcmRlcmluZy9vcmRlcmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5cbmltcG9ydCB7IFNlYXJjaENvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL3NlYXJjaC1jb21ib2JveC9zZWFyY2gtY29tYm9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IFJlcXVpcmVkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3JlcXVpcmVkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaW1wbGVIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvc2ltcGxlLWhlYWRlci9zaW1wbGUtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJJY29uc0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9saWItaWNvbnMvbGliLWljb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0RmlsdGVyUGlwZSB9IGZyb20gJy4vcGlwZXMvdGV4dC1maWx0ZXIucGlwZSc7XG5pbXBvcnQgeyBDb250ZW50Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2NvbnRlbnQtY29udGFpbmVyL2NvbnRlbnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3B5Q2xpcGJvYXJkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvcHktY2xpcGJvYXJkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBOZ3hQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnbmd4LXBhZ2luYXRpb24nO1xuaW1wb3J0IHsgTGliQ29tYm9ib3hDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvbGliLWNvbWJvYm94L2xpYi1jb21ib2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmllbGRDb250YWRvck1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvZmllbGQtY29udGFkb3ItbWVzc2FnZS9maWVsZC1jb250YWRvci1tZXNzYWdlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IExpYlNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQnRuRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xvYWRpbmctYnRuLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOYXZQcm9kdXRvc0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9uYXYtcHJvZHV0b3MvbmF2LXByb2R1dG9zLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgRmllbGRDb250cm9sRXJyb3JDb21wb25lbnQsXG4gICAgRmllbGRFcnJvck1lc3NhZ2VDb21wb25lbnQsXG4gICAgRmllbGRDb250YWRvck1lc3NhZ2VDb21wb25lbnQsXG4gICAgTG9hZGluZ0J1dHRvbkNvbXBvbmVudCxcbiAgICBBbGVydENvbXBvbmVudCxcbiAgICBDb25maXJtQ29tcG9uZW50LFxuICAgIENvbmZpcm1Nb2RhbENvbXBvbmVudCxcbiAgICBTYXZlQ29tcG9uZW50LFxuICAgIEluZnJhQnJlYWRjcnVtYkNvbXBvbmVudCxcbiAgICBJbmZyYUJyZWFkY3J1bWJJdGVtQ29tcG9uZW50LFxuICAgIEJyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgU3ZnU3RvcmFnZUNvbXBvbmVudCxcbiAgICBOYXZQcm9kdXRvc0NvbXBvbmVudCxcbiAgICBUcmVlQ29tcG9uZW50LFxuICAgIFRvVXJsUGlwZSxcbiAgICBDcGZDbnBqUGlwZSxcbiAgICBGaWx0ZXJCeVBpcGUsXG4gICAgTGltaXRUb1BpcGUsXG4gICAgU2VhcmNoVHJlZVBpcGUsXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICAgIE9yZGVyaW5nQ29tcG9uZW50LFxuXG4gICAgU2VhcmNoQ29tYm9ib3hDb21wb25lbnQsXG4gICAgTGliQ29tYm9ib3hDb21wb25lbnQsIC8vIE5vdm8gY29tYm9ib3gsIHN1YnN0aXR1aXLDoSBvIFNlYXJjaCBmdXR1cmFtZW50ZVxuXG4gICAgUmVxdWlyZWREaXJlY3RpdmUsXG4gICAgU2ltcGxlSGVhZGVyQ29tcG9uZW50LFxuICAgIExpYkljb25zQ29tcG9uZW50LFxuICAgIFRleHRGaWx0ZXJQaXBlLFxuICAgIENvbnRlbnRDb250YWluZXJDb21wb25lbnQsXG5cbiAgICBDb3B5Q2xpcGJvYXJkRGlyZWN0aXZlLFxuICAgIFRhYmxlQ29tcG9uZW50LFxuXG4gICAgTGliU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMb2FkaW5nQnRuRGlyZWN0aXZlLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1vZGFsTW9kdWxlLmZvclJvb3QoKSxcbiAgICBBY2NvcmRpb25Nb2R1bGUuZm9yUm9vdCgpLFxuICAgIFRvb2x0aXBNb2R1bGUuZm9yUm9vdCgpLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5neFBhZ2luYXRpb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgRmllbGRDb250cm9sRXJyb3JDb21wb25lbnQsXG4gICAgRmllbGRFcnJvck1lc3NhZ2VDb21wb25lbnQsXG4gICAgRmllbGRDb250YWRvck1lc3NhZ2VDb21wb25lbnQsXG4gICAgTG9hZGluZ0J1dHRvbkNvbXBvbmVudCxcbiAgICBBbGVydENvbXBvbmVudCxcbiAgICBDb25maXJtQ29tcG9uZW50LFxuICAgIENvbmZpcm1Nb2RhbENvbXBvbmVudCxcbiAgICBTYXZlQ29tcG9uZW50LFxuICAgIEluZnJhQnJlYWRjcnVtYkNvbXBvbmVudCxcbiAgICBJbmZyYUJyZWFkY3J1bWJJdGVtQ29tcG9uZW50LFxuICAgIE5hdlByb2R1dG9zQ29tcG9uZW50LFxuICAgIEJyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgU3ZnU3RvcmFnZUNvbXBvbmVudCxcbiAgICBUcmVlQ29tcG9uZW50LFxuICAgIFRvVXJsUGlwZSxcbiAgICBDcGZDbnBqUGlwZSxcbiAgICBDbGlja091dHNpZGVEaXJlY3RpdmUsXG4gICAgT3JkZXJpbmdDb21wb25lbnQsXG5cbiAgICBTZWFyY2hDb21ib2JveENvbXBvbmVudCxcbiAgICBMaWJDb21ib2JveENvbXBvbmVudCxcblxuICAgIFJlcXVpcmVkRGlyZWN0aXZlLFxuICAgIFNpbXBsZUhlYWRlckNvbXBvbmVudCxcbiAgICBMaWJJY29uc0NvbXBvbmVudCxcbiAgICBUZXh0RmlsdGVyUGlwZSxcbiAgICBDb250ZW50Q29udGFpbmVyQ29tcG9uZW50LFxuXG4gICAgQ29weUNsaXBib2FyZERpcmVjdGl2ZSxcbiAgICBUYWJsZUNvbXBvbmVudCxcblxuICAgIExpYlNwaW5uZXJDb21wb25lbnQsXG4gICAgTG9hZGluZ0J0bkRpcmVjdGl2ZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5mcmFNb2R1bGUgeyB9XG4iXX0=
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvaW5mcmEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRFQUE0RSxDQUFDO0FBQzFILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFt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QUNkLHlCQUF5Qjt3QkFFekIsc0JBQXNCO3dCQUN0QixjQUFjO3dCQUVkLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXLENBQUMsT0FBTyxFQUFFO3dCQUNyQixlQUFlLENBQUMsT0FBTyxFQUFFO3dCQUN6QixhQUFhLENBQUMsT0FBTyxFQUFFO3dCQUN2QixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsNEJBQTRCO3dCQUM1QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsU0FBUzt3QkFDVCxXQUFXO3dCQUNYLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUVqQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFFcEIsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCx5QkFBeUI7d0JBRXpCLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFFZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RhbFV0aWxzU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9tb2RhbC11dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2FjY29yZGlvbic7XHJcbmltcG9ydCB7IE1vZGFsTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XHJcblxyXG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS9hbGVydC9hbGVydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UvY29uZmlybS1tb2RhbC9jb25maXJtLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNhdmVDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2Uvc2F2ZS9zYXZlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEluZnJhQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvYnJlYWRjcnVtYi9pbmZyYS1icmVhZGNydW1iLWl0ZW0vaW5mcmEtYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEluZnJhQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9icmVhZGNydW1iL2luZnJhLWJyZWFkY3J1bWIvaW5mcmEtYnJlYWRjcnVtYi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2JyZWFkY3J1bWIvcG9ydGFscmgtYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpZWxkQ29udHJvbEVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2ZpZWxkLWNvbnRyb2wtZXJyb3IvZmllbGQtY29udHJvbC1lcnJvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWVsZEVycm9yTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9maWVsZC1lcnJvci1tZXNzYWdlL2ZpZWxkLWVycm9yLW1lc3NhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9hZGluZ0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9sb2FkaW5nLWJ1dHRvbi9sb2FkaW5nLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL3RyZWUvdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdmdTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL3N2Zy1zdG9yYWdlL3N2Zy1zdG9yYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvVXJsUGlwZSB9IGZyb20gJy4vcGlwZXMvdG8tdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBDcGZDbnBqUGlwZSB9IGZyb20gJy4vcGlwZXMvY3BmLWNucGoucGlwZSc7XHJcbmltcG9ydCB7IEZpbHRlckJ5UGlwZSB9IGZyb20gJy4vd2lkZ2V0cy9jb21ib2JveC9waXBlcy9maWx0ZXItYnkucGlwZSc7XHJcbmltcG9ydCB7IExpbWl0VG9QaXBlIH0gZnJvbSAnLi93aWRnZXRzL2NvbWJvYm94L3BpcGVzL2xpbWl0LXRvLnBpcGUnO1xyXG5pbXBvcnQgeyBTZWFyY2hUcmVlUGlwZSB9IGZyb20gJy4vd2lkZ2V0cy90cmVlL3BpcGVzL3NlYXJjaC10cmVlLnBpcGUnO1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL3dpZGdldHMvY2xpY2stb3V0c2lkZS9jbGlja291dHNpZGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT3JkZXJpbmdDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvb3JkZXJpbmcvb3JkZXJpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBTZWFyY2hDb21ib2JveENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9zZWFyY2gtY29tYm9ib3gvc2VhcmNoLWNvbWJvYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlcXVpcmVkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3JlcXVpcmVkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9zaW1wbGUtaGVhZGVyL3NpbXBsZS1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGliSWNvbnNDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvbGliLWljb25zL2xpYi1pY29ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0RmlsdGVyUGlwZSB9IGZyb20gJy4vcGlwZXMvdGV4dC1maWx0ZXIucGlwZSc7XHJcbmltcG9ydCB7IENvbnRlbnRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvY29udGVudC1jb250YWluZXIvY29udGVudC1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29weUNsaXBib2FyZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jb3B5LWNsaXBib2FyZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgTmd4UGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJ25neC1wYWdpbmF0aW9uJztcclxuaW1wb3J0IHsgTGliQ29tYm9ib3hDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvbGliLWNvbWJvYm94L2xpYi1jb21ib2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWVsZENvbnRhZG9yTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9maWVsZC1jb250YWRvci1tZXNzYWdlL2ZpZWxkLWNvbnRhZG9yLW1lc3NhZ2UuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IExpYlNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdCdG5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbG9hZGluZy1idG4uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTmF2UHJvZHV0b3NDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvbmF2LXByb2R1dG9zL25hdi1wcm9kdXRvcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFRyaW1Db21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvaW5wdXQtdHJpbS9pbnB1dC10cmltLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTG9hZGluZ0NvbXBvbmVudCxcclxuICAgIEZpZWxkQ29udHJvbEVycm9yQ29tcG9uZW50LFxyXG4gICAgRmllbGRFcnJvck1lc3NhZ2VDb21wb25lbnQsXHJcbiAgICBGaWVsZENvbnRhZG9yTWVzc2FnZUNvbXBvbmVudCxcclxuICAgIElucHV0VHJpbUNvbXBvbmVudCxcclxuICAgIExvYWRpbmdCdXR0b25Db21wb25lbnQsXHJcbiAgICBBbGVydENvbXBvbmVudCxcclxuICAgIENvbmZpcm1Db21wb25lbnQsXHJcbiAgICBDb25maXJtTW9kYWxDb21wb25lbnQsXHJcbiAgICBTYXZlQ29tcG9uZW50LFxyXG4gICAgSW5mcmFCcmVhZGNydW1iQ29tcG9uZW50LFxyXG4gICAgSW5mcmFCcmVhZGNydW1iSXRlbUNvbXBvbmVudCxcclxuICAgIEJyZWFkY3J1bWJDb21wb25lbnQsXHJcbiAgICBDb21ib2JveENvbXBvbmVudCxcclxuICAgIFN2Z1N0b3JhZ2VDb21wb25lbnQsXHJcbiAgICBOYXZQcm9kdXRvc0NvbXBvbmVudCxcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBUb1VybFBpcGUsXHJcbiAgICBDcGZDbnBqUGlwZSxcclxuICAgIEZpbHRlckJ5UGlwZSxcclxuICAgIExpbWl0VG9QaXBlLFxyXG4gICAgU2VhcmNoVHJlZVBpcGUsXHJcbiAgICBDbGlja091dHNpZGVEaXJlY3RpdmUsXHJcbiAgICBPcmRlcmluZ0NvbXBvbmVudCxcclxuXHJcbiAgICBTZWFyY2hDb21ib2JveENvbXBvbmVudCxcclxuICAgIExpYkNvbWJvYm94Q29tcG9uZW50LCAvLyBOb3ZvIGNvbWJvYm94LCBzdWJzdGl0dWlyw6EgbyBTZWFyY2ggZnV0dXJhbWVudGVcclxuXHJcbiAgICBSZXF1aXJlZERpcmVjdGl2ZSxcclxuICAgIFNpbXBsZUhlYWRlckNvbXBvbmVudCxcclxuICAgIExpYkljb25zQ29tcG9uZW50LFxyXG4gICAgVGV4dEZpbHRlclBpcGUsXHJcbiAgICBDb250ZW50Q29udGFpbmVyQ29tcG9uZW50LFxyXG5cclxuICAgIENvcHlDbGlwYm9hcmREaXJlY3RpdmUsXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuXHJcbiAgICBMaWJTcGlubmVyQ29tcG9uZW50LFxyXG4gICAgTG9hZGluZ0J0bkRpcmVjdGl2ZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1vZGFsTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIEFjY29yZGlvbk1vZHVsZS5mb3JSb290KCksXHJcbiAgICBUb29sdGlwTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTmd4UGFnaW5hdGlvbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIExvYWRpbmdDb21wb25lbnQsXHJcbiAgICBGaWVsZENvbnRyb2xFcnJvckNvbXBvbmVudCxcclxuICAgIEZpZWxkRXJyb3JNZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgRmllbGRDb250YWRvck1lc3NhZ2VDb21wb25lbnQsXHJcbiAgICBJbnB1dFRyaW1Db21wb25lbnQsXHJcbiAgICBMb2FkaW5nQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQWxlcnRDb21wb25lbnQsXHJcbiAgICBDb25maXJtQ29tcG9uZW50LFxyXG4gICAgQ29uZmlybU1vZGFsQ29tcG9uZW50LFxyXG4gICAgU2F2ZUNvbXBvbmVudCxcclxuICAgIEluZnJhQnJlYWRjcnVtYkNvbXBvbmVudCxcclxuICAgIEluZnJhQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQsXHJcbiAgICBOYXZQcm9kdXRvc0NvbXBvbmVudCxcclxuICAgIEJyZWFkY3J1bWJDb21wb25lbnQsXHJcbiAgICBDb21ib2JveENvbXBvbmVudCxcclxuICAgIFN2Z1N0b3JhZ2VDb21wb25lbnQsXHJcbiAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgVG9VcmxQaXBlLFxyXG4gICAgQ3BmQ25walBpcGUsXHJcbiAgICBDbGlja091dHNpZGVEaXJlY3RpdmUsXHJcbiAgICBPcmRlcmluZ0NvbXBvbmVudCxcclxuXHJcbiAgICBTZWFyY2hDb21ib2JveENvbXBvbmVudCxcclxuICAgIExpYkNvbWJvYm94Q29tcG9uZW50LFxyXG5cclxuICAgIFJlcXVpcmVkRGlyZWN0aXZlLFxyXG4gICAgU2ltcGxlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgTGliSWNvbnNDb21wb25lbnQsXHJcbiAgICBUZXh0RmlsdGVyUGlwZSxcclxuICAgIENvbnRlbnRDb250YWluZXJDb21wb25lbnQsXHJcblxyXG4gICAgQ29weUNsaXBib2FyZERpcmVjdGl2ZSxcclxuICAgIFRhYmxlQ29tcG9uZW50LFxyXG5cclxuICAgIExpYlNwaW5uZXJDb21wb25lbnQsXHJcbiAgICBMb2FkaW5nQnRuRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEluZnJhTW9kdWxlIHsgfVxyXG4iXX0=