From d1d8904439881f6c17d38330742d956d4f63e107 Mon Sep 17 00:00:00 2001 From: Adish M <44204658+adishM98@users.noreply.github.com> Date: Fri, 3 Mar 2023 10:57:57 +0530 Subject: [PATCH 01/65] Fix try-tooljet dependence with base image (#5681) * Fix try-tooljet dependence with base image * corrections --- docker/try-tooljet.Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/try-tooljet.Dockerfile b/docker/try-tooljet.Dockerfile index cbac83e816..de9711f594 100644 --- a/docker/try-tooljet.Dockerfile +++ b/docker/try-tooljet.Dockerfile @@ -5,8 +5,7 @@ COPY --from=postgrest/postgrest:v10.1.1.20221215 /bin/postgrest /bin # Install Postgres RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - -RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main 13" | tee /etc/apt/sources.list.d/pgdg.list -RUN echo "deb http://deb.debian.org/debian" +RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list RUN apt update && apt -y install postgresql-13 postgresql-client-13 supervisor USER postgres RUN service postgresql start && \ From 29dc483b7f22f56ad9bbe3d2bd1287a05e054b6f Mon Sep 17 00:00:00 2001 From: Adish M <44204658+adishM98@users.noreply.github.com> Date: Fri, 3 Mar 2023 11:55:19 +0530 Subject: [PATCH 02/65] changes in dockerfile for non-sudo user (#5637) * changes in dockerfile for non-sudo user * made the same to server.dockerfile * added fix for try-tooljet * corrections * corrections * final * removing try-tooljet * Update try-tooljet.Dockerfile * changes made with non-sudo --- docker/production.Dockerfile | 11 ++++++++--- docker/server.Dockerfile | 6 +++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docker/production.Dockerfile b/docker/production.Dockerfile index 01d6db71a8..b35fe66942 100644 --- a/docker/production.Dockerfile +++ b/docker/production.Dockerfile @@ -31,7 +31,7 @@ ENV NODE_ENV=production COPY ./server/package.json ./server/package-lock.json ./server/ RUN npm --prefix server install COPY ./server/ ./server/ -RUN npm install -g @nestjs/cli +RUN npm install -g @nestjs/cli RUN npm --prefix server run build FROM debian:11 @@ -41,6 +41,7 @@ RUN apt-get update -yq \ && apt-get install -yq build-essential \ && apt-get clean -y + RUN curl -O https://nodejs.org/dist/v18.3.0/node-v18.3.0-linux-x64.tar.xz \ && tar -xf node-v18.3.0-linux-x64.tar.xz \ && mv node-v18.3.0-linux-x64 /usr/local/lib/nodejs \ @@ -86,8 +87,12 @@ COPY --from=builder /app/server/templates ./app/server/templates COPY --from=builder /app/server/scripts ./app/server/scripts COPY --from=builder /app/server/dist ./app/server/dist -RUN chgrp -R 0 /app && chmod -R g=u /app +# Define non-sudo user +RUN useradd --create-home appuser \ + && chown -R appuser:appuser /app +USER appuser + WORKDIR /app # Dependencies for scripts outside nestjs RUN npm install dotenv@10.0.0 joi@17.4.1 -ENTRYPOINT ["./server/entrypoint.sh"] +ENTRYPOINT ["./server/entrypoint.sh"] \ No newline at end of file diff --git a/docker/server.Dockerfile b/docker/server.Dockerfile index ddb6492996..be48b1f9cb 100644 --- a/docker/server.Dockerfile +++ b/docker/server.Dockerfile @@ -73,7 +73,11 @@ COPY --from=builder /app/server/templates ./app/server/templates COPY --from=builder /app/server/scripts ./app/server/scripts COPY --from=builder /app/server/dist ./app/server/dist -RUN chgrp -R 0 /app && chmod -R g=u /app +# Define non-sudo user +RUN useradd --create-home appuser \ + && chown -R appuser:appuser /app +USER appuser + WORKDIR /app # Dependencies for scripts outside nestjs RUN npm install dotenv@10.0.0 joi@17.4.1 From a7673e73941275540229bc4772cb7e9cd2897724 Mon Sep 17 00:00:00 2001 From: Midhun Kumar E Date: Mon, 6 Mar 2023 12:09:27 +0530 Subject: [PATCH 03/65] Add automation for mysql queries (#5710) * Add cypress realevents to cypress * Add constants and selectors * Add and modify utils * Add spec changes --- .../cypress/constants/selectors/postgreSql.js | 16 +- .../cypress/constants/texts/mysql.js | 4 +- .../cypress/constants/texts/postgreSql.js | 8 +- .../editor/data-source/mysqlHappyPath.cy.js | 299 +++++++- cypress-tests/cypress/support/e2e.js | 2 +- .../cypress/support/utils/dataSource.js | 8 +- .../cypress/support/utils/postgreSql.js | 17 +- cypress-tests/package-lock.json | 679 +++++------------- cypress-tests/package.json | 3 +- 9 files changed, 488 insertions(+), 548 deletions(-) diff --git a/cypress-tests/cypress/constants/selectors/postgreSql.js b/cypress-tests/cypress/constants/selectors/postgreSql.js index 216cb4accd..9cb3968761 100644 --- a/cypress-tests/cypress/constants/selectors/postgreSql.js +++ b/cypress-tests/cypress/constants/selectors/postgreSql.js @@ -38,18 +38,18 @@ export const postgreSqlSelector = { querySearchIcon: '[data-cy="query-search-icon"]', labelSelectDataSource: '[data-cy="label-select-datasource"]', queryTabGeneral: '[data-cy="query-tab-general"]', - queryLabelInputField: '[data-cy="query-label-input-field"]', + queryLabelInputField: '[data-cy="query-rename-input"]', queryPreviewButton: '[data-cy="query-preview-button"]', - queryCreateAndRunButton: '[data-cy="query-create-and-run-button"]', + queryCreateAndRunButton: '[data-cy="query-run-button"]', queryCreateDropdown: '[data-cy="query-create-dropdown"]', queryCreateAndRunOption: '[data-cy="query-create-and-run-option"]', queryCreateOption: '[data-cy="query-create-option"]', queryInputField: '[data-cy="query-input-field"]', labelTransformation: '[data-cy="label-query-transformation"]', - toggleTransformation: '[data-cy="toggle-query-transformation"]', + toggleTransformation: '[data-cy="transformation-toggle-switch"]', inputFieldTransformation: '[data-cy="transformation-input-input-field"]', - headerQueryPreview: '[data-cy="header-query-preview"]', + headerQueryPreview: '.py-2', previewTabJson: '[data-cy="preview-tab-json"]', previewTabRaw: '[data-cy="preview-tab-raw"]', @@ -60,11 +60,11 @@ export const postgreSqlSelector = { queryTabAdvanced: '[data-cy="query-tab-advanced"]', - labelRunQueryOnPageLoad: '[data-cy="label-run-query-on-page-load"]', + labelRunQueryOnPageLoad: '[data-cy="run-on-app-load-toggle-label"]', labelRequestConfirmationOnRun: - '[data-cy="label-request-confirmation-on-run"]', - labelShowNotification: '[data-cy="label-show-notification"]', - toggleNotification: '[data-cy="toggle-show-notification"]', + '[data-cy="confirmation-before-run-toggle-label"]', + labelShowNotification: '[data-cy="notification-on-success-toggle-label"]', + toggleNotification: '[data-cy="notification-on-success-toggle-switch"]', labelSuccessMessageInput: '[data-cy="label-success-message-input"]', notificationDurationInput: '[data-cy="label-notification-duration-input"]', addEventHandler: '[data-cy="add-event-handler"]', diff --git a/cypress-tests/cypress/constants/texts/mysql.js b/cypress-tests/cypress/constants/texts/mysql.js index 8c1ac7dfb7..de1aea54b6 100644 --- a/cypress-tests/cypress/constants/texts/mysql.js +++ b/cypress-tests/cypress/constants/texts/mysql.js @@ -1,9 +1,9 @@ export const mySqlText = { errorConnectionRefused: "connect ECONNREFUSED", - errorUnknownDb: "ER_BAD_DB_ERROR: Unknown database 'test_db1'", + errorUnknownDb: "ER_BAD_DB_ERROR: Unknown database 'unknowndb'", errorAccessDeniedAdmin1: "ER_ACCESS_DENIED_ERROR: Access denied for user 'admin1'", errorAccessDeniedAdmin: - "ER_ACCESS_DENIED_ERROR: Access denied for user 'admin'", + "ER_ACCESS_DENIED_ERROR: Access denied for user", cypressMySql: "cypress-mysql", }; diff --git a/cypress-tests/cypress/constants/texts/postgreSql.js b/cypress-tests/cypress/constants/texts/postgreSql.js index eabd1853da..3caa87d822 100644 --- a/cypress-tests/cypress/constants/texts/postgreSql.js +++ b/cypress-tests/cypress/constants/texts/postgreSql.js @@ -13,7 +13,7 @@ export const postgreSqlText = { labelSSL: "SSL", labelDbName: "Database Name", labelUserName: "Username", - labelPassword: "PasswordEncrypted", + labelPassword: "Password", sslCertificate: "SSL Certificate", whiteListIpText: "Please white-list our IP address if the data source is not publicly accessible", @@ -43,8 +43,8 @@ export const postgreSqlText = { queryModeSql: "SQL mode", queryModeGui: "GUI mode", - headerTransformations: "Transformations", - json: "Json", + headerTransformations: "Enable Transformations", + json: "JSON", raw: "Raw", labelOperation: "Operation", @@ -52,7 +52,7 @@ export const postgreSqlText = { labelPrimaryKeyColumn: "Primary key column", labelRecordsToUpdate: "Records to update", - toggleLabelRunOnPageLoad: "Run this query on page load?", + toggleLabelRunOnPageLoad: "Run this query on application load?", toggleLabelconfirmation: "Request confirmation before running query?", toggleLabelShowNotification: "Show notification on success?", labelSuccessMessage: "Success Message", diff --git a/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js index 9456989da3..e5a7aa9121 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js @@ -2,11 +2,19 @@ import { postgreSqlSelector } from "Selectors/postgreSql"; import { postgreSqlText } from "Texts/postgreSql"; import { mySqlText } from "Texts/mysql"; import { commonSelectors } from "Selectors/common"; +import { commonWidgetText } from "Texts/common"; import { fillDataSourceTextField, selectDataSource, + addQuery, + fillConnectionForm, + openQueryEditor, + selectQueryMode, + addGuiQuery, + addWidgetsToAddUser, } from "Support/utils/postgreSql"; import { verifyCouldnotConnectWithAlert } from "Support/utils/dataSource"; +import { realHover } from "cypress-real-events/commands/realHover"; describe("Data sources MySql", () => { beforeEach(() => { cy.appUILogin(); @@ -116,17 +124,17 @@ describe("Data sources MySql", () => { fillDataSourceTextField( postgreSqlText.labelPort, postgreSqlText.placeholderEnterPort, - "3306" + "3318" ); fillDataSourceTextField( postgreSqlText.labelDbName, postgreSqlText.placeholderNameOfDB, - "test_db1" + "unknowndb" ); fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, - "admin" + Cypress.env("mysql_user") ); cy.get(postgreSqlSelector.passwordTextField).type( @@ -138,7 +146,7 @@ describe("Data sources MySql", () => { fillDataSourceTextField( postgreSqlText.labelDbName, postgreSqlText.placeholderNameOfDB, - "test_db" + "testdb" ); fillDataSourceTextField( postgreSqlText.labelUserName, @@ -151,7 +159,7 @@ describe("Data sources MySql", () => { fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, - "admin" + Cypress.env("mysql_user") ); cy.get(postgreSqlSelector.passwordTextField).type("testpassword"); @@ -176,6 +184,287 @@ describe("Data sources MySql", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", mySqlText.cypressMySql) .find("button") + .invoke('show') .should("be.visible"); }); + + it.only("Should verify elements of the Query section.", () => { + cy.viewport(1200, 1300) + selectDataSource("MySQL"); + fillConnectionForm({ + Host: Cypress.env("mysql_host"), + Port: Cypress.env("mysql_port"), + "Database Name": "testdb", + Username: Cypress.env("mysql_user"), + Password: Cypress.env("mysql_password"), + }); + + cy.get('[class="query-pane"]').invoke("css", "height", "calc(85%)"); + openQueryEditor("MySQL"); + // cy.get('[class="query-pane"]').invoke("css", "height", "calc(95%)"); + + // cy.get(postgreSqlSelector.addQueriesCard) + // .verifyVisibleElement("contain", mySqlText.cypressMySql) + // .click(); + + // cy.get(postgreSqlSelector.queryTabGeneral).verifyVisibleElement( + // "contain", + // postgreSqlText.tabGeneral + // ); + // cy.get(postgreSqlSelector.queryLabelInputField).verifyVisibleElement( + // "have.value", + // postgreSqlText.firstQueryName + // ); + // cy.get(postgreSqlSelector.queryPreviewButton).verifyVisibleElement( + // "have.text", + // postgreSqlText.buttonLabelPreview + // ); + // cy.get(postgreSqlSelector.queryCreateAndRunButton).verifyVisibleElement( + // "have.text", + // postgreSqlText.buttonLabelCreateAndRun + // ); + + // cy.get(postgreSqlSelector.queryCreateDropdown).should("be.visible").click(); + // cy.get(postgreSqlSelector.queryCreateAndRunOption).verifyVisibleElement( + // "have.text", + // postgreSqlText.buttonLabelCreateAndRun + // ); + // cy.get(postgreSqlSelector.queryCreateOption) + // .verifyVisibleElement("have.text", postgreSqlText.buttonLabelCreate) + // .click(); + + // cy.get(postgreSqlSelector.queryCreateAndRunButton).verifyVisibleElement( + // "have.text", + // postgreSqlText.buttonLabelCreate + // ); + + cy.get('[class="query-pane"]').invoke("css", "height", "calc(85%)"); + + cy.get(`${postgreSqlSelector.querySelectDropdown}:eq(0)`) + .scrollIntoView() + .should("be.visible") + .click() + cy.contains("[id*=react-select-]", postgreSqlText.queryModeSql).should( + "have.text", + postgreSqlText.queryModeSql + ); + cy.contains("[id*=react-select-]", postgreSqlText.queryModeGui).should( + "have.text", + postgreSqlText.queryModeGui + ); + + cy.get(postgreSqlSelector.queryCreateAndRunButton) + .should("be.visible") + .click(); + // cy.get('[data-cy="list-query-mysql1"]').should("be.visible").click(); + + cy.get(postgreSqlSelector.labelTransformation) + .scrollIntoView() + .verifyVisibleElement("have.text", postgreSqlText.headerTransformations); + cy.wait(200) + cy.get(postgreSqlSelector.toggleTransformation).parent().click(); + cy.get(postgreSqlSelector.inputFieldTransformation).should("be.visible"); + cy.get(postgreSqlSelector.toggleTransformation).parent().click(); + + + cy.get(postgreSqlSelector.headerQueryPreview).verifyVisibleElement( + "have.text", + postgreSqlText.buttonLabelPreview + ); + cy.get(postgreSqlSelector.previewTabJson).verifyVisibleElement( + "have.text", + postgreSqlText.json + ); + cy.get(postgreSqlSelector.previewTabRaw).verifyVisibleElement( + "have.text", + postgreSqlText.raw + ); + + selectQueryMode(postgreSqlText.queryModeGui, "4"); + cy.get(postgreSqlSelector.operationsDropDownLabel).verifyVisibleElement( + "have.text", + postgreSqlText.labelOperation + ); + cy.get(`${postgreSqlSelector.querySelectDropdown}:eq(1)`).click(); + cy.contains('[id*="react-select-10"]', postgreSqlText.guiOptionBulkUpdate) + .should("have.text", postgreSqlText.guiOptionBulkUpdate) + .click(); + + cy.get(postgreSqlSelector.labelTableNameInputField).verifyVisibleElement( + "have.text", + postgreSqlText.labelTable + ); + cy.get(postgreSqlSelector.labelPrimaryKeyColoumn).verifyVisibleElement( + "have.text", + postgreSqlText.labelPrimaryKeyColumn + ); + cy.get('[data-cy="label-records"]').verifyVisibleElement( + "have.text", + 'Records' + ); + + // cy.get(postgreSqlSelector.queryTabAdvanced) + // .verifyVisibleElement("contain", postgreSqlText.tabAdvanced) + // .click(); + + cy.get(postgreSqlSelector.labelRunQueryOnPageLoad).verifyVisibleElement( + "have.text", + postgreSqlText.toggleLabelRunOnPageLoad + ); + cy.get( + postgreSqlSelector.labelRequestConfirmationOnRun + ).verifyVisibleElement("have.text", postgreSqlText.toggleLabelconfirmation); + cy.get(postgreSqlSelector.labelShowNotification).verifyVisibleElement( + "have.text", + postgreSqlText.toggleLabelShowNotification + ); + + cy.get(postgreSqlSelector.toggleNotification).parent().click(); + cy.get(postgreSqlSelector.labelSuccessMessageInput).verifyVisibleElement( + "have.text", + postgreSqlText.labelSuccessMessage + ); + cy.get(postgreSqlSelector.notificationDurationInput).verifyVisibleElement( + "have.text", + postgreSqlText.labelNotificatioDuration + ); + cy.get(postgreSqlSelector.addEventHandler).verifyVisibleElement( + "have.text", + commonWidgetText.addEventHandlerLink + ); + cy.get(postgreSqlSelector.noEventHandlerMessage).verifyVisibleElement( + "have.text", + postgreSqlText.labelNoEventhandler + ); + + cy.get('[data-cy="list-query-mysql1"]').verifyVisibleElement('have.text', 'mysql1'); + cy.get('[class="row query-row query-row-selected"]').realHover().then(()=>{cy.get('[data-cy="delete-query-mysql1"]').click()}) + cy.get(postgreSqlSelector.deleteModalMessage).verifyVisibleElement( + "have.text", + postgreSqlText.dialogueTextDelete + ); + cy.get(postgreSqlSelector.deleteModalCancelButton).verifyVisibleElement( + "have.text", + postgreSqlText.cancel + ); + cy.get(postgreSqlSelector.deleteModalConfirmButton) + .verifyVisibleElement("have.text", postgreSqlText.yes) + .click(); + }); + + it("Should verify CRUD operations on SQL Query.", () => { + let dbName ='7mmplik' + selectDataSource('MySQL'); + + cy.clearAndType( + postgreSqlSelector.dataSourceNameInputField, + mySqlText.cypressMySql + ); + cy.get('[class="query-pane"]').invoke("css", "height", "calc(85%)"); + + cy.intercept("GET", "api/data_sources?**").as("datasource"); + fillConnectionForm({ + Host: Cypress.env("mysql_host"), + Port: Cypress.env("mysql_port"), + "Database Name": "testdb", + Username: Cypress.env("mysql_user"), + Password: Cypress.env("mysql_password"), + }); + cy.wait("@datasource"); + + addQuery( + "table_creation", + `CREATE TABLE ${dbName} (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL,email VARCHAR(255),PRIMARY KEY (id));`, + mySqlText.cypressMySql + ); + + addQuery( + "table_preview", + `SELECT * FROM ${dbName}`, + mySqlText.cypressMySql + ); + + addQuery( + "existance_of_table", + `SHOW TABLES LIKE '${dbName}';`, + mySqlText.cypressMySql + ); + + cy.get(postgreSqlSelector.queryPreviewButton, { timeout: 3000 }).click(); + cy.get('[class="tab-pane active"]', { timeout: 3000 }).should("be.visible"); + cy.get(postgreSqlSelector.previewTabRaw, { timeout: 3000 }) + .scrollIntoView() + .should("be.visible", { timeout: 3000 }) + .click(); + + cy.get('.p-3').should( + "have.text", + `[{"Tables_in_testdb (${dbName})":"${dbName}"}]` + ); + + // addQuery( + // "add_data_using_widgets", + // `INSERT INTO "public"."cypress_test_users"("name", "email") VALUES('{{components.textinput1.value{rightArrow}{rightArrow}', '{{}{{}components.textinput2.value{rightArrow}{rightArrow}') RETURNING "id", "name", "email";`, + // mySqlText.cypressMySql + // ); + + addQuery( + "truncate_table", + `TRUNCATE TABLE ${dbName}`, + mySqlText.cypressMySql + ); + + cy.get(postgreSqlSelector.queryPreviewButton).click(); + cy.get('[class="tab-pane active"]', { timeout: 3000 }).should("be.visible"); + cy.get(postgreSqlSelector.previewTabRaw).click(); + cy.get('[class="tab-pane active"]').should("have.text", `{"fieldCount":0,"affectedRows":0,"insertId":0,"serverStatus":2,"warningCount":0,"message":"","protocol41":true,"changedRows":0}`); + + addQuery( + "drop_table", + `DROP TABLE ${dbName}`, + mySqlText.cypressMySql + ); + cy.get('[data-cy="list-query-existance_of_table"]').click(); + cy.get(postgreSqlSelector.queryPreviewButton).click(); + cy.get('[class="tab-pane active"]', { timeout: 3000 }).should("be.visible"); + cy.get(postgreSqlSelector.previewTabRaw).click(); + cy.get('[class="tab-pane active"]').should( + "have.text", + '[]' + ); + + // addWidgetsToAddUser(); + }); + + it("Should verify bulk update", () => { + selectDataSource('MySQL'); + cy.clearAndType( + postgreSqlSelector.dataSourceNameInputField, + mySqlText.cypressMySql + ); + fillConnectionForm({ + Host: Cypress.env("mysql_host"), + Port: "3318", + "Database Name": "testdb", + Username: Cypress.env("mysql_user"), + Password: Cypress.env("mysql_password"), + }); + + openQueryEditor(mySqlText.cypressMySql); + cy.get('[class="query-pane"]').invoke("css", "height", "calc(85%)"); + selectQueryMode(postgreSqlText.queryModeGui,); + addGuiQuery("name", "email"); + cy.get(postgreSqlSelector.queryCreateAndRunButton).click(); + }); }); + + + + + + + + + + + diff --git a/cypress-tests/cypress/support/e2e.js b/cypress-tests/cypress/support/e2e.js index 2342620700..1466a8818b 100644 --- a/cypress-tests/cypress/support/e2e.js +++ b/cypress-tests/cypress/support/e2e.js @@ -15,7 +15,7 @@ // Import commands.js using ES2015 syntax: import './commands' - +import "cypress-real-events"; // Alternatively you can use CommonJS syntax: // require('./commands') Cypress.on('uncaught:exception', (err, runnable) => diff --git a/cypress-tests/cypress/support/utils/dataSource.js b/cypress-tests/cypress/support/utils/dataSource.js index deb9b8ce2c..dd7890cb99 100644 --- a/cypress-tests/cypress/support/utils/dataSource.js +++ b/cypress-tests/cypress/support/utils/dataSource.js @@ -7,8 +7,8 @@ export const verifyCouldnotConnectWithAlert = (dangerText) => { }).verifyVisibleElement("have.text", postgreSqlText.couldNotConnect, { timeout: 5000, }); - cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( - "contain.text", - dangerText - ); + cy.get(postgreSqlSelector.dangerAlertNotSupportSSL) + .should("be.visible") + .invoke("text") + .contain(dangerText); }; diff --git a/cypress-tests/cypress/support/utils/postgreSql.js b/cypress-tests/cypress/support/utils/postgreSql.js index d0bfe852dc..eac4ac4dca 100644 --- a/cypress-tests/cypress/support/utils/postgreSql.js +++ b/cypress-tests/cypress/support/utils/postgreSql.js @@ -11,11 +11,15 @@ import { postgreSqlText } from "Texts/postgreSql"; export const addQuery = (queryName, query, dbName) => { cy.get(postgreSqlSelector.buttonAddNewQueries).click(); cy.get(`[data-cy="${dbName}-add-query-card"]`) - .should("contain", postgreSqlText.psqlName) + .should("contain", dbName) .click(); selectQueryMode(postgreSqlText.queryModeSql, "3"); + cy.get('[data-cy="query-name-label"]').realHover().then(()=>{ + cy.get('[class*="breadcrum-rename-query-icon"]').click(); + }); cy.get(postgreSqlSelector.queryLabelInputField).clear().type(queryName); - cy.get(postgreSqlSelector.queryInputField).should("be.visible").type(query); + cy.get(postgreSqlSelector.queryInputField).realMouseDown({ position: "center" }).realType(' '); + cy.get(postgreSqlSelector.queryInputField).clearAndTypeOnCodeMirror(query) cy.get(postgreSqlSelector.queryCreateAndRunButton).click(); cy.verifyToastMessage( commonSelectors.toastMessage, @@ -26,7 +30,7 @@ export const addQuery = (queryName, query, dbName) => { export const addQueryOnGui = (queryName, query) => { cy.get(postgreSqlSelector.buttonAddNewQueries).click(); cy.get('[data-cy="cypress-postgresql"]') - .should("contain", postgreSqlText.psqlName) + .should("contain", dbName) .click(); cy.get(postgreSqlSelector.queryLabelInputField).clear().type(queryName); @@ -89,13 +93,16 @@ export const openQueryEditor = (dataSourceName) => { }; export const selectQueryMode = (mode, index = 2) => { - cy.get(`${postgreSqlSelector.querySelectDropdown}:eq(0)`).click(); + cy.get(`${postgreSqlSelector.querySelectDropdown}:eq(0)`) + .scrollIntoView() + .should("be.visible") + .click(); cy.contains("[id*=react-select-]", mode).click(); }; export const addGuiQuery = (tableName, primaryKey) => { cy.get(`${postgreSqlSelector.querySelectDropdown}:eq(1)`).click(); - cy.get("#react-select-3-option-0").click(); + cy.get("#react-select-5-option-0").click(); cy.get(postgreSqlSelector.tableNameInputField).type(tableName); cy.get(postgreSqlSelector.primaryKeyColoumnInputField).type(primaryKey); diff --git a/cypress-tests/package-lock.json b/cypress-tests/package-lock.json index ad6fb40fd3..1d474db3bb 100644 --- a/cypress-tests/package-lock.json +++ b/cypress-tests/package-lock.json @@ -8,6 +8,7 @@ "name": "cypress-tests", "version": "1.0.0", "dependencies": { + "cypress-real-events": "^1.7.6", "moment": "^2.29.4", "node-xlsx": "^0.21.0", "pdf-parse": "^1.1.1", @@ -1710,7 +1711,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, "optional": true, "engines": { "node": ">=0.1.90" @@ -1720,7 +1720,6 @@ "version": "2.88.11", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", - "dev": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1775,7 +1774,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -1785,7 +1783,6 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, "dependencies": { "ms": "^2.1.1" } @@ -1912,26 +1909,22 @@ "node_modules/@types/node": { "version": "14.18.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "dev": true + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" }, "node_modules/@types/sizzle": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" }, "node_modules/@types/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, "optional": true, "dependencies": { "@types/node": "*" @@ -2154,7 +2147,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2215,7 +2207,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, "engines": { "node": ">=6" } @@ -2224,7 +2215,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -2239,7 +2229,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2260,7 +2249,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, "funding": [ { "type": "github", @@ -2280,7 +2268,6 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -2289,7 +2276,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, "engines": { "node": ">=0.8" } @@ -2298,7 +2284,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2306,20 +2291,17 @@ "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, "engines": { "node": ">= 4.0.0" } @@ -2328,7 +2310,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, "engines": { "node": "*" } @@ -2336,8 +2317,7 @@ "node_modules/aws4": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/babel-loader": { "version": "9.1.2", @@ -2402,14 +2382,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -2429,7 +2407,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -2446,8 +2423,7 @@ "node_modules/blob-util": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" }, "node_modules/bluebird": { "version": "3.7.1", @@ -2459,7 +2435,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2497,7 +2472,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -2521,7 +2495,6 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "engines": { "node": "*" } @@ -2545,7 +2518,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true, "engines": { "node": ">=6" } @@ -2554,7 +2526,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2582,8 +2553,7 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/cfb": { "version": "1.2.2", @@ -2632,7 +2602,6 @@ "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -2651,7 +2620,6 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", - "dev": true, "funding": [ { "type": "github", @@ -2666,7 +2634,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "engines": { "node": ">=6" } @@ -2675,7 +2642,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -2687,7 +2653,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, "dependencies": { "string-width": "^4.2.0" }, @@ -2702,7 +2667,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -2740,14 +2704,12 @@ "node_modules/colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -2759,7 +2721,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, "engines": { "node": ">= 6" } @@ -2768,7 +2729,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, "engines": { "node": ">=4.0.0" } @@ -2783,8 +2743,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { "version": "1.9.0", @@ -2809,8 +2768,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/crc-32": { "version": "1.2.2", @@ -2827,7 +2785,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2850,7 +2807,6 @@ "version": "12.5.1", "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.5.1.tgz", "integrity": "sha512-ZmCmJ3lsyeOpBfh410m5+AO2CO1AxAzFBt7k6/uVbNcrNZje1vdiwYTpj2ksPKg9mjr9lR6V8tmlDNMvr4H/YQ==", - "dev": true, "hasInstallScript": true, "dependencies": { "@cypress/request": "^2.88.10", @@ -2903,11 +2859,18 @@ "node": "^14.0.0 || ^16.0.0 || >=18.0.0" } }, + "node_modules/cypress-real-events": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/cypress-real-events/-/cypress-real-events-1.7.6.tgz", + "integrity": "sha512-yP6GnRrbm6HK5q4DH6Nnupz37nOfZu/xn1xFYqsE2o4G73giPWQOdu6375QYpwfU1cvHNCgyD2bQ2hPH9D7NMw==", + "peerDependencies": { + "cypress": "^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x" + } + }, "node_modules/cypress/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2921,14 +2884,12 @@ "node_modules/cypress/node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/cypress/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2944,7 +2905,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2956,7 +2916,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2967,14 +2926,12 @@ "node_modules/cypress/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/cypress/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -2989,7 +2946,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2998,7 +2954,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -3010,7 +2965,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -3025,7 +2979,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3039,14 +2992,12 @@ "node_modules/cypress/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -3057,14 +3008,12 @@ "node_modules/dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", - "dev": true + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3081,7 +3030,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -3090,7 +3038,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -3105,8 +3052,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -3121,7 +3067,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -3144,7 +3089,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, "dependencies": { "ansi-colors": "^4.1.1" }, @@ -3172,7 +3116,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -3237,8 +3180,7 @@ "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" }, "node_modules/events": { "version": "3.3.0", @@ -3254,7 +3196,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -3277,7 +3218,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, "dependencies": { "pify": "^2.2.0" }, @@ -3296,14 +3236,12 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -3323,7 +3261,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, "engines": [ "node >=0.6.0" ] @@ -3346,7 +3283,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, "dependencies": { "pend": "~1.2.0" } @@ -3355,7 +3291,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -3402,7 +3337,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, "engines": { "node": "*" } @@ -3411,7 +3345,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -3446,14 +3379,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -3468,7 +3399,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3482,7 +3412,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -3497,7 +3426,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, "dependencies": { "async": "^3.2.0" } @@ -3506,7 +3434,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -3515,7 +3442,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3542,7 +3468,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, "dependencies": { "ini": "2.0.0" }, @@ -3565,14 +3490,12 @@ "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -3593,7 +3516,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -3605,7 +3527,6 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -3619,7 +3540,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, "engines": { "node": ">=8.12.0" } @@ -3628,7 +3548,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -3648,7 +3567,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -3657,7 +3575,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3666,14 +3583,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, "engines": { "node": ">=10" } @@ -3688,7 +3603,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, "dependencies": { "ci-info": "^3.2.0" }, @@ -3713,7 +3627,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -3722,7 +3635,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -3738,7 +3650,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3747,7 +3658,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "engines": { "node": ">=8" }, @@ -3758,14 +3668,12 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -3776,14 +3684,12 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/jest-worker": { "version": "27.5.1", @@ -3835,8 +3741,7 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "node_modules/jsesc": { "version": "2.5.2", @@ -3860,8 +3765,7 @@ "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { "version": "1.0.0", @@ -3873,8 +3777,7 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { "version": "2.2.3", @@ -3892,7 +3795,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -3904,7 +3806,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, "engines": [ "node >=0.6.0" ], @@ -3919,7 +3820,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, "engines": { "node": "> 0.8" } @@ -3928,7 +3828,6 @@ "version": "3.14.0", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -3991,8 +3890,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -4004,14 +3902,12 @@ "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -4027,7 +3923,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4042,7 +3937,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4058,7 +3952,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -4069,14 +3962,12 @@ "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -4085,7 +3976,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4097,7 +3987,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -4115,7 +4004,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4130,7 +4018,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -4141,14 +4028,12 @@ "node_modules/log-update/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -4165,7 +4050,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4214,14 +4098,12 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -4230,7 +4112,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -4242,7 +4123,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } @@ -4251,7 +4131,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4263,7 +4142,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4317,7 +4195,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -4329,7 +4206,6 @@ "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4338,7 +4214,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -4347,7 +4222,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -4361,8 +4235,7 @@ "node_modules/ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" }, "node_modules/p-limit": { "version": "2.3.0", @@ -4397,7 +4270,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -4437,7 +4309,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4446,7 +4317,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -4481,14 +4351,12 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pg": { "version": "8.9.0", @@ -4574,7 +4442,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4631,7 +4498,6 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, "engines": { "node": ">=6" }, @@ -4653,20 +4519,17 @@ "node_modules/proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -4676,7 +4539,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -4685,7 +4547,6 @@ "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -4788,7 +4649,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, "dependencies": { "throttleit": "^1.0.0" } @@ -4825,7 +4685,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -4837,14 +4696,12 @@ "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -4859,7 +4716,6 @@ "version": "7.8.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, "dependencies": { "tslib": "^2.1.0" } @@ -4868,7 +4724,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -4887,8 +4742,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/schema-utils": { "version": "4.0.0", @@ -4933,7 +4787,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4945,7 +4798,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -4954,7 +4806,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -4967,14 +4818,12 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -4988,7 +4837,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5003,7 +4851,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5014,8 +4861,7 @@ "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/source-map": { "version": "0.6.1", @@ -5060,7 +4906,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -5085,7 +4930,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5099,7 +4943,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5111,7 +4954,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "engines": { "node": ">=6" } @@ -5268,20 +5110,17 @@ "node_modules/throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, "dependencies": { "rimraf": "^3.0.0" }, @@ -5302,7 +5141,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -5314,14 +5152,12 @@ "node_modules/tslib": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -5332,14 +5168,12 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "engines": { "node": ">=10" }, @@ -5395,7 +5229,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, "engines": { "node": ">= 10.0.0" } @@ -5404,7 +5237,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, "engines": { "node": ">=8" } @@ -5449,7 +5281,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -5458,7 +5289,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, "engines": [ "node >=0.6.0" ], @@ -5603,7 +5433,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -5634,7 +5463,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5651,7 +5479,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5666,7 +5493,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5677,14 +5503,12 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/xlsx": { "version": "0.17.5", @@ -5724,7 +5548,6 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -6935,14 +6758,12 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, "optional": true }, "@cypress/request": { "version": "2.88.11", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", - "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -6988,7 +6809,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, "requires": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -6998,7 +6818,6 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -7113,26 +6932,22 @@ "@types/node": { "version": "14.18.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "dev": true + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" }, "@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" }, "@types/sizzle": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" }, "@types/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, "optional": true, "requires": { "@types/node": "*" @@ -7341,7 +7156,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -7383,14 +7197,12 @@ "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "requires": { "type-fest": "^0.21.3" } @@ -7398,8 +7210,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -7413,14 +7224,12 @@ "arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -7428,44 +7237,37 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" }, "aws4": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "babel-loader": { "version": "9.1.2", @@ -7514,20 +7316,17 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -7541,8 +7340,7 @@ "blob-util": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" }, "bluebird": { "version": "3.7.1", @@ -7554,7 +7352,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7576,7 +7373,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -7585,8 +7381,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" }, "buffer-from": { "version": "1.1.2", @@ -7603,14 +7398,12 @@ "cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==" }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -7625,8 +7418,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "cfb": { "version": "1.2.2", @@ -7664,8 +7456,7 @@ "check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==" }, "chrome-trace-event": { "version": "1.0.3", @@ -7677,20 +7468,17 @@ "ci-info": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", - "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", - "dev": true + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==" }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "requires": { "restore-cursor": "^3.1.0" } @@ -7699,7 +7487,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, "requires": { "@colors/colors": "1.5.0", "string-width": "^4.2.0" @@ -7709,7 +7496,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -7738,14 +7524,12 @@ "colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -7753,14 +7537,12 @@ "commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" }, "common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" }, "commondir": { "version": "1.0.1", @@ -7772,8 +7554,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "convert-source-map": { "version": "1.9.0", @@ -7794,8 +7575,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "crc-32": { "version": "1.2.2", @@ -7806,7 +7586,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7823,7 +7602,6 @@ "version": "12.5.1", "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.5.1.tgz", "integrity": "sha512-ZmCmJ3lsyeOpBfh410m5+AO2CO1AxAzFBt7k6/uVbNcrNZje1vdiwYTpj2ksPKg9mjr9lR6V8tmlDNMvr4H/YQ==", - "dev": true, "requires": { "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", @@ -7873,7 +7651,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -7881,14 +7658,12 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7898,7 +7673,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -7909,7 +7683,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -7917,14 +7690,12 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -7935,14 +7706,12 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -7951,7 +7720,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -7960,7 +7728,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -7968,16 +7735,20 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, + "cypress-real-events": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/cypress-real-events/-/cypress-real-events-1.7.6.tgz", + "integrity": "sha512-yP6GnRrbm6HK5q4DH6Nnupz37nOfZu/xn1xFYqsE2o4G73giPWQOdu6375QYpwfU1cvHNCgyD2bQ2hPH9D7NMw==", + "requires": {} + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -7985,14 +7756,12 @@ "dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", - "dev": true + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -8000,14 +7769,12 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -8022,8 +7789,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -8035,7 +7801,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -8055,7 +7820,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, "requires": { "ansi-colors": "^4.1.1" } @@ -8076,8 +7840,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint-scope": { "version": "5.1.1", @@ -8126,8 +7889,7 @@ "eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" }, "events": { "version": "3.3.0", @@ -8140,7 +7902,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, "requires": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -8157,7 +7918,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, "requires": { "pify": "^2.2.0" } @@ -8170,14 +7930,12 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, "requires": { "@types/yauzl": "^2.9.1", "debug": "^4.1.1", @@ -8188,8 +7946,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" }, "fast-deep-equal": { "version": "3.1.3", @@ -8209,7 +7966,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, "requires": { "pend": "~1.2.0" } @@ -8218,7 +7974,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } @@ -8249,14 +8004,12 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -8282,14 +8035,12 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "gensync": { "version": "1.0.0-beta.2", @@ -8301,7 +8052,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -8312,7 +8062,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, "requires": { "pump": "^3.0.0" } @@ -8321,7 +8070,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, "requires": { "async": "^3.2.0" } @@ -8330,7 +8078,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -8339,7 +8086,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8360,7 +8106,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, "requires": { "ini": "2.0.0" } @@ -8374,14 +8119,12 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -8395,14 +8138,12 @@ "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "http-signature": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -8412,26 +8153,22 @@ "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -8440,14 +8177,12 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" }, "is-buffer": { "version": "1.1.6", @@ -8459,7 +8194,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, "requires": { "ci-info": "^3.2.0" } @@ -8477,14 +8211,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, "requires": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -8493,38 +8225,32 @@ "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "jest-worker": { "version": "27.5.1", @@ -8566,8 +8292,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "jsesc": { "version": "2.5.2", @@ -8585,8 +8310,7 @@ "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "1.0.0", @@ -8598,8 +8322,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json5": { "version": "2.2.3", @@ -8611,7 +8334,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -8621,7 +8343,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -8632,14 +8353,12 @@ "lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==" }, "listr2": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, "requires": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -8682,8 +8401,7 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.debounce": { "version": "4.0.8", @@ -8695,14 +8413,12 @@ "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8712,7 +8428,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -8721,7 +8436,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8731,7 +8445,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -8739,20 +8452,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -8763,7 +8473,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, "requires": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -8775,7 +8484,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -8784,7 +8492,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -8792,14 +8499,12 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -8810,7 +8515,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8852,20 +8556,17 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -8873,14 +8574,12 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -8888,8 +8587,7 @@ "minimist": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "moment": { "version": "2.29.4", @@ -8931,7 +8629,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "requires": { "path-key": "^3.0.0" } @@ -8939,14 +8636,12 @@ "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -8955,7 +8650,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -8963,8 +8657,7 @@ "ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" }, "p-limit": { "version": "2.3.0", @@ -8990,7 +8683,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "requires": { "aggregate-error": "^3.0.0" } @@ -9017,14 +8709,12 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", @@ -9055,14 +8745,12 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "pg": { "version": "8.9.0", @@ -9128,8 +8816,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, "pkg-dir": { "version": "4.2.0", @@ -9167,8 +8854,7 @@ "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, "printj": { "version": "1.1.2", @@ -9178,20 +8864,17 @@ "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -9200,14 +8883,12 @@ "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "qs": { "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, "requires": { "side-channel": "^1.0.4" } @@ -9294,7 +8975,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, "requires": { "throttleit": "^1.0.0" } @@ -9322,7 +9002,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -9331,14 +9010,12 @@ "rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -9347,7 +9024,6 @@ "version": "7.8.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, "requires": { "tslib": "^2.1.0" } @@ -9355,14 +9031,12 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "schema-utils": { "version": "4.0.0", @@ -9397,7 +9071,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -9405,14 +9078,12 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -9422,14 +9093,12 @@ "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -9440,7 +9109,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -9449,7 +9117,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -9457,8 +9124,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, @@ -9496,7 +9162,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -9513,7 +9178,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9524,7 +9188,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -9532,8 +9195,7 @@ "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, "supports-color": { "version": "5.5.0", @@ -9639,20 +9301,17 @@ "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==" }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, "requires": { "rimraf": "^3.0.0" } @@ -9667,7 +9326,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -9676,14 +9334,12 @@ "tslib": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -9691,14 +9347,12 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -9735,14 +9389,12 @@ "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, "untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" }, "update-browserslist-db": { "version": "1.0.10", @@ -9767,14 +9419,12 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -9884,7 +9534,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -9903,7 +9552,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9914,7 +9562,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -9923,7 +9570,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -9931,16 +9577,14 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "xlsx": { "version": "0.17.5", @@ -9971,11 +9615,10 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } } } -} \ No newline at end of file +} diff --git a/cypress-tests/package.json b/cypress-tests/package.json index ad80f8bb09..eee065f2cc 100644 --- a/cypress-tests/package.json +++ b/cypress-tests/package.json @@ -12,9 +12,10 @@ "cypress": "^12.5.1" }, "dependencies": { + "cypress-real-events": "^1.7.6", "moment": "^2.29.4", "node-xlsx": "^0.21.0", "pdf-parse": "^1.1.1", "pg": "^8.8.0" } -} \ No newline at end of file +} From c3eb99f23aba587eae9bab88d97e2870f1819211 Mon Sep 17 00:00:00 2001 From: Midhun Kumar E Date: Mon, 6 Mar 2023 12:09:58 +0530 Subject: [PATCH 04/65] Added automation for table filter (#5641) * Add utils for filter * Add spec * Remove it.only * Config change * Revert config changes * Modify config * Fix Syntax on config. * Typo fix --- cypress-tests/cypress-run.config.js | 7 +- .../e2e/editor/widget/tableRegression.cy.js | 113 ++++++++++++++++++ cypress-tests/cypress/support/utils/table.js | 23 ++++ 3 files changed, 137 insertions(+), 6 deletions(-) diff --git a/cypress-tests/cypress-run.config.js b/cypress-tests/cypress-run.config.js index 12a02319da..5320e3e678 100644 --- a/cypress-tests/cypress-run.config.js +++ b/cypress-tests/cypress-run.config.js @@ -70,12 +70,7 @@ module.exports = defineConfig({ experimentalRunAllSpecs: true, baseUrl: "http://localhost:8082", specPattern: [ - "cypress/e2e/editor/**/*.cy.js", - "cypress/e2e/exportImport/**/*.cy.js", - "cypress/e2e/authentication/**/*.cy.js", - "cypress/e2e/dashboard/multi-workspace/**/*.cy.js", - "cypress/e2e/dashboard/*.cy.js", - ], + "cypress/e2e/editor/widget/*.cy.js"], numTestsKeptInMemory: 1, redirectionLimit: 10, experimentalRunAllSpecs: true, diff --git a/cypress-tests/cypress/e2e/editor/widget/tableRegression.cy.js b/cypress-tests/cypress/e2e/editor/widget/tableRegression.cy.js index 39a14427ae..65a73036f5 100644 --- a/cypress-tests/cypress/e2e/editor/widget/tableRegression.cy.js +++ b/cypress-tests/cypress/e2e/editor/widget/tableRegression.cy.js @@ -21,6 +21,7 @@ import { selectFromSidebarDropdown, dataPdfAssertionHelper, dataCsvAssertionHelper, + addFilter, } from "Support/utils/table"; import { openAccordion, @@ -802,5 +803,117 @@ describe("Table", () => { .and("contain", dataCsvAssertionHelper(tableText.defaultInput)[2]); }); + it("Should verify the table filter options", () => { + cy.get( + commonWidgetSelector.draggableWidget(tableText.defaultWidgetName) + ).should("be.visible"); + cy.get(tableSelector.filterButton).click(); + addFilter( + [{ column: "name", operation: "contains", value: "Sarah" }], + true + ); + verifyTableElements([{ id: 1, name: "Sarah", email: "sarah@example.com" }]); + + addFilter([ + { column: "name", operation: "does not contains", value: "Sarah" }, + ]); + verifyTableElements([ + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + { id: 4, name: "Jon", email: "jon@example.com" }, + ]); + + addFilter([ + { column: "email", operation: "matches", value: "jon@example.com" }, + ]); + verifyTableElements([{ id: 4, name: "Jon", email: "jon@example.com" }]); + + addFilter([ + { + column: "email", + operation: "does not match", + value: "jon@example.com", + }, + ]); + verifyTableElements([ + { id: 1, name: "Sarah", email: "sarah@example.com" }, + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + ]); + + addFilter([{ column: "id", operation: "equals", value: "3" }]); + verifyTableElements([{ id: 3, name: "Sam", email: "sam@example.com" }]); + + addFilter([{ column: "id", operation: "does not equal", value: "3" }]); + verifyTableElements([ + { id: 1, name: "Sarah", email: "sarah@example.com" }, + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 4, name: "Jon", email: "jon@example.com" }, + ]); + + addFilter([{ column: "id", operation: "greater than", value: "1" }]); + verifyTableElements([ + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + { id: 4, name: "Jon", email: "jon@example.com" }, + ]); + + addFilter([{ column: "id", operation: "less than", value: "3" }]); + verifyTableElements([ + { id: 1, name: "Sarah", email: "sarah@example.com" }, + { id: 2, name: "Lisa", email: "lisa@example.com" }, + ]); + + addFilter([ + { column: "id", operation: "greater than or equals", value: "1" }, + ]); + verifyTableElements([ + { id: 1, name: "Sarah", email: "sarah@example.com" }, + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + { id: 4, name: "Jon", email: "jon@example.com" }, + ]); + + addFilter([{ column: "id", operation: "less than or equals", value: "3" }]); + verifyTableElements([ + { id: 1, name: "Sarah", email: "sarah@example.com" }, + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + ]); + + addFilter( + [ + { column: "id", operation: "greater than or equals", value: "2" }, + { column: "email", operation: "contains", value: "Sa" }, + ], + true + ); + verifyTableElements([ + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + ]); + + addFilter( + [ + { column: "id", operation: "greater than or equals", value: "1" }, + { column: "email", operation: "does not contains", value: "Sa" }, + ], + true + ); + verifyTableElements([{ id: 4, name: "Jon", email: "jon@example.com" }]); + + addFilter([{ column: "id", operation: "is empty" }], true); + cy.notVisible('[data-cy*="-cell-"]'); + + addFilter([{ column: "id", operation: "is not empty" }], true); + + verifyTableElements([ + { id: 1, name: "Sarah", email: "sarah@example.com" }, + { id: 2, name: "Lisa", email: "lisa@example.com" }, + { id: 3, name: "Sam", email: "sam@example.com" }, + { id: 4, name: "Jon", email: "jon@example.com" }, + ]); + }); + it("should verify table preview", () => {}); }); diff --git a/cypress-tests/cypress/support/utils/table.js b/cypress-tests/cypress/support/utils/table.js index 97e1e46043..db6991c584 100644 --- a/cypress-tests/cypress/support/utils/table.js +++ b/cypress-tests/cypress/support/utils/table.js @@ -164,3 +164,26 @@ export const dataCsvAssertionHelper = (data) => { }); return dataArray; }; + +export const addFilter =(data=[{column:'name', operation: "contains", value: 'Sarah'}], freshFilter=false)=>{ + cy.get(tableSelector.filterButton).click(); + + + data.forEach((filter,index) => { + if(freshFilter==true){ + if(index==0){cy.get(tableSelector.buttonClearFilter).click()} + cy.get(tableSelector.buttonAddFilter).click() + } + cy.get(tableSelector.filterSelectColumn(index)) + .click() + .type(`${filter.column}{enter}`); + cy.get(tableSelector.filterSelectOperation(index)) + .click() + .type(`${filter.operation}{enter}`); + if(filter.value){ + cy.get(tableSelector.filterInput(index)).type(`{selectAll}{del}${filter.value}`); + } + + }); + cy.get(tableSelector.buttonCloseFilters).click() +} From 786e3a27075d05dfa142f500f2ff76fc6795fdcc Mon Sep 17 00:00:00 2001 From: Midhun Kumar E Date: Mon, 6 Mar 2023 12:13:47 +0530 Subject: [PATCH 05/65] Updated DS specs to pass on GitHub actions (#5634) * Modify data-cy common * Update constants * Delete unused file * Update specs * Update utils and common specs * Skip specs * Update gitignore --- cypress-tests/.gitignore | 1 + .../cypress/constants/selectors/postgreSql.js | 4 +- .../cypress/constants/texts/awss3.js | 4 +- .../cypress/constants/texts/elasticsearch.js | 2 +- .../cypress/constants/texts/firestore.js | 2 +- .../cypress/constants/texts/postgreSql.js | 1 + .../wolf-app-clone-export-1675848480893.json | 167 ------------------ .../data-source/bigqueryHappyPath.cy.js | 4 +- .../data-source/clickHouseHappyPath.cy.js | 84 ++++----- .../data-source/cosmosDbHappyPath.cy.js | 56 ++---- .../editor/data-source/couchDbHappyPath.cy.js | 22 +-- .../data-source/elasticsearchHappyPath.cy.js | 7 +- .../data-source/fireStoreHappyPath.cy.js | 3 +- .../data-source/influxDbHappyPath.cy.js | 26 +-- .../editor/data-source/mariaDbHappyPath.cy.js | 4 +- .../editor/data-source/mongoDbHappyPath.cy.js | 13 +- .../editor/data-source/mysqlHappyPath.cy.js | 9 +- ...ath.cy.js => oracleDbHappyPath.cy.skip.js} | 0 .../data-source/postgresHappyPath.cy.js | 38 ++-- .../editor/data-source/redisHappyPath.cy.js | 3 +- ...th.cy.js => rethinkDbHappyPath.cy.skip.js} | 2 +- .../e2e/editor/data-source/s3HappyPath.cy.js | 5 + ...Path.cy.js => sapHanaHappyPath.cy.skip.js} | 0 .../data-source/snowflakeHappyPath.cy.js | 15 +- .../data-source/sqlServerHappyPath.cy.js | 13 +- .../data-source/typeSenseHappyPath.cy.js | 2 +- .../cypress/support/utils/postgreSql.js | 5 +- 27 files changed, 156 insertions(+), 336 deletions(-) delete mode 100644 cypress-tests/cypress/downloads/wolf-app-clone-export-1675848480893.json rename cypress-tests/cypress/e2e/editor/data-source/{oracleDbHappyPath.cy.js => oracleDbHappyPath.cy.skip.js} (100%) rename cypress-tests/cypress/e2e/editor/data-source/{rethinkDbHappyPath.cy.js => rethinkDbHappyPath.cy.skip.js} (98%) rename cypress-tests/cypress/e2e/editor/data-source/{sapHanaHappyPath.cy.js => sapHanaHappyPath.cy.skip.js} (100%) diff --git a/cypress-tests/.gitignore b/cypress-tests/.gitignore index 471400d657..c9bd6bfe6f 100644 --- a/cypress-tests/.gitignore +++ b/cypress-tests/.gitignore @@ -1,5 +1,6 @@ /node_modules /cypress.env.json +/cypress/reports /cypress/screenshots /cypress/downloads /cypress/videos \ No newline at end of file diff --git a/cypress-tests/cypress/constants/selectors/postgreSql.js b/cypress-tests/cypress/constants/selectors/postgreSql.js index 9cb3968761..877ff6b4ba 100644 --- a/cypress-tests/cypress/constants/selectors/postgreSql.js +++ b/cypress-tests/cypress/constants/selectors/postgreSql.js @@ -34,8 +34,8 @@ export const postgreSqlSelector = { addQueriesCard: '[data-cy="postgresql-add-query-card"]', headerQueryManager: '[data-cy="header-queries-on-query-manager"]', labelNoQuery: '[data-cy="no-query-text"]', - createQueryButton: '[data-cy="create-query-button"]', - querySearchIcon: '[data-cy="query-search-icon"]', + createQueryButton: '[data-cy="query-create-and-run-button"]', + querySearchBar: '[data-cy="home-page-search-bar"]', labelSelectDataSource: '[data-cy="label-select-datasource"]', queryTabGeneral: '[data-cy="query-tab-general"]', queryLabelInputField: '[data-cy="query-rename-input"]', diff --git a/cypress-tests/cypress/constants/texts/awss3.js b/cypress-tests/cypress/constants/texts/awss3.js index 534aefc325..a6c5bd3fea 100644 --- a/cypress-tests/cypress/constants/texts/awss3.js +++ b/cypress-tests/cypress/constants/texts/awss3.js @@ -1,7 +1,7 @@ export const s3Text = { awsS3: "AWS S3", accessKey: "Access key", - secretKey: "Secret keyEncrypted", + secretKey: "Secret key", region: "Region", customEndpoint: "Custom Endpoint", alertRegionIsMissing: "Region is missing", @@ -10,7 +10,7 @@ export const s3Text = { placeholderEnterSecretKey: "Enter secret key", labelRegion: "Region", region: "N. california", - alertInvalidUrl: "Invalid URL:", + alertInvalidUrl: "Invalid URL", accessKeyError: "The AWS Access Key Id you provided does not exist in our records.", sinatureError: diff --git a/cypress-tests/cypress/constants/texts/elasticsearch.js b/cypress-tests/cypress/constants/texts/elasticsearch.js index d14a347a14..8a492c2690 100644 --- a/cypress-tests/cypress/constants/texts/elasticsearch.js +++ b/cypress-tests/cypress/constants/texts/elasticsearch.js @@ -2,6 +2,6 @@ export const elasticsearchText = { elasticSearch: "Elasticsearch", cypressElasticsearch: "cypress-elasticsearch", - errorConnectionRefused: "connect ECONNREFUSED 127.0.0.1:9200", + errorConnectionRefused: "connect ECONNREFUSED ::1:9200", errorGetAddrInfoNotFound: "getaddrinfo ENOTFOUND elasticsearch_host", }; diff --git a/cypress-tests/cypress/constants/texts/firestore.js b/cypress-tests/cypress/constants/texts/firestore.js index 1fc4ae530c..4fe7607440 100644 --- a/cypress-tests/cypress/constants/texts/firestore.js +++ b/cypress-tests/cypress/constants/texts/firestore.js @@ -1,7 +1,7 @@ export const firestoreText = { firestore: "Firestore", cypressFirestore: "cypress-firestore", - labelPrivateKey: "Private keyEncrypted", + labelPrivateKey: "Private key", privateKey: "Private key", placeholderPrivateKey: "Enter private key", diff --git a/cypress-tests/cypress/constants/texts/postgreSql.js b/cypress-tests/cypress/constants/texts/postgreSql.js index 3caa87d822..b7c4900257 100644 --- a/cypress-tests/cypress/constants/texts/postgreSql.js +++ b/cypress-tests/cypress/constants/texts/postgreSql.js @@ -14,6 +14,7 @@ export const postgreSqlText = { labelDbName: "Database Name", labelUserName: "Username", labelPassword: "Password", + label: "Encrypted", sslCertificate: "SSL Certificate", whiteListIpText: "Please white-list our IP address if the data source is not publicly accessible", diff --git a/cypress-tests/cypress/downloads/wolf-app-clone-export-1675848480893.json b/cypress-tests/cypress/downloads/wolf-app-clone-export-1675848480893.json deleted file mode 100644 index 301595d5d1..0000000000 --- a/cypress-tests/cypress/downloads/wolf-app-clone-export-1675848480893.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "appV2": { - "id": "fdd93c2b-f161-4b3f-a0ec-2e3c6a999495", - "name": "Wolf-App-Clone", - "slug": "fdd93c2b-f161-4b3f-a0ec-2e3c6a999495", - "isPublic": false, - "isMaintenanceOn": false, - "icon": "users", - "organizationId": "6a59d335-e48f-46b9-887d-35c9c29a38fa", - "currentVersionId": null, - "userId": "96e8d058-a015-4469-bf4c-ddb34e45a4cc", - "createdAt": "2023-02-08T09:27:49.835Z", - "updatedAt": "2023-02-08T09:27:53.135Z", - "editingVersion": { - "id": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "name": "v1", - "definition": { - "showViewerNavigation": true, - "homePageId": "2fad12a4-73ba-4125-a5f5-5000f438788b", - "pages": { - "2fad12a4-73ba-4125-a5f5-5000f438788b": { - "components": {}, - "handle": "home", - "name": "Home" - } - }, - "globalSettings": { - "hideHeader": false, - "appInMaintenance": false, - "canvasMaxWidth": 1292, - "canvasMaxWidthType": "px", - "canvasMaxHeight": 2400, - "canvasBackgroundColor": "#edeff5", - "backgroundFxQuery": "" - } - }, - "appId": "fdd93c2b-f161-4b3f-a0ec-2e3c6a999495", - "createdAt": "2023-02-08T09:27:49.843Z", - "updatedAt": "2023-02-08T09:27:53.517Z" - }, - "dataQueries": [], - "dataSources": [ - { - "id": "80b1fd47-7807-49ea-893d-4424405f0689", - "name": "restapidefault", - "kind": "restapi", - "type": "static", - "pluginId": null, - "appVersionId": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "organizationId": null, - "createdAt": "2023-02-08T09:27:49.835Z", - "updatedAt": "2023-02-08T09:27:49.835Z" - }, - { - "id": "b10194f0-928e-4dfd-b5dc-963baf04733e", - "name": "runjsdefault", - "kind": "runjs", - "type": "static", - "pluginId": null, - "appVersionId": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "organizationId": null, - "createdAt": "2023-02-08T09:27:49.835Z", - "updatedAt": "2023-02-08T09:27:49.835Z" - }, - { - "id": "1295d25f-8a9e-4035-a57a-e754722d2b27", - "name": "tooljetdbdefault", - "kind": "tooljetdb", - "type": "static", - "pluginId": null, - "appVersionId": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "organizationId": null, - "createdAt": "2023-02-08T09:27:49.835Z", - "updatedAt": "2023-02-08T09:27:49.835Z" - }, - { - "id": "8141ba0d-bb35-4052-91f7-31db4c3669fa", - "name": "runpydefault", - "kind": "runpy", - "type": "static", - "pluginId": null, - "appVersionId": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "organizationId": null, - "createdAt": "2023-02-08T09:27:49.847Z", - "updatedAt": "2023-02-08T09:27:49.847Z" - } - ], - "appVersions": [ - { - "id": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "name": "v1", - "definition": { - "showViewerNavigation": true, - "homePageId": "2fad12a4-73ba-4125-a5f5-5000f438788b", - "pages": { - "2fad12a4-73ba-4125-a5f5-5000f438788b": { - "components": {}, - "handle": "home", - "name": "Home" - } - }, - "globalSettings": { - "hideHeader": false, - "appInMaintenance": false, - "canvasMaxWidth": 1292, - "canvasMaxWidthType": "px", - "canvasMaxHeight": 2400, - "canvasBackgroundColor": "#edeff5", - "backgroundFxQuery": "" - } - }, - "appId": "fdd93c2b-f161-4b3f-a0ec-2e3c6a999495", - "createdAt": "2023-02-08T09:27:49.843Z", - "updatedAt": "2023-02-08T09:27:53.517Z" - } - ], - "appEnvironments": [ - { - "id": "720ef2a6-b90e-447b-a227-57c086a57317", - "appVersionId": "f4b60b9b-93fe-4649-b4e8-b81d2409e04f", - "name": "production", - "isDefault": true, - "createdAt": "2023-02-08T09:27:49.846Z", - "updatedAt": "2023-02-08T09:27:49.846Z" - } - ], - "dataSourceOptions": [ - { - "id": "9e89863a-e396-4d56-a1d4-a7853ca55b7b", - "dataSourceId": "8141ba0d-bb35-4052-91f7-31db4c3669fa", - "environmentId": "720ef2a6-b90e-447b-a227-57c086a57317", - "options": null, - "createdAt": "2023-02-08T09:27:49.850Z", - "updatedAt": "2023-02-08T09:27:49.850Z" - }, - { - "id": "217e5ca0-af26-49a7-94de-6e948f211bfe", - "dataSourceId": "80b1fd47-7807-49ea-893d-4424405f0689", - "environmentId": "720ef2a6-b90e-447b-a227-57c086a57317", - "options": {}, - "createdAt": "2023-02-08T09:27:49.852Z", - "updatedAt": "2023-02-08T09:27:49.852Z" - }, - { - "id": "25b8514f-f6f3-4b2f-9618-29aa352ea09f", - "dataSourceId": "b10194f0-928e-4dfd-b5dc-963baf04733e", - "environmentId": "720ef2a6-b90e-447b-a227-57c086a57317", - "options": {}, - "createdAt": "2023-02-08T09:27:49.856Z", - "updatedAt": "2023-02-08T09:27:49.856Z" - }, - { - "id": "5ec55cf2-809b-4b57-91c2-629d05616c53", - "dataSourceId": "1295d25f-8a9e-4035-a57a-e754722d2b27", - "environmentId": "720ef2a6-b90e-447b-a227-57c086a57317", - "options": {}, - "createdAt": "2023-02-08T09:27:49.858Z", - "updatedAt": "2023-02-08T09:27:49.858Z" - } - ], - "schemaDetails": { - "multiPages": true, - "multiEnv": true - } - }, - "tooljetVersion": "2.1.0" -} \ No newline at end of file diff --git a/cypress-tests/cypress/e2e/editor/data-source/bigqueryHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/bigqueryHappyPath.cy.js index 00cb8e79ee..3224184f2b 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/bigqueryHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/bigqueryHappyPath.cy.js @@ -104,7 +104,7 @@ describe("Data source BigQuery", () => { fillDataSourceTextField( firestoreText.privateKey, bigqueryText.placehlderPrivateKey, - JSON.stringify(Cypress.env("bigquery_pvt_key")), + `${JSON.stringify(Cypress.env("bigquery_pvt_key"))}`, "contain", { parseSpecialCharSequences: false, delay: 0 } ); @@ -120,9 +120,11 @@ describe("Data source BigQuery", () => { ); cy.get(postgreSqlSelector.leftSidebarDatasourceButton).click(); + cy.get("#radix-2").click(); cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", bigqueryText.cypressBigQuery) .find("button") + .invoke("show") .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/clickHouseHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/clickHouseHappyPath.cy.js index f37b9495b0..334035c1f6 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/clickHouseHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/clickHouseHappyPath.cy.js @@ -47,17 +47,14 @@ describe("Data sources", () => { postgreSqlText.allCloudStorage ); - cy.get(postgreSqlSelector.dataSourceSearchInputField).type( - 'ClickHouse' - ); - cy.get("[data-cy*='data-source-']") - .eq(0) - .should("contain", 'ClickHouse'); + cy.get(postgreSqlSelector.dataSourceSearchInputField).type("ClickHouse"); + cy.get("[data-cy*='data-source-']").eq(0).should("contain", "ClickHouse"); cy.get('[data-cy="data-source-clickhouse"]').click(); - cy.get(postgreSqlSelector.dataSourceNameInputField).should( //username,password,host,port,protocol,dbname,usepost, trimquery,gzip,debug,raw + cy.get(postgreSqlSelector.dataSourceNameInputField).should( + //username,password,host,port,protocol,dbname,usepost, trimquery,gzip,debug,raw "have.value", - 'ClickHouse' + "ClickHouse" ); cy.get(postgreSqlSelector.labelUserName).verifyVisibleElement( "have.text", @@ -65,7 +62,7 @@ describe("Data sources", () => { ); cy.get(postgreSqlSelector.labelPassword).verifyVisibleElement( "have.text", - 'Password' + "Password" ); cy.get(postgreSqlSelector.labelHost).verifyVisibleElement( "have.text", @@ -82,36 +79,31 @@ describe("Data sources", () => { ); cy.get('[data-cy="label-protocol"]').verifyVisibleElement( "have.text", - 'Protocol' + "Protocol" ); cy.get('[data-cy="label-use-post"]').verifyVisibleElement( "have.text", - 'Use Post' + "Use Post" ); cy.get('[data-cy="label-trim-query"]').verifyVisibleElement( "have.text", - 'Trim Query' + "Trim Query" ); cy.get('[data-cy="label-use-gzip"]').verifyVisibleElement( "have.text", - 'Use Gzip' + "Use Gzip" ); cy.get('[data-cy="label-debug"]').verifyVisibleElement( "have.text", - 'Debug' - ); - cy.get('[data-cy="label-raw"]').verifyVisibleElement( - "have.text", - 'Raw' - ); - cy.get(postgreSqlSelector.labelIpWhitelist).scrollIntoView().verifyVisibleElement( - "have.text", - postgreSqlText.whiteListIpText - ); - cy.get(postgreSqlSelector.buttonCopyIp).scrollIntoView().verifyVisibleElement( - "have.text", - postgreSqlText.textCopy + "Debug" ); + cy.get('[data-cy="label-raw"]').verifyVisibleElement("have.text", "Raw"); + cy.get(postgreSqlSelector.labelIpWhitelist) + .scrollIntoView() + .verifyVisibleElement("have.text", postgreSqlText.whiteListIpText); + cy.get(postgreSqlSelector.buttonCopyIp) + .scrollIntoView() + .verifyVisibleElement("have.text", postgreSqlText.textCopy); cy.get(postgreSqlSelector.linkReadDocumentation).verifyVisibleElement( "have.text", @@ -123,52 +115,49 @@ describe("Data sources", () => { postgreSqlText.buttonTextTestConnection ) .click(); - cy.get(postgreSqlSelector.connectionFailedText).verifyVisibleElement( - "have.text", - postgreSqlText.couldNotConnect - ); + cy.get(postgreSqlSelector.connectionFailedText) + .scrollIntoView() + .verifyVisibleElement("have.text", postgreSqlText.couldNotConnect); cy.get(postgreSqlSelector.buttonSave).verifyVisibleElement( "have.text", postgreSqlText.buttonTextSave ); - cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).scrollIntoView().verifyVisibleElement( - "have.text", - 'getaddrinfo ENOTFOUND undefined' - ); + cy.get(postgreSqlSelector.dangerAlertNotSupportSSL, { timeout: 60000 }) + .scrollIntoView() + .verifyVisibleElement("have.text", "getaddrinfo ENOTFOUND undefined"); }); it("Should verify the functionality of PostgreSQL connection form.", () => { - selectDataSource('ClickHouse'); + selectDataSource("ClickHouse"); cy.clearAndType( '[data-cy="data-source-name-input-filed"]', - postgreSqlText.psqlName + "cypress-clickhouse" ); fillDataSourceTextField( postgreSqlText.labelHost, - postgreSqlText.placeholderEnterHost, + "localhost", Cypress.env("pg_host") ); - fillDataSourceTextField( - postgreSqlText.labelPort, - postgreSqlText.placeholderEnterPort, - "5432" - ); + fillDataSourceTextField(postgreSqlText.labelPort, "8123", "8123"); fillDataSourceTextField( postgreSqlText.labelDbName, - postgreSqlText.placeholderNameOfDB, - "postgres" + "database name", + "{del}" ); fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, - "postgres" + Cypress.env("clickhouse_user") ); cy.get(postgreSqlSelector.passwordTextField).type( - Cypress.env("pg_password") + Cypress.env("clickhouse_password") ); + cy.get(".css-1e1a1lx-control > .css-s59k37-ValueContainer") + .click() + .type(`HTTP{enter}`); cy.get(postgreSqlSelector.buttonTestConnection).click(); cy.get(postgreSqlSelector.textConnectionVerified, { @@ -183,8 +172,9 @@ describe("Data sources", () => { cy.get(postgreSqlSelector.leftSidebarDatasourceButton).click(); cy.get(postgreSqlSelector.datasourceLabelOnList) - .should("have.text", postgreSqlText.psqlName) + .should("have.text", "cypress-clickhouse") .find("button") + .invoke("show") .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/cosmosDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/cosmosDbHappyPath.cy.js index b472d1333c..3916ee7313 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/cosmosDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/cosmosDbHappyPath.cy.js @@ -47,27 +47,20 @@ describe("Data sources", () => { postgreSqlText.allCloudStorage ); - cy.get(postgreSqlSelector.dataSourceSearchInputField).type( - 'CosmosDB' - ); - cy.get("[data-cy*='data-source-']") - .eq(0) - .should("contain", 'CosmosDB'); + cy.get(postgreSqlSelector.dataSourceSearchInputField).type("CosmosDB"); + cy.get("[data-cy*='data-source-']").eq(0).should("contain", "CosmosDB"); cy.get('[data-cy="data-source-cosmosdb"]').click(); cy.get(postgreSqlSelector.dataSourceNameInputField).should( "have.value", - 'CosmosDB' + "CosmosDB" ); cy.get('[data-cy="label-end-point"]').verifyVisibleElement( "have.text", - 'End point' + "End point" ); - cy.get('[data-cy="label-key"]').verifyVisibleElement( - "have.text", - 'Key' - ); - + cy.get('[data-cy="label-key"]').verifyVisibleElement("have.text", "Key"); + cy.get(postgreSqlSelector.labelIpWhitelist).verifyVisibleElement( "have.text", postgreSqlText.whiteListIpText @@ -97,41 +90,27 @@ describe("Data sources", () => { ); cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( "have.text", - 'Invalid URL: ' + "Invalid URL" ); }); - it("Should verify the functionality of PostgreSQL connection form.", () => { - selectDataSource('CosmosDB'); + it("Should verify the functionality of CosmosDB connection form.", () => { + selectDataSource("CosmosDB"); cy.clearAndType( '[data-cy="data-source-name-input-filed"]', - 'cypress-cosmosdb' + "cypress-cosmosdb" ); fillDataSourceTextField( - postgreSqlText.labelHost, - postgreSqlText.placeholderEnterHost, - Cypress.env("pg_host") + "End point", + 'https://your-account.documents.azure.com', + Cypress.env("cosmosdb_end_point") ); fillDataSourceTextField( - postgreSqlText.labelPort, - postgreSqlText.placeholderEnterPort, - "5432" - ); - fillDataSourceTextField( - postgreSqlText.labelDbName, - postgreSqlText.placeholderNameOfDB, - "postgres" - ); - fillDataSourceTextField( - postgreSqlText.labelUserName, - postgreSqlText.placeholderEnterUserName, - "postgres" - ); - - cy.get(postgreSqlSelector.passwordTextField).type( - Cypress.env("pg_password") + 'Key', + 'Enter your key', + Cypress.env("cosmosdb_key") ); cy.get(postgreSqlSelector.buttonTestConnection).click(); @@ -147,8 +126,9 @@ describe("Data sources", () => { cy.get(postgreSqlSelector.leftSidebarDatasourceButton).click(); cy.get(postgreSqlSelector.datasourceLabelOnList) - .should("have.text", 'cypress-cosmosdb') + .should("have.text", "cypress-cosmosdb") .find("button") + .invoke('show') .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/couchDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/couchDbHappyPath.cy.js index 553404eef2..8436f44102 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/couchDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/couchDbHappyPath.cy.js @@ -113,7 +113,7 @@ describe("Data sources", () => { ); cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( "have.text", - 'Invalid URL: undefined://:5984/_all_dbs' + 'Invalid URL' ); }); @@ -127,27 +127,28 @@ describe("Data sources", () => { fillDataSourceTextField( postgreSqlText.labelHost, - postgreSqlText.placeholderEnterHost, - Cypress.env("pg_host") + '', + Cypress.env("couchdb_host") ); fillDataSourceTextField( postgreSqlText.labelPort, - postgreSqlText.placeholderEnterPort, - "5432" + '5984 ', + "5984" ); fillDataSourceTextField( postgreSqlText.labelDbName, - postgreSqlText.placeholderNameOfDB, - "postgres" + 'database name', + '{del}' ); fillDataSourceTextField( postgreSqlText.labelUserName, - postgreSqlText.placeholderEnterUserName, - "postgres" + 'username for couchDB', + Cypress.env("couchdb_user") ); + cy.get('.css-1e1a1lx-control > .css-s59k37-ValueContainer').type('HTTP{enter}') cy.get(postgreSqlSelector.passwordTextField).type( - Cypress.env("pg_password") + Cypress.env("couchdb_password"), {log:false} ); cy.get(postgreSqlSelector.buttonTestConnection).click(); @@ -165,6 +166,7 @@ describe("Data sources", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", postgreSqlText.psqlName) .find("button") + .invoke("show") .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/elasticsearchHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/elasticsearchHappyPath.cy.js index f42b3f36f5..9b854958d2 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/elasticsearchHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/elasticsearchHappyPath.cy.js @@ -127,7 +127,7 @@ describe("Data source Elasticsearch", () => { fillDataSourceTextField( postgreSqlText.labelPort, postgreSqlText.placeholderEnterPort, - "443" + "9200" ); fillDataSourceTextField( @@ -153,7 +153,7 @@ describe("Data source Elasticsearch", () => { "elasticsearch_user" ); cy.get(postgreSqlSelector.buttonTestConnection).click(); - verifyCouldnotConnectWithAlert("Response Error"); + verifyCouldnotConnectWithAlert("write EPROTO C062440602000000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:355:"); fillDataSourceTextField( postgreSqlText.labelUserName, @@ -164,10 +164,11 @@ describe("Data source Elasticsearch", () => { .clear() .type("elasticsearch_password"); cy.get(postgreSqlSelector.buttonTestConnection).click(); - verifyCouldnotConnectWithAlert("Response Error"); + verifyCouldnotConnectWithAlert("write EPROTO C062440602000000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:355:"); cy.get(postgreSqlSelector.passwordTextField) .clear() .type(Cypress.env("elasticsearch_password")); + cy.get('.form-check-input').click() cy.get(postgreSqlSelector.buttonTestConnection).click(); cy.get(postgreSqlSelector.textConnectionVerified, { diff --git a/cypress-tests/cypress/e2e/editor/data-source/fireStoreHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/fireStoreHappyPath.cy.js index a109847010..8c45493093 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/fireStoreHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/fireStoreHappyPath.cy.js @@ -103,7 +103,7 @@ describe("Data source Firestore", () => { fillDataSourceTextField( firestoreText.privateKey, firestoreText.placeholderPrivateKey, - JSON.stringify(Cypress.env("firestore_pvt_key")), + `${JSON.stringify(Cypress.env("firestore_pvt_key"))}`, "contain", { parseSpecialCharSequences: false, delay: 0 } ); @@ -122,6 +122,7 @@ describe("Data source Firestore", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("contain.text", firestoreText.cypressFirestore) .find("button") + .invoke("show") .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/influxDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/influxDbHappyPath.cy.js index 171e6f0700..4399a7cc5b 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/influxDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/influxDbHappyPath.cy.js @@ -104,7 +104,7 @@ describe("Data sources", () => { ); cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( "have.text", - 'Invalid URL: undefined://:8086/influxdb/cloud/api//ping' + 'Invalid URL' ); }); @@ -118,28 +118,15 @@ describe("Data sources", () => { fillDataSourceTextField( postgreSqlText.labelHost, - postgreSqlText.placeholderEnterHost, - Cypress.env("pg_host") + '', + Cypress.env("influxdb_host") ); fillDataSourceTextField( postgreSqlText.labelPort, - postgreSqlText.placeholderEnterPort, - "5432" - ); - fillDataSourceTextField( - postgreSqlText.labelDbName, - postgreSqlText.placeholderNameOfDB, - "postgres" - ); - fillDataSourceTextField( - postgreSqlText.labelUserName, - postgreSqlText.placeholderEnterUserName, - "postgres" - ); - - cy.get(postgreSqlSelector.passwordTextField).type( - Cypress.env("pg_password") + '8086 ', + "8086" ); + cy.get('.css-1e1a1lx-control > .css-s59k37-ValueContainer').click().type('HTTP{enter}') cy.get(postgreSqlSelector.buttonTestConnection).click(); cy.get(postgreSqlSelector.textConnectionVerified, { @@ -156,6 +143,7 @@ describe("Data sources", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", postgreSqlText.psqlName) .find("button") + .invoke('show') .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/mariaDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/mariaDbHappyPath.cy.js index 6fc8172686..93396a35d7 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/mariaDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/mariaDbHappyPath.cy.js @@ -145,8 +145,8 @@ describe("Data sources", () => { "5432" ); fillDataSourceTextField( - postgreSqlText.labelDbName, - postgreSqlText.placeholderNameOfDB, + "Database", + "Enter name of the database", "postgres" ); fillDataSourceTextField( diff --git a/cypress-tests/cypress/e2e/editor/data-source/mongoDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/mongoDbHappyPath.cy.js index df6c7de1a3..2b96ddd36f 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/mongoDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/mongoDbHappyPath.cy.js @@ -93,7 +93,7 @@ describe("Data source MongoDB", () => { postgreSqlText.buttonTextTestConnection ) .click(); - cy.get(postgreSqlSelector.connectionFailedText).verifyVisibleElement( + cy.get(postgreSqlSelector.connectionFailedText, {timeout:70000}).verifyVisibleElement( "have.text", postgreSqlText.couldNotConnect, { timeout: 65000 } @@ -104,7 +104,7 @@ describe("Data source MongoDB", () => { ); cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( "have.text", - mongoDbText.errorConnectionRefused + 'connect ECONNREFUSED ::1:27017' ); cy.get('[data-cy="query-select-dropdown"]').type( mongoDbText.optionConnectUsingConnectionString @@ -132,10 +132,14 @@ describe("Data source MongoDB", () => { postgreSqlText.buttonTextTestConnection ) .click(); - cy.get(postgreSqlSelector.connectionFailedText).verifyVisibleElement( + cy.get(postgreSqlSelector.connectionFailedText, { timeout: 70000 }).verifyVisibleElement( "have.text", postgreSqlText.couldNotConnect, - { timeout: 60000 } + { timeout: 95000 } + ); + cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( + "have.text", + 'Invalid scheme, expected connection string to start with "mongodb://" or "mongodb+srv://"' ); verifyCouldnotConnectWithAlert(mongoDbText.errorInvalisScheme); cy.get(postgreSqlSelector.buttonSave).verifyVisibleElement( @@ -178,6 +182,7 @@ describe("Data source MongoDB", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", mongoDbText.cypressMongoDb) .find("button") + .invoke("show") .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js index e5a7aa9121..4f11f227d9 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/mysqlHappyPath.cy.js @@ -142,7 +142,7 @@ describe("Data sources MySql", () => { ); cy.get(postgreSqlSelector.buttonTestConnection).click(); - verifyCouldnotConnectWithAlert(mySqlText.errorUnknownDb); + verifyCouldnotConnectWithAlert(""); fillDataSourceTextField( postgreSqlText.labelDbName, postgreSqlText.placeholderNameOfDB, @@ -154,19 +154,20 @@ describe("Data sources MySql", () => { "admin1" ); cy.get(postgreSqlSelector.buttonTestConnection).click(); - verifyCouldnotConnectWithAlert(mySqlText.errorAccessDeniedAdmin1); + verifyCouldnotConnectWithAlert('ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client'); fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, + test/spec-updation-needed-to-fix-specs-on-github-actions Cypress.env("mysql_user") ); cy.get(postgreSqlSelector.passwordTextField).type("testpassword"); cy.get(postgreSqlSelector.buttonTestConnection).click(); - verifyCouldnotConnectWithAlert(mySqlText.errorAccessDeniedAdmin); + verifyCouldnotConnectWithAlert("ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'103.171.99.42' (using password: YES)"); cy.get(postgreSqlSelector.passwordTextField).type( - `{selectAll}{backspace}${Cypress.env("mysql_password")}` + `{selectAll}{backspace}${Cypress.env("mysql_password")}`, {log:false} ); cy.get(postgreSqlSelector.buttonTestConnection).click(); diff --git a/cypress-tests/cypress/e2e/editor/data-source/oracleDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/oracleDbHappyPath.cy.skip.js similarity index 100% rename from cypress-tests/cypress/e2e/editor/data-source/oracleDbHappyPath.cy.js rename to cypress-tests/cypress/e2e/editor/data-source/oracleDbHappyPath.cy.skip.js diff --git a/cypress-tests/cypress/e2e/editor/data-source/postgresHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/postgresHappyPath.cy.js index b02faa2251..e3a8fba5ad 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/postgresHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/postgresHappyPath.cy.js @@ -171,31 +171,35 @@ describe("Data sources", () => { .should("be.visible"); }); - it("Should verify elements of the Query section.", () => { + it.only("Should verify elements of the Query section.", () => { selectDataSource(postgreSqlText.postgreSQL); - fillConnectionForm({ - Host: Cypress.env("pg_host"), - Port: "5432", - "Database Name": "postgres", - Username: Cypress.env("pg_user"), - Password: Cypress.env("pg_password"), - }); + fillConnectionForm( + { + Host: Cypress.env("pg_host"), + Port: "5432", + "Database Name": "postgres", + Username: Cypress.env("pg_user"), + Password: Cypress.env("pg_password"), + }, + ".form-switch" + ); + openQueryEditor(postgreSqlText.postgreSQL); - cy.get(postgreSqlSelector.headerQueryManager).verifyVisibleElement( - "have.text", - postgreSqlText.headerQueries - ); - cy.get(postgreSqlSelector.labelNoQuery).verifyVisibleElement( - "have.text", - postgreSqlText.noQueryText - ); + // cy.get(postgreSqlSelector.headerQueryManager).verifyVisibleElement( + // "have.text", + // postgreSqlText.headerQueries + // ); removed + // cy.get(postgreSqlSelector.labelNoQuery).verifyVisibleElement( + // "have.text", + // postgreSqlText.noQueryText + // ); cy.get(postgreSqlSelector.createQueryButton).verifyVisibleElement( "have.text", postgreSqlText.buttonLabelCreateQuery ); - cy.get(postgreSqlSelector.querySearchIcon).should("be.visible"); + cy.get(postgreSqlSelector.querySearchBar).should("be.visible"); cy.get('[data-cy="button-add-new-queries"]').click(); cy.get(postgreSqlSelector.labelSelectDataSource).verifyVisibleElement( "have.text", diff --git a/cypress-tests/cypress/e2e/editor/data-source/redisHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/redisHappyPath.cy.js index bd96c88b0e..d83f7cbd83 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/redisHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/redisHappyPath.cy.js @@ -166,7 +166,7 @@ describe("Data source Redis", () => { fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, - "redis" + "{del}" ); cy.get(postgreSqlSelector.buttonTestConnection).click(); cy.get(postgreSqlSelector.textConnectionVerified, { @@ -183,6 +183,7 @@ describe("Data source Redis", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", redisText.cypressRedis) .find("button") + .invoke('show') .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/rethinkDbHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/rethinkDbHappyPath.cy.skip.js similarity index 98% rename from cypress-tests/cypress/e2e/editor/data-source/rethinkDbHappyPath.cy.js rename to cypress-tests/cypress/e2e/editor/data-source/rethinkDbHappyPath.cy.skip.js index 49e068d8d3..95bef0a692 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/rethinkDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/rethinkDbHappyPath.cy.skip.js @@ -109,7 +109,7 @@ describe("Data sources", () => { ); cy.get(postgreSqlSelector.dangerAlertNotSupportSSL).verifyVisibleElement( "have.text", - 'Could not connect to localhost:28015.\nconnect ECONNREFUSED 127.0.0.1:28015' + 'Could not connect to localhost:28015.connect ECONNREFUSED ::1:28015' ); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/s3HappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/s3HappyPath.cy.js index 16b7cf1455..9f14a98eca 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/s3HappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/s3HappyPath.cy.js @@ -64,6 +64,7 @@ describe("Data sources AWS S3", () => { ); cy.get(s3Selector.customEndpointLabel) .verifyVisibleElement("have.text", s3Text.customEndpoint) + .parent() .next() .find("input") .click(); @@ -118,12 +119,14 @@ describe("Data sources AWS S3", () => { ); cy.get(s3Selector.regionLabel) + .parent() .next() .find("input") .type(`${s3Text.region}{enter}`); cy.get(s3Selector.customEndpointLabel) .verifyVisibleElement("have.text", s3Text.customEndpoint) + .parent() .next() .find("input") .click(); @@ -132,6 +135,7 @@ describe("Data sources AWS S3", () => { verifyCouldnotConnectWithAlert(s3Text.alertInvalidUrl); cy.get(s3Selector.customEndpointLabel) .verifyVisibleElement("have.text", s3Text.customEndpoint) + .parent() .next() .find("input") .click(); @@ -171,6 +175,7 @@ describe("Data sources AWS S3", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", s3Text.cypressAwsS3) .find("button") + .invoke('show') .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/sapHanaHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/sapHanaHappyPath.cy.skip.js similarity index 100% rename from cypress-tests/cypress/e2e/editor/data-source/sapHanaHappyPath.cy.js rename to cypress-tests/cypress/e2e/editor/data-source/sapHanaHappyPath.cy.skip.js diff --git a/cypress-tests/cypress/e2e/editor/data-source/snowflakeHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/snowflakeHappyPath.cy.js index 832cb67117..7ed3d5211b 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/snowflakeHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/snowflakeHappyPath.cy.js @@ -138,40 +138,40 @@ describe("Data sources", () => { fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, - "snowflake" + Cypress.env("snowflake_user") ); fillDataSourceTextField( "Account", "Enter account", - Cypress.env("pg_host") + Cypress.env("snowflake_account") ); fillDataSourceTextField( "Password", "Enter password", - "password" + Cypress.env("snowflake_password") ); fillDataSourceTextField( "Database", "Enter database", - "snowflake" + Cypress.env("snowflake_database") ); fillDataSourceTextField( "Schema", "Enter schema", - "schema" + "{del}" ); fillDataSourceTextField( "Warehouse", "Enter warehouse", - "warehouse" + "{del}" ); fillDataSourceTextField( "Role", "Enter role", - "role" + "{del}" ); cy.get(postgreSqlSelector.buttonTestConnection).click(); @@ -189,6 +189,7 @@ describe("Data sources", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", "cypress-snowflake") .find("button") + .invoke('show') .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/sqlServerHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/sqlServerHappyPath.cy.js index 04719b43af..7c883b387c 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/sqlServerHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/sqlServerHappyPath.cy.js @@ -132,31 +132,31 @@ describe("Data sources", () => { fillDataSourceTextField( postgreSqlText.labelHost, postgreSqlText.placeholderEnterHost, - Cypress.env("pg_host") + Cypress.env("sqlserver_host") ); fillDataSourceTextField( "Instance", "Enter the name of the database instance", - "5432" + Cypress.env("sqlserver_instance") ); fillDataSourceTextField( postgreSqlText.labelPort, postgreSqlText.placeholderEnterPort, - "5432" + "1433" ); fillDataSourceTextField( postgreSqlText.labelDbName, postgreSqlText.placeholderNameOfDB, - "postgres" + Cypress.env("sqlserver_db") ); fillDataSourceTextField( postgreSqlText.labelUserName, postgreSqlText.placeholderEnterUserName, - "postgres" + Cypress.env("sqlserver_user") ); cy.get(postgreSqlSelector.passwordTextField).type( - 'Cypress.env("pg_password")' + Cypress.env("sqlserver_password") ); cy.get(postgreSqlSelector.buttonTestConnection).click(); @@ -174,6 +174,7 @@ describe("Data sources", () => { cy.get(postgreSqlSelector.datasourceLabelOnList) .should("have.text", "cypress-sqlserver") .find("button") + .invoke("show") .should("be.visible"); }); }); diff --git a/cypress-tests/cypress/e2e/editor/data-source/typeSenseHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/data-source/typeSenseHappyPath.cy.js index aa4cd4a0d3..3d4ec53091 100644 --- a/cypress-tests/cypress/e2e/editor/data-source/typeSenseHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/data-source/typeSenseHappyPath.cy.js @@ -108,7 +108,7 @@ describe("Data sources", () => { ); }); - it("Should verify the functionality of PostgreSQL connection form.", () => { + it.skip("Should verify the functionality of PostgreSQL connection form.", () => { selectDataSource("TypeSense"); cy.clearAndType( diff --git a/cypress-tests/cypress/support/utils/postgreSql.js b/cypress-tests/cypress/support/utils/postgreSql.js index eac4ac4dca..12c9af4f80 100644 --- a/cypress-tests/cypress/support/utils/postgreSql.js +++ b/cypress-tests/cypress/support/utils/postgreSql.js @@ -50,13 +50,16 @@ export const selectDataSource = (dataSource) => { cy.get(`[data-cy='data-source-${dataSource.toLowerCase()}']`).click(); }; -export const fillConnectionForm = (data) => { +export const fillConnectionForm = (data, toggle = "") => { for (const property in data) { cy.clearAndType( `[data-cy="${cyParamName(property)}-text-field"]`, `${data[property]}` ); } + if (toggle != "") { + cy.get(toggle).click(); + } cy.get(postgreSqlSelector.buttonTestConnection).click(); cy.get(postgreSqlSelector.textConnectionVerified, { timeout: 7000, From cf255717839fcb8997103461dab732c08d50ec7a Mon Sep 17 00:00:00 2001 From: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com> Date: Mon, 6 Mar 2023 16:22:00 +0530 Subject: [PATCH 06/65] Update cypress spec for export and import functionality (#5388) * updated spec * fix cypress failure * delete file under download folder --- .../cypress/constants/selectors/common.js | 4 ++- .../constants/selectors/exportImport.js | 12 ++++---- .../cypress/constants/texts/common.js | 1 + .../cypress/constants/texts/exportImport.js | 5 ++-- .../cypress/e2e/exportImport/export.cy.js | 11 ++++--- .../cypress/e2e/exportImport/import.cy.js | 29 +++++++++++-------- .../cypress/support/utils/exportImport.js | 16 +++++----- 7 files changed, 46 insertions(+), 32 deletions(-) diff --git a/cypress-tests/cypress/constants/selectors/common.js b/cypress-tests/cypress/constants/selectors/common.js index d1e475ae67..bdb35764b9 100644 --- a/cypress-tests/cypress/constants/selectors/common.js +++ b/cypress-tests/cypress/constants/selectors/common.js @@ -4,6 +4,7 @@ export const cyParamName = (paramName = "") => { export const commonSelectors = { toastMessage: ".go3958317564", + oldToastMessage: ".go318386747", toastCloseButton: '[data-cy="toast-close-button"]', editButton: "[data-cy=edit-button]", searchField: "[data-cy=widget-search-box]", @@ -168,6 +169,7 @@ export const commonSelectors = { currentWorkspaceName: (workspaceName) => { return `[data-cy="${cyParamName(workspaceName)}-current-workspace-name"]`; }, + appHeaderLable: '[data-cy="app-header-label"]', folderListcard: (folderName) => { return `[data-cy="${cyParamName(folderName)}-list-card"]`; @@ -271,7 +273,7 @@ export const commonWidgetSelector = { '[data-cy="action-options-action-selection-field"]', componentTextInput: '[data-cy="action-options-text-input-field"]', changeLayoutButton: "[data-cy= 'change-layout-button']", - changeLayoutToMobileButton: '[data-cy="button-change-layout-to-mobile"]', + changeLayoutToMobileButton: '[data-cy="button-change-layout-to-mobile"]', changeLayoutToDesktopButton: '[data-cy="button-change-layout-to-desktop"]', sidebarinspector: "[data-cy='left-sidebar-inspect-button']", diff --git a/cypress-tests/cypress/constants/selectors/exportImport.js b/cypress-tests/cypress/constants/selectors/exportImport.js index 37e934c089..0695c6fdc0 100644 --- a/cypress-tests/cypress/constants/selectors/exportImport.js +++ b/cypress-tests/cypress/constants/selectors/exportImport.js @@ -8,12 +8,13 @@ export const appVersionSelectors = { createVersionLink: '[data-cy="create-version-link"]', createVersionTitle: '[data-cy="create-version-title"]', versionNamelabel: '[data-cy="version-name-label"]', - appVersionMenuField: '[data-cy="app-version-menu-field"]', + appVersionMenuField: + '[data-cy="app-version-selector"] .custom-version-selector__indicators', versionNameInputField: '[data-cy="version-name-input-field"]', createVersionFromLabel: '[data-cy="create-version-from-label"]', - createVersionInputField: '[data-cy="create-version-input-field"]', - createVersionButton: '[data-cy="create-version-button"]', - appVersionContentList: '[data-cy="app-version-content"] .dropdown-item', + createVersionInputField: '[data-cy="create-version-from-input-field"]', + createNewVersionButton: '[data-cy="create-new-version-button"]', + appVersionContentList: ".custom-version-selector__menu-list", }; export const exportAppModalSelectors = { selectVersionTitle: '[data-cy= "select-a-version-to-export-title"]', @@ -34,6 +35,7 @@ export const exportAppModalSelectors = { export const importSelectors = { dropDownMenu: '[data-cy="import-dropdown-menu"]', + importAnApplication: '[data-cy="import-an-application"]', importOptionLabel: '[data-cy="import-option-label"]', importOptionInput: '[data-cy="import-option-input"]', -}; +}; \ No newline at end of file diff --git a/cypress-tests/cypress/constants/texts/common.js b/cypress-tests/cypress/constants/texts/common.js index 364c06747c..4be11580e3 100644 --- a/cypress-tests/cypress/constants/texts/common.js +++ b/cypress-tests/cypress/constants/texts/common.js @@ -13,6 +13,7 @@ export const commonText = { email: "dev@tooljet.io", password: "password", loginErrorToast: "Invalid email or password", + welcomeTooljetWorkspace: "Welcome to your new ToolJet workspace", introductionMessage: "You can get started by creating a new application or by creating an application using a template in ToolJet Library.", changeIconOption: "Change Icon", diff --git a/cypress-tests/cypress/constants/texts/exportImport.js b/cypress-tests/cypress/constants/texts/exportImport.js index ddfcc60fbd..cd0434759c 100644 --- a/cypress-tests/cypress/constants/texts/exportImport.js +++ b/cypress-tests/cypress/constants/texts/exportImport.js @@ -1,8 +1,9 @@ export const appVersionText = { + createNewVersion: "Create new version", createVersion: "Create Version", versionNameLabel: "Version Name", createVersionFromLabel: "Create version from", - emptyToastMessage: "The version name should not be empty", + emptyToastMessage: "Version name should not be empty", createdToastMessage: "Version Created", }; @@ -19,4 +20,4 @@ export const importText = { importOption: "Import", couldNotImportAppToastMessage: `Could not import the app: SyntaxError: Unexpected token '�', "�PNG\r\n\u001a\n\u0000\u0000"... is not valid JSON`, appImportedToastMessage: "App imported successfully.", -}; +}; \ No newline at end of file diff --git a/cypress-tests/cypress/e2e/exportImport/export.cy.js b/cypress-tests/cypress/e2e/exportImport/export.cy.js index fd9363fee8..13d3adf858 100644 --- a/cypress-tests/cypress/e2e/exportImport/export.cy.js +++ b/cypress-tests/cypress/e2e/exportImport/export.cy.js @@ -43,7 +43,8 @@ describe("App Export Functionality", () => { .invoke("text") .then(() => { cy.get(commonSelectors.editorPageLogo).should("be.visible").click(); - cy.get(commonSelectors.folderPageTitle).should("be.visible"); + cy.get(commonSelectors.appHeaderLable).should("be.visible"); + cy.reload(); selectAppCardOption( data.appName1, commonSelectors.appCardOptions(commonText.exportAppOption) @@ -53,7 +54,7 @@ describe("App Export Functionality", () => { }); it("Verify 'Export app' functionality of an application", () => { - cy.get(commonSelectors.folderPageTitle).should("be.visible"); + cy.get(commonSelectors.appHeaderLable).should("be.visible"); selectAppCardOption( data.appName1, @@ -85,6 +86,8 @@ describe("App Export Functionality", () => { cy.exec("cd ./cypress/downloads/ && rm -rf *"); navigateToAppEditor(data.appName1); + cy.get('[data-cy="widget-list-box-table"]').should("be.visible"); + cy.get(".driver-close-btn").click(); cy.get(appVersionSelectors.appVersionMenuField) .should("be.visible") .click(); @@ -94,7 +97,7 @@ describe("App Export Functionality", () => { .invoke("text") .then(() => { cy.get(commonSelectors.editorPageLogo).click(); - cy.get(commonSelectors.folderPageTitle).should("be.visible"); + cy.get(commonSelectors.appHeaderLable).should("be.visible"); selectAppCardOption( data.appName1, commonSelectors.appCardOptions(commonText.exportAppOption) @@ -128,4 +131,4 @@ describe("App Export Functionality", () => { ); cy.exec("cd ./cypress/downloads/ && rm -rf *"); }); -}); +}); \ No newline at end of file diff --git a/cypress-tests/cypress/e2e/exportImport/import.cy.js b/cypress-tests/cypress/e2e/exportImport/import.cy.js index ff09ca7cc0..2a0503f587 100644 --- a/cypress-tests/cypress/e2e/exportImport/import.cy.js +++ b/cypress-tests/cypress/e2e/exportImport/import.cy.js @@ -37,7 +37,7 @@ describe("App Import Functionality", () => { }); it("Verify the Import functionality of an Application", () => { cy.get("body").then(($title) => { - if ($title.text().includes(commonText.introductionMessage)) { + if ($title.text().includes(commonText.welcomeTooljetWorkspace)) { cy.get(dashboardSelector.importAppButton).click(); } else { cy.get(importSelectors.dropDownMenu).should("be.visible").click(); @@ -51,15 +51,16 @@ describe("App Import Functionality", () => { force: true, }); cy.verifyToastMessage( - commonSelectors.toastMessage, + commonSelectors.oldToastMessage, importText.couldNotImportAppToastMessage ); cy.get(importSelectors.importOptionInput).selectFile(appFile, { force: true, }); + cy.get(".driver-close-btn").click(); cy.verifyToastMessage( - commonSelectors.toastMessage, + commonSelectors.oldToastMessage, importText.appImportedToastMessage ); cy.get(commonSelectors.appNameInput).verifyVisibleElement( @@ -75,7 +76,8 @@ describe("App Import Functionality", () => { ); cy.waitForAutoSave(); cy.get(commonSelectors.editorPageLogo).should("be.visible").click(); - cy.get(commonSelectors.folderPageTitle).should("be.visible"); + cy.get(commonSelectors.appHeaderLable).should("be.visible"); + cy.reload(); selectAppCardOption( data.appName, commonSelectors.appCardOptions(commonText.exportAppOption) @@ -102,7 +104,7 @@ describe("App Import Functionality", () => { force: true, }); cy.verifyToastMessage( - commonSelectors.toastMessage, + commonSelectors.oldToastMessage, importText.appImportedToastMessage ); cy.get( @@ -113,19 +115,21 @@ describe("App Import Functionality", () => { cy.get(commonSelectors.appNameInput).verifyVisibleElement( "have.value", - exportedAppData.name + exportedAppData.appV2.name ); cy.get( appVersionSelectors.currentVersionField((currentVersion = "v1")) ).verifyVisibleElement( "have.text", - exportedAppData.appVersions[0].name + exportedAppData.appV2.appVersions[0].name ); }); cy.exec("cd ./cypress/downloads/ && rm -rf *"); }); cy.renameApp(data.appReName); cy.get(commonSelectors.editorPageLogo).click(); + cy.get(commonSelectors.appHeaderLable).should("be.visible"); + cy.reload(); navigateToAppEditor(data.appReName); cy.get(appVersionSelectors.appVersionMenuField) @@ -141,7 +145,8 @@ describe("App Import Functionality", () => { .then((versionText) => { cy.log(versionText); cy.get(commonSelectors.editorPageLogo).click(); - cy.get(commonSelectors.folderPageTitle).should("be.visible"); + cy.get(commonSelectors.appHeaderLable).should("be.visible"); + cy.reload(); selectAppCardOption( data.appReName, commonSelectors.appCardOptions(commonText.exportAppOption) @@ -169,7 +174,7 @@ describe("App Import Functionality", () => { } ); cy.verifyToastMessage( - commonSelectors.toastMessage, + commonSelectors.oldToastMessage, importText.appImportedToastMessage ); cy.get(appVersionSelectors.appVersionMenuField).click(); @@ -185,7 +190,7 @@ describe("App Import Functionality", () => { cy.get(commonSelectors.appNameInput).verifyVisibleElement( "have.value", - exportedAppData.name + exportedAppData.appV2.name ); cy.get( appVersionSelectors.currentVersionField( @@ -193,7 +198,7 @@ describe("App Import Functionality", () => { ) ).verifyVisibleElement( "have.text", - exportedAppData.appVersions[1].name + exportedAppData.appV2.appVersions[1].name ); }); }); @@ -201,4 +206,4 @@ describe("App Import Functionality", () => { }); }); }); -}); +}); \ No newline at end of file diff --git a/cypress-tests/cypress/support/utils/exportImport.js b/cypress-tests/cypress/support/utils/exportImport.js index c38b40075a..6dbc6666bf 100644 --- a/cypress-tests/cypress/support/utils/exportImport.js +++ b/cypress-tests/cypress/support/utils/exportImport.js @@ -44,21 +44,21 @@ export const verifyElementsOfExportModal = ( }; export const createNewVersion = (newVersion = []) => { - cy.get(appVersionSelectors.createVersionLink).should("be.visible").click(); + cy.contains(appVersionText.createNewVersion).should("be.visible").click(); verifyModal( - appVersionText.createVersion, - appVersionText.createVersion, + appVersionText.createNewVersion, + appVersionText.createNewVersion, appVersionSelectors.createVersionInputField ); - cy.get(appVersionSelectors.createVersionButton).click(); + cy.get(appVersionSelectors.createNewVersionButton).click(); cy.verifyToastMessage( - commonSelectors.toastMessage, + commonSelectors.oldToastMessage, appVersionText.emptyToastMessage ); cy.get(appVersionSelectors.versionNameInputField).click().type(newVersion[0]); - cy.get(appVersionSelectors.createVersionButton).click(); + cy.get(appVersionSelectors.createNewVersionButton).click(); cy.verifyToastMessage( - commonSelectors.toastMessage, + commonSelectors.oldToastMessage, appVersionText.createdToastMessage ); cy.get(appVersionSelectors.currentVersionField(newVersion[0])).should( @@ -99,4 +99,4 @@ export const exportAllVersionsAndVerify = ( } clickOnExportButtonAndVerify(exportAppModalText.exportAll, appName); }); -}; +}; \ No newline at end of file From 1a1f44d3aa4d6e2f5325028b44f25a6ee0b8066d Mon Sep 17 00:00:00 2001 From: Adish M <44204658+adishM98@users.noreply.github.com> Date: Tue, 7 Mar 2023 14:35:09 +0530 Subject: [PATCH 07/65] openshift code and docs (#5695) * openshift code and docs * corrections in doc --- deploy/openshift/deployment.yaml | 96 ++++++++++++++++++ deploy/openshift/postgrest.yaml | 52 ++++++++++ deploy/openshift/service.yaml | 13 +++ .../img/openshift/online-yaml-editor.png | Bin 0 -> 163677 bytes docs/static/img/openshift/toplogy.png | Bin 0 -> 97879 bytes .../version-2.1.0/setup/openshift.md | 61 +++++++++++ 6 files changed, 222 insertions(+) create mode 100644 deploy/openshift/deployment.yaml create mode 100644 deploy/openshift/postgrest.yaml create mode 100644 deploy/openshift/service.yaml create mode 100644 docs/static/img/openshift/online-yaml-editor.png create mode 100644 docs/static/img/openshift/toplogy.png create mode 100644 docs/versioned_docs/version-2.1.0/setup/openshift.md diff --git a/deploy/openshift/deployment.yaml b/deploy/openshift/deployment.yaml new file mode 100644 index 0000000000..20babd29e4 --- /dev/null +++ b/deploy/openshift/deployment.yaml @@ -0,0 +1,96 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: tooljet-deployment +spec: + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + selector: + matchLabels: + component: tooljet + template: + metadata: + labels: + component: tooljet + spec: + imagePullSecrets: + - name: docker-secret + containers: + - name: container + image: tooljet/tooljet-ce:latest + imagePullPolicy: Always + args: ["npm", "run", "start:prod"] + resources: + limits: + memory: "2000Mi" + cpu: "2000m" + requests: + memory: "1000Mi" + cpu: "1000m" + ports: + - containerPort: 3000 + readinessProbe: + httpGet: + port: 3000 + path: /api/health + successThreshold: 1 + initialDelaySeconds: 10 + periodSeconds: 5 + failureThreshold: 6 + env: + - name: PG_HOST + valueFrom: + secretKeyRef: + name: server + key: pg_host + - name: PG_USER + valueFrom: + secretKeyRef: + name: server + key: pg_user + - name: PG_PASS + valueFrom: + secretKeyRef: + name: server + key: pg_password + - name: PG_DB + valueFrom: + secretKeyRef: + name: server + key: pg_db + - name: LOCKBOX_MASTER_KEY + valueFrom: + secretKeyRef: + name: server + key: lockbox_key + - name: SECRET_KEY_BASE + valueFrom: + secretKeyRef: + name: server + key: secret_key_base + - name: TOOLJET_HOST + valueFrom: + secretKeyRef: + name: server + key: tj_host + - name: DEPLOYMENT_PLATFORM + value: "openshift" + # Set the env values below for Tooljet Database + # - name: ENABLE_TOOLJET_DB + # value: "true" + # - name: TOOLJET_DB + # value: "tooljet_db" + # - name: TOOLJET_DB_USER + # value: "replace_with_tooljet_db_user" + # - name: TOOLJET_DB_HOST + # value: "replace_with_tooljet_db_host" + # - name: TOOLJET_DB_PASS + # value: "replace_with_tooljet_db_pass" + # - name: PGRST_HOST + # value: "replace_with_postgrest_host" + # - name: PGRST_JWT_SECRET + # value: "replace_jwt_secret_here" diff --git a/deploy/openshift/postgrest.yaml b/deploy/openshift/postgrest.yaml new file mode 100644 index 0000000000..d906a66477 --- /dev/null +++ b/deploy/openshift/postgrest.yaml @@ -0,0 +1,52 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: tooljet-postgrest +spec: + replicas: 1 + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + selector: + matchLabels: + component: tooljet-postgrest + template: + metadata: + labels: + component: tooljet-postgrest + spec: + containers: + - name: postgrest + image: postgrest/postgrest:v10.1.1.20221215 + ports: + - containerPort: 3000 + env: + - name: PGRST_DB_URI + valueFrom: + secretKeyRef: + name: server + key: pgrst_db_uri + - name: PGRST_JWT_SECRET + valueFrom: + secretKeyRef: + name: server + key: pgrst_db_uri + - name: PGRST_LOG_LEVEL + value: "info" +--- +apiVersion: v1 +kind: Service +metadata: + name: tooljet-postgrest-service + labels: + name: tooljet-postgrest +spec: + type: NodePort + ports: + - port: 80 + protocol: TCP + targetPort: 3000 + selector: + component: tooljet-postgrest diff --git a/deploy/openshift/service.yaml b/deploy/openshift/service.yaml new file mode 100644 index 0000000000..449513bc7f --- /dev/null +++ b/deploy/openshift/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: tooljet-server +spec: + type: LoadBalancer + selector: + component: tooljet + ports: + - protocol: TCP + port: 443 + targetPort: 3000 + name: https diff --git a/docs/static/img/openshift/online-yaml-editor.png b/docs/static/img/openshift/online-yaml-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..25ddd32c057149004e2ff39bc2e62cefd0f83cf6 GIT binary patch literal 163677 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�s&wTfq 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�carBt_6>iqwRb2O!Fu^K=wz?AFj%Br?>_=J!ZLpJY0L*LZC+@paJb`+g^TU zUqD-?lP>gYm&{^;Q&NeAQ{d)Fhw(b3g@j2r-}9onx)r^ zPsOvB4h4()Y4^Qcm!$Frwr@|rJ~ryx;84thp48X+Wc^lM;kMxJ5pJ@0;!W=I?)DsR z0KaCd0C}s&w=Y-(9F0UUJVg&~{ds}Ll0;TQlGGNeE*VXnaWp{iNvFjZ$*1eT5YL$mC_S)@W~5HlPCG>kt!PG&)~)jQ)J@SyLj#?Rn~w$3=E8w zI(<;j+!@8;C0u{Q10(4Jzday0$}?MOT8u?0eyM^{-&nsK{vi%Z-8_`c*R38WrfzII zQ~wa~y0X=-3kVEExw=1aardmxaowBSe43zFLwtS94v0)TIv!n^&vFf3?2+)Q9f*fYvw2Rm)yzKR-PnDP|;{M0$ zEo1QR){W)rWJ<`#%y0kG=God!(^(92zKIp8PfQ_r-3{YFWBWw50My6lOg69%1dGf$ zk58l;pDSHRQo5<8$pr6ZSy}k5MpC<%c?D2erV=7 ztc*(gd1EVRD;^0tC#Q?D8?gRvGkstdUCPPwhbrOYXJl7b*S7*f!M>x&pK_NwN<>Py zN!8t0i!Mn#(97-7^m)&BrpwlM$k1Ewk^$Ust?2-yG9Wo1AKuM124epn{L~&-?Sa9B zL=}9nvt-t3atp954?dz}sZW^+cj|YWD8FxeRc!}-5*Zo!o!c$FP$uCVAi@;^fS{4b z6uua#Wh>vt@<Dr*e1pJz*U>&D@79y#=#g&u-?= zrL>#{vLg>z2g~bIUS*-1F#fp*llwmNCrTR$2RZjOkg~>dBmhZHp(&|4xL<>dmyQm( zH*yV7Uz z$=v@-jSloD9}?R7R(u}_3Qq*|B%cL*XH(g*_66LhzwNVrN`f~_<1HR<8#Sljx;7x< z+Bd0;?qQyE*V98oxFB|&Z^rXwx@UuG-p8WA6K9vU8#{b4gp_+!w0 z{Pn=#Qbqh$go@9IV`+rZH!L%`=hj6|fhCdq?yC3$sjzExkq`%BI^K4jYaoyA9IZ?r zOub6*Wb&>)@5;+Z+~?{mdA3xPo#vP0Bc_b?o8dS?I&6)EnHlXKn+0KtkP|@uuyD?C zjbRzCpI`hu6@GswRhuBTUbVE-peL%D@+fADMdoZ93jH+oNpq(?FgWBn7|xuLz@}Za z^G|>cAL6$_|6fIxUPROQ)9E8?$s2X|$75m@JxC(D20BqiKK42GOP|BzxXF16FaUYk z_~$J1!^97UU2W%A)3PKVJ^HB2hOxLG%4lF}8k)pyKEQBZTB28l&T+mMXeO7k+ZS*#5&JIBPv?o4mFo~)c~;9aP2BGC$=J#0F_>)aU9UfJ6VdT@JfYQ0px zvUagIodJZ*;QG9u#CFUZPpGJJkO#O9MZGqhKZl!UtAn*rgoU-8eG!^J@~s_y{T#C~ zuK0Tg>i-0RUd$tRKS4_9ii6y#p?O?~(^{ZZB!X*dc%6kr*>xMAA$JuICRKk5UC-)V z>fThOS83BgM1+S24*K0*XP6!nh8lga)cn=jm?Wd5MEB$g0k^uTu)M5nK+r`-A&!R^ z>AT1qB*4Vzjqc-%c(3Cx!BTB7*vRCYh^^IK8?i(T0`dFT3*zlMjDeNM@zDm&_sP80 zic+X?+I3c;PbbRHYVr`;~BxD>6#&V?*aVFK5zmnd&_qz3DHXBY3 zgnNnR2lOT+s0nx>SX=K`7~eDg$xh-wV`vf@tM@I7`Jyx536xHxj1@U6Mp2P@G-=-U z_b9VYkcF;Sm%JO3rZUU^XnrzSPG?1`Z%6AY=D^cD`5__JK!j=C zs(uf{{elter~6~1tDWhi8fpUj9ZLMoZIwvbKbX6!i`NIZlD+vEpNqr8wX}S%N@g{h z>?9KqB7a6I|ADNXD`yU3_<`ff2T-6dZHDsoeVZJ)nxXqM?y;;*K7b@ zch}ob_V?zP|J*s!H4;hqNCOHA?2zUI*nQY-;6js|eg!O!9{?oxGurkSy#@n${|Dxq zE;|eH)UWfUN9@lB_ij(W1q#Z~8DI{&GF|R-0Fn%o%v{+Nk8$Tk-EWsOv^0)#0?A7J z8nfM=da$_kE@)$teR?)b!Q(K(&aRC7AYcQ1dvInhR4IDMW{f_qd zrx~>F^_sb2>CSxldC}+Z1oIB7b&p4LbHCGURgH)RHZ=(|$UZtBfOBoyMYe69i!8&< z(5z*!pIPG+oH!ElXswk)@ISpeLGp58V^@vh-&pEea_WKdc=A_tkcf(wBi?WUJgLvQ z7eikcvzT5S*q~`!V^?2tso@&Y-<>(FD%-OPMu$Wt0g)&rTY?WVJ<4>C&z>8k`XD=Goe->rU|IH1_ zEI{>i-uwCwRPXJg(L93cy{v4Pb|AXZ%xK+MgR)erh)Z%iEc*&cz^)9Lm=1HBc#`yP zPrp6>j623*1#`QV8>Lc@*lQ$A;2NGUAW*@mR2G!gz8O^R_$eqpjefWJ#?f?*a;Dz1 zV`>OH#_RsoUc0iY_(5Z-;`NYay@xl2{M{9MD)ZFq!+|v@??fVSXVC%j%<}T`c|{^H z&@Mb6Y`x@YJz1MnM4Y_0>__{yYpRQqJw|oeieHOi;e{)J4xysA`nE5M8A|gTaf7)H?IQha11TPG z%;Npb0Ep=a(PMs8wt6 zrG{>vpBMW5_WQTguP7M!IkqWkm_=j-)DCwCpoD#l^<9~owr*2p2N$@0h)^Zkl3ZiQ zQVz0`onB|3W{zsx^jlO1g3ggPDUsZkU>awp9-J8&3bW3tC4zbn8y32AaG-wh17>%f z_1U^_QiDt}4>>B$2s$F$)J>jbB%eIR5i)Mv7r(zjQLm8oR8diB-Qx;Yg3^^Yvx%hofB*Vf*G3@eYr9k2;O(!oC0yN?m2oKV*ri`h zqss#n>!;6<-D@Hu`tiglvK|}H(u%#sFa3Gwb8ktqE12kLuQ`2jZ)6vhWJaBW@$YS# z|Ll!RCj$bA&-Vycyn()|660v;Kvj8dZO<`L&w9o>inDKR4%VG~Di7HXzfI33{+Do3 zKUi0S?R*lN&bHV}uyIGl(`#tp4@Qc>HQ5 z=%N6N#>&z>P~Nztru?&0H|=JZM(a>xiq>imWWdnU7G-e{=`aICe3M8mrkms!6lik< z5beJD5DWOQQBgr!a`#tEte*yqNUUumHoV?3ZhcgI_P`tuNdcDr_$D5Ay@ujQs~WtH zDb+-H(WGg-&S{(?fpA zILm8TdR&|yd7+@_mjGtC;4adt_7$E|jQBr2$=T&e@1CA$dDX1FDiFfjD6vN)O$8#zns;Og5 zG1znjE+H=&h>U^hSt1qR11A1zyxNazzT=D3J}Gc2RDS$F%XnqVVr@DRY0=i>Ka7Z+be-&Q#< zKST?A-$sjo2WiC48e9d3h>&yx_!b*Gx%$-Ym*u;R&eyDq-ZFrs7kF#DyS8O(pqCVqT!+#-7Ccpam&ZXK!MURW9swb2PRJ3Y zfjYuUWU+4Sd zd9bnd@B43J%syPJ2+&}Cd+NUpEqc1!5k%)>#He0JM@P&}deB1I6;_gil^>e8*g!xqfNP5KGyu9@_-=pF z^{V`xDymOWH^_>D>+1NkvjJT%G*%(WG4}C6oMmKRS{pzh{Wmm?4~WZ*3Re2e5`Xm9 zPCC;5nJqH{yKB9q5)(nkjOz0d;|y)$63k0bOPBXEe`f{w!_$?@R)ewj1jIUypDY4Gq_=ajxdY!2pw)bK$C(H@&^ntHu_d^8V<$lMPe?8uR7A?QOOZ}UFK+_); zj}Nr{34?!AIF})d^Ht3V8<;~Viz2w(PTwNU8+0p9f3jkLf&8NR{Skg zJ}~Sg!DDF$xKA#uL#)g8(o4;w^rD2}p0~r;a>ylP4P^u(sr${J4&W&BbIY(O(S0A< z$p2ije}AS-Qq+?073${Sa?Ad~N`KKg`HnPZ!G>rr@{wOgxmloUzX0 zxH@TxLw&*A0}>%_xjI#yz6?S()y>R{V(S-Nzw@$C=6hy*do=l^T?INoE>?EKs2qCn zQsCjAwg|1lgF7B>1v^OY`Dm=m1ej-}|ga2&^(jgK~BD7AVUe zyFMLUhyvEc?!on^^`p&{2?yJ0eN5OTFietm_|q@+uwVi`xl0>U_lmddzK)y^kGz$V*oUu?OQL=JzJ|g)kCANY3J3Y_c;dHfRy%T(4N82A4rDZgJvVZ7Mtpq2@=5;qxV!i2qAl&QTsdW1I zo`1yU=+6Uz|owJrA{g$e#wMvaR7zq4N9$+_~y1e)!{bP^kx!=)t= z5c{=tQyiQ4WvP`(YNH3e$MK`P18nb`$Ra~@WuWI4aSw}^b=DPA(|NHJF{ZO?G4bXb z+$G{-k-QYdRknCWS)cr)S50&iAJ2tENlF?50^qG!FA&0d37D{=5;7?|qr9GPEL zIrKO_A(IgTjYH)YcUpq@kNS>DKfkk7f$SW$6+n#2uf4HOjXd)j>c=25=N4)uCTFf zh4VhXqxaW0nFfjOe7(05p%jiM7krc%cVYma;{WnG6}INH^F8sk5mYx?ElAib)-wVP z9i?XUIvPhUnsiJ|4?*|0{0Xd@Mr8v#v?Ayi))2f8h3N6QEK%z$fR&+rN)pLlSx-{Jp$E1o|b?ov|pPGx9nl%%ou_s}%c=OJ|B$YGAed5E~Qb&7h&*04gUr(W>0;pSt z?c`=rCKCUO)BV2;(gYE|y!%x(x;XoL{0IrHF?>CPL$~p(F=M28`^8yZQZ$F=JD-=p z%+=qZGR7d!O&|D7zxw8@I7(8v`Bc5VUcl zvZw22sINC7U#$<@XX!}zJk!Gt;$y;lb$f?j7H{1SP}y&^or4!xW>nbA?$Gdz3N0uq zI2%KBByi6MCHX#}N&QKEfBPGz|%Z!5byNWBdZg z|4u_06)p%%XDqcG&iSdU>{Spja@uut32PmGL+++Gcm&HqPkXnxyB+!b&~E1OnfUkM zJxOwd`-?J*mqudbaxZ=Ht)Cbf$f6l0B~G z`(ODFgl|rBA~zRDHK99i@6Q-xqob2KdzPHgbsC-{(CxO0^sFNp4G$N71jxti{h1*` z815GY2CaA8SJ!Cd{Y(LZF@DwmfQ@3=02?$W5>(fI>+SQH9&sxt$7@ErRJwQDy0O0T zd31CX8J_|`s|$RO-v#Yy&-j|Ir=PFJ!R(P_DyG4#o~4{0ZMMxBxj@?T^HFQCmM=eZ z=4GL8@9y9!Wfm&kc>Xy#lPxA2rMm31b>uNWQ&JPozX57OhZ;mIF_*=`J)}*1ZbkH5 zf&Y+63Baft3OxKz;Q4=ZCpXNQ*-)Q84Qj0ifPV9vw`8C%n$f|NWMQr`W@bnvza|W{ zf5&|^LV(p;>L)srij4nmdAJRn`u0EcLd+{=x_H1KOZ1E3~VusUscbmcp6#tl-7 z{E^4mUkl{3rq?I%iGK#BPedW2ZUWQRZ(W|&wYZGHkcMFfnRNvVg2154-=|-PhnT-- zoA9FuGCu#~tQZi#7+mVFbaFiBR`~v3@QoKA&3@BfxoLQ5zWwo({cqCiJ_F1{`Ob(N ziqZV(S^n(_fzJ-J#b1VdA|!yhnw2$WYDY)MdhbgtJZhoOL)x_oWHw?i{(pRqgnu?6 zKzdjn%XzoFXec@M;{!b~GTc5gg0I^s5`MHM)^pQPrP!d9o9*4>9bpS(VUKBWq^8-^ zPN3<3aWlW8?(R`7Z*N-(4IzB%tpDN&5Pn3)Ez)R%1(Kd?w~gUhXilv9;tw4CVTC39 zpFI2ci>wV=q}I-@ARfVOK4LUD6ZM#gD3@9v-N&@8My=EUQ1%dW02C-m0EC0v@(3jZ zn-N%zZ+H*LX3`G(q%0N=IRROi73ZI1-h!7DN9T)zXGnmEN2uEpIqD@ggW}kjJ7`kl za|jGjr5%at^bk926*E@b43pg_o+2JJ=Y#CcyrLX&3MY?;}((%gZZp3+UMz8%u zx;V~SdOuD6NMP>5K3|T$f6+yZzst#YVOI2nXVS6mAjjb%_Cb<3ciKhCKXo`r5#QLB zKt-umEaIIhAB0#%zkeQ4&oi11rY_jE!<{%mxG!KS>z{tUk=^k&sUCKfRQvZr@l-PP0aLxjT78M z@BF2%n~Mu4)nAdv@5v_Y;CZ#h6e{F~51S_9o)FOC>D;-e$Sk|Oyjl%(3tpYv;=Z_? zCIb@2HuE*{EJ`%#w6?rx6Ym;6H8k~ma0-SNhPg>pzrl*NQ}z(}0e6JIbojhnD~vK2 zKVjjGO*UTIj?gP~w-e^S5PTgg2nb=*q|>*F z4(rl1Xw%KtKf?L`u}r^D(%2Y3G)|n3%V!!4iR<7l~E(xJ|g(O2lf8O5Z!^5$#~g^-Ikxpu8xC%`hv_Gw}~L_|M5JU;$-A_$nj z60>W41p$CuG8e#&_2*( zhp+Dg7W1@7a7oF50#X`nEFQ{R#wXw}ZKCx|thT$3`%w==L>lE*+^4L*w22un|I$V& zOswJo19<9OWs5(f5$uNX!BEV3_?cd%Gx#iHcln&ZwcNi)4vkMe6BK8i`6u$ zEgrk>&KQ=B?9fV^#NSoF4b&7icCgCk7u#C>g7>s;aFH*4G$ralr2bK9xBj)uj58Op zR8L~Bu!2yIy+sdbd~X@&nrKDT!rf!CwB$_=&Dft#^Zc}I<#MWzgrs3nN|}fx_haIP zzQkkaHj8^p>@0uF4O<&t>mdEfNv>Mext>CJL1bTkAo(4!+2Ym5`V;u*TgUk-I(yTj#`$O#X`LE!Jvj<>yynQc9Git#_!BC>g! zW@|E;`o}c*MGUegh)WAqd7;sk!UzyV0|;srW>73y(({K`=U!xN$^0X(bqG3xV`ySV zPAq0DrI0h}%F1Ip(rX;w8{g!Hy?M!{4vYf`1_=oxt9I)X41DT$0|{&|RZ)FS9bH{t z1LT6y!=v7E?{4YAG+`Q#h$iD{yAs_dy|bwBs9t@U`}QPm_(uRQ?ujJBjbOla>Jk`G zFL^zb%nM`;fN#og7MH2E!D5fx=vG%{y}pk>C%u@2!$&zAVu%Qx3|hu90KYQNTp!IS z7Rf`yA?h0aWq{O5sq_DlT6xOF9?{N&!2x<>qv?l|arOqlnjg)$Q8w>Xt4-@#i$oR# z?!*xK;-$OHuXKnjf80vqH-N7`pkP$zxphWyF8m;H*GX$ZV82p{dZN0wCh3;<9oPSy4t?`c7b|VGf!cym*$H8UwAapje*qvplDN#Nja{9E?1W}xQQLKRpRtuQ${b7%9NOSQ8KTZAhqf@7)X&;<>mEZoe=riX6t zXPfX33yMyo)*vQI3@u3hsHm?W#^h;8H2RbhGGT=&v1(|lzg5vOeQTXvkk2x!4qIZiWMg&-Ssd zj+)H?ce`RD1HRC)=2Ew9)Ol4i`qV`XLm!_=Th_tQwaub-rc*Mdm-@HZon)>TN|5A( z?yJiSv2!;i#-CZp1l_d(5H-#6CEJCf_I9LlRr?{)LvOc)gZzO7SR&EIFxRW&X?xtN zs=&HjVl6o)OjR2eW5-P+i_k>@ElpwVxtRZ`y6}Y#VYn*(l|HQ>5>=C z_vLL0#Oxpz(1Sh<{BdpGw$ub0drXTin`` z?^u65OVZQSj0`XawfBse+YI?y=Q&JtyIz0zt{+c8U%VW$F?8KiMa}Yl4-PM;A!Z#1 znKhf?=EC*ekIHRx_b_f=Bl&AFMt?I=B3xIBD#N&cJ+Rs>V-x(*sjR*xygkHFlE^lo zb&7awEyG*K&`_1cpvXnP?SuCUpvDp}c-;|%U1K_szy*joE}R|_+TO1C?A`gaZo6zh zH#b2sJ(x9|7WBR)`t+{3(v@LOH-Mr>sXvTncZaP?U$rZVsJDv{!66R;8E=qpj#Fn5_Y$tqlYnfV>Ry*o-YGKi914I$8`4L~2TGPDV z$S4iSY0elgMezzVG|G2iDt<43&@v#605StE9(3t5GDS0|B%PnrYpDM|1Kt4lO+7b9 zPiCF2Ufq_yEGh8k-SSBk+>^MFIazqMn<5-cnULmP-L0u@XTH&(@6a?`JIDO$POqQi zXk2(=afCjwIX+<>;cIRp>ZMma3nKpEHTfWTXk|Pv;yr?aodNV^MQ@7XVJ=CIL+{s$e}`?d=LFYD7qP7f&^~bZ|a3 zRmV#P>bB$qBe)czFXJTSXUk1Cl9#r(yAh(&u2W{XFC@Y^^F8ldjO{^zc zEneZeW?tNj-BwTDn4ab0JwTNQ`Oiz?)ZBmSi#DvAy)Sb=YUm@s-n7u2$cJ#rX0p9_ z@xIf(;RAeCiJvzKIzIwC$kS3k7?(~aawhS@OwPLgf&rA%!=_+! z-g$id%d0y?61f z(iI&p#W3Hfl+zj+a?Ptuxs<87)M}_x-od!(0CXgkUQe7^TG;jZJn9brGmDM+gUz1y zz};)f5m7L%eEz&JaT3n_SdLW2sC7dao}HtPNOWD_c1-}}p}lyioc>UBVx8of@L59L z!$ay~lYE<+z;2eilX9IP48(=#4`pDcYjPp=Rg29mms3|je2ZSi6N}Z+Ecsx*T_I0m z`#weeTd}o}2h*{8Vc@#`7$14tlNb8R>v*nO+9cZMrwMgB-0K%y?h}=Ru2U%`tm-?> zEB!1)yya$g76J2@49MPQ)$6pvq&BwJx;94YYKQ7!eOPvCBkJEM&|{C4V$*l0y3f>ml|BxABb}s-jJ9%CVQ{vt_?b zhVD1C7rBr5oR-Y|*;_YXX!X6Jl^XVVOP*r2O5QO^y~?648}v$M?)T#P1v_0R9x zrbR(VJkxJZYl>Ip}B$U=a95AG~?`D+h`V^ zLq|ULfi|JI=}*4D)>K+rW?EX$4<152HYg3^yzTBlqepUxez&B?%p~QB;Gj)^w{hNT z?GP#xU;7VPcitXb2Z#Qen%h2V(bO#rgLpq_U|&yP|IKNWK=O}!{&D@mavDRy&gpsG z$nl{M+!34vnE*jpZdCw z&(6lq0_|dn9Bv^B;_5U64oR0AJIU6=I}ssYM@{qOV#(ke+Fug4+)Erwt3H=5JNo*j zvo{{T*3_BuD+h|JLIcD{LM{gRaE%=w=)mLVu`b_ z*eYgrG1Rvf_Jy{ILlvE#cRfP6jXq6$vrg|yYM!6O^pi0R)R^eA44e;2DLcco3zI#x zb$$4l`}Z5^OWSOGY{s4Nncn@->CP5zE6LK892#l211CG#$q=)kc$`Iw)Py>k_a=C& zjqR)ovRIWr6@(36u;JZlo%kNgBna`jY$MWJldpziAdsA-L0wDaU5d&fH?mB9YW#AP zCIX1_eRo6Ul~2Ps73xxo>WdvpGvGY^UDB2+gseA)OQC+5vEAL(wYlH)t_aZj4GY1n zb2&af=DD9gI6an8-dncjOd>jLIfW)3Bs5;=-iDLnEgURKj8Q#d}qD8qvU*2D3;;jojhUX%&OeQfu%0fyt1j z;Ut!8d2Jy3@ItA9y5L|^`&%`MS=28I>*Kk(iM6@JmQG=zT+?kvwz<0pOIerY(Djsy zRu?r#IaWh|rCzh82^VW<3(yo&;#+z2)XY%|*_*uiTv=HqIxkOSDK|;)C((^6 zAB^PCy;OgtMSvvMcovG97A3}|U>(?YZcH~>Z8!UPdDUiPZn;gE?r(B%N?kvs!!aNE zv;1Cy;_9V_BESQ^740-jKUKKg^H-*w!O`E9I%nj_1=Iy#L%C zlhpnz;M}5D8nd%~TeGUI4bpr58*-2TE^bR?b|6Ekk;)FSw*KcqCSUsFHvPbD!aSWS z2M4YH-G-y}^Ltz{hnx5G-CwuUG7n*SZB*Xh|K{)T^pOA!6KT53K8W|}|NNOh{dVtD z38V{w(anIrk8A&S04Co&KyKqb(l(U)w{QOa$F@0QK0*@1<7xc;!%AMt^lHd1Q|A_M$B%Fn3w`YN9+x~N`8;Ec*GT&@P&lZ-MRo|s!PRO% z$9fKfiEDEcmA(;UXNr2?O{jW36{CaK(tygvdTa8s0wb`?MeYQ4uO=nBDg(LBExomg zW0|{R5}O-nrM5}^L$>cHp^E(osm#i-M+(V*LTx$WX&|)5iBT?1Owu^RTe_m6qS0mM z#q={?%Q+3eZ{ry7UbLlhuh@S46P8h?f6w`bLOfYXlwhhub06fDvG46< zpJcz3-3m4X&w#7$8>Q&)n_v??mPYL{{&>8YYxhbXAM5{iBLg9kdD%(H-24-8u9pdk zLo5vt?!4TlOQeqvjc)!spnKs-24<36o;^usx>?-xT*a z9ri@rC*l{J>$wN2tL7ZV!%1n-)h|+ngo{doUbU9<&HU9K`xL#OPq6XSuf6nYQM$@H zkkKYX6?e4nSCV>r$$m^pW~iAorT3347u$^->e_;P8!ECoOGpaVTR)>r!Q%1c`!d4Y*Vv z78Uw2=RM7}=-njW`%nUu8fTfZtCr|8SPxXu-B0*XI7|Nr!)e^qUjH;v+_}e*c+49VGeWf&a(^)JDkUIwaW8X76uWFS^lK;a>^HSdg?5E;WgLH%Av%B zeC_s}S>z5mDD|;@6#Vc^y>s9Ti}8-uwOFQ|q-}<{GUO{nejef@!)E9G`fTn@U}HgS z*Z}aL@o({2c%=->eCb8);W02UAd}YPlef%ZTjSZ&Id{90XypWltkXQ%BC7+qj8(!RrZCH?RZETIZ|c;5(*WAUz@5z6tNKm_)jM7WZ$U`QeqE<92hIsbPt z{Miv=#$U4x;tap6jiqCJZr5o9pC@+yD3}`AOJ5dM`a^rZ6TQ2xr$H}9cf{+fTp=22KR6N^0<+bE4Hp-J_Ygk5QLz)vgugNh z0rX;Xb!sUYQuLGBX>ZtD^jNR9xkYaI;y{ty!_cqCH@cL8;lwTDVV9O>vs&LzrtzRs zlavTzgHWD;A9=gCfD2JhA^z-y$bEq+bVW%(|9e|odWd0 zxs-|$!S!GTi-ZNsGgClLtwPls`8DBUE|^?rRJ%{yx8&v)qfYSdsF#KpFlj8+-5Gu( zHhNYszMVvC)!J8CgIuhZ)HI%UNlxQ)c#u}godi*1;yPN^sd|3WAa?`pVTE=%tRL*; zMh>MS6w=8UYu+$`YkaC|sH#=RE5m>B%yy~uaYTz z_6nhPTkv8}TE46!iR?;+c;;+}vKuC(S)sm^7fno6ZFl2-?NYLrl5*Op{?8h}9Hr~8 z5U8%+yBvppe633{WBD zwO`T!kn{;YC*QNs1Rt|-GyUL1WVv0TfoH2gNHxb#sy;VBl*Dgo>)gmaa_a=bmTy^; z85ALM{dI8_zJBX%pq5aQu_Eeoc1X11xva3lAS2j4(XzRGn%+pzBH-|?s>HVR4*;y6 zgxn)qlzIkl?2-q-(tP-jVRdqyC_f_LZIx{Ry~z^#a;8jD$- zM19x7?Kji{o2TErjfr*1kkJG+=jyDojIPCh&=Hi#$>^Bj?=Z7|Y`^0{d&jRVkw#iW zE~3WHLWPKqZ8Qs|^v??0S{SGfug%!VJ&2LLXJ9CxoT@H0y1tp6U~!TP5Vb3Q3gY%( z;a)cn=*4Y9C>l(XrSnbe0E+q%=Jg(rKQUn6I@WI(>!1`AtDt!&blSF&s-@q3bT^FkTBqHH0;8yjTX| z;;Dp8u#~8z?z|IRVV?*Ct`=wevdbDi=rZOka=Y zR@Way1ry2)%(8zxx3PZe&Ye9{*C&&4)vS4Mk^JZAMp^mPLMiywwsz2izNl_p$ea7! z+<3>Qr|adOs5l=s8orViC>M2kd!?oQfJQ;wI&y8#tNB*GMsVO-RAc@XNd~sgl9-zC zj*ekNn8>Sj$!o1Ot#$VvG3S!w1#PklIFIA^LH)Rhok-64#S)|)7FhnyeZt0zk!NV& zS>Fo_AV+t^ZLSf>djJ10_ug?$ZCe+pAc&%Z9t8viEJvz6QLeFyLRy}#annBZpbwbz$x-r&4tkwRph;9ndrMsK1@ zq-M)TZvh7D9FDa;V4feMZv}$I#yMsAKbaW7E7<1OmMc2A-}fHCJm?tY>67UeGbZSP z=<=#@!R^S;b~j;EvV)*pXa75?1OJf0?~R;|1`K9*U%~S14wW-{p4?=5Y4g9K#s8&u z{6YYqyT`Z?bpTHMpDPTUqVc(zw^p17-o)QuG`?X5_?*t|Er4vpINW3pp9Sg|vhVKZ z=3Y@0EJ_<7H1?8TzChEcEXxhg?AX&^DPG7!T zUwI3I^S}MJ7%TQ4KnDH(JQEnS6rtULZ3SB z6$WU575?3(7JkjM&uYvQcLy<&J1}FOf7TTLSU|}g^bEmTv#wF_E5VHq*?c|buBo)% za~c@CGV6A0QF*yyVM!gw-kmh;w6?a^A8pOMQs@Dc+Ia^L>3wDV#dR-gzxhM4LY~ z?)rZbxGn?p9X{VVXYi{+BZ~1^Ppgb=d(nHFjotxaIrwlhi!VSFQ_gLqq4Oi55d?9nVtkqOX;vQJ?^xvJ9HmtFtcjj*2rbs{006Cn6mCbBTduv0bhJ9VJ_z9Tl() zdQ6@vJd+8=^$fhC@^{XP>!|5X9f>r25baGN^NQgL>bf8lawH>f?pUtT>`zwh$1ask zi9RJnYN7d4=#kc&dOIR0ft!?THowFA2u3{Gb43~y2{AFT6gk^C@7?u0f>*WrBuqA; zaRp<#*9W0U^>-K5cNS7*H$(5)<6hy`w_{GXnny{xec|L^%I5Dv3>eJK#hN*vQw~dR% zctTUE0!^bDDG!L6GHYH)p(YH1R0~%MBoHf{EAYE#l3-S`#fnSDa>w z`@(gvb8D3i$eb6e)Ewb24sxMM>Gpk#M*5$kv$7$3g$kVwz2jcU5jCvrzQ~zFF0e{! z-8Ejj68=MVKHXZBwV$?jPACGe!TyeLESSD-bC`4WB=aDnR(EeI8*U+rV@W$x&81f+ zsy=6VSq`^W``8`dx%F^w#Tw?jqN!3zbWm~{BFP4v?Bv6J9<4YlIqwTs*EfE~#^a@c z-u#Y#mzq~!z;2Hn-Oq2A^eG^<;n#^uuiBVzg~18-`-LehC6}?D2HV?~gLP(R{`8%v zPoJh~WRzteCJ%+<3LPqs?q`U;VZAOg3VG!PG;n{Dv|rgi*3P`Ad*I~NbPYLjl1o59 zAh$^@p~PJ+bX)(+VY-QM`(AcnItyHSA5+miS~Ku1nQCUvE@r74C`f!a5d;ay3(}9N ztFI@IJtqK104CpPVd;2vQ&ukli_UK_Ns$n5VL4=Wyjx>9-)nhi%+e#J66mcrDlAVo zac%9Iv_f-`;i^%{F?Kt!Sx)X+amnFE9XxO?A={-2N&(Gkbmijqo$3C~1hiiW$@wgn*_M`=|JGzBtk`K0S_>y>UZ_H)tb6 z3Ou6k*pN9^x4RY;Q6p|nLcNdUf4FiokW8E#&Gh=!1RcB#fbPMjuHOL>RhD^F@kuTK zM0Nx=CU>z?E#pL$VbZB?A8S#~QAk4R2`2N$g22^cy$9h&9X zyML*i@tIw~6IbEu{^^Tm0oSckYQPbMWH0xX%*-H{eeXCzlCq<6ioFc|-B@S(2E$|T zTx_BDzx(KV#y9Z2sE$Zka59S9fLl+tUR@fE$EpWQbvtj5uH=b%u0YX(`R*k?#t;G15EO^Jp_L`elx{T#J^k**=6pt=zn?oy5 z@pH3zjTe4yH?n=L%`1osRR0msk^Jtz4UF4$W^IxF8^?gv?Y4Ea!lB=idPJ+;2QYLjYb;CI@phYYV&vRoZXi+L>W zc=w5EZf1K6T*8`F{em-nMf25kOY5wpL(YDWR{Lrk-KWnu`hBw&62~91yP9;P=7ho6E7+7oWX%+{{diYbR@T2h37)wU0&Xmpl?NiUhlkw zWCs9-9bREyzr8qf#e0J8;CME8QTd3QZUT^q{gx|NO;MJ)dI7a#=I zElZ7ii3`%JS{CFMvRmg5AG;V&iuavSHB))T(Xv51>VNY8u1 z2`P}$rfFG6%ttK+aN%0uVPb+pq{gvu2V2*x7Reu+7>$l=NP+9uiUx|Bnacg5p{Zck z)(c9$h3zbnr4lcbEIe}RG=eF{SwK#OZG6W$noNXU(E3T4fMx?rtKvJ3lrar#ME21V zgHIaI*|?bGHPt0sYd9#mVv15|0u#-{R{(L(#IV~6wV}-1PwrIQDqT0XF!f&;VPP@Z z>^vR9vMsx6)#tu)D)67Os(&&klasdVUGByG~W>u{QBO?D9KS` zRi@co{(BJ)38|NY&U%*$6`q*9i?JGHk`9;PY>vXxJr%A_UZ1@gy^Cn_f6DYRsxtLt zd8%$Fv2}!4y0y2}rHn}Hv?+V0!B^JlJP1i|+I63Bwj#DLcg62ixOS{Kp{M90mWdyW zzo|txbX^;q9?bAMySU6^S>-gJ!{J((+3rDEsFBGcsd-Hup+Sy6nc@HXDdf?qpW!Y; zpA>|J={{cipUl4Xplvgt_i*E;I)*!CF&Gr8s%yeU-LpcRx-7P4A`_;xWD5ukqy}$v zQG32u>`{MH)*gs&HU(x<_o|LDTXLpZLi5PSnzk;#3RpU83d*#g3LfhrQ|_Zi zQTotuwRMu~f8EXB{{;9Z6uRHR74Ghs9t{8X^#1+(p+<3kZ#$fgY`vdFfJLMIN?B90 zvM{Zz!`q{1v0c=gy^yGU#F_JLX(~cUX2VItI;GXD_X%v)_c;vH)o_%8~M*$xxCHtUyy`Toqh#zsh#U zUYfArd~yBA!ME}^No;KA0O-Xk^047S9O=(hK>Jod{1Dy5qsLEA9rUjM9$n>$86efG zxQU|^{^v>YuV17QITc_~vaX8*TwuVKE=NKcIEz^FsEd!YTrFzZzmvittRQzW{SNWVjf0<9QYW2j-?yHxLD7lE zA0t8km_q+{IBz;_ry%ayjwW!Xh~i#*WH~;eNn!nA$L_EO*;Ms##urA#+X`JN@JHVyCtVmL zBV+OdWbXeZ{{8!l_-g^DCo(wN-u#?snd$(15_0DBYll-{pMPmaG#-I^k4FEn=Gl51 zwCR=CBUkkzXYZ-St#6qFlpd&4>vJlc6h;NMQV*V;Vw1>tbCu97@TxYdk5IYvna?On zpRy#9k6Ym)nXV?Fd;Cp9Ylgj(KK0ZO)a~1E%PR5r_ZM$G+1XeLfBpJLwfl4oVE8qM z44~SS!x~JIvKWb@w{c3yScClC{iUNi@pGD+z5#+FIS;D#eWHTQmtEvaqVJ+CIr7Ae zo-X8jhj?G~dwi!7F#6so?7w~5 zC7ZLcvpe*CwY6Fb5x)!6c^PdU33KW`A0?cxC)Vt_WKCT=d9*j7N~^a4 zuH?`eUo0Rn_Y+(^JvBA(S>-q*BV+7#tR96U-_AT;k&`W(jvL5E?n11B{VPuVhw~UI z9tx1Ojavpv;4YnD*MACYaFr=VM64Q0J^9Oeg(qq)+P!yvb<)vyzDLskvHdUBk9Vk#1j*M)77uKsE#6gmCt2hNOcT*8RxT{vPz*y(djN|#alQc zpM{l=#Ex99mF2Dr44f^*=IX~Sm(HQI#%us^?QJ4=W|qSgv!t8jWj9Mwqa<@C$CWIW zWY~5mW&zk*P@?>vC#A$NOE_p)z>6Dc1Z(9Z)`KK$z{hqmmKole7nQ`yz4NRka(2(~ z%)F1iF*K%;4aOg =4CUi~YyaMDf_dQDh>TT>7H9 z`77>YcLyT%Bc%Elu}79Bg|pbq0fDDq_ur*Zs#&db%@&yi+tShTo{+wBMGxA57X{3K zBPg-OUJE(zr2(M(M!}#pRSe{~i$&!Uzb_9?)gtY8nW8%-p*oL)5=fM*J4LTJPOiuw zcR7o%0o=pAnPEUbXu$OvI6E_Q)+nAR(Ye^O(^z&4=}US7o}qMF z9|%lWPrd;yN}JtfT6i-~=dJBG7v-SJow+etRB^{6uEbL%z_r^l$O`Bz!`g{Rohscp zSa?par9G*r!yF*`_G?;wZBlXM!RiA-EXF3@;&bX4LeK##1thQ0;4900SB=cU`{vMT z5eh=fZ||zY{?ve@Pum#c?r=b*Q#X`XXWD5=*LSU)B&CJ!l_{7M#uIaiz`zx*ETZl)E#KIs3I7TBROdhA@|vF>$I? z+uyuo@eL71fMJQlWP}7vro5v*b!v0-my@LK^LeSty^3TS+DkqgVq04JXtcWY5uSzl zWI^9bO3$HyB>ejNx=>2a=NCCyi-q>_%yH;06xB}Qmy*; zUpWviXzBp+f6hEdYuUkg@Gqzlau;|iUZEx$t}V_14_@(6<#D?lkwjU z9GnoYi-2HxB=FcZnl(g&PIz9PI3Hc?jus>mL#prIzq>iJ^#Mft4IhTGh8ZqoY1tFb(q$`yD7+pBU zjVllC zoiVYSW@XnlXN^QQH}M}02E8qEG>qV!E3AH-GO=){OyEq9)nhD}zV^GZDP;zRuUyv@ zse;+qLx2P$*AQTKUU4S}@OzGoZ6-hGs=>`B_e#XZSDGQ9Ntu8_EjIp`OBMHuk4gne z6p*6((7S~O`<$@Rbp;9nfNWWFyQ)~src6TCc$MFBzyM8hSG_N6-TCNho!spJ%-%Iu ziTxT|9=nuth~3R7=tVYmU>nnN0!@jVBzy(CBz^fYL=kH1Htgt=F_l;otYJPbKOM!Z zWC=*GT+%MdAEToc$maiAuKzwQ{~&hSNen~uwNemloiIS;@@dL-;yIfSd>Vm6Qy}Dkt)2y)Nwwy zMe%*Jm8KNaz2eiWC*SC|x~C1J0uSHuoFnN~xRSI+R%eBo!`)rqfR%0{lfAec#tL)R ziTxPC0M*a3@BGXfZf6JywN>GV_P!y!`@Qx9`WjF}wde-w$rA>(#~AjvsJBhmaIFIq z&&R`&EAHDSE5+5-x8U}@cW&Rl-E8nHnTJT*ki9@MV($*o$6lq$%_nFzqZaaaMQPY{ zygs1HwthRru-F8~LPGTo8d+qNymnK#wRKtxOQ>!et*Myvvo6*9CSm zz{$JcZxMh(YYVN4*-p5O1jO`7?M*INTRe5frFTW`WnC;+sZd9|dJ{Ay@FrO!f$P1h zWj!{Piw8N%XxT(VT8fgKgs(rXJn`~hw!^j(Y)oRUmYAZn37{myoVM06qUDS$G59?& z>c)0KG25xLxoTnr2PT33{(ddrrBxQ~Pf0dRPhb?$Gu0v;s2fYse1lWWm7T+Zhf^)Y8=KY?drc4tv|i>AXY1m#fz#=&ZK; z_PoYFnJ_yI>TsTq6H*fHE?QG`vt0dZ7zR?QSWNe5t;^Y2yeWZ?T0MC}?`w!mxEU%@ zvS8z**1=)J5e7tV)9t~vDL@+jOb;HZK+k=Fjl6$v#R~Tvenuu@&B&Rb7Z16$udI1^ z%uY}1k?5?1@75IRzK^ysS~g$L_)Q6tSICzt8y1y@AE~u>`wA~3%tbjnrG3TDtY$d& zR!7v;)xpIkeI)DbU*|wd+E0m!qT>b(fBLjrL(3%mX=1YV_Hk0zovDt zI~#l-yQ#U2-Y*34ohVC7+n+~J(EXI|5RiiZy0)8J$s8)JI5|1_W7MxOHJauxkOWDJ zg#!~?q{M3SGMNN{9buU-9)RQ#hU=3)R)Wi4AOXXqf&GJ$VS0bq2ppWLCR$_MZtFA! zGpjPBh(|if#}5Ow@w~Xa$>zH;4GXMU32R<3Z~}z>IY}fPcKf(Txj~7NhDH%j-uI|% z0hBq%+-zW#%Yn@Wvv88@S6&yTIWno^xh#>sEX zes{hLj@`&W4W(U$+PL^I^`9r#S+*k~Fd)Oo$7gQeb6oQ}R-?6(`Lb%_wdo&m_(WKa zblhToz*3Fs;2(UF4uMo_3!?IT-}PGVT2ZtXffbhF%bSa*JTnO`39YfQ0 z8~Qr#&~G;sjV=ah-3=SH2jORD9lm~U_TTN^Hy}M{;T$vgBxZCw1c7DK9?Bt|)4`f9>0H|u2; z$)OOQ82QqOxD2>9&e*e`FZeFhgFZn6nN$zi!!tm6{aq9V zP5_QH%8ZFouvME{6tcK$LW7*w3bsmQ#azP*Js_~f@$j<+QLzurpB2na?V&#zmX`Uj zil8Yye4*7{c43tY>*J4m#6+*P$~1>jrVoO2w>atd_V)O#P3H>vLcB>Mf>*9&HkDs> z9@U*xWLp3f1eFT=w?Kr7xn#xY)5-kP)JxI^X#E~X$}4+b5$YGlnCj9;vF|;v{4?uo?lIh60+eiELOBUbD>HN#Dzx7Ebqa2V4g5#n~f+S@}GKALU`)9B;w3yGB5 zveIasxwR_>n)O#7EaMzxZ#Zs%ciL7EHukg&k9HJD;wBl0|dF}g|gZ812 zX&Ni3d$xWT=vpCms{i7M6p(KE)2jD}eWMlwH%hu#q6ba8sq!}dn#^qB!IJ9gvyEKR zYozdJu#exiY;5I{9c&9_KbyU*(;38?d%J3H_1ICGd?+Z8okdw5N}omH@|t$cH*dWd z@SpDwcgE;#CTz$2{Q5h|e6^-E#{%KaCG+fyVUc-WyrqA;9<<^u>ykT@J*2LFp!+G2 zPt#L~AD4xW${HGTscuxA_E!~X#HcZ^%!jTdKXT9;9g5A?&tLQ{&(t zKPTiWCKj;w{moK+CX4Y-aS%xzcSSKUI5- zT;X=Nvi2rxiO5HZ|dY)7Tx?dr^IZ1t()ihj3Xj48C7V9{LIreh;}Vk)yb8jeLcS`;3ZPuEK2^dyJe( z0tK;%SquniC+V$9&JrP}NMRg9l*d_n`e{I(W*L{d2~vrE0NSmT!7NcykL^i?ua`o` zEk9=5Ki%MO+xV4KB7(@Z3hT+8c3Ep*P7rr@IG`XJuxdX%3;3dcpOOG-ppr-a5T}p- zDNet=X1Ulyi8$fIw4+N|?8PoabDfHIqIsa}k0I1u*3`8c^4~L8K3y63kNX?Wv2M-LrPEdqe5zcKnW0^(Uw zw9pUYOh}*{*WAObnLe(RpfR`>rOoOdC93)E4zW1rdnZ0;sq95P`boL^`zp(@PLfx^ z_D24{bC9L+mZ6TH@JAnjq<-#2T!W!bM)+#kED0}WXW?U50ax$@%r2C*8D1sBy*+&& zv$X&KAtg$I6Y+cZ#HP5a_a&&!&!{zxNqVDLW$B}9A7Z(kpL{a~107DTdOcF5S$+<)It>+nZaRE>^e%dE;L_yj7K^(^5&ck^BH>^u+h1z^z+ZL@a76x};R|E1EvC2tP6T z>^x4SEc4)Va8k2^eT$aP;Nd#VQ@AO9$8@+zgUGX^dFOB)T&Z|{3w9_6)oWdK)iy@A z{O!QdfF}=9b#rM!O`*!AkdwtEUvUriV`ovO5ZoT#$w$&lN3PFH($y|JKc&zsr@w3Y zKn#ltg^n<+4b&be*a~2wj!hzuv+%C|ygzUt zP}EOSX54##7(su(2SAKQ!AmsWB^d?I4>`O=EbA22K`o8NRDhGbuksVI%N#??Zm2e_ zS9>$ZLd*FhLj6w}_p5zZ1Xo;C&7SIL#?}47qRavPUa*pyn<+_^?;QP*{(RTLQF6wW z8623s)3w?3uL>(bpzY7q$-HU*}<+SXA6|n(=qqVTnQJR zV6=F-95K++uKMP3c)fd)y^@7jToq3}I`5*As|Qc<_Kq1MW0Sm4b}iuif)Z#c$9Cx{ zeoECQsDauUBv&m*jMSFQzta3ttv`&hQx;TJT_}#d6UKPU(f19VvS+Vca!9Xrq9!R@tr7B1OZgWA=|D<#F$6#}Drfn|gd`UxyP4%bXU>Rf=~kY1UzJ@^+Q0Ho(x#i!Rr6 zp;4mo?cP$u-z*Jh2G17sjQlpz!M?ZIZb|t0BS{uY+l_bL)o+o8i6kc?KoR9^DmVJq z(l2oATfENz_Pu_5=4XAYITtDasy^VnH`i;AFx?h+Nd8Wr(xhj7d&VK_-}Dufsw1;m z@|;jsjPmN8k6+i7xac}b-x6reel3vrCow5+V;k=k;|S(+E6H?g@py1o-=2-VI*6% zX@aQNx92f#Rsn?kPgvRGL(BvohfaKEw*wg-jxU_Zlq`B_rztU}V&_l9N2ok%zZKZX zvts#3)5oEk@-2-UHV2q2{IgxZh^8bLdW8ix8?vunh1GXgtJrQYWJc)j*_ux7O}3H&;QhKYVmeU*Zi=nh^9c__zU;NRk7r_f24c^x`0c_Bm4Yp1zU+XysJ%M znl&YArRCW9stcLTZxr|r1wIK{zYlmM&fek%LgoW)o3R4fL%`vfN{mM;E8p(vB^{Cs z|Ec2=q6XvjNZSl#zLs+JpN(e9k~GS9e=+*HfyT*09!GvY+z1O1{Dc2#fz)G$1##vs`esMQMehose={Da&`9#!8I(n7N`9!UE_68Qj5t+9RI zm=*XR+7Ias{PtY0ihOu{VEO_`^n9dwlEekR{bOm|f6y*|HJ~?1`$s#=gJ{pcZtVZt zMQ?!_{%p>XDz*IW?STOq2*P>76CMQ7lvo-qbf*Ar%NhO-=xhMj{kwuoVZZMtX{bien%B=5s0zprD~Exrkm8H<(TMbFvb8Qh6_FgKld}8;6upz+(ZxFr-*)9~ND0R9JZH13!C@J{F$`0=(v7ZfgqD*yIC;Nj7$ z-uILfhlF#jnmO3cp0zPju~2D-3+EbZn;Tk~-)nweQ1twy%4wSghC2@hF5RPlxvnU& zT<_ENURi+dw~s&TQF0#33cGUmqmjBXDcyh9{l)|+TaCJ)=CwaZ`e15O$?csTkCMJk<+fg*}=4DOi+%0y4u zYtmPZ$&MP+Iro#L$3DLmMd&UpoR{3o*mhE1`Qp;Xg!v`&I!N?rePG2ZEWl#ZfR)Xq2P${AuPBLGT({t()95yZRM6O{ zy!-PTYfDXQmgK7ML8a0_zzNwpW5wvUJKQHufApqD2q?%RJ(7fVn15g3HSTwKuoyMm z(bnb32!%j)J(n8yOsnUiBeCVgYWwdjbvkq(O3Sc9g(B(TER|)zIAJ)fxdoBff&y(qGI|UBV`W^*`=zm0^vZp{5N0M7IhUBRfolt z%$do_49PqvNiwf1V$QcGI0*1Dp`i^M9kJ*itRL(w^Ix9lt*VtoZEN^hzdL=Xa`4=J z%<1Ugr_FKl)^hVHf-MQimROm6>jdHFa%1Z;zlA9Q-CoVbTWga*YH7ULdV5=1DV``f zL(}0Nb&Ox5?H!d+kI>S3(~@DKHk$YLpvf^%5NxKeUYKbaknRp_R}&ZMxksvuwpt>X z1l`w7=)PW3#kJiwy>7JS9}pm@q_lrAi%U`16`y99v;w*LHM+C*xn0~1NrINI^x7jp53 zJ^(bN2SJhUzgW?KMa*p=(KXKW(&!hD`lsfdo(G^Umwe=f>HqE&p`89Xick6Dnjx~x z8(UlLSgac0JA-6S&U3D3*(7&)sgmLy?TN(XB`F7v2j>g;qJQazx+ctk*fS< zd`kwTwU@Jg@oJPPv89}z?ezR(hG3rs%*ta&Y}2M{?$~RbEr&j#cerNDHgxxW%I_7c zA2;6|U+arYestxKIn-Kl#!BFzHFNRDBF$Pby!%D{C>;aWqlx`j7RBQV0rTC^I@rpY zRBa&SNlwj88d4uVO!4dloC}#p>!8hXNh=Lr$jOlm@x#bDpz|09aj!esm5gl)l_kYQ-(1`xp5Or>HdMqk2 zps<|3fw~#$LoAr$Hmg`A%NZo6JdP!=pVW?@)DpZ_lP1LM5ld;mx4YSDROAiVH6#K5 zUDlT`_8l>TMeCV<)s$;mS8kmbQWBFk;L^dcaFz7ylrmJl0$qa(rS-uw0G!>5^7 z-Q#-;!#hYVgo&|4au_V1K)1|v9u<>BKOpzji0!__X*!+}gQxu#63+^6d^(vZoUso< zc+}Y<{j$8tzE5((JHPBbbn%~k<;J*Odp^W2EXdU8b5aglZA*dL1 z$HB7JO`=AMv~d4_(99p7X{b)zf+ac1D!)4m%=KIE8>MkU{7KzKZ%|5^$Owei!<661 zyHRU}Q)@w6CZVCBwbPUjTmhJK7XB+Lk4);bA2L9@k9`UmUN;dl_84BpNyp0Wp0*L$ z=<-M5s_*FR7D*T$VKQ3|(cvx(cKJGY)^F>GP&)YI9of`u__BhKv@~mq)Dq56Mp{~$ z?7O4J*y7cnSjGDzvKdrBoHv>|bJlh?2?UfMghxdgA-qZE4ytQbMJz#%ZnhLHUkhus_M6xEp@f#SN;o~Y$}G8RblIPE?KD?PpVo_J*D)OC`-6chi_MA zY~B%Lmp$MYVfu%ocLs&OI#?M}DQ^A2ntLO4<#)s&Nd;uAaDL+K0o{L(Ui|T$!I*CJ zd(d^@JW=`x)r(iI^q+fo7ZN~ycG3}OvR{b*JoRMPbw!uFj8RSbZ5mcV-Bai{C@NL@ zB<$U}>TUXMw8pXFkvG`mq#q^`_f$++$8%X2?ze;pub*I#b;f=9yePtKKQ=B@Md(IE z3^uCim-xYZ0v#hypJRFNYA?Kbzs0fjbMaGQVf4~KsAE7cDO`Nyh7o&`k-vYf;_kX0 zkh5s_R~jkq)TCUePjm6dW9SvA1__ElZ?iRC=d2_Y1+(m+!nJ1k0sh2i;1KAFF~OX1 zG!K4SQnDzO8xpJM+@A}TIgB8tl3_P4cw8kF-9gB|o2_g}r7OT9e&^49Z7RL3wNZoG+@1o*BvhVvzuR z*{y%8{v42pzIizW>%#3)c&O50sQU^$z^BMEP5$9DZ!IXErPegw^4SNr9SEU@Yrq!eHDjgCmb3hZ z(F(cX&+_jEzs}7raD2(Nd;!BR;%o~(w{hm)JVPtG%+t#;^=q9HE`_f})$A7uz!R}` z{hTx4dOO4%Rh7{M%aeqa|PM?@~ z3-Uaoo-_7a?iyml40}ImQ;o+-(C5naWTPkLhL}W$+YR@5?@v&yFkf4&(ZZ6gH8~OT zSKgm@ab^Tt*2~J`H+LQJ^04m;AdAn*U-1vDy-GH36ko7rbI-VeBVd}=cZr55JZ=B{ z$DDS$0{{$MxR7Tufvntpfgf-u4sg#<{z(T1^n9EsD5KyAD8ul>2ZHTPLOkb=h=@q9 z7;-oJt(Yu`KV<;c&KRs9Uk|I%-|yI%#DybvM6Cnx)S0=ZJkoxWnSxovW0-y%Qf-`0 zq;P#oNxD<+`>ikNYBcm`1+zHD47DAUV5Ur69M&^wk!e?p7afyE^eiWN2*G3_ztzK^ z>eV#8J6GX1UR+a#8RZ$4UqhQq222moI~B~3QTMp8hH{8uo0vC8M-e2Ck~BoeyL4AD z=41D);UVAo1WQ>-G?sZUb-m47*jVn{QE}=UYIz?8MqI9!z8ILhvS?PdwHp}<^ytBs`53DKRH%NtoX-sT#(Yz zwBjh;&^vId@Y~h1KJ5aVoLK1q-{mp-;ZdGit8coD{K-X1&~5d~@G`FM7SLMB^J!V( z$&oMvo%fmI(|Vs`ZQ&S)AspKUtjTzY$l3mY_d8dxwFEwXey7Eu(%Pk3qPauZ_7Bk} zJ)>m8zL;1;0$UWCGn7-!G5sL39WxBG~?d$aeu21Z+C+Aw1yNBmpBUt5?b z>gz?u%(LTer`DEM<+NDLWFDIC!V%(Yny8~iOa2p2c*n+-+6Z{0uu!2?m+c7Lv;Vz> z!a(MjWfg(keQ~|9XHQnLr<<^^J)LLigTt?L>*~~4K+fzwb=h=I-QFgY9C8|5d57z; zkvOsEAM|>Qj}vQfK4e*yX_N5Ea_4*rgxl{R)SUR@5Of=RAxLEo*i&0oCh9p`D6PFZ zTmg82ztEw^ZYvgT+^|2Xx?5!=mJ-l&=w!o`I2aq3WrX{bzq3CMf&`+b_kgnq|cyeamBKucvZo zRGa5;6}&7ZyJ~^m}i)J`Pf{T`PyJNnP07QX#bK{f=nMyNlX{18C10Aea`Ms)y*C}Jn4fyDdIX( zQVe8`I^K)-f$QIQ$?{i9$b1ozW4k=4Iu+P}e{rEc(4v~poZT_-gjyzYCGD((UC2!b z&7!3n^o{#Gljfmdmf6_lf}U+Jv`@()U#R{;?FmBo1SZ(o&IIHl^<19!KWPItOMM2} z3fJQGi1S3RYJeD$M;eNY(||?E-1sDZS$wN;ykPn&rtgj^19`)=2+BY%ZxrRaF{1>R{wOJ`O~NS&D|-fG-yK;(<|NR~)-po7y;&qvN4D}) zE5+}cCg^ONL(N6v{kU{Ok1a&2t`6seHu%i21+=@I21!`{l1Ej0}b zk}cY`PDyNMrHuBT9ZX<@mA?UHsxH1B{bJ zM%Zs<(=WAFNOIk!{o^0^oqv6C%LTaGsPhWk|DD6O8Ukv0Dfx@!f4ipgMD;PC#@1!s z6Ywh^h`9g!;({3+${KqCMjHzL)ZjlSYD`)h5;ybW#S6A`r_ur1vpp+`dHLgIKd`gy zOxsXvRi53t(CwAqb)eS;*h~2V_gU}m?+221O+v0{8i<9DDk+fX+O_xs(KC7VG$jMmj2(t2F3Gp zOBpXOO~>qQ3g=%FDN1dY_{B3Wp0+w}zo$og2a(z|`svE(i`!|%aw$z7gS+A^uek8I zz`bp$ONQe>8|MuER6k4aB#kpXe)C5I98Cw~)N4&TK@H?jtRrKcW?-=kg2ln?t#x3o zUliul90erAnw^hbhXKlKezDdoW)L4BFWk41NT`-<~bB_%hQQ&Gw_kAz)-zLO-?Y zu3TK#V76A13VB3`$z6sf+eLI6Iz)5&-b67;iLq+okyUSiQwPS+Z^uLLoxd9K=_!K=-oE!` z=Q>`Dw{vXh`EXqw{c|t$84nv_k-iR$i&56;HU-k8Nm%m7h2H5Ev54Sj(lEbmI+F1Y zyf!jOMe+7yLyK~h1W$@c*jP4O3-eSrs4hQ!NYpTuQ$RC~{G41ji*yz8+PczV`ZIy- z;&Kwq80t|DUx|LW>N=(~c3-1%HNWA`ZwO)cA)J9ui5k$p7`D1&VPL|1@+9DMr~^6+ z;U7)^(PQaf3;f@ge@M0vAlzqfb>46Rg2d7v%Kf=NmHTUea{pLif1@8&yOn?2fBvic zBQ;#^`6A9ISxih!H62oOOdbfEH6aQ5>}EM}{SxpCr)uB;i}uMSTLw4$xv!=O@8Ug! z$NXfY_oa8Ltca#YH4t8U)2evar-k0vwjNcMJt1jYG=pwzB(5s3l3aB*cAW}m@4LuYQkkC5> zLQtgl5_;fH-tv9l@3}9&&;8^67tMs3IdkTmwbxpE@7_%VCAu@iw}B<1IOlTGV6#XZ z5T(?nQEg8#T(PwBJs{;O7%^WOD>Tq9ANQktr=fKm4>}|brW!N_`Pt5ueL<1)>^bDn zTEQzziQk!*NkkX$ERCSssvt}H>Zy{5f*ZdfN0Z8d`(ej#-SYt+W*RYIgY27q2V@4s zTVJwV*rctoU#GSIlLt&Xhzz^!Lf%&>Te?YA==v}Rn9&$xHtXmg1e;)vCF7;X&P>So9b3hdTb zw9cUgx(az8em8;)C)zBc9bVD%gz^IxbfaaI1I4u5=#8VVS%Zt)TRi(3vmd6!kj@FI@+_Z-yy-XuN{V3%FX0vo>U{!zSIy*Mp`XP4c5|>@ z{O!m@#h6ra7_dHm41Q(=MWDTD;uM+`SuBz63S$rwph~z2C?C#PiLP$ zTtoz#naTP7A%Fxo1bxo>9BY|!XaokAnwbW2Jo*dtDxnjqVWr5@qYxuOqkXUOGnLO} zwHiRsu$5NsA80-gND*eVd*9sX{+dzGgd`d>an7$Ne&BF+>$EsjxI82}TJxc|a_}Wi z^Hl*uEiJ7%<^fUXe2>%`JwPQhDd!~Q1PtCbKj%$FGlj8E;TezR-%`W8FbPM=X<^Qi z20>9Q%9lqduCXX13uLQ*GZh#~#Lreq97S}VzRLf-<_Q2A$X5Dq3M~Bv&Hk@g(xyU? zKH3Vn(7#jv&H-w23dzk!f;0x|^vY*kQNC3f}c|)NT~b<4Uup-8VVj4<+E?Ti9{+O$1Uyw+bAlK~q2Uc+ zm;e%j82t38Hpc#vqHYs zxBo}U(2exEl4egE;3zhKW5X-+KpF`YW4wM`(;C#);O($iZUWzJ_Fc!te?5{Jlze$2 z;U;bxd)kbke=s$Ae97bCyHB#fvkX0F8Y5>k<>S8=EbJKVJdtOWUhG(3p!8*>)|8llp1Pu6QUF=_NA*-ghH zm;DveCd^jO;T34Br3OE%@~>#@x7d0VI?iMd-}(9%-W<1WaP^4LnXECeB9+jeq@(KA z`!TE+#-3_L;uMHD#<#^G1JdGb;6GQy=baVOWgcyA>kMnM*f!_#19@4TU*|biKWcN2 zm9%{7$VMNxC4i;2xW-T_vC@8}#AtB?&vdU7inzIz-Y7N?#6q&2e(mf?jHYaUZ?Bfj zaaEt0R|OAVo~log(f1e&ra!?{weQJg%VGPu5BfeokP(MIGHp#CJ*ln@`}nyIKnWPb zX9K+>-dusIg&A0V6EBQ%^T2Mp40(2jxIBLR8i%d{ec_G_5E?xMD$D56Y6FI2$iuy#5xSCS(E&8-cRIF>Q5R*w>;eCqADY74{`pLaBbu&azXn1n)ok z#yLIiJwwarOzK_+P;Vwm>J^_lCGW3%v z^ED@SjJNQOZ4v~f38AxlY$zcp=hDSfQlM7XYG#s!L>Igs1m>FioC% zUP2o4Ra@MCVQG@rvFsq3;kmt=($9qE(WX@MM0Daq^Iv?~)wkDigZ z<7vE55@>-fGN-gdxJZjtk$7c`mze(Oxt8>T>>ktH6hyG?;pd_uZm8In_*ooA zdY36IU0S|Y|0r)+0n2$X@dIuSGc<3By*Es5tl4mr)z$y)a8FX+)M&T+4XCL>T~Ii; z>RV8q2UMflrKU6PyP!T(@<`4YzunSNG{SO>%HEE|J+K)J_4Kazd|+1O&gyDh$}_-i zP%8A$EdgTzldQPy)mWrHYCYrzm<+B*yF7e z`L^4+R~J=Q7P0L;wy?)ocqvr9%4C{9F5a1|5@_+_{QaLhA`%w+n`h>*jAB|go`h5b zVUEyfxkT9ObypLiZTpdON6}hfy8~%Gv4tJg&73$7#)_R}VkEkqAX}R$O;QG7);m*9 zh4CUqDIynllMUsUDD}bG@g5hKBR&!@$=uBkr~QO5W%L@0bV}`Vif5`Iw_$MZp2}(- zrAMoY75$VOm|?oc2G~Nvyku1cH#?__d_ri% za$-Jf^aAne^184outi4hR$4p*=KOb3ubJh3-5yz&z|PE|?PJgVy}c({-RM>6EeQUV z@Y1^}26#iairmCdhW-!sJ&=XtlB4OZm74sUtcX^M&LPC?jDsW0IKH6+%9zw%FcCIC*Z9e&fj!inpSpqgnm9H8`k6@u)^gY3`Gt`_8#{P9$2G@EP=u3F{4m@DuHghXk88C@KUe1&vRId~ zPn<9S7!G^yz6%ag)D zxU`3eyOnm@Pd+-fhF<+)`)39@8v@pyHzJv&^tH9MhhnJqkA@<29A;LsUIff68BaM3 z8ODJ4f?d2LYriYK(Ad(-)i*_heo?FkA^WQZ4_1txLv)PnYy|R zRs}WmbHs9ozos{LHv6-p<%T>tjKV+g2L^podFSDySu@9!ibvf>NX)Sttbknb3in$R zkwAc^(-&AYP!lZU2%Cq9zmw0t@?M1BUm>3{Zl;uB{C+K6lLFmt0Tk5JB#Hl^89CH^ ztdcA&qq*OT3M(;omcpk zyQZ+1HD7~3Gb8&HrXzme^I>4fO6!fz3MgM~UsR$#9xUXP@-;HVt?2soya8OaUXKpo zavLhaNKaH!j<_r_p}xZgUzfc=tR_B2?gw{o1-5l_YMJJ%dtajH;~5Dz;*}Nes7CC) zBaH*sBh-+R2a6pgAIPcJd!-s^o{*k(R`OneqCSs;S8l(4Pn4aVJyeYc z>fSPIBLk(}J$By%t*Rq$+Joq}mQA+`O?c#u;(XrwFE=to%5Mtr`s@*doN#q6Zepy@ z7o45XIyqi68R?*hmLRu348k1Dl#C{&lf{G^)f)=OPoiBsXjkprm|Ib1wVkwekm`86 zjIl(RSL#-sP@XZ;Ie>?&1W|h}XDm{1$m0}&BJ>5B9utF4vEVNelTd&`1+2`2zQlG6 zm4nq9Cfu&){ti}`S+&4m_ui=@!y_M(;9a^|H(wEhG4xJhImVkviP{!c&t2(PYb~(< zcpT9RuD1aoyCTC650xB=Jp79WYkRM>FomZjkGwBrwfU@CPpt-}+oG4qu3 zbr${@v`AZX*lFQo?>Zn$F#G{Cfz@e|^F7iBPF@LzTJlD)M9I4)nviCD$!z$-WzEpS z&!@tL_)(`JRt^H|M~zFcnFPXJdFrd2U0w0}KO}dE6V$tTd>G;F=jntsfz7XL%iBsH*!)6>VYgXn85t)+Wcq1Ozhoe*q87Mlw8>+Ff==7nfRN+ z1(yhA0Pa^WPyjkiOe5$;k(QcTIeUYoLJ@K!9;g^-+c`fD%}!qIVgX_0XX>RU?4LIs0#FfW7nYeez3N}DkWmRU$s^@s1GI928ccOks^h< zRBV%bpXwgo)~k|G;Bvu0OP@3H^t3&eTIl9Ni=I4eF%@`FZ=nqqvwXfO3fG$Z(L*qG zO~@dJ@R`wto2q7va8&=(>T3VIW-ISJNDMKnp+?&Gpo zEnpMi3DFvSQQ6d@3s{f8OnY^?!8YKMUq5c6=0O zvXXRW3dkB@V`s1F_c@JwC(r^(#Dzrgg(e1IGP;fu%NkPn=X?Ty2X~E&vl8 z(9qmt1;dLCuE=C6QlpUq0n5l`+L>VwoSL_bS$m$Db)h8RM8*B3$SHRmG%xRQdeA|> zqo@(?84!T|qf9~|&@z&Mx5EC0G$AJna%FEXW-Q_Y)riQ$A}>(c*m4*9-cnwnE3BLM zSjc3uRll2A@x5sImf^<_HqPUYrV5EmFn{@Hh2&-ZFqrC_zH_`r09dK$5 zK-nhSjS;c{loWkpplwsl*3Om9_4VTJZ2V7X5w3fC*SPBhw<=YbQJmNdZA%=UYuboj z2xpnAMhWkP>&u*ncI{UdNQ)WSm2ns~BS5i+Jf75Wx}tfHa3h`<*X3jeMQDMnjgYRm zdW6aBaPN3fQoinLpaJu7(}8biegP-Sz&!a8oAKdmNPTfNT6}sbA2nW%8hT`vy%k_l zi`?-tA@x0dwoZ{;bA21}29naaWwQuOj}+4XI6!C!4v=Aj1LXGYuL#J}u;0@3V}_^; zWWfH8z5l zVkNGr>1k<|HO}NrKUUhuexGJF;z5H z-~2;7rwMytzx4#%d+qd1D$*o`H-q7j|Jxp69htuQ7aEYFlo?<<{Z|(lBY}4~t1pW{ z6Zfi-szeF}cTxQ=$3mF*Oht$@xZ(OAcCtki0uzp#JkN9*wg7HQ9#1G?#bN*^Y@dG- z*{6J>HwN63FJcCMSD*0DGik{I=x3=dPX9Lx)So8_J$HTGah-XA(16v}ny}@AbijbK z>IiS`Ra}QBkLh(J0W`jt#c3uEH690VZ z86ODt#5-~%&A_qztKYGlDCT#v=`h z(C7U!Zx9t~r(!sHT^jR?^ErFad)C1C&=4D3s(*0rUSHDDA`Nn<)o3yHQ^vh4m&(>* zpie5VS={Gv=0Ib95+c9vvDDRdU942+x z#>g}q#lr;Oy|*?8#;Y+fTVTTLN*>xsmzc=qT!R*($*0(iP=%5WIdSv9L}il%#HT(* zM!)*!;Rc>5eKZkI2t$uc(_>%{dP7DrkJZd~7_nQ2tQ#G>i$ls?ga;in>w88C0?Atb!3 zKpqQaBl)g}>|v0_%x?@VLW_!d|7F6-->qhJH>ZQ-$M018`#}#MvPdi;#f{^#TNINL zB&qz3EieZti%PqW6g%`L#viWjd%i+oQ7*r?8);PuvR#_+jy;}X&=0D;=v>nJV|Epu z+RSXOG3aeo4S4M22ilTh^!KVdimv zB{XHt`llKHdVEoCGV_6BWss&&WwO@*@5$YAltCbEEE*<>g>w%kW(C{x`fc%F!ujdVjAIr)Y|6d7}9nz|m zi<=@9dd_3h?g$B+PoiBxhRO9l>dvOJt%kMCl7D1l{FjJk5E(1b{|6A&eKTOW(IP?^ zJ#oA-^-G|R z++Klq>%mS36eXLKb3E+qiW?gnf(8*RZlytJbvp(IkB@!@ti9T@rv9F(hzUtf^2d}24reTRjkZ#~!)8WwY zg}unb@x6jC*8VKwt{Jx@%RcNPfo?!wutA4T*kAa`|73JF|2Lyk1chH~hw7F3*Yfaw zF%gq^ch;G}^&$!?M{TG7!f+K4g0zk%(68@AN)2L-df*YQ4`Z*CcO7lWI33v+#4-BL zvPFmkMeBov)OjV-?)HRS18;7NaF13rp|FTniST$E<8v2m-Gh0@NLIeV+l zWIH6wqC?YjQtrEV2P0^CC_&rBo2Kl2ozhs$u#W9WQ=xAjBJeT^Z z8<4y%Q2c5_FIb`#s7umjGBvGf&2wAYc!UCp7P*$(Wy-oIW&i7fiQ5=k(oT27cFYw4 z=T(CQJ`)-ShFYw!jEoEw4^c|(4wV7sYo}gVdO(!$0NpbYA;*?|k>?H8;Q#nQ>aSbD z#azf=zXJg_6P)pQ0^QA>Xl14`sWJ%G>4hQaha3-amS@<;W^Ev)$3^RY{Ab(gH<$^)=MYY;G=J= z>zgZ_aONY(XiBI#AZh~ph>2BKxJIgEKCoqj>jSERcI*znnA$rccxNQV+Ra!G{TEoa z?5S4allpKA7g|Q;t-(_XAlnDT{!~Sd4_;X35q5aX%dg)?4n!)x-|bw*;2HyW30T%T z_&8gne5*&wz#HRMi|Xh=utQ*cHR}N;K25%n7Ne1V6hOLlJ|tRoa5L6p@b-q9)5-MP zhf!h#!jt{~5S}WL84duVC1_gLm^9)wwLU?+oVMh2JWm*Ch8NVPDX`EP>ORG>lfzb2 zkGc_ic!`r|!WDi_@rtse2S)jLwn`)4vA6a5@}AE>`of^A~VAL*sHi|!nTV(gsMcy z7Fg$>YToQ60aDl|NP>l50f$6Bym|Mop7*5e17>FCQaY$i!``9;QV1{O;JU#i^~4*< zU01(xA~q5Nyby38ClT(=ymNhC^65v!XR)49Np#n=d+GKn8zJBUzwA9%{sq0cNntd4zY=Qip!F|!Woj!$DiDo*iRPbRz6cc5* zex2vrtIjDIrWv0-goucwD3l-F*K6JB?cl(td%+J{Q1HUS@>N<|1mLZ)&*Ix1&spnd zX#R@(vBC?ppG|C}Zs771u@Gzh4VQI9I`R4G(|v{?vnNtQ4@u}@^5HuxarJJN$SD4s z;$J4wyTI=K=uuULGpt&{6$yC~{)+Vhacq3NemH&i=h@+JN;*Z|Oe?xS{x^9SJnUSU z2J4ss6jN^xhWWq>BiR(uiAdfrOkVzxyeZI;vdu`Mf@&vETt^qCS$uZ{b3tvysc>jq ze7Fbj5PMx&O{#2#_qPfaTFR)S|IsO&p?pD4PPAB=;?wKMXX33OB_9eN7^C30?Y5i=FJRxE8TR-ud%@sK@5L8TXa+qE${0#BaJf0w-Z% zPy(O2e*EWLQ3Psj`j}b(sPXWh|NQ4qQ=8(5;-@EqnuKv*+K z3KRt378kD?wqv|oG)#Uc?J}`4^6VfixR>mn0sH9#TuhvHX`Bg3Ad|Y38Yx!mcQ)^| zw6uU@z({tGH&#dkNFOnXNOhwsFmPp-}{lCb5^HUUh zphJDSLG@#9Wo=H>V_iiRyU3lBP3^kd=mXA~aOti9A86d}w<437in(;NF>WRmyaYDR zAWM*t*?r0^UKMoqaGIhApIJ1SOALdi1KX{YoO<#Dng%duEyuo zU`Gbp)I@lJ@>EYQ?~{&9wg$y1pZ=hxE(3^3mgMpna6OHoBSjh6W z)@^8eMU_|6CKr!;mGt+s`6&&o>`HJzwdF$XEJd!CC#f=4C>ov>*ZNN06iZEVtya|S zB~xTnwP4jr*9UZYq1KA##lo~~Ix0y6;^a5U2G@A@ja}H%X!B+~wj5%oe^ZZ#^$Ji1 z^p5=>dnd&iBdhF*Nb_eyRs;%C4+-8)cCNb*WXcXszZ<{}^fU~9pU%#a2dGHIV@Xvy zY#m$jl@uqjd44qFNNJ|fs4!#R2U53VVHI>(f!gw*@gBPYxFbQWb&2|{ruCuZ8seA( z$K#(Ow2m4da)XOiyq*!f(JBJZI{@hwW>fYYR`_km*VZ=g=kzpC^x>C^R7yC{@wF_B zQAfFl>R8a3DI?RjWl4LsNBT1B*f02`+SPnf`?x6w*k!(M=$*aV^vh(Y&ORkVbA`t< zd4R)>qpmSpu4iQ3LdCe(YKkI&vJiW8k%oS`Ru zmoVQQL~b|ZluBC13vm(f!@AdS&vf9{&+Y=&tu+z@sl9EFk>elSTAvaN)?<1~CRsJ; z@-Pn9Yc}1*?t)yyb>9&cg!6O-d{^E_v>yJbbHvnubaOR^QY1VmbE`l(nVNz`xy`$0h3VV?T z%lg>H80;}q1-*HCy6S~NZGdrMYT_isgnDGlsIlzav_MmQ53=#V5nX3ECRGY8HSrd@ zT<5bP=*s|o8FQ7|WI=kF|MHEIp}6@GLH&J(_$O=C4#5WI#$pC(zBw-KJL>MEPH^F^ z%+m55r<6bOt9>lY?_OodA1vu&ey%1rNZfe%dIA4TmCKVaFmpD7r!AFqgnR~=mi(c7HMbwOXi+$SMMd+IDP zCp@v)u6Qi1%VUb{;!Z`*I}l160Jss}pRy9M>K`dMD-NUTPvPP5#$N^G4IN&|6vvc{ zDVc!sVPFch8gGqag3h#ZuVkwx)bvyBn8PPwHShp&73+*$*m!^J2c3eo9LX0o*7at^ zwajS)hS1>7fzI&C#bt)CgB$PUdH2i{h`~PdM}6J2UlSch&()w}PBnl79tGfql9aOt zO6ZZ@y?pIjfs_l&Eh;LiF-OtBjiC`gn*;y&$L8`OuQ0AKX&ISF=~{i5X_hj7!y=mb zfW%tr*I;ebr#rrWTz?@=XuxDEExKf$2U5SnwuJmH-XS*apNmK|uLOY?W>v6&``2OK zNv>;cku`J*x+znK4r6YOM1GVPFZ80TT9dvz5cwfO`NN$#SI7KARcmWkhBcfEN#BSdKs8c({r6r)Wvy_+gXFuz#7w0bZFOQW`p^rlaHG|Dxx$9o% z#>*AajdS{=ObtuSw6{9V#JqRGTRS`xkEsKWCI+ir-gh=`Y*u&Q^kik?ZvJQMQD_#; z`o@L?>RR69C(=$P_KW1?i_+i9BaIe~bNOhWoH4%6iy~mM!wUdFWfa(RxQ2<3Lug(y zrDB^BxSbUR20~hyEuegA4_-zOK%xzW-!iQ{E*yzgV8b>}+v>XrjTSxj*%HqasM>F& z{nj!?Kw^t}z%>e>_tHNjCV&VAS~%|Q9Sr<2e;S!XC$?vvoOTAnBBxDW#bOm$aQd3~ zpSMr=D#1qdE8P6Xsr$pD&qh81?vi!?){TE}e(73HNXyfIe*i?` zUoR32&Va9(Y>h~M`r6|~rVMBN3rg|tFPYD5Zo5N88k`Kw!YXzOMEIp!RqrX+17%-; zO6GrG;Q##u2coY+(-RCxKD(A@7GHu$g%HPT<1mp#j>&V5yDO$ z;_~(}LS~H}mM&6a-RkD&;jydr^}UvSn~tLY9Ar2S=$G48IcmT|JLWgc4=1#B!AY z-k1Fp-nZypEl>;w++-%yHxLu-p?fwr{`!f&TLjX_lUJgRqy4`rcOvJetiL3Wd?rh< z?LxvQnRz}e4to!eClx2_R}Xw1ygD{E`yB5kTXR%DtUnn?rDWKIRVec)pC2&U zyyQAEr0Dw_HxZA#@XtRdzpzE<8T=s^WJR)TZ|b4Lwg17Q#gjk*uI;HR|LukrRY>bX zuIP`%;gepB4AS!eFZ7Fn*$FZX_<-&tt1rpSivJ!B;7v)Nq%2cEL&E(vpwP@ zr^$f4D}CR8Mx==i-TLNw=OMMzB0Nqb1?e*k^w~2-6FHk-jV(ci;gXa!MtwF^_ik^S zq7D|$I_+&MSh5v9Y|rB0$x!Ej;s@T9{Es`D@BLAi!?Pf6)r*i#+-r(ssU7u0+*zGX6rHI5E3A)*Q{n`s zn~*#)VnuiLH>)RAqx=r@sm2J}$foiXF%8dl=G-mcT?_#+P(AZe+GTBv^$0vvmCLCwV-uf5GL9 zz(65RYd(N+7Ov>R)P8ur&v^Cf&mkHWHwnvs+?8VDE8A9^+RwfSdV6(MCShg2({@dj^8cAAu z+GmwyZz*)#;JU-djmYqCqk)Rw)*EOcz8r(6$$Ci-LK^a&$Uz4{-46X*#q%9(H33IY z)T<7-V-)B5?}dlA<=wPI zMwC@JOs%+#?!uO_zphy7C6$>dNMZaZuUQ@E$Ck09fet`1mCq8SrjqxUuIk!AbFrux z*4+B1He^OU-;GNeyEh|O(3<0lmSgrVLnkfI@Zh$c z^!j2s2ccqa8X6kg)ro3$iJGr)vjj6Hsz@zIojm0A_2D4}uL04G)ssuF*JwWflD%@U zok)=?eXD(POAP)(>VmQMV*mTM)Cdc!`m2)RT(^grh(rhO-FL|4^KE=4GZ*i$Rqy~O z!Pk06=X_pWCnzCP`}%47ea01nW$HG&$*mCiC7@zow=^63o%x?{`PS9yK7Y-hm@vk; z;z^{WMhov0>T1fi*UP!e7X!HIkoxmxMdm8yt2DFxku41nxV6`ZL#7 zWtD~tilDKNyuHrPye(t&^4(aKFM?cQykeCAqPfnwKkBivMI0lse3z%B2f2^H*GB7Y zVhvG-he#CpMCftV!}A@FQDSj7=F|8!H~eBT@<1MsH$L^ z(L{tUm9%izamnm%H$xfCwb{wDL*y?3ztvLf5hkBTlZ~hcYF=ygO4VeutAS7G5W^NLw~UJeW5&*l zw|msqRrSjD>{-M6 z;oQ%XgfXjVIb30y->h##xox5HjEj0%t>m-47V@{s#k&It@(4yda=QWjD`ZSVcBA_{ zrVW$QWp})DQJbZnqu5+1{t7E(K5js!%a}b(WGSI#(etYhTMlJeLVDDi(Dy;9KHc2U zUmnkp*2cQGA|i@+C@C-PPCyr)85~6Kz$UL_3O>a??5c0B5jMbmTc54Z}2UOaH=S!&}Us-bwB^5^2qdy*>Q62rcN$OHO1Qb z41J)IlGNMXt?S;SCe}_|B}E>UaSIbtA6LxRlZv*M{q3-`YjE9yGaN0Pd=h$w!SREl zG^?k27lmH{#HY3V?3D{Qr_zZxHr$dtyRf+JcMJ4^JBbIb$HYi!hn=7pUM?;~2dV?p zv9f9qN*pb37ZgKXo(&MIaN z^%dNg>aWvMk59?kFW!`ve(>fE8M@BbLmfm3_I>IY+uuJyhk(#Mie{Es9P0LK1)2?u zxR_#gD{x)`aUISz%UOIrQq~^a3%r*Z9LHBE8EQRd?Na6m6^8%# z3T~C`1)oEAbYkgi>|%cwzb0bx3n)+RIvmJdMMmtdii_WoS9%vQl*GRko3K)WJ`7rX z)5pGNl*0?%?Ri=e9~q@_0cdDeCG=v~x$TdBNB=ig0WcNJB*T5YaTsXVyrrqGE;4?9 z7{8`CFzjNlb9INvS;tfoNR|w~&dJAT|Dnk&7*bj4u;j-W)bcQ5aYAW^y|!w_qRnnV zsb_g4jP@p+6C<}?ZPp@5^Thu~<;y9TmxhR%yzkj8a_vLC$7hoKgX;vn;_VitoqNI&8PgC0&?Tlt=yD-hq)ePD$>^ zy6Nr1>DEhFIqxU6a>6FQh_jglv(P`X+!=->qi3rOKlxq&vX$>lE%_6T2p7d`Ij@{a zNlY}H%e=$RJ`7F8Wqe>&vhVw>010Bhw8-z;gY+JcT&q5uJn(*?`pJ zk@mCm+Zp8LgEAq8#0MEcygmds<3D2O|4fBmAL6@bFh23yFM z$?3Lex({b2%ImiQHZth0IcX3!(6T}{;KYR2csO*Mw{or+i?9Q*-FG&X*#!e>xI)>{Rg+BP_AtyZGMJ}LvzRV9> zprPP}l;Bl~#lifnG@nI4$2;%v6{vPvLpCzs6wadU`u;F_1n^(yZ(m|?EG#bX-f}y0vt+2`Mf;r>s4(C$RaYM!i$`tx#)fz$M{0C=IyDj?~S6z5W44&Qc+d zhsSpY6&dC9Si`Bx&Njw*;8zc651jWmQL3^ISLPwdG+`C$Iz9nP3f?QZkt{OMODDeC zdxU{{c zORcA^|9NVilgVrUY=kBgy!41MyDJg?Zf(|I@ncd_fkP2eAF2=QFYA$A;*#rqLtBqO zP9tGcB(<}-9|jMWQNbDIqmXUZdU9YI$;*&(qdI7BRLwIuy&^3L7p8T9ss8l+*~O9A1X9QLS{Qw+}m^Vz!!3&N!@3hXiBnEZ1w z_mg9rK_62y-?_|k)}LH(+7GCB>QABfpuvJ%AawZtZqOG|F8uakgUdh^?M2VMmmIX$ znAUuKjEz(LfKnZBlUhGiokYp=;_5IBMH0HoLo+-m5Rogxt zXaUr*x{0u2+rd@Txzol=u6RIK`IAj{@SoP@A+O1X`?sG49vEdxwuQ~d4`4bTpFmuT zfuaZ_M`q-nEggvm^K-<9bd&GmBu{ytfE__8gkoxV3!caYWJQ)Xe&$b@-`ue5>hCe& z5*L0H&V(KbdXAu42QqNBXQe#04;Qf_#V16m_ZEd)S`kBCm6Ltnv(}4N$t&O>bREZv za(0Rv?5RI<=8+RaY$YUh6PuoycZd42s9}Qw`xFDlDa2-TJU%d^GyOVr`nwx?eWAnN zfBte1&zLdhtilM`*sjst?LUg3bgSfGRt$8IsY7Y%69kSGSDvETKMy+hm>a1mJQL;c9> z#B9>8QeXAlP`K{nmzU=XRGb|-_B|r=zPTlr9+2}o?{TWIdsX37F(f_9FSIbdVSR#g zqC~l=k8B5GTofv~xZ@4d2MW73@Pi&dD@1km_r`?}+`YJRm*2xolIPc5ULAAWPhY8} z#;k@nd)wR69MWCPBsHx_{o^$z>wL?syHgCu;zrV2X85G`97IMzzseJwc52*sX}zzB z%XnAL#4o)U-wiIng7x7%;qi+Tp-#)`E9_MPEviy75Q$TzcH5xP`!CLe4trBFWZLf^ z8a$~D)@F?dJgbk?Y90XFB3rSLLoTzAZ4%zH>nK&sn(OY}Lh#Gdt7X@nTm=AwKV*kS zQr*i1qO|6=ivrUh9ES6ixUk@(y=h8E1iOc2n}(R!#>Q8EB3xwh>Uf7v&JTf!{l34y z1r#6ySG!w5FoV!e@@eqlp1${!EZC2DwBoX%zVzfWX^K^RB3xP{EiLQu7VTkMBG3t2 z9PFJ=ouwWpwtuRF!S){ULR7{J(QCww=Ofe3vxbBeU3}tyK*`{ha=d2=Q>0|c0U{AU z=h?SA<%C{gEsrYismd2=+cz{re!k(btu?%cMv2bk)yjWhRo4#R20eP9)WRbA=pHgk zN4xdltXHfHI_~a3cF?rk6UVt2SrHLX42R~hrW}4S@5~ev z`@>4JT&--cczvlarO2n_4H7C4>l4n@Nja^H!5;e6BkXsz#L}+Xm%cUe(%(p7*<5i; z^VfT?bM?9K^nea>6ZD~#!anPDuT0a=vrn~7tyq%LM_O;PFMK9gO7|{eZn_0-weJT>{?jM)z z25EqV=YG|_c+u0i$5lp5wy&FndG{w}U^N=!;2Wl@t6}Fbg4j75bfmj$+7KA?Ld4=x zVfEZ9d&9SU25e{F%W-Lp`{{0v5aN$gkd4{3l1ze5ll16sY_EI(Ul!(Ouh=Z_lWT5f zjs5gV%gNeh2HDw}$_>EaZ5x)n=5M2%R@T<`K>LXE1>l(=0Ou3TMA@C=Z~L;89Dw(6 zQoqOpnekqLdX6{WLkfD|-1Rl4yUf59>1T&lY&g>V%s4hvbCk`9TfRI+Ms6T0A~}(r ziF~o$aV=MLZSr_`gD!fk(xt{t#Y#l>pW#48*oDDzC-aMR%+0nLA&9TfOifKw{gsWd z<;jO1&KS=bJU9#B7W3#3+EJLD;T(E(Wg)bz=E9)Zo`Xyl+xehfk?ORtj!GV zdE2HQ{~eOaN~V!h_XWT{Gb=?vl6%$ij*b|ijHQ8`k0rO9cn)o0>8b;&<&Xqj+`U50 zABy?Do-@}u!-zXaC+WgDqbSgnrN7cAWxlwR&mtkR8t4l zedK_LTRB5who~a0=~VA6;ct|agl^-Ol09!cBNF4{Ph|~}SG{bzDEHXtDd~wFS{_KDLaoSCWqyvMz6LY;?_}@-V z1juIr=l}gEIlxY`%)$R>n}*+?pCn|T^0cx4?=ORH0}oEq^v=M)j14eyKyf6de?RI7 z(CmuS>;5o}|MxWi`04Kn`1`BedqZ@_T+a7{8c?3`Uk2zVQK$FsA2H$Eb!uR+gEns` z{=2FuPxNUGn0ddyz?)MXfcA+0r673e-!4!-gh&AUueTxp|HnimIc%5yM7U!uXh_x^ zn@;!-9oJ_t92nEJ`GCu^0vNY=qp0n%WGz*EAovTB+FB4w{j1^JxLCHuP;9_D&F~mfu5w|MMIN?O8wg7cEibK z-HkWr&zicb!~b+#kC~hyk&7sNb(n z@ze<+HKzw>XM`jB%TU{cVx&n8(pV_pBB)*3fOL2O-1Fl`P@M1)J(u`|j9o%v@QyVb z{*at>)|yfH^>U1J?B{W1RWm7D%c-VQ&w62y&_2&ea)My*tfBdKoH!A2Yk^(?sHH$x1A;vyuuvHu_*Q zUlbHmRI7*>N`{ilSVj6?oj^TJ%}za34b+ScGRylVre3kK%DTU014s@sPHQ51?)rMy zwoZMifDQGp7CQt6%3SVD4Br1iv}>2Cp%&Yo!w3&#q26~ajh){ljWbtO<;_K%-KxvD zlnRi{#|OBn_Ivcbw;m;0bIpy(U9+A2YFyi87Ov>99P${ac0u2{M0M+gvp+C>rF6Vg zR!(DOoFw1U^S#CrE!?1U%S>RUn{H4s=GCKo=t8iGbt3bzpyu0P`y`@ro2Ol#rCYIF zItuw8v1v6}>a*^ZJa#R{wbHdGoV4jdwKQ~d@C1DBPwYwVS5bH@kMIM!lPBCTliN7q zGnPD-;+6=>x}elT*}|+lRvD#yLB2o+Dlh`0~i5u}SPtl8Ngu_8) zyHdi?x?%KYpfKP4zRWXz%S+O{7`+0cS1q=icB^bz(_hbS&$M1Oab7&eMg&AM+{orp z4-s=R%6H!5R2tvnDR;IB3p{@Adu-TN-j~Hb?PKW`#%!7bm8K2}TB!5Et(Ex~O(dP0 z<(VPFd`V5F{4~RmSli{;Sf{s=CS`WdMeXBlH1|?r?L--c@JU7c!NRB}8NV4HuOE1^ z*MRQ-Y3|Cypg+pUsE`vd` zG&3?|iMS9FgJWqpA;b`XM>^ z)dA`AgC!1<;+iGmfn-l!R|(a2-FUKU-E=j$bHd)}e$eG)=e5ncF}brc`Y7z{$>q8p zOUK9C(!4&qEvCAw`C__6ofBGr9>O*Ur+eQcD(Ak_ae|`#7qcnxYt~5vf(Ubf1!=43 zPa*E)?k*?^XSGxN-(ohlXk+y5;v%(B%NlflX{2K`qIA}7=NQ2~F10tM&XRnljwpjF z={j=q;#0HY(NGp_9+#i)8zDw9F>Q<`jaxOodYZZ04uLt=T(7K{#J)<-X35Vk+586; zP)9c`g~B_kFzJCWgA+^c(0Rj-fPJPKU#lORsJ~qs=bB7%ARMyH2<~{exg!TTuj7`7ZW)-7vT~txOh7w zgOF_WemvCwgOHA}=+9FPn+s``NibOTK`ZwU$Gj@mkE9LwsG??7qeC+v#`BW=@P0X1 z|Jtaq#(?Ma)52L?6uvJXQHC8^U?E)McvIzl`Ljif>Tu4^rrw6_{nuY9D**XE+Mu{| z=b0uZuoVj-!_{iY&7+Qc40O=)&v?XyZueCO&RT^6>snfs| zeaeupZuh<7lM#3FZU4=JEZ@JdG~qIIwgkmzn>2JWlCe6F73rMX0x%utQStW~S647}jT{)8>eBQw&ts^QRS`45?792lFdb+2Xz5G+@{36Bt33wrz(XGXu+a$} zJ7gb4jx=wJwW*!dYpuC<8sX4&jApdmV>A}>9)zOjR3SU+;WjwOys-!68>U53BvojPj!K_GKUL;z3w<$SK58xkI!d3{u)Q}n9?8+9hMO`_P zI{Un$%E_{js#l;z+Z}bElT+^=N5St5dzO`{QoP1E;l9m|Thd1lRpTE5S_7(fFODhMxXDLd=2f%3|tPL_8F$lKA{0^|G*gw59R zLHSc{(wxIBJxMoMx7NOqC~#158Gv_}$X`pCaGu|<2*{WXyDNPoPG%qLEUl(K`@BXsB2Sqerdb)r-HWe zr14KA!iY~yGvRT~Uz}lcf$SkRZ*^DQsB@hitlg7*LqTYkRJ$%)QhBI%*U5&9%1(!q zeQhp9jEr{gs<+Z+f&(09J=SD&x%3 z{R3ctMi02T-ZM`;wl5rBF#t>sY--1m)BZNQ;cVlClBGI0X7hgIqVAmrcn|)wcux4^ z`>Hod0FvN$$8T`-v)}ZSfzr_o?&J3R+q^4Vl0V>~3OlX%yRIL-xv)7T&_ni}u74K= z@D?B$M{F1QAzSyYm+am_0hk&VZ79rnJN(E2u)I>2HhL6!rDs(u zWyLtayx@AoWUIXx_h||#=lcmlRDNUure}QlEJq~1PtSAvvS8`e34%LP?tw7MMDo4@ z_Ecs@)!~Ly6Ze*()T)drxtD>e3}c5zuP@~E#!Z7EQBkkxF^-p;+c_L7*~%;jpATB% zYrUpcF1;dvF?hI>n`2SI@q&`**y0(T*xJ(?aW%!f(EENg#GZpPcPsY!2@j^Bt~1~3 zxmGkOa>R2e2qAi*U;TSBkM_meKB*hp6(4&TDt^+PB`tMksKm!`G-CSw_BiwWT<4LX zd6yjg;ma#6-$~wwJj?OndPNUVThH1+*+yL*j|(`yf`=brk4FR?;RA14;0;Vl;%mIi zz&9oEmdhjf=h@34d4&HwCbar-p{&j$Wo6)7$I{)}+Qq}p)ia{IH4%6e%>Idir-8Z} z*wWRR_o;7Ry`fkS6&&!v`y$3On&V`lp85>H1- zW&`!dOpjdMt(k;*AMie4mLg?hVv=yTvH@$$Dg4jvz%NN=J5NtHFdv_fj}NbpAg`;t zEg!#_m>Ay!0X_i%9^eWd4?h>rr@lNc9xVTO$UmPWXYFC>Ztv!4@9M(zqT~OcldFXUbkdY%1DA_>&rXh8^NOEjUgR@ki)q+oe~XsFr$|u zLLvkkIQc2z7!+50av*lqo^d!!GIQl(*!``adT)b0gZg(G)?(8GcGHy@k)?R4xZ@PC z&*WQ_l~G>@Pl*iu+o#WE_iq`=HVCiY+uU7fimSL!X3hdxEOa znTj&uZL&oEt~nwX?Cs-jhl{}}j)bMLxuRdS4eF-9$3NP*Z)nm(SzBW}lJn9^HAO;- zQ|v%LoE>|Lu}-4lPtDQ3efZi|P~`L5(a|GMLzAlneZ2A03fOL<{XKD{(g=g3d^lJ3 zUc07VmDw#F;n=(JE|*Ae-)C*oue>)=tQm!(^?K)5pb%qqyfgbYc#~;bMJ&M%f2l$) zN$V%#{?Y9)A&&U`u4SqA0A(02`9Q5T_u7|Kb7jgUj}a*ze0+RJEj6FnyKHfvzSl8y z>rh-9JVujhU;M|X6GU9i>}T>i7R}nM$^xGe zd{|-#%e?#OHLE%KB?=iPXA-BGk6jW@wRfGpGM1P_@d&Ok{pp8H%gueGcePK$iP@Em zKffx~kxJ#(pWfp$ZJErOkWf~B`n06bG$LRZ+KLcKEXnaRyUr-Z>@!)#;tJh02o>W* zX%qi@$N!a6fwM~71ZE^yhsS6PdMO17Jy#IgtSHmS1|NIjy26ijN9=P7i9?;)V8NA! zbqfBdJr>1B4-5Sp%C+15LFfsHb9Vlzf;PlNjLP&vVct_XE#6;9^WlLQV(r%7H9Zaq z?I{Tg#x~m)K05c-vzy)#gMj!ebSs|44P^_$7$!V2GzmLbyY*A}Ixfy$Kl${l#(-vc zM1N*Al*`$u$-N3!(KT9fCnYP0VeggaFvJeULpi}9-B=M%5r8-60$!ZScM(3oCpj@}xa1i}fQP^lK zf)dJjR1l5D#C@!FyZ)CXV~Qd5^<1kCSkVvH*u!6BkD)WH1vyU7=}VUQ3EAH;7+A8) zkP3Qj(&nq&|BiRPe7i@Mu*f-c+I?-4!m#E*n)5M}lGMeDsr__i*?qINCl?nNg*rXQ zkPC22Q?nTLbGBcJgU$WF`)!>Yxb~%u>EGrtW0sPlSsOExT%Xc6b5DN0eC67;c#2Q2 zm9pm=te4s@3AijsQ~q-EUhefxJ|5#nH|r_y`6fq};AV`~Z0#-g(}P>~Pv_{tCmgWN z#qMskfm^&LN_tgBJeSEC5>t3G20C4#&!>`D6umjk+R`Q;6l6O;_P5%Rwb#EZJpQWl zhz6Gtf%ogP_S=$8zI}-XBOU~QO&{m0zCtGmjaA?^SEXC`+A-iXG8y8m>2yc>xd{OQ zfzwo#aYKFBSO_kgO_FhoX9T*R=!rZnHEDML5?h=t9Mtmib#C)CgSyuwu*>Y zOh6XNP3jL}t1BxOTccZMey9eKor=9CfiM%YBL($##$7hUI-3O7q0I%f^o3H#*@p4f zBK-N=H*exO&QLM$f~K}Xjpo(u-;3+*VX`(OIgW^($(ryX^yk$eXY+=Uk@ODq&Xlpu zg}9DOYgK8z-O`{gtVlI=?G?3o0w46O8`Lu6l^Em6{lNz*wS``r;3p0R?N`8s$bTrv zpOwzP{$vUQcxBEOu4GQ%cka6^B^+PYQ~spP31mB*v8(OH$R^=(A)TN=(kj6Alm!Zf z?#$M~Qtlf!Mh8`C6=cxx1OypvMbijo;5`qf+o#8k5N*vCWYWBv*9*p3M%O#f8x7}@ zQ%eTJ>Ajp!^YZeP)(_YEEaOtS498>H8^vM4oA(w5Quzkfl#@&&$mzkXi0P`P>$DG~ z{0`npmdIM6h0fxn3$+S}^D)yDy;y84DskC&_m+Mm!6nkU-EkYw!%6#z-Qya|9;=G< zy>!n*5>dj=me<}8lji$)Vau6Fsg+2I|33Pajhp*+`})eDnO1+4QEQ6pssh=1s=0!4 z_-nGt<8occoeID($cGEHV}{RdcITVD&lN%>um+5Rk{$}PAMKN>wzqW^W9UR&Qpo5; zTFT9xrk5mx&Z1vNL=2c)_NV~rM!DzuF01IthqaMhb1Z|%QclzxwjeIb#&hAqkGmYAs}tVr3T3HvMDs=&f6TM2-yScD#dCN=Q&x^&4j4)t#w$&>aeL#< zhZx~fanDV+`MnJuUBr)tXm2c-UyaI9Kkn)W)X$SS4KdjE|GkxX}p^=X^8yV32#W zyY-im5lzpRdzTrHeJ**IsHJmdBU|;ir^|ROaTklkeuQdFjZ2F@eJgiAt--XQvtaBm zhb3g#?csxUZn+Zs>B6u%<)o4suMm!CoUzSFItw+g$%n8-6rJ!K=%uql6XU0dxOWO< zw7nCWl6TouZZ_%2h&arQMk@_74d>Mh2E@=#S?|Y%%fV!MP0I@>`7sjSJ1@zE9CKu) zv8>1rO!4Ns4%Jki)OH&%qC198xmc}Z{IrV~Vo_fwW#;OF|Dr<#eLgb9@~8U$H^ZQF zh-0N;r8=oGxV?3EqaXJyhj})g?|pU2NLIpNx}a*NaFr7US@+&dgDN&#O!al#FI%(; zh)QIcZBBBkTAl$6xw~*G)$G0=S!q@`4f3knm_WIUI4!W=;(nLP9|BgufCoa3PpQ3Q z%(8E{=nmXI{s7^W*qbXgqbIAx4X4=`g6vle<^xg5sZOH?arTeT2C6%1CX^8!f?Jal zEx~S05b}AZ?;#a>1EHEyUYERVO^sO$OX{Yv2uh;T$EublT>`M|nAKV6jkAqX+2NiOHS4RQ1Z9SKzBSLvngfo={$icoP|_hV zV?3<@?;)m&3#Vg3;@A!%W6?{a3U_y#x3zQ8;f+mh{tKwc za=`Gdzu?v1dME?FX)y=)JSlcpzQPpmed*x*ykv2B;_wNln-J^T>$5MCet_4c!H&PT zYV|^Gbt+3LK+hdejosBR_E_Qr2}I6j(*h;mv;Wk27iN4$MiQ6f7fRVK%rw84`%$$Y ziUgNYP%x{8q~vYksG9vz-H50H;up~8D{iEJH6_5fZ+!?eUmm193I-*-8OURbcMH4L zLAh{nD}elx`nkl{^~Ct39?HZ}1&W_~@Sk%WmZ{bmeL|LTKmsVF9cRsy0TB7snE*w_ zm;h0V3)F)Lf3>IqLKPC?XK$xdK(|(6)ZVL(2J~E=ctv%g{vMrbLm|_7PH=h%r^fgc zaC&SEYJYV5N>}yz;J>&D|Dbv;>4y#1T6b+4;L$c=wblblQ5!>R7pI4{E{py@FW0R0Sa)5#s`Xw3H@kg(!5!!Ei7z!*$jQK*D?PM2C5jW| zI{jp0Fq_))H0{9S+V3;8vO(FKBoepQn`0Un82GJyze2ydKfTVD?MTk9&9Cp@IbG%n zz=c}!Gm3a&o@}F4#?&N|!OYtGKmhM>(Z9lTb5tWk#FcBcTQeSofXz>U$D3rs{m1iy zgU~ztF0g9z5r$mhAcbhS*qh%M6R_ayR`g-U;19S^6Lq}s*Aa&q0!FcTZUmjZFMhx3 zw~pLU4h4m z!T)F{xm3VP0f-Lh$dveN*sZ`g3s0#8*L^7#VgN#N%Nb9sO8t6!&Lf9LV({-hD zw7kmFt*QVH2Pvjn%lAalA;tnP>0`We2>*>K%XC8Rb9Lb7532zt3ZuKdkA~{jTJ;4! zLfO&tWQerB2e)a7+791IY z*Ewpm6|n3SvCn`}$*7QAd_TYU9px1ms3<4bJ651*J>R%{FuyrQN$I{YRaM<_@le=# z?mi=maRr<*6O#dQRH;_|)sr|G=f2*r?6&{(kWWBzVp)U{@Ed#xO*8Mk%lcJ;yDxB@L-UlO(@B;x+1yxRqt6@$7uy+qjjUzGT1y;3KgfcZ$onS-s65c zRqzZZOQgNo zK1+8S9H!oBN?}Z2rEVfN^kZkS{urMpE`#;)<_Ho>7Ct zaaTt&x4wTHk1Ziwb%`SAGqO2}vi^WClkFr2E?3(U^Gt*#)XUUj8qb^bXED)9Mw%tY zj)h9xu1bvVLCcG8#1QsW)F(&LpR10}-)bK-S#ZAp3s*Cmb@!<=Ix@U94bSy`Kc!G7 zzp4dfH)?IC9LnnUC3kOje7({2`!kypq2Kg6lRC-HY`bEyX71N*kJE$owHTOraz`90 zC0J9!Ij#g|krC@33(i1P*Vy#`D)cT##4&24H-V*_Ay>>pp+o8OQ60ZtBEe-C#Fztz zY2xZm0m$Z6PsQm>TG(@Lu>5w0pi_kM#H-_zX{&^jVmqSrF>EvApqW8%vulJ)^0Zmc#vdR|j6e0t*QB+82rqy5GVT`^$rhg^@x4-R@Zwr1KI5##LT*TG zvIf1lQaCY+?ZE??ACWW<_)rqyg1(KF3;6yDzEhv7TmGaG!MHtH_~~`ro9DDkJ!eP4 z*5yh|ZGP&K5!Pe*Y>kV1i>)d=g7QaHnqYzve{1xzPqmPvcU;@)w79o}8oHt#p2I%g zsLnl+DG;pkVC~?w>v0**Twjo8_034j?m#+rNO%dLMzo-cGI++Y{$n zTT4|H*DkP^%S@URZ*mztmOA+Wl`QGn=QU+Wr2G;!0N4xG>-{*Z-qEMtM!M}ACAt3E zK%~|A%;XWT$wvzW&TG=O(aBlxMT_ZqqjtHKvX~c_njRLN8!Z4&bToSAytXsz;a%V8 z{GdOMM$kqsPY_)0Q{}jjKVZHMuN~t1V|OFNud> zLDQg^!&YP)8+g%AMkY7_ceFXnJr__=@O9bme8>(Rr$IP>KBhQ`?6$29>bX9jtdi`K zYMT?Rt$-0W0*pVzP7Y?#_uy@?4e2l{f8Ay{hb26O_F1tk@+oozkdb}IyW)e$ez(~M z$2e2-^Mo8pIhfFNnH4%sYcz>nJ>}I^>Ur>L3motcd8>>XqmRxDU}ZY}*pms1w_6!g z#eie1U28?s?E5{@X{KH)`1DlYSi!l~JILTjP%k9JCcPt$0TY3kOLSzBT<)R8bD1d( zds1dH>t1EpI(_S=M)|VH^7VH>tU3K0Yv^}IBbYy2SV5uBqDwt*TWK>sqJRk`zbeiH zgl-bUFO&E8CO`oJwaDq^0IMbcGMFK#|N1)3M!8_)`Bd^<8sYKnpc^-D-kYtnO{Ew2 zj)bOjNp)UmY%PZeo*vAGeqU-o->FEt$HXK9#K)P^1*{WSd*U*ePd~yKT6P=r8+lFj z4HTJ>^G(Zv!d4X7y#CpK1{>o=1C8519KtV=x2zD;&g}a>L1zI~xZ`>5jD!Kj9ot1f zBw69GgpIsBrSPcRJPx*aV?mhA<`7)4adl%^2=z#gq$7-RIE}xc+5CDsw5eyu_O*t3 zm9z6)y)xj9<$qaEF?OLa6*QGjntF;0BcyZ}`kb>GVS5Q+3*Iw^pXf3j zO($vK>ZL^8>rj^zt~p`NLeC%yLBjYfepM3Uca2_`psfm@2QzLR1*4SoDU8aBUN$|z z^rrMYm+*wH(W75mEwviGaFo7bn``2{$6rT(tBfmO)==<3Y}r*)r8u09rJ+Fl_-yFr zs4Ue|6Z{2ohkbmLv+lZ^9tD+9YET91CX9o%-lSmW{Ak1dkg;|4&N?bXV<$;QFs9xt zASWSCC1tUgk48Xc|Iu=qVZxr!yiNXElr8J(J55$x`SVzJz99;dMGi`X?)q%gwI?4= z)B`nZ(ljs9dEA<;4x9iMd0B4lfIl3kv1 z$@x?Zt+3My7c5_1Q0zIgkkLw$;Y7gB6>E(9X`D2+-aKFWXoYZm{cD8N?2A{VZ-Y6j zWh)BuM6XU+;vA(HK}M!h^Wg)-fRqmUSP2T zPk)s&tnB0&va7zoASs5FM_ZmB@75ug`;s`; zN8ektw)aZZk5(G$_)QYod6iE?v1i7^+0q;%Qit!zx*hz;N;f5|@G(Ge6>PMke`xoZ zwfNi?K1`o48)q|==^&ixNoz)iw}n~DIg5H#KO(t4n66W6Er^Sl zE-Zyr7IaHrtVqsd`Jl0h-&b)72i5~BI)|-AXy_7Rw$>);`3Bl{VuQ!swIp^!_AT$; z6vu$Ke_LGACH54R>**_*ORBUoJ80h{`|NrHr`#HU4QaZoX_x7|(=Jm73x{Fvh`IM? zx_0osBE9vFf+ZxSYQ9l;lBS_k==xG-od7 z39YCfRLT^q(d-f`(7u6P=G2zBl#;4ea$R+rK1!#J+w*6s;>j1!l1qf9^~0EBmLRIb zlG8+nhqn_}G#L9{%@3kKHZa~c+=kRII#w5sY-ZrRL#TXVstS6EW5LtQJc8BoD%#q`UT~72@0A z823EZyw1~kcHZqm?BZqG`Y2dXm}4`;=5?@Gt-KV$ENaH?KEe5JoCs znG4wzP3;e%b^guilzDdP`W?}<8D@qNsMpBh zUMsRS);_+}d0yCivM_*Q5j#jE2XdqR<%XT&x9xj9wCwSf1tb2RNM3bX5rG0bc!pLt zYKMAD8YjTza4TQ-DZSSDH`NW?=d?l{;gGYfp5u=mN4tBH0csW_5?RD<+gfj=r9cujO>-7mS0p zXn*~rc;VD!c}4-l6tIXQA51u2=a&_2Pp#0c;yT>md&B>x(ko;VXL*hnzR^Ar-7?wX zu%e$7i$$Q6G|yLLx}!T9p)_i4%8FLOXMJ$tIIL2yB(nd`!0U4m!cK!sr5$w~0MQCP z%X`UAZ&NSM+oD^N+BSiK&rnadR%+a@Lq3+ajqn zO0S{i87WH;Q<-x3+u;CnLN9XZi@XafhF`|U;EqG>7)&R!u#x6cCECUWjVM%(4VY;U z5vk2KLK0#mUJVR%sBWO?--;*Ev+96Ipy zVkr6wc0+2$5wTEbn@citHg`Ft9(lH(`c}Pld}Anc7qvYJ0~>b&fukKKx{SMy(~mZ~ z!XDN-!U0@OXK?Z6rzferriqWKE>MSub@-NW_?rrC;Y8g$g_sQQNo?SuPcLF?Eo@W$ zb~$V61p%9f!CFJDDUBu9D!7mMU)%;28OF!M-+mc zO^apOX{g-VAcs^c?~G+flGHmBy5iRDBYyH1+XcfN5sTPQ<6hIBpP?@}WH-#^V%rjV zj`ChsVT}u8=PklT&)$7iE3N87B4H*4Hhk%gaVUD02s$ZV*$GHU+{Sd_V%yA2^ogY3 z;}@?bpP{D|Y=YqZw~ccJ80MW74sx1g-QXZoFZ4968lK7V{nR`y2b=Nj5IIGu2;l(b z7ec<3_7m4qCk%1Vn8|YM@g3>qvool=mM1UvMn!;hzb-+~Q0jZZ;t`>OipDuUqwMT} zU6jafYWXnco&VI93}_b=rh_iT7o^8Gh6V?XX~m}UnG55;@e|mL$TgY$^%H%_5vmi& zp*ijAL$ka!!K7ONa)6&DDl#2FK+RF;&<^(6759u5dNuOvh#`&!hK4o;$@U#AKn~-4 z?_ik}-Fx;`Bri5^4$)dn6i%GAaO@_I~z{dkAQc&fTUfkQEw zQ?KXBA)btrBbL2bXE?zI>|7^kKg!Zd^JPPgb|#YhizjX~r~(a(-onj=R%4~?Zpb5_ zX6J}C-gGK919C!C>i&!!=)Hy#+M$kP9{phxf#>6_B=>LJll1qj>(XyGSBS%!7LT03 zh_$}8!kyQjU${Xx^75Dh;t)@2wUX*`_gGX>v{P~+5sS$4QtPCa+?>7DLR!}1EMiC1 zR4!{%51rNFm?+dHG?RT)he} zE*&kETc>0gK!YDulC!aXtYx*D+{)IR^ks5a7Ti7LQS<@FraQlNHyeomIY!KsPNWf` zG};+kqgRYSwqmq_tIO2tz}mcYG2ygW(sch!6!OTW!d~&(z$_J{vpVIffv8Dr+KOwM z7_uqoeHB-0y0;j=vf_%F6DlKJWj4BhO6$uR{j0dufUjxW&yhNvuW80=tps$m2H2>w z$nH_?niLYw4hc<&Tjpfns|j+iMmz8xn&xT}H-8}tWGT9FxGdL9z)bJHx5huAhiD=M z$AG%bOGvAKMD=KIk7`9v6f5Fb*4qlxUOX7~Sn{3Px)UHd{z=2DLWf0B9sErbXTM)> z84+vaKf^Atx||Mi+LOJTt*xIF{1h@V1lFMwcW->zcD{F+-M6)ic)SC%!40=h7x2m; zLhd7utuH=n1$1Uzd+a- z4|~LlZ#ob_X)UIij_?n^K#RFx5M@F?a3Z(E_?XWy-xnOHAPAM4VJCxm8yu&a#2zCl zOdwiyIjF#h-F|r&bN#y1vn6QOIAW|P@k#RS$Sv#`N&tm5dRiPcZEs-Q;PkX)X0hHn zYG-!!O8%FrJmLf)9^)G3@lrFi!0=edS-`~kn3?yYDH*ogXGEM(y=A!GgXdc`jb#V4 zp&dXzlo>TdVkA8_e2!UWqPZ#^yq5xSpNLFT>lR`<+!=fLHZ2wW9LDi3sLg{p8PPZ; zhRr}|g+*X)4J4XmMyVH*5$Zsh&4yXLtZ&-oB`r9PKKYKox3FCix~mi%91Ar*YlS#^ zB96ve%&IlSt60Lb@h?sgjo78Umx~R^XofSF1b8=Xm1kh+=ihQCYW&pg{1 zPSAx8-Z7wq5h*=tAxp^{p%o>7@YnmvmAn$>T*fv~=HnQpM+4CreG+b!EWzqv?E(Hs zP^w|BNZHo2%%;I3y#O}5(V#}gE*^E67VlJp3J;`?TDs@ETGLPH8AzIjxpZ+sYSiS% z4rF8Uj8yZjTa4M?dx<{q={d32+I&OlG%c~aJB^?)LM`i=3g_xgKM)PoB%g1dOo1#s z(kY5tgq>7~f2B{&4-fHEi-@WBhy^4Q}{DSPed7$UR)TRv+Nr)f8}g4L!9T*UHe8n$>J{nRO_c zoElS~sJ^s}QuUx;FN77b#HZdj+`eyPjstZy7PA|iZ)8@#h1{(Os`NpddbgNm*G~8i zC6JoVkFA_=5E7@YAk}6+1Q(DnQPXTGYAjpTvW16Y-%OTu z0HN!r%Lrn!?aYAl0i}ZG)opbXbX-cNm`9_;e(37JZkbN;7u{q;7V*yQ`zBT)(q;gD zsV-&DrWNA-Hj!;Dh{|qvsVWl_blMYL3o9h2+3W?Ye_uQtNZ}D&Z&g7`wab-Y?;GUh z-Q+cysVr(ANr^kNY@undM4WeE&$w$Xx|qe>kKWMCF6jZ-0G{DCvL_K?AdUN3znff&;X*jAWLNOoJ{r%}XJ0ilb!^FJdyx9d6z7Let9zgj0L-VCQ?8)JI2kgUto&F(uj{P~CpV$AqR!r}$mexJ}> zsdEkcEWFakQ*dH}zRr>0d<3iaupgAL5*(tu^xd`Z?K2yp55y6gmsDRr5Nz<6EQ_o5 zVv69bUJlLS_A0TG{CIb~_i3hliP&-b7otMJ^s+ukT7#P_RPSI;^-hp`qhI+t!hK+~ zWX;pUki->RTL!Ns8a(HBm()VvCKGWiZ|CZ251|MV)I~K*yjpXbpk~8W2g!d!==i3Y zHi<9?n0;?{ICJXIiG6pyvH?d{80LhVT4gJ2AaTn?h1QK=q_i9BKR((Q;puQZ0&)#) z?0JrxUxdD)mo(@L3r__+dyeS^JWsAvqZH}JQKX;;g^mFZH=ZbN@(Rli1F_Jzx8F>+ z1q{xG_QcYsD*AgjO+4B@O8lgjn_b}4pph+H>$)uE9jQomcKrf-#wbem!C_q3VX~B$ z$5<%!cz3R44$K(5lmlaI@h&G00j%EJWx@Kyb^OkA*XZJ>z(S=JEboicLwDaKNVnS7 z6@=4eiB?TK|PH`ReQgg3qogYl7 zg&gjp8kn+RR#!h_9w$vz=&NQSGKn$xWK3$t4VLXQbD8(34f3@-$hg5Fxg8C9P>Eh>be^}KbS-e6n)ucX z_mVqzwTZODEN;&hw2~C=fC^q!$32)-S*SKttSA3vzwAgj7ayG5+Sp{-qjApkatSx= z0S;9l`j+w6tQ7zDz*m1dm zI$KaY*>2>G%Okf;ZWH!5VDujcd%g7N2t3{Sq{pH0vZWD4EA*jCR_z6}rd_p$5w?{x z<^A>7FEzFYzouW?P)3J_(XRn1SIg^X4vd3u%*ies%>E@^%$gdSKFirtMR{;Cvw4e` z&N{`SdAX9JUhBoi#fqr3PrRYyF^QPb(09`~NrS?SJAU?%)i#nH;%kVfO+j&cl(}z_ z{Zo3by>HE+qQkjDsyE0Gdovx!6N)9y-l}4agGm!`js7x-bU&vl6iwf=6F+=^wj}Vr z?R*GRmn+8hdU~xbsERLjJh~KGl8t<7b3Nir4!2H6Ain0 zY)}=qj{NSzx=*U-K~|YO)aJPtaGVvv*O>KQ?nC)sW7E9i=jZ3LVGKYR_fGJUex3Jo zeG-10&@ViPm!lvBJ1ToY?(}LHIw{#pQF4Ah+94%dcY(Y#IX-<&izC`4&TOy;Bkg&~ z4rDO%Yo$D$eue`<5cmM1Kf)mVQQZIN7sI9{wJ2&fu@MfReGw=$Jmq^a&JHb$(hp4<6SeG~e5jr;?axFfb23 zZ4f;#3>xLjUaanEXIPx(D@F}?p*x>WO4RH+&W?^I)nsc3_Qbt@x$xLrGDs6FPMzeV z){}KgbwE2GWYnNyEhuo|MFVoEzmRkZd{`ct!qM1apPBKj75=ORzQ`R{HL~Zo(1h|a zA{63ppoWQ|!Q;Prt1R{aDar(DGhege95KgY2ke~Vleg{U-w*~)Xve^H?RfwaRqr^w zW8?f@D95uNLhKAAXBS^>fswIgc2JpBJm83uLUgD$qUgVTjrS zIW(90xg6DvwRc>7#ohO|+C_SUfq z1Z4x{?=0gGju?N`P9rf*Y9>lX$0L&aF|E%2y++5k8Ty2`$UXP&^B4&w0Vq%Qd;1k$ ziewiG&U_BydvKJA2^@rsA#!ystPGHz)ku?3TjHlzHE@nK;a_9~m$!N$QjXt;aq5(? z7q=++St5+poLi{d5(1Xm8Q|U~(23{S9w~5;OPB}z*Y$Anv!3ieLfh5WILdh|V8)&y z?&4yu+A(1p=UwW^okbP#mVK-G^a;b3*Xp7xid9pOq9S|E^*$#r)4_#$=?W2eNk5ye zOhZ>bQ%?^0-v3Tm4MYW~;V4^Cnmh2*le0qERi%QU)k>ZNW%{W*I+4|y9bGW!YFt?x zBxa|o(=~cGV1=p6oIFpP4Ol}OVGWMc=^(k(dHa_Q5kLYl6)>+eK_0G2b2ew~_W{5^ z;-iMxjvC1ENnJr$_W4-`a@x4a@30v1s7&$%vAx+qmfd*#nWU)b_m2dbW%sox^jCb%dd=)BOl}@mf7DFG9xniJ zr6IECNv7?@Q$d3u4x4_SOzD0hClMOD)TrO#Fo1!=PqMkGo1G&HDgwr;!;y*W=yN+g z^VuycJKw6|BMO;VZS4o$4V8%|_)7h2k>}QUqKGDg_${~nub;e~hk*E2Usm&BA%IwN z7nrPxU6!rm-HS}FV4f=I$trvN{)Mo?9T$c3ZT}2=(3Vl-8B$>)M>1f2Y$oR~cqLRK2eB zvt1P$+A1^pD+Tiz-z}j3YaU-K(~HlJpG>YEE#G=(gej|7gL?c(XT975q|Q21i+aRWlBlTHu$?1 z9=^Jo-Vh9`r}G(4_!Y1$-TwoBNy!c11#6zI0ca{Ajy%Lc%jIC7G>dA%jc#_rd{kwBe>{c zV`%dN%3l<8ejJ6J==_kIn>%y>n|bceHCTgnRkPk0F~4D-v6*(@_6H>GpO5@$#qAg4 zb(y<5Oxz~8;%h1cLzp%No4%NvY6Gv=6@Mgvl9WfQ{mVT6%(7dmOw12i!%3>-O*G75 zU#5H&JD0>a7!KU}SH7N=G5n5%`;%q?098HTha+1Om(xfVysYEu*WCNXp(Gb`0X++k zax|hZQ1uT`Kj4^eZEGUy)gyXFZBTDlqn07Tc6^OQ^pj*d9&4@dlhE^- zf;RhN_jYodp>*y*_M-Hr=vaRPCNU{G$p!gx#Xma0WJ*e;j>{zy36OoUY-UZ+8C|WG z>RMaEtD+c_*;%~=wEaUHo1i>dCV!ySKC?bD&@{~sL*o4f~bC#Zw_=x?#9H{Ul#|yALZmP=|6GQpZ6;43D*juDtN1Y0PVfax=eN<)yXp;Q+Qam?)B(J0+O+HTTbX_5a`~?Z=&tUCTD=nJPfh z!ZW}~e>ak`Fa96X_J?m6D${a%-)LWi zSKc%VurcOpE#VsJ;yyV}3vGs6@3=X>L{X;#rC808+nZlYasnSZOjX{Ml9H-*Iwd6` zC4Kkd!vsVEZ0fn(bEZ`Anv7K+Vp3~8uh*BgbsOd<{PzSpy0`OvWqF$@{A?z3C8cUTOWWM zyaT>@-*Fm}yggN}9D7HM`BKPbvI{+xl>2u9z*2%?ovrFuX8E0ts+Wv^MTy@ST?Tv$ zs5KEWo~}IDnb4dKt(rhK=$qAM;;`ZaJSX!&X4HTj>9xlTt_3)^brN!Nk%Hh)tO3V6#|F){u@aU&*xmjDx~_;gxjEa*KR5QLGo|E8 zz(9s&C#nEahQjj;euwL8eL4_k#TRjDoCS1B^FXD-zQ`kDSeb#ypg?D=CusV9*8gH$ zMWL`4(975F#IvcU%0C=T<}O+Ag44V2%#ipYc70f~C$dRz^{XaxCCkIk7i+CEfnbgS z*lUNWAeheiaJzm)%zY!if+E%qnZjdSlug3!vpG6k-!Q3bj=jJ_od0)B*RX=Dob`~y zHJ1SRgSXYy)jwiXm=BHt2k*)blt%V!j$G+z_z!IDXFhZsZ7r&*By(}zy?a;Ktx`vU z5q#5W0FcJ=4E`swWyU3q*Dj774WUoNpWH)UVQS^F{>vJI-v|T%^-0pyWLfu_{= zdZ57TVSg$g2f6f79?_*s>7Wqu0RS1gzHoX733U1?0QA#x|5=)EDR**|S|kWHJ%nhW zD>)@3B!3x0}-brPLfR2!#~~X=t>ayyzHi zymA3%^Zm(;`BNzycElT>KOt4(V*(-nTV~u(`JuCwC$9gT4E)nEuE+wQa)!@E4*!Od z{?DJC#sowm?QH6QDIkBNSm@Gs?9#;?z#WqZ_*7S}F9uQ6RB^7gB#{Hm38REBfE$43i!p3TnpP{<_lm$4$Wa0e5pa zKwk52S9q8KAPc%xK9T%=^Sf7W{2xQqPIa0KvTIkA#F01t7d$}8w2~Prp*(y5R3lT~ z{N<+YDOsj)UmAZ%cRGidW-xk4|63||iRbPZw^&6H@845O{*nak#n3LCgDrA-qeUhp zB&3y|lJXmPqhlAm*+s_4m{6fFIfJMBchzb@NfQ%bQX+eD18;97cE{52D8}AN4%U>U z`cV+^_cB?8J-&SUVkk@OFvc{-c&l&{z_nj*qMi9m-S^u<06bzvMJ)Tf_X?=(@qz$- zPQ(025}WZST$3t+PiIArmlCk<+~*XEay zu{Bc@UhlZ5^5O*n+s=`_;YYigYiD0MfFi7ig@MELWRz&X`qas4pVYPfcdOYNk zqlRE_I}XNUoZNJ!DFQtFFA$qQrBeI?0jJafP_)rngo{8bcM)8&8eiiSaK#e*NGD&r z*x&}XQiyL~x^E~jpNGJpy%L9v8+#jf#S3Sg<=0XA=7|6v>7!Z>up`6Pd~2#4P=R9} z5|;$*=kWv3xON`4{P93;@#Jh^#QCvL9Ep%)dK5KZe}QD{zyO~Vvj1$73RAdj+0J&4 zNhamKDf{^`V|!sj_7($nj=N(r*V0RJ-zloyIBo}EYduFjK$YxQT3O?K-{&+ZyZYmG ziX!53!lOhs#!XIldt$TWbK;JlC;ROtrxrd9KO28U5TzsaYk25i6Z z%>iE0^~ied!`<=1=PailJIn6a1wZ?#+U6{LPT)OV=?aHnvRl1px8B#;3~>RwaV1dN^xLU>Yz#M44>MA+Yc^&A zMyEG}d;5}JW$9uL*trFf<^mKt%TTY{(b31v=MeGT&E?2j+`SuB^H%eX&Tp$CFaCC!0}(E5p_72F=sn5c zi;wTPb>?E1ypB5z>xvWERBuy>F78QKnG=Q+n4W`&JV15AZoa-BcR&c#_E|>;Z8~Sp zq7FijXLoOUHvuso-U?9{Ts)YwGqr6F$PjAG1oi|;=CO%+s*XY|vVpZ{)9W#%_S^L| z!Xv4R7eWu3+Yk#}doy_AQ!KV57fdVkSg+cYn>Mcs@Kx@J z`9FC^`dK4a>d_u@Qg*N7T;p^z9K9Br-rubKB~m+2CVo@N4E|&i*fRivFL4rq-2Dy+ zsoji@1hB0)&=427XUE8~svT|4MENjtz-H--9XkA~iHCcVs&;0zC@WnS%$@ySUUfu5)gXPg<= z+ws!7aC3o!4!1#$>xa0Yt^R_beSVxrF|}FnB2jK`L%|!z=~7-WtzRO^H;41#qb<03 z8Y);bD)veTaw(Sb_H7#&=a0I6!KffIF>f_tmpRs^OuU1aeLBq9mVfUL?-z!S5GMU< z5{2LmfuwNEM>e_O0#8{l9)2XL&w2ZvgRTersrUeDl zit=;bwa#)z`xi!db|B48R|?{G?JR7?p>bzlj*(#zt=;pAwlroG9}O?P7({M$57D_! z55Qag$`}c=y0yREyL{pg30r(wSlab9t)EpG$a;L%D|UPT@L)kuvk%xw$GX)p;^UGj zTah172XJq7om+2i!x2`__Cx!$`5n$|l~9fMq@4}%|GkdpBq-xLp_{*C661DFqr>x5 z#mP{@zs+teU%S$P->>o6C4F%)+0lqi`_pW8qlv>2DK@`@wFF?ZuD-bNh>r&~K)vzb zEKT1>OzK1-92yz-Gn<@}{~z|=Ixfnsdm9%75mZ1CmBye;>5vvF>249pA*FLb1&>8Y zcXvrQL#Rj$4MPY+Hw@A+F#I;>e4qE=^F7bu{P+93@8|h%aBlCp_rBL&`&w&V>)N3V zl6A({@;`!((bjk2Eb02g#n*^$(Ml82gz!KRkK1;CG9->3WwqQjefAGtUa(lqMa+^@ zN0CD7%I!#tfu)N^6hj{=H=SqiE-a@!Ju_%m6{D3TD3uL8V+bdkXDcg!z0u;?e=h*^ zJM6><0F^0O@ucwZ_p>9$37UKr%#?E^{|)2*?>|)~0F;)?>Z3nvx@m(u0O}1T3tReM z3-{me>K8^#yBB+Hsr2pNKPLG0UJ1bG&o874o^4TdI2SP)uLW&R_nrRr{aaZlgiuBA zTJ`A$e(nGL%ZYQ-^9_NG-^dg`^AQ@(gBcL^l?(sN`<#9$z7;1a0KK@KGv^A62*CdB zbIclN4{Q7eNCDV5jGX;aAJT#p!1*lov*#ZSexk7AtK~n)srZ7N${)qU(26x5MAi_}uTUdc6ihIj&@#>5j-S52trlzc7RTa#;qG<2jcBMDvO}4 zGjET-caW*gwjX=bmq7-c22|4QjrR{Xm2CC}O3c1%8DW&(0S2z%F_3xWv~1#c--*sN z{Z`sqo}jqvQrt390ax*fVx>nnH#b8SsYctIq~6cw7Q(`%F5Qe-%yyKUN28own(N11?W9|y zxiYPhMUv!vw)al-@IXWIC!o&I-uUWGn(6yF&h=5dJK@G>TLCEW7BWy=x_I&P0F8(j zf2WyZqJT-){P$?dz<}37s~Wk8?_6CXDCXU9Av<}{BlP5R`KuER3EL{VP*&|q?Epdw z+szZ{1BzRN@ghMY%z!cwaiWnxuaNMptHNqn)zEuZYOyCZb_*riK;1_}zD0%JaaJ9@QD1=oSEXD0N7hv0Fzi zG`xFyO;5%iE>-kgBll2UgB6ByLq;Bz+aQglCl#akdjjvX>y?+XjaDnL0D@%vhiJ-3 z-RkGEo}K$9n3w*Y3h0BDMCkB@U8W+H&AOKK1<1i>VUdfKIrP}e<@h7Qu&D4LRm|_D zi=H$M$)R)6=QDAp;fbD{D-v_`;@gL%y3N39)s^y;;?WO4^TWx*+~6iZH@CV(N0w3i zpg@Kb&y-bK^RDQ6F#ZZ}B&VsIYD`5+>RQGA+OkJeXBdl?V$bH;aUW3K04{1EJBnr8 zP+XTA!Yqk*Oxv!N7Y4fNj}z%H6n$MM}`JB-6or)u7Un~(32c|WR_M`&@R-Gcm79~xVI2_rQwlBac`+kzJ~^r zT29!*qm@g=K1T;KHd13f&M(m-gL*(0^NASW6Z$7{Gi{s;Er~N@6-aK#vCrK$DiKB~Q z(!e9lacECe|5#tQrw}_)8{C`S3AF`mME7I8GQd&T$QG`6I*FaFpZWtwTjes5&iMR+t;(HJJv(-2cb|2vQKSBAl4#9p}4RVx-&WJ3#%Bfl`l3R=7Y-7y@XHX#}ckW;YoP z^P&K2;HR1S#KGT(tykCEz9X}Q6@X4t`&ZJvfz6-!lgpH{dG4V?SGN>wRhG^|!+vQ5 z&tw9UtGtf0t5;A&8&d?`u6Y~e;W^0zaKX&~$IrrfLzwbT`CSZWneJWS~ zIsrLR+gE9*B|7x2%F3nz*|U=XyJ^{1@XuOs_&XWs+G7$c{fDg5$J=F>19)z^4z5XRq3mP!L8* zn3|hcIBlL#OV3z}rSE(ZuVAjn7{z$^Z;Lzdm60-epzqV4Bz~U9eIvShsf}f;#S_)n z`Qd|R)o=j&6leig=CnNHuApZ%_S(ADI$ydcU%bmw_DHFF3C6xFamjqpWwlqzb=;xm zV0$??B_)Ly_p$leF39LQxS8wT`Xs@{bwmxS&WL8Oj5sg49#*woVTG)(d$G9@r!OHX zsiCPk7v^IjVPcx+wai}||7}T1S~@!^X}w$i=ZPTOU%Bi*|83nJs}LZ4R96vJ-~%qN z`L5#*{ONUJ7wM0JhKP=+0%~DZ4MW2Mj+@@;nV4-S@B2F`mpHmx85C5ltlnXtKOb(6 z-O?p|oFcOC6gakH5+ssRIizi)q=eXWFe&Tl;0OJAu`9HjY_KZXyV4(&wY9T)`&<`9 zX`m^?D0l&?FFjH}4}ZFaSwzH8M@PqFFQlc^X}I{nOXNSf+dtnzJ?li|k8DUjpU_?p z)Qp9lUD4lPO1J1)dT(!Usk2^8y+QGp$zq^7)qk`*2I=ZQTFi8Q$0Pm&R4s=5M%oK& zN7&I#n_W@SU$72#M$tT>nROA$&nqI*uCcG$+q!AE5 z=NCaLqafQ;ePvmdQ}h4Q58x{u)&0 zAWLDrSt8P@c{`_|U@%;(OWn*YBYr2-6V=1SkeJq|B%}d4Di9rzf{MOn%uqFtLdEgU z4K9kkdvKrQ^Fmd{#j3EH>D?WXX3Zwy-5)l1K8bD{OeKd~U0mKulw7(-(9L|?>YqlTqnEQiQCJ3Dd(Tm44P*T+Y;BC&_6NU$ z@Gd1h$|t>VY>pTBi}0(9eivjNp*kV`aRq2ICZ>V><$~9}FSCN`FrTI3dG@AAjeN(o9?kB(pVBnE z+waO2atl{X6O`_I;_%I0BqGvsa#BAUZ~QpG#8POHcX9tu+x!ooe3kIsc=m*jmRNXf zM%0Bdd!Yx`jq`+jFjC0#cbkam=Z`bLwViIxWo)hcWaxNVmD4?HwO8eicdI5xesNfpoZF@C%Z z69W?{Lz3<*SMWp1Tv6`xiJ8u#M`@r0`;qcNli{2@qQF46a$TNcb}We;QaR?uml}!3o3+Q81vuXIO}Jgw9Qj#fBEOway4q zoCvE`vZnJFwzQ0mlMN8M*G9SyT^EXgZ2y>jA6xZufe`o3mj@fWyA`|Vd}ap_CkDR+ zB>kvl3Lwondg^ZW9Fr+iQ$D9P=r~nPRYPinQwb-~EjJ7J-}d z9BR@U?^V?mJSQTyW#$Dvt#6?Xg&K&QdCReC$R@boe=x>>eX*C~3*&HkC-M)Xu1W@g zwS_t4&MI=B!xmuzS2ECCivL^1;@>x?A0z;4C)`Xw(_FC$oKk6D_YdUwm z?>%Gepe;y=0HE^L7KzL=c1o~k?gFe`JuhW>wr^no`2AqUBw6k3-}eMqdu%g>`>fYQ zI}v(<$~TI-na=)wVGt6oxvTsGwx}$)Qet6GMqmb>A!v2 zO9NLXda*j4CGm|zY_9}DLQli6v$?Wfs^Cf`ksE^kXa4^G?`C?Dm5t?RYhcgWZ|a<1 z#wDBp{{X%^Zo0D<01lW0)5QPU!2b<4@LyN;e}}6QizUPa1OzaPuotKdrKNp&+^+oZ zB#HkWMOn0C`;D(1@^EG5N(WIBMz*%L_V6KDdwNaVDSIh|sxZ|MZh(7^Fl(Nr<|q+( zBKqxIXKW!J^&dWI+b)Gi46AiQ< zMU2Bb6TBjdi%Xohx1yOD8LdB=AnU!up!tXS_N2 zm9n+Eq$IIO{TJ@SugWfOj=7Fy8#f0m&8R8%tn8X0=BXB&y`l9+MGuNbqC;*&TFnX1 zyzx1|SJ<%cr9*XQgKIEkoat_oW6KP^=p{(NXVN{Jx34A~H9Qw7o%fb%p=s4#yiqYR~>Ao$w)dL+zJZRY}3C%F_4j0*9IRCZf>j0^PTZP&6 zV;Br0b!o1vXFd^LCd$CTFc4XUU4OiLjL88-!XeXfceH{5mt#OmYU)z^I@bSw;eSTV zzkjlLkDXt<;%H$J1+ou!Mj06ID@z7k9t0VL6WHl*K1MkFQI5&0}4`DYaQ9z@go(mpTMCt$?raV$U~~_4eHqr zMm=D#Xne_03REp>XteZwvVC+b6hTQPnT&ejjoMm2Ib`BYz>hp4PgP9 z1!!}ER9tMNmQeuFnTSSA@45vz7Ko>Lcf~Pd0PO^lAAK3|x!LmxsWCC+M@N&;{(1L< zWTV7-mjOQWqgp2?9i3?WjT?-2?lg7A9uH%WIZbbyF)b36dZS%zhRYQ;=Q?jT8YvBA zpPAaJzq9^+Wxs~&u4ItN&THXIyECDRFFu1v&6VG7=`ECGZ6?10+2hRjBdr4Iu7%!3 zA=2@D6=R0FFa|>$qxiXB>r=l6isyd!HPvy5F~Q& z2=7U^d(#(umxEmvEuMYB>;E99uhOvGh}>wCL)UZEPShTt3$wEN1LK9ZC*ROO8s`&7 z7Xd-O4`f?1z;aa|%zMh>TQjlA;j|$ey0lD6dSh5#>gJ6bZ6jR>4;{-vV>UYPO}2`~ z0wJGFS^6x(-Vl2R! z4SApKZ_5ub39Q1d!|gAn0)9rz9tAJ!oxLqtVFi?+TkwpyR!r~ex*ZEudg7T^p2IEx zp+t50?XxKf7F-}c80|<+Nj>wfz7T-=3v9lhT{0Q@07!qln^_BtXU8YH0H8xCUYr?6 z0ly@+UIBl|EO<(t;6H%+%9E1KNC4%TyG#-sR99@cg5CxG?K}H@YW_Q=|DDqRTIt`< z!2hEQ--omjnU?klfjx7Uk3NSj?I)I0ftswS7)$x`sAU2oZM2fTuZep5|fIwAWKkjJ1*0RrOc7Q7^K0d$R8_g^rpd&js@Tt)V zD(aX$qKo#(W@1|EPJZRFvvT_?x=dm3Oy+waAyy$Clr7`sOD_eX;}nmg0)y&>oZNzw z@=h-gqN5v$+3{UNZyuQi*yg#IJ@1c%ED{ygV*+kKkDT9Mh}5eN`UllEx8E@t1lNt` z0DTvfEL1>_f7M5?UDT6nUGI%!n$Fjr9u?=WkRZ~x-@=li%gdn}xsO`Qoo+Zr(*Yu61NW}U*rB9`i0%@*6G-VdZZGF+kL7n?Op zoG64Dq(Cv7*$3V)^WP1!PU&@s)Jx(KeFBm*gP8Ty1W*e}Pfr&x*r}Xs-kL|R4ct9; z`%zja2GM+ZlS1E|Icc(Z%*3_Ay&K7?NUaI*-&8v zBvI}fKx#n5XlnJ426`xKS9cUxuUDT^f8`&bz47aNQf8QMvBJ>&*@S$P<%s+pPf$C1 z_UzepVz>L$Hr^uUZO^}c`LYPGRy$ILQK{h z>b=-%r^P%#jD+m2J&AWXu=H4JWmw_Vq*>c<9?QvNMSvny0g>pzqdL#sUT1`%8u9|o z-}{r3Z|yFXwsjyE7A)#8OYJ*#I5@aDYA=cpkB&})Ci4XE@mb*l-MYsW<1U`wnB&8J z5rsH@!;=ay6eb{#=#0w_4ki}f>ux@n=@W3N;_Bj;1VvmzPbFgr$7BZOzv@*6Tb)9- zh*Jft>cxO%_(uOg^~O?kTSrG}`{Clar&C)i!{Sz-Vww5z1w6dPWxI%luaSh~)1hWA zFARLEnGl(m&s?qD`hJ@D7)=e0R$YRsHEqM9ALB?@aHuph3rnuNiwCmAJVA z3I>#oiuyn^rwuHTXa9*1F(h8Q(R6uXtR(YjJWLem(HIz6hv@VU|6aeMg%BZkR!4{3 zp%0()+Ji2{6>dlXYFg<~&D|Z(sd2y0X^Dx!vLw3I8cvK^m<|eZv)jHobN=k-#m3IR zcF4w*f2~^UUs?c6J(5JCy(?>jgZ+Y~Dr%1FTj+3PZdzKY2x|E&(qeh=Rl6*Lf%m7R zj=R(=x_r81BGCv|oo5UN_C0j;dtNaITZ`#_uP(&UC7N6Hrr}q62+E7n*nSf@>tWoa zlQdq!5?q9fB=O$l^mWEsCEER{Z1pjMIlKaCj+EYBPEWFh>ZZYjCQul0&ZLIjynY?j zy;?sp6dr?5q#@ zV+V7TEqbRqSjRzd)!&I8Ur9$dydoMvr9FA)$BCh*zAQ<{$Fjw)7e8nKqPkK2!xk)JN3?M^S-)ej~$ zp63B#%vY#5wMj|Cb<3@*488VAYpDOKA}n1a2Kp=SG~FSug-`W9D>2ZLedT`dG&&b+ zC)lHNU0SLPv28C$sX&sGlXdSy14Y2G@;IKy1(K24E(1v#49v`OAZ9Ii$1OCr^v1cL zZP&}~)!>Uhy7ctz#>M7M0kBs{`}K!i&maBV`5=Vr*HFQa_ck#J738>+UXXcYt#I4_ zFlL1OO+6aD&vNhH7e$u)MwJylnV*d88o!X@l}fo+($KYGo;nbcaibhWscvk=dK zVp&>#h0AL}_^+rH>pWO23$a7VuZFL&d^c>g0m(RK9#~{{w!`Ja!R=8b(#UvD9zD1+ z5h(lCWz1Vg2gh&O_w-Jegp2DXxTmML>=^n%E&@fC_MzXDLicd?9PW)1=ck?{rJu4wlyw@)H8@oixkG~OyN7JPWoPOY>eQXTeu1SauoCf%zq0rUBlJtKYx<#=s=^oI2 zuBjW-G@DB>!}H0%q}OOt!&aj2v}?;$T+sLn=^K7?ebF>A7V260Yk*z)LF|dsho+_` zICZ2S!R5=!Vq!@zvCoq}-Ko7yaPfZ0q?Lw_M)J}UIVeo$I89eTweqq+`F(G^_*n#2&JNKn5xQB38`y?tac5$+xy}Z#M0Vpe}*+F*z@-v zX3(?$xQE#t($dbq5=}Z%S|Jfzl2htzROT~cQ>LQTN zyEIbvzPGP$_{cKp^BwtHsK77GR9AW^ag3x=g-QxxKhk)EY5nj8#)LA-@Q|Ha!N}{ zOoJHZEno@Vv27eduZjzOqYCSL2V29Ukt_j}1t2!apgeu9@xF2f6qx z4X`US&CS{s95=5Kc$a0X%U5VvZ3mK*#zZ%YR24cSW4`Y+$0G8-amc$b}XEXLhQ?tCcw=XQBTmj&N zAN8WlCu)~CP4I|P1{#VardQ3}1xl55&m9jia%`N9h;X6wvKs7gy%nEe#MpR1RMPr` zRt@rzvd4F8aIKt{8tYzYnTJ8vg6Lv4P5jHt#8&#rSv+?ZjK6)+2b7DdQTV||Pft&b zppDg$``8;TL!b0DlOs>Sivn$0g>XII5@v}yg41yD&myni4N$@#eHq35uOhDW_0MKV z7e4vOohPfwfSDC@oJwHjA0E`O61(-c0Nku)26 zV*RIPG>*WamI+=*(M2f<4jP5x`9~+&rM+XZ+WM(vdSL6BAA!2q>vs)>=SfjBeel#i z(kfo){+Eu+guT_mq#kxsAtL+9sx>btAjy-5fvr@eWLL947}SuncYo>Mp^x%xc1AF> zKI};TMzdChn52TYH)V;Y)E+#BWFeNwU&BkT8qbPUHEX1z>;U z;-yP{4Vd%X_7h^Ei;@h6%?=|)j+x+) zI8zSTlA-)bS=<%(+MV=86A5k;>ryg-G}amIv))Av;fHD&CH7q=X2Ux8jw$I`QXx4907--^DC%&YhoN$ z0w@X`WgJNlKVBr#diE>@^v*Yo!w8?noeGb;xv@5>G=DAhOe|dc96?6K`#cK(z|=b= zmD(jccx*8=!M+8wnL%ai9Nb+fm8zG9+uhLpDsAD4$R&? z;zoblIbbT0P-125K6K_WV|};**XHucPwnq$aCUwIJCM`TA#6kj2R~I1S$+~}O4RlF zC7fqKgW%F7EtR7Ab_JSo_W4se)k9st1HtGfaPOXK+HEKlqs^B5bb*L0k2*WMZ6q?? zE|QhYbAK&DXmd=iS)Pr$V2kwru!*kCo+)WviEn-s$ z%6XV*<3eL|>DnWh4&T_5;H;&~hSFPx;Rk!cJj%c+##u{NByMv6)dt}PIBoWQB)RJ} z=zEc?rb54>lYIc8C#kMSF*3vJ?Xa@z#cYYkwRFoj*86@Jn)t`AmPNh#Y1^K7BkGt6WEn<#Gi4qoaU zLW0YxUDVlTW{!43{F?whTjUPki~_lhA0#r|$3JN5@5_-KytZ6B;H<;MZ}lZ)cn_zt z1yWtT%~SnU#=n4Hr2hj|*}?S6L->A=JGuR??U;t4X7c%cJpGq|x{1jF&5ldykw%uE zpGf*40aWi9@A?sgzmk(Mpl$smPeS5Vc>UeF#&X$TDj^84+zm#9foz-MNq*Y&Y0Mw_ ziU}=R;t5otxS1#jD5M!VIFwj43)KB|*sF?C+gQiqLhkFAtttlJ>9}lUB#_f_EmHu= zWO?lBLR(p6yB~`d&9I{Z2cj!^!pGx`e5yXn?jp5oX71XTUc$kZ;cB_C7^r4a=3|$R zIke30g}-S1NG07qbd^#&H#dj_QI^^ae=^TGhSBtMq1y0{uCGHgGVm!$ne7zjPRleJ zY55^HUX?>apIqlfQVy}LVa7*BKNReogQ0R8` zkNz3!@I|1c%*U_o<8t944$1n*MZ2Bl?cF-hE8J*ndc|JDP1RvTCbXV&D@IXV1NX|# zfbOU5%x#KN?-oTWKI@Z$>9zbrpLEUG*`!uD-uGY$vhZszh3ix(xO9bj3TGE;;XErs7|B-3cJPoE*R%UVX9@-20=UaNyQ- zN;PiMJIM|4ZCkjD*thWK{e5rf;jiaqT4-HL?>J`n8(5zmP7THz? zc}@GWe9B~5)kw>>g@+n#2H7(m0t75$eNR#E-@h-j`1#CvX-K6xfKUZx=*o?RK{FjBjp;t^=*3SD?uPIpSqg2N{ zt->;{90H3v5#}x`$~4Kp`hbHw!Qfp!5j6<~e1cL4g*(rZmngg~x&DptUr~Zw0B3lfsHD{1EV(~oo@#b+&U}mOB zScP;AE_(%pIlaq_+!*r!nplWh_0KA@Lgsw8aLOaBj?7xGrKdRo>F4QzGI=dF{jKyC z`N{+K3&N5~me?dgKM{^v_bfCXrx!$PR{wj!q1RHNL!q(HG0QswQIbvh#?S^EcLU1!V@ze2O^si{~~2R_U$=7>Rko=zS$P( z#pEt|ZixSKoi~|~4@Pf&azxpAMLAWh1Xai&E$L^J8$TUDq*iDs9G;L+5Knfc&`{YG z5H+5XMqWq6Z~VgXw7uxI1KqII_f0uHG+*CLY;kdML3CaTDH&OE*A1_N^ZWZ(cr~bd z4QtfcLsQV)QBZYy-F9&XMRkuK_EIP>`PCO%0%K;zDj{>7$4~AC5Fv2q6AP8#A`N6U zfs{@TRkPOLIzNzmcctH*BMbs@X_kj^xo|&pxgM^`^6+8*hbjf=-ry5t z$X)5B8Wefr@ThifW21OZR+dHHtzRh9-9Tjlc|lp`G-cG!$dH!%-Xn7*ftI!Jhx?b* zRR-2MyDZ~7KjmpbC^gLJbr)^3a~|dJme}NzRSe9|X)y2OwT|lzA#tMfgah)mWQ3Tw zduoI)1!{_SK{S*^9b`_T!s8%*=epycGPmg!F@`24BE`Iyh|bv2bXc$fyzKc20dY;!9t++OCZ# z-El=0IksGF4><)4&S75x3)yDKU;R`_M7)QK+thrQdpnManTZL=9{c1jS*}FfE#GF8xjr@aj(IdQc*7c3SKNpwu(+GB*sw~Ic8GO2kC97KAZgNDTG#^f zGm7>7@b#Kd^bK{kkp=xB;h%J_}S5wo8Y~N{_ ziGQ^9Mi|X%bb7XMx=`+fQQQ)0gXfLvl5AZ8%=Qo+@rHq`H^_6?Cq47DK4AvL9(_M}$_)U&xJSNFG zTBCaUNNk`#CcTG9=#~)S`D`JZrz;@gRb+ll&9pZPBCIjD>22qH?!~czjU(sqX^_`< zZE(PSRsC@MbowL70Sh*xXaJXxIdK+Z%m3mBW2nwFu;?vAUoIx-l)4)Wgt<@Yd4&?M9#>Zl!`F-Ead9g6k^I|l_8@_xr!k1;>vRyB^0f3?|nge#=#~-C)xsdOz4Wt06>9eoVzP3A0y4Cb-^(sY4-+Vep-$0lxkx1zRaFVuklxd z0aF`vh1Q5CDS)?TqZahO^N-x>1dm@sgIGLdXOE4AtqDMVJSKVpa zN=QQ==;2p&%FEVRIf)&c@I3!c{E^?b@*uWr@B_C}(5Fw=N?>b(-Y~0h&3s)Oj*7TM zWGPw8>}~v!G52>m*F0WlMpi8QXV#^q9ks`g$gFgWnE z_)Ul{A`y>ci<*rP^^11c0T@Dq=PP^BsUQM%5i-<7jc^N{t2IZB--yMshVLnG8j0Z( z;t%d@tuk}5FxsCAuzkfg!Q15R3L3dc+kF{ih~N#W%zqfVw4ZOHPTL+RRB7euh`2Z2 zyrf}ZuxhWh^8sOkdfax-(=hMsbkNGGbI{h}DcvSGh zG01wZ(KP#|*n50!d14s9u&M#cOXqzSRh@8?iO8bn=xQ*^q0;&O8u~Hrwak^HVNmpP ztPiGOy4~2g^b{MM6RR;&#U&Z85pLU`@e6sV@)`)4y>` zak%SbeT<0_wX5&5E^KRHG}ZP)2J`QtlB*?*%>p1Bm~`np f)zdqpD|GQe+Mh|e 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.1.0/setup/openshift.md b/docs/versioned_docs/version-2.1.0/setup/openshift.md new file mode 100644 index 0000000000..deb0aaede6 --- /dev/null +++ b/docs/versioned_docs/version-2.1.0/setup/openshift.md @@ -0,0 +1,61 @@ +--- +id: openshift +title: Openshift +--- + + +:::info +You should setup a PostgreSQL database manually to be used by ToolJet. +::: + +Follow the steps below to deploy ToolJet on Openshift. + +1. Setup a PostgreSQL database ToolJet uses a postgres database as the persistent storage for storing data related to users and apps. We do not have plans to support other databases such as MySQL. + +2. Create a Kubernetes secret with name `server`. For the minimal setup, ToolJet requires `pg_host`, `pg_db`, `pg_user`, `pg_password`, `secret_key_base` & `lockbox_key` keys in the secret. + +Read **[environment variables reference](https://docs.tooljet.com/docs/setup/env-vars)** + +3. Once you have logged into the Openshift developer dashboard click on `+Add` tab. Select import YAML from the local machine. + +:::note +When entering one or more files and use --- to separate each definition +::: + +Copy paste depolyment.yaml to the online editor + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/deployment.yaml +``` + + +Copy paste the service.yaml to the online editor + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml +``` + +online yaml editor + + +Once you have added the files click on create. + +:info +If there are self signed HTTPS endpoints that Tooljet needs to connect to, please make sure that `NODE_EXTRA_CA_CERTS` environment variable is set to the absolute path containing the certificates. You can make use of kubernetes secrets to mount the certificate file onto the containers. +::: + + +4. Navigate to topology tab and use the visual connector to establish the connect between tooljet-deployment and postgresql as shown in the screenshot below. + +toplogy + + +## ToolJet Database + +You can know more about tooljet database [here](https://docs.tooljet.com/docs/tooljet-database) + +If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database. Please [follow the instructions here](https://docs.tooljet.com/docs/setup/env-vars#tooljet-database) for additional environment variables configuration to be done. + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/postgrest.yaml +``` \ No newline at end of file From cb5dc4e060f368c948f708f9f412cc493c6a3d02 Mon Sep 17 00:00:00 2001 From: Adish M <44204658+adishM98@users.noreply.github.com> Date: Wed, 8 Mar 2023 12:23:47 +0530 Subject: [PATCH 08/65] Openshift docs (#5719) --- .../version-2.0.0/setup/openshift.md | 62 +++++++++++++++++++ .../version-2.1.0/setup/openshift.md | 1 + 2 files changed, 63 insertions(+) create mode 100644 docs/versioned_docs/version-2.0.0/setup/openshift.md diff --git a/docs/versioned_docs/version-2.0.0/setup/openshift.md b/docs/versioned_docs/version-2.0.0/setup/openshift.md new file mode 100644 index 0000000000..bf5c8526bc --- /dev/null +++ b/docs/versioned_docs/version-2.0.0/setup/openshift.md @@ -0,0 +1,62 @@ +--- +id: openshift +title: Openshift +--- + +# Deploying ToolJet on Openshift + +:::info +You should setup a PostgreSQL database manually to be used by ToolJet. +::: + +Follow the steps below to deploy ToolJet on Openshift. + +1. Setup a PostgreSQL database ToolJet uses a postgres database as the persistent storage for storing data related to users and apps. We do not have plans to support other databases such as MySQL. + +2. Create a Kubernetes secret with name `server`. For the minimal setup, ToolJet requires `pg_host`, `pg_db`, `pg_user`, `pg_password`, `secret_key_base` & `lockbox_key` keys in the secret. + +Read **[environment variables reference](https://docs.tooljet.com/docs/setup/env-vars)** + +3. Once you have logged into the Openshift developer dashboard click on `+Add` tab. Select import YAML from the local machine. + +:::note +When entering one or more files and use --- to separate each definition +::: + +Copy paste depolyment.yaml to the online editor + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/deployment.yaml +``` + + +Copy paste the service.yaml to the online editor + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml +``` + +online yaml editor + + +Once you have added the files click on create. + +:info +If there are self signed HTTPS endpoints that Tooljet needs to connect to, please make sure that `NODE_EXTRA_CA_CERTS` environment variable is set to the absolute path containing the certificates. You can make use of kubernetes secrets to mount the certificate file onto the containers. +::: + + +4. Navigate to topology tab and use the visual connector to establish the connect between tooljet-deployment and postgresql as shown in the screenshot below. + +toplogy + + +## ToolJet Database + +You can know more about tooljet database [here](https://docs.tooljet.com/docs/tooljet-database) + +If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database. Please [follow the instructions here](https://docs.tooljet.com/docs/setup/env-vars#tooljet-database) for additional environment variables configuration to be done. + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/postgrest.yaml +``` \ No newline at end of file diff --git a/docs/versioned_docs/version-2.1.0/setup/openshift.md b/docs/versioned_docs/version-2.1.0/setup/openshift.md index deb0aaede6..bf5c8526bc 100644 --- a/docs/versioned_docs/version-2.1.0/setup/openshift.md +++ b/docs/versioned_docs/version-2.1.0/setup/openshift.md @@ -3,6 +3,7 @@ id: openshift title: Openshift --- +# Deploying ToolJet on Openshift :::info You should setup a PostgreSQL database manually to be used by ToolJet. From d988365da864a498968e72e02399111f98fef9fe Mon Sep 17 00:00:00 2001 From: Shubhendra Singh Chauhan Date: Mon, 13 Mar 2023 14:15:08 +0530 Subject: [PATCH 09/65] fixed openshift doc (#5737) --- docs/docs/setup/openshift.md | 68 ++++++++++++++++++ docs/sidebars.js | 1 + docs/src/components/DocsCard/DocsCard.jsx | 1 + docs/static/img/setup/icons/openshift.svg | 43 +++++++++++ .../openshift/online-yaml-editor.png | Bin .../img/{ => setup}/openshift/toplogy.png | Bin .../version-2.0.0/setup/openshift.md | 10 ++- .../version-2.1.0/setup/openshift.md | 10 ++- .../version-2.0.0-sidebars.json | 1 + .../version-2.1.0-sidebars.json | 3 +- 10 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 docs/docs/setup/openshift.md create mode 100644 docs/static/img/setup/icons/openshift.svg rename docs/static/img/{ => setup}/openshift/online-yaml-editor.png (100%) rename docs/static/img/{ => setup}/openshift/toplogy.png (100%) diff --git a/docs/docs/setup/openshift.md b/docs/docs/setup/openshift.md new file mode 100644 index 0000000000..d7dc7ebe11 --- /dev/null +++ b/docs/docs/setup/openshift.md @@ -0,0 +1,68 @@ +--- +id: openshift +title: Openshift +--- + +# Deploying ToolJet on Openshift + +:::info +You should setup a PostgreSQL database manually to be used by ToolJet. +::: + +Follow the steps below to deploy ToolJet on Openshift. + +1. Setup a PostgreSQL database ToolJet uses a postgres database as the persistent storage for storing data related to users and apps. We do not have plans to support other databases such as MySQL. + +2. Create a Kubernetes secret with name `server`. For the minimal setup, ToolJet requires `pg_host`, `pg_db`, `pg_user`, `pg_password`, `secret_key_base` & `lockbox_key` keys in the secret. + +Read **[environment variables reference](https://docs.tooljet.com/docs/setup/env-vars)** + +3. Once you have logged into the Openshift developer dashboard click on `+Add` tab. Select import YAML from the local machine. + +:::note +When entering one or more files and use --- to separate each definition +::: + +Copy paste depolyment.yaml to the online editor + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/deployment.yaml +``` + + +Copy paste the service.yaml to the online editor + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml +``` + +
+ +online yaml editor + +
+ +Once you have added the files click on create. + +:info +If there are self signed HTTPS endpoints that Tooljet needs to connect to, please make sure that `NODE_EXTRA_CA_CERTS` environment variable is set to the absolute path containing the certificates. You can make use of kubernetes secrets to mount the certificate file onto the containers. +::: + + +4. Navigate to topology tab and use the visual connector to establish the connect between tooljet-deployment and postgresql as shown in the screenshot below. + +
+ +toplogy + +
+ +## ToolJet Database + +You can know more about tooljet database [here](https://docs.tooljet.com/docs/tooljet-database) + +If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database. Please [follow the instructions here](https://docs.tooljet.com/docs/setup/env-vars#tooljet-database) for additional environment variables configuration to be done. + +``` +https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/postgrest.yaml +``` \ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js index 39f79ee664..860f7f181b 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -25,6 +25,7 @@ const sidebars = { 'setup/heroku', 'setup/ec2', 'setup/ecs', + 'setup/openshift', 'setup/kubernetes', 'setup/kubernetes-gke', 'setup/kubernetes-aks', diff --git a/docs/src/components/DocsCard/DocsCard.jsx b/docs/src/components/DocsCard/DocsCard.jsx index 4c094fb850..78fb481bdf 100644 --- a/docs/src/components/DocsCard/DocsCard.jsx +++ b/docs/src/components/DocsCard/DocsCard.jsx @@ -14,6 +14,7 @@ export const DocsCard = ({ label, imgSrc, link, height = 40, width = 40, title } Heroku: "Deploy ToolJet on Heroku using the one-click-deployment button.", "AWS EC2": "Deploy ToolJet on AWS EC2 instances.", "AWS ECS": "Deploy ToolJet on AWS ECS instances.", + Openshift: "Deploy ToolJet on Openshift", Kubernetes: "Deploy ToolJet on a Kubernetes cluster.", "Kubernetes (GKE)": "Deploy ToolJet on a GKE Kubernetes cluster.", "Kubernetes (AKS)": "Deploy ToolJet on a AKS Kubernetes cluster.", diff --git a/docs/static/img/setup/icons/openshift.svg b/docs/static/img/setup/icons/openshift.svg new file mode 100644 index 0000000000..7265f22926 --- /dev/null +++ b/docs/static/img/setup/icons/openshift.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + diff --git a/docs/static/img/openshift/online-yaml-editor.png b/docs/static/img/setup/openshift/online-yaml-editor.png similarity index 100% rename from docs/static/img/openshift/online-yaml-editor.png rename to docs/static/img/setup/openshift/online-yaml-editor.png diff --git a/docs/static/img/openshift/toplogy.png b/docs/static/img/setup/openshift/toplogy.png similarity index 100% rename from docs/static/img/openshift/toplogy.png rename to docs/static/img/setup/openshift/toplogy.png diff --git a/docs/versioned_docs/version-2.0.0/setup/openshift.md b/docs/versioned_docs/version-2.0.0/setup/openshift.md index bf5c8526bc..d7dc7ebe11 100644 --- a/docs/versioned_docs/version-2.0.0/setup/openshift.md +++ b/docs/versioned_docs/version-2.0.0/setup/openshift.md @@ -36,8 +36,11 @@ Copy paste the service.yaml to the online editor https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml ``` -online yaml editor +
+online yaml editor + +
Once you have added the files click on create. @@ -48,8 +51,11 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas 4. Navigate to topology tab and use the visual connector to establish the connect between tooljet-deployment and postgresql as shown in the screenshot below. -toplogy +
+toplogy + +
## ToolJet Database diff --git a/docs/versioned_docs/version-2.1.0/setup/openshift.md b/docs/versioned_docs/version-2.1.0/setup/openshift.md index bf5c8526bc..d7dc7ebe11 100644 --- a/docs/versioned_docs/version-2.1.0/setup/openshift.md +++ b/docs/versioned_docs/version-2.1.0/setup/openshift.md @@ -36,8 +36,11 @@ Copy paste the service.yaml to the online editor https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml ``` -online yaml editor +
+online yaml editor + +
Once you have added the files click on create. @@ -48,8 +51,11 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas 4. Navigate to topology tab and use the visual connector to establish the connect between tooljet-deployment and postgresql as shown in the screenshot below. -toplogy +
+toplogy + +
## ToolJet Database diff --git a/docs/versioned_sidebars/version-2.0.0-sidebars.json b/docs/versioned_sidebars/version-2.0.0-sidebars.json index 6b7e65ec0a..c517dd5bf8 100644 --- a/docs/versioned_sidebars/version-2.0.0-sidebars.json +++ b/docs/versioned_sidebars/version-2.0.0-sidebars.json @@ -15,6 +15,7 @@ "setup/heroku", "setup/ec2", "setup/ecs", + "setup/openshift", "setup/kubernetes", "setup/kubernetes-gke", "setup/kubernetes-aks", diff --git a/docs/versioned_sidebars/version-2.1.0-sidebars.json b/docs/versioned_sidebars/version-2.1.0-sidebars.json index 026ba7e5a3..4215350d2b 100644 --- a/docs/versioned_sidebars/version-2.1.0-sidebars.json +++ b/docs/versioned_sidebars/version-2.1.0-sidebars.json @@ -15,6 +15,7 @@ "setup/heroku", "setup/ec2", "setup/ecs", + "setup/openshift", "setup/kubernetes", "setup/kubernetes-gke", "setup/kubernetes-aks", @@ -363,4 +364,4 @@ ] } ] -} +} \ No newline at end of file From aa88186cdcf5e4b297b36c31498082b8050408c5 Mon Sep 17 00:00:00 2001 From: Ali Yanni Date: Tue, 14 Mar 2023 07:15:47 -0400 Subject: [PATCH 10/65] Fixes button-group label visibility (#5299) Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com> --- frontend/src/Editor/Components/ButtonGroup.jsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/Editor/Components/ButtonGroup.jsx b/frontend/src/Editor/Components/ButtonGroup.jsx index 5858da52e6..5ef5f32349 100644 --- a/frontend/src/Editor/Components/ButtonGroup.jsx +++ b/frontend/src/Editor/Components/ButtonGroup.jsx @@ -69,7 +69,14 @@ export const ButtonGroup = function Button({ }; return (
- {label &&

{label}

} + {label && ( +

+ {label} +

+ )}
{data?.map((item, index) => (