From b871ad99f316c02fe6777df1c9b30a7226c1b77e Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 19 May 2020 14:48:58 +0200 Subject: [PATCH 001/101] Update jalhyd_branch --- jalhyd_branch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jalhyd_branch b/jalhyd_branch index 1f7391f92..1e054d20c 100644 --- a/jalhyd_branch +++ b/jalhyd_branch @@ -1 +1 @@ -master +223-calage-d-une-par-remplacer-la-cote-de-deversement-par-la-charge -- GitLab From 1c949138f7ba522c4504ecd559cf9f17724d68f5 Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@irstea.fr> Date: Mon, 4 May 2020 18:57:24 +0200 Subject: [PATCH 002/101] ci: forgot to specify the jalhyd branch Refs #398 --- jalhyd_branch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jalhyd_branch b/jalhyd_branch index 1e054d20c..d64531f13 100644 --- a/jalhyd_branch +++ b/jalhyd_branch @@ -1 +1 @@ -223-calage-d-une-par-remplacer-la-cote-de-deversement-par-la-charge +devel -- GitLab From 556eab2cce35b734fcdcee6b6ca8be59db59c26c Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 1 Apr 2020 16:01:48 +0200 Subject: [PATCH 003/101] Update jalhyd_branch --- jalhyd_branch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jalhyd_branch b/jalhyd_branch index d64531f13..f95555f7a 100644 --- a/jalhyd_branch +++ b/jalhyd_branch @@ -1 +1 @@ -devel +204-ajout-de-la-fonctionnalite-respect-des-criteres-2 -- GitLab From 269dab8bb904200ab2c94fb98e1e15f7643d70b6 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 1 Apr 2020 16:01:59 +0200 Subject: [PATCH 004/101] Configuration and translation for PAR Simulation : DH --- src/app/calculators/parsimulation/en.json | 3 ++- src/app/calculators/parsimulation/fr.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/calculators/parsimulation/en.json b/src/app/calculators/parsimulation/en.json index 633c670b6..d7ff7f55e 100644 --- a/src/app/calculators/parsimulation/en.json +++ b/src/app/calculators/parsimulation/en.json @@ -64,5 +64,6 @@ "UNIT_ZD2": "m", "UNIT_ZR2": "m", "UNIT_LPI": "m", - "UNIT_LPH": "m" + "UNIT_LPH": "m", + "UNIT_DH": "m" } diff --git a/src/app/calculators/parsimulation/fr.json b/src/app/calculators/parsimulation/fr.json index 50a84eff9..0c37ad399 100644 --- a/src/app/calculators/parsimulation/fr.json +++ b/src/app/calculators/parsimulation/fr.json @@ -60,5 +60,6 @@ "UNIT_ZD2": "m", "UNIT_ZR2": "m", "UNIT_LPI": "m", - "UNIT_LPH": "m" + "UNIT_LPH": "m", + "UNIT_DH": "m" } -- GitLab From 0510dca40a7a4950e52727de739085790db75000 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Fri, 3 Apr 2020 14:58:21 +0200 Subject: [PATCH 005/101] Option in calculator config to disable calculation permanently --- .../generic-calculator/calculator.component.ts | 3 ++- src/app/formulaire/definition/form-definition.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 2850e8ce3..0e943341d 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -444,7 +444,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe */ private updateUIValidity() { this._isUIValid = false; - + if (! this._formulaire.calculateDisabled) { if (this._fieldsetComponents !== undefined) { this._isUIValid = this._fieldsetComponents.reduce( // callback @@ -487,6 +487,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe this._isUIValid = this._isUIValid && this._pabTableComponent.isValid; } } + } public getElementStyleDisplay(id: string) { const isDisplayed: boolean = this._formulaire.isDisplayed(id); diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 3cb94b538..1512cf77e 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -45,6 +45,9 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs /** aide en ligne pour les résultats */ protected _resultsHelpLinks: { [key: string]: string }; + /** set to true to definitely gray-out Calculate button */ + protected _calculateDisabled = false; + /** fichier de configuration */ private _jsonConfig: {}; @@ -71,6 +74,10 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } } + public get calculateDisabled(): boolean { + return this._calculateDisabled; + } + public get specificLocalisation() { return this._specificLocalisation; } @@ -160,6 +167,9 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } this._helpLink = json["help"]; this._resultsHelpLinks = json["resultsHelp"]; + if (json["calculateDisabled"] !== undefined) { + this._calculateDisabled = json["calculateDisabled"]; + } } /** called at the end of parseConfig() */ -- GitLab From f670379e861c13cab732c3a3de72dd539166fff5 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Fri, 3 Apr 2020 14:59:22 +0200 Subject: [PATCH 006/101] Fix bug: Alt+Enter triggers calculation even if form is invalid --- .../calculator.component.ts | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 0e943341d..23b0de141 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -445,49 +445,50 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe private updateUIValidity() { this._isUIValid = false; if (! this._formulaire.calculateDisabled) { - if (this._fieldsetComponents !== undefined) { - this._isUIValid = this._fieldsetComponents.reduce( - // callback - ( - // accumulator (valeur précédente du résultat) - acc, - // currentValue (élément courant dans le tableau) - fieldset, - // currentIndex (indice courant dans le tableau) - currIndex, - // array (tableau parcouru) - array - ) => { - return acc && fieldset.isValid; - } - // valeur initiale - , this._fieldsetComponents.length > 0); - } - - if (this._fieldsetContainerComponents !== undefined) { - this._isUIValid = this._isUIValid && this._fieldsetContainerComponents.reduce<boolean>( - // callback - ( - // accumulator (valeur précédente du résultat) - acc, - // currentValue (élément courant dans le tableau) - fieldsetContainer, - // currentIndex (indice courant dans le tableau) - currIndex, - // array (tableau parcouru) - array - ): boolean => { - return acc && fieldsetContainer.isValid; - } - // valeur initiale - , true); - } - - if (this._pabTableComponent !== undefined) { - this._isUIValid = this._isUIValid && this._pabTableComponent.isValid; + // all fieldsets must be valid + if (this._fieldsetComponents !== undefined) { + this._isUIValid = this._fieldsetComponents.reduce( + // callback + ( + // accumulator (valeur précédente du résultat) + acc, + // currentValue (élément courant dans le tableau) + fieldset, + // currentIndex (indice courant dans le tableau) + currIndex, + // array (tableau parcouru) + array + ) => { + return acc && fieldset.isValid; + } + // valeur initiale + , this._fieldsetComponents.length > 0); + } + // all fieldset containers must be valid + if (this._fieldsetContainerComponents !== undefined) { + this._isUIValid = this._isUIValid && this._fieldsetContainerComponents.reduce<boolean>( + // callback + ( + // accumulator (valeur précédente du résultat) + acc, + // currentValue (élément courant dans le tableau) + fieldsetContainer, + // currentIndex (indice courant dans le tableau) + currIndex, + // array (tableau parcouru) + array + ): boolean => { + return acc && fieldsetContainer.isValid; + } + // valeur initiale + , true); + } + // special components must be valid + if (this._pabTableComponent !== undefined) { + this._isUIValid = this._isUIValid && this._pabTableComponent.isValid; + } } } - } public getElementStyleDisplay(id: string) { const isDisplayed: boolean = this._formulaire.isDisplayed(id); -- GitLab From 322483c7679de4e0d3772e82d6a20826935582a3 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Fri, 3 Apr 2020 15:05:42 +0200 Subject: [PATCH 007/101] Hide calculate button and results panel when form is not calculable --- .../components/generic-calculator/calculator.component.html | 4 +++- src/app/components/generic-calculator/calculator.component.ts | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html index b1b3ec2b0..7b46d2c9e 100644 --- a/src/app/components/generic-calculator/calculator.component.html +++ b/src/app/components/generic-calculator/calculator.component.html @@ -76,7 +76,8 @@ <mat-card-actions> <!-- bouton calculer --> - <button type="submit" id="trigger-calculate" mat-raised-button color="accent" name="Calculer" (click)="doCompute()" [disabled]="isCalculateDisabled"> + <button type="submit" id="trigger-calculate" mat-raised-button color="accent" name="Calculer" + (click)="doCompute()" [disabled]="isCalculateDisabled" [hidden]="calculateDisabledPermanently"> {{ uitextCalculer }} </button> </mat-card-actions> @@ -84,6 +85,7 @@ <!-- résultats --> <mat-card id="calc-card-results" + [hidden]="calculateDisabledPermanently" [class.pab-results]="isWide" [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 23b0de141..d9d8f93ce 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -157,6 +157,10 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return this._formulaire.kids as FormulaireElement[]; } + public get calculateDisabledPermanently(): boolean { + return this._formulaire.calculateDisabled; + } + /** * détermine si un FormulaireElement est du type FieldSet */ -- GitLab From bb202610cc049bca5356da9c1c5131863bb79dd9 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Fri, 3 Apr 2020 15:06:09 +0200 Subject: [PATCH 008/101] New theme: Verification; new GUI for Espece --- src/app/calculators/espece/config.json | 49 +++++++++++++++++++ src/app/calculators/espece/en.json | 23 +++++++++ src/app/calculators/espece/fr.json | 23 +++++++++ src/app/calculators/verificateur/config.json | 0 src/app/config.json | 8 +++ src/assets/images/themes/verification.jpg | Bin 0 -> 34221 bytes src/locale/messages.en.json | 45 +++++++++++++---- src/locale/messages.fr.json | 29 ++++++++++- 8 files changed, 167 insertions(+), 10 deletions(-) create mode 100644 src/app/calculators/espece/config.json create mode 100644 src/app/calculators/espece/en.json create mode 100644 src/app/calculators/espece/fr.json create mode 100644 src/app/calculators/verificateur/config.json create mode 100644 src/assets/images/themes/verification.jpg diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json new file mode 100644 index 000000000..d11f5f33e --- /dev/null +++ b/src/app/calculators/espece/config.json @@ -0,0 +1,49 @@ +[ + { + "id": "fs_param_species", + "type": "fieldset", + "fields": [ + { + "id": "DHMax", + "allowEmpty": true + }, + { + "id": "BMin", + "allowEmpty": true + }, + { + "id": "PMin", + "allowEmpty": true + }, + { + "id": "LMin", + "allowEmpty": true + }, + { + "id": "HMin", + "allowEmpty": true + }, + { + "id": "YMin", + "allowEmpty": true + }, + { + "id": "VMax", + "allowEmpty": true + }, + { + "id": "YMinSB", + "allowEmpty": true + }, + { + "id": "YMinPB", + "allowEmpty": true + } + ] + }, + { + "type": "options", + "help": "verification/espece.html", + "calculateDisabled": true + } +] diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json new file mode 100644 index 000000000..2f28082b7 --- /dev/null +++ b/src/app/calculators/espece/en.json @@ -0,0 +1,23 @@ +{ + "fs_param_species": "Species parameters", + + "DHMax": "Maximal fall", + "BMin": "Minimal slot or weir width", + "PMin": "Minimal basin width", + "LMin": "Minimal basin length", + "HMin": "Minimal head on weir", + "YMin": "Minimal water level", + "VMax": "Maximal flow velocity", + "YMinSB": "Minimal water level on superactive baffles", + "YMinPB": "Minimal water level on plane baffles", + + "UNIT_DHMax": "m", + "UNIT_BMin": "m", + "UNIT_PMin": "m", + "UNIT_LMin": "m", + "UNIT_HMin": "m", + "UNIT_YMin": "m", + "UNIT_VMax": "m/s", + "UNIT_YMinSB": "m", + "UNIT_YMinPB": "m" +} diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json new file mode 100644 index 000000000..8100e4607 --- /dev/null +++ b/src/app/calculators/espece/fr.json @@ -0,0 +1,23 @@ +{ + "fs_param_species": "Paramètres de l'espèce", + + "DHMax": "Chute maximale", + "BMin": "Largeur minimale de fente ou échancrure latérale", + "PMin": "Profondeur minimale de bassin", + "LMin": "Longueur minimale de bassin", + "HMin": "Charge minimale sur l'échancrure", + "YMin": "Tirant d'eau minimal", + "VMax": "Vitesse d'écoulement maximale", + "YMinSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", + "YMinPB": "Tirant d'eau minimal sur les ralentisseurs plans", + + "UNIT_DHMax": "m", + "UNIT_BMin": "m", + "UNIT_PMin": "m", + "UNIT_LMin": "m", + "UNIT_HMin": "m", + "UNIT_YMin": "m", + "UNIT_VMax": "m/s", + "UNIT_YMinSB": "m", + "UNIT_YMinPB": "m" +} diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/config.json b/src/app/config.json index 81a0d953f..13f3cc083 100644 --- a/src/app/config.json +++ b/src/app/config.json @@ -33,6 +33,14 @@ }, "calculators": [ 11, 17, 27 ] }, + { + "name": "VERIFICATION", + "image": { + "path": "verification.jpg", + "credits": "????" + }, + "calculators": [ 31, 30 ] + }, { "name": "DEVALAISON", "image": { diff --git a/src/assets/images/themes/verification.jpg b/src/assets/images/themes/verification.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3cfe11de2b2ab17adb9a1f2eda7e2d92e79cf013 GIT binary patch literal 34221 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 HDXIV2$;*b1 literal 0 HcmV?d00001 diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index cba8bbdfb..88a4f2bc9 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -105,8 +105,8 @@ "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Edit initial value", "INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS": "between %s and %s", "INFO_DIALOG_EDIT_PAB_N_DEVICES": "%s device(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s wall(s) : %s device(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s wall(s) + %s device(s) : %s devices", + "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s wall(s): %s device(s)", + "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s wall(s) + %s device(s): %s devices", "INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE": "Variable to edit", "INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE": "Fixed value", "INFO_DIALOG_EDIT_PAB_OPTION_DELTA": "Delta", @@ -236,7 +236,7 @@ "INFO_LIB_CV": "Cv: Velocity coefficient", "INFO_LIB_CVQT": "CV.QT: Corrected discharge", "INFO_LIB_DH": "Fall", - "INFO_LIB_DHR": "DHR : Residual fall", + "INFO_LIB_DHR": "DHR: Residual fall", "INFO_LIB_DISTANCE_AMONT": "Distance from upstream (m)", "INFO_LIB_EC": "EC: Kinetic energy", "INFO_LIB_ENUM_MACRORUGOFLOWTYPE": "Flow type", @@ -400,8 +400,8 @@ "INFO_PABCHUTE_TITRE": "Fish ladder: fall", "INFO_PABDIMENSIONS_TITRE_COURT": "FL: dimensions", "INFO_PABDIMENSIONS_TITRE": "Fish ladder: dimensions", - "INFO_PABNOMBRE_TITRE_COURT": "FL : number", - "INFO_PABNOMBRE_TITRE": "Fish ladder : number of falls", + "INFO_PABNOMBRE_TITRE_COURT": "FL: number", + "INFO_PABNOMBRE_TITRE": "Fish ladder: number of falls", "INFO_PABPUISSANCE_TITRE_COURT": "FL: diss. power", "INFO_PABPUISSANCE_TITRE": "Fish ladder: dissipated power", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "// structures", @@ -512,6 +512,8 @@ "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Humpback fishway", "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Tools for sizing a natural fish pass also called macroroughness pass or rock-ramp fish pass", "INFO_THEME_PASSE_NATURELLE_TITRE": "Natural pass", + "INFO_THEME_VERIFICATION_DESCRIPTION": "Tools for verifying fish passes crossing capabilities by different fish species", + "INFO_THEME_VERIFICATION_TITRE": "Fish passes verification", "INFO_TITREJOURNAL": "Calculation log", "INFO_TITREJOURNAL_GLOBAL": "Calculation log synthesis", "INFO_WELCOME_CONTENT": "<p>The Cassiopée software was developed by the ecohydraulic R&D pole gathering <a href=\"https://ofb.gouv.fr\" target=\"_blank\">OFB</a> (French Office for Biodiversity) and <a href=\"https://www.imft.fr\" target=\"_blank\">IMFT</a> (Fluids Mechanics Institute of Toulouse) and by <a href=\"http://g-eau.fr/index.php/en/\" target=\"_blank\">UMR G-EAU</a> (Joint Research Unit \"Water Management, Actors, Territories\").</p><p>It includes tools for designing fish crossing devices for upstream and downstream migrations, and hydraulic calculation tools useful for environmental and agricultural engineering.</p><p>For more information, consult <a href=\"assets/docs/en/mentions_legales.html\" target=\"_blank\">legal notice</a> and <a href=\"assets/docs/en/index.html\" target=\"_blank\">documentation</a>.</p>", @@ -528,6 +530,10 @@ "INFO_YAXB_TITRE_COURT": "Linear f.", "INFO_TRIGO_TITRE": "Trigonometric function", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", + "INFO_VERIFICATEUR_TITRE": "Fish pass verification", + "INFO_VERIFICATEUR_TITRE_COURT": "Verification", + "INFO_ESPECE_TITRE": "Fish species characteristics", + "INFO_ESPECE_TITRE_COURT": "Species", "WARNING_WARNINGS_ABSTRACT": "%nb% warnings occurred during calculation", "ERROR_JET_SUBMERGED_NO_SOLUTION": "There is no solution", "WARNING_DEVER_ZDV_INF_ZR": "Apron elevation of structure #%number% is below river bed elevation", @@ -539,9 +545,9 @@ "WARNING_STRUCTUREKIVI_PELLE_TROP_FAIBLE": "Threshold height should be greater than 0.1 m. Beta coefficient is forced to 0", "WARNING_VANLEV_ZDV_INF_MIN": "Regulated weir: minimum sill elevation reached", "WARNING_VANLEV_ZDV_SUP_MAX": "Regulated weir: maximum sill elevation reached", - "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Recommendation for fish guiding : α ≤ 45°", - "WARNING_GRILLE_BETA_GREATER_THAN_26": "Recommendation for fish guiding : β ≤ 26°", - "WARNING_GRILLE_VN_GREATER_THAN_05": "Recommendation to prevent fish getting stuck on grid plan (physical barrier) or prematurely passing through the grid (behavioural barrier) : VN ≤ 0.5 m/s.<br>Above average value calculated here, refer to the recommendations taken from experimental caracterisation of effective speed values.", + "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Recommendation for fish guiding: α ≤ 45°", + "WARNING_GRILLE_BETA_GREATER_THAN_26": "Recommendation for fish guiding: β ≤ 26°", + "WARNING_GRILLE_VN_GREATER_THAN_05": "Recommendation to prevent fish getting stuck on grid plan (physical barrier) or prematurely passing through the grid (behavioural barrier): VN ≤ 0.5 m/s.<br>Above average value calculated here, refer to the recommendations taken from experimental caracterisation of effective speed values.", "WARNING_LECHAPT_CALMON_SPEED_OUTSIDE_04_2": "This formula is discouraged for a speed that is not between 0.4 and 2 m/s", "WARNING_UPSTREAM_BOTTOM_HIGHER_THAN_WATER": "Upstream water elevation is lower or equal to bottom elevation", "WARNING_DOWNSTREAM_BOTTOM_HIGHER_THAN_WATER": "Downstream water elevation is lower or equal to bottom elevation", @@ -570,5 +576,26 @@ "WARNING_PAR_NOT_SUBMERGED": "Insufficient downstream submergence : fall at the last downstream baffle (%DH% m).", "ERROR_PAR_M_GREATER_THAN_2_N": "Number of longitudinal strips exceeds 2N = %max%", "INFO_PARENT_PREFIX": "%name% #%position%: ", - "INFO_PARENT_PREFIX_DOWNWALL": "downwall: " + "INFO_PARENT_PREFIX_DOWNWALL": "downwall: ", + "ERROR_VERIF_ERRORS_IN_PASS": "Pass to verify contains errors", + "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", + "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", + "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "None of the aprons is crossable", + "ERROR_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", + "ERROR_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", + "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", + "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum: %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum: %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", + "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", + "ERROR_VERIF_PAB_JETS": "Wall #%N%: at least one jet of type %required% is required, jets of type %forbidden% are forbidden", + "ERROR_VERIF_PAB_JETS_DW": "Downwall: at least one jet of type %required% is required, jets of type %forbidden% are forbidden", + "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum: %minLB%)", + "ERROR_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", + "ERROR_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", + "ERROR_VERIF_PAB_YMOY": "Wall #%N%: basin depth %PB% too low (minimum: %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", + "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", + "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", + "WARNING_VERIF_PAR_SPECIES_GROUP": "Species groups 3a, 3b et 7b are discouraged for this pass type" } diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 7825124eb..16b96dce0 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -513,6 +513,8 @@ "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Passe à ralentisseurs", "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Outils de dimensionnement d'une passe à poissons de type passe naturelle ou encore appelée passe à macro-rugosités", "INFO_THEME_PASSE_NATURELLE_TITRE": "Passe naturelle", + "INFO_THEME_VERIFICATION_DESCRIPTION": "Outils de vérification des capacités de franchissement des passes par les différentes espèces de poissons", + "INFO_THEME_VERIFICATION_TITRE": "Vérification de passes", "INFO_TITREJOURNAL": "Journal de calcul", "INFO_TITREJOURNAL_GLOBAL": "Synthèse du journal de calcul", "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par le pôle R&D écohydraulique regroupant l'<a href=\"https://ofb.gouv.fr\" target=\"_blank\">OFB</a> (Office Français de la Biodiversité) et l’<a href=\"https://www.imft.fr\" target=\"_blank\">IMFT</a> (Institut de mécanique des fluides de Toulouse) et par l'<a href=\"http://g-eau.fr\" target=\"_blank\">UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception des dispositifs de franchissement piscicoles pour la montaison et la dévalaison ainsi que des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs/fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs/fr/index.html\" target=\"_blank\">documentation</a>.</p>", @@ -529,6 +531,10 @@ "INFO_YAXB_TITRE_COURT": "F. affine", "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", + "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", + "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", + "INFO_ESPECE_TITRE": "Caractéristiques d'une espèce", + "INFO_ESPECE_TITRE_COURT": "Espèce", "WARNING_WARNINGS_ABSTRACT": "%nb% avertissements rencontrés lors du calcul", "ERROR_JET_SUBMERGED_NO_SOLUTION": "Il n'y a pas de solution", "WARNING_DEVER_ZDV_INF_ZR": "La cote de radier de l'ouvrage n°%number% est sous la cote de fond du lit", @@ -571,5 +577,26 @@ "WARNING_PAR_NOT_SUBMERGED": "Ennoiement par l'aval insuffisant : chute au niveau du dernier ralentisseur aval (%DH% m).", "ERROR_PAR_M_GREATER_THAN_2_N": "Le nombre de bandes dépasse 2N = %max%", "INFO_PARENT_PREFIX": "%name% n°%position% : ", - "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : " + "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : ", + "ERROR_VERIF_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs", + "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum: %maxV%)", + "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum: %minY%)", + "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", + "ERROR_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum: %maxV%)", + "ERROR_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum: %minY%)", + "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", + "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum: %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum: %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum: %minB%)", + "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum: %minB%)", + "ERROR_VERIF_PAB_JETS": "Cloison n°%N% : au moins un jet de type %required% requis, jets de type %forbidden% interdits", + "ERROR_VERIF_PAB_JETS_DW": "Cloison aval : au moins un jet de type %required% requis, jets de type %forbidden% interdits", + "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum: %minLB%)", + "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum: %minH%)", + "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum: %minH%)", + "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum: %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", + "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum: %minY%)", + "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" } -- GitLab From 8c68ce1c37a6b22de9321da354ffece8358d4fe8 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Fri, 3 Apr 2020 16:45:03 +0200 Subject: [PATCH 009/101] Work on GUI for Verificateur began UI updated dependencies --- package-lock.json | 4483 ++++++++++------- package.json | 56 +- src/app/calculators/verificateur/config.json | 40 + src/app/calculators/verificateur/en.json | 13 + src/app/calculators/verificateur/fr.json | 13 + .../generic-select.component.html | 8 +- .../results-chart/chart-type.component.ts | 4 + .../select-field-line.component.ts | 24 +- .../select-model-field-line.component.ts | 6 +- .../formulaire/definition/form-definition.ts | 17 +- .../definition/form-verificateur.ts | 91 + src/app/formulaire/elements/fieldset.ts | 14 +- .../formulaire/elements/select-field-model.ts | 9 +- .../formulaire/elements/select-field-nub.ts | 26 +- .../elements/select-field-reference.ts | 15 +- src/app/formulaire/elements/select-field.ts | 38 +- src/app/services/formulaire.service.ts | 5 + src/locale/messages.en.json | 6 +- src/locale/messages.fr.json | 6 +- 19 files changed, 2976 insertions(+), 1898 deletions(-) create mode 100644 src/app/calculators/verificateur/en.json create mode 100644 src/app/calculators/verificateur/fr.json create mode 100644 src/app/formulaire/definition/form-verificateur.ts diff --git a/package-lock.json b/package-lock.json index b25fc3b99..6187c822a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,19 +11,19 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.7.tgz", - "integrity": "sha512-hfiTVYc72kzbXrzK4tea6jnTDnSKpE1D+vEptBXN2tdXEVNEAQI5Qm5L1zVDtt16UdqoUTUypIgUc9jcNH1mUQ==", + "version": "0.901.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.1.tgz", + "integrity": "sha512-foWDAurMfBDYLAJxHpTFkJBub1c2A8+eWHbBjgqIHmT8xadnE7t8nSA9XDl+k/kIoWw/qFU+6IttPirudYc/vw==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "rxjs": "6.5.3" + "@angular-devkit/core": "9.1.1", + "rxjs": "6.5.4" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -32,81 +32,90 @@ } }, "@angular-devkit/build-angular": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.7.tgz", - "integrity": "sha512-Yv2y3OEaYEd0fE0pKvtqBpmkQYs9xJws7thHnJYCwIfYO55RfolYsXkJgAXke/4NPLrD3EsIDqoPxF7l+uw2/Q==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/build-optimizer": "0.900.7", - "@angular-devkit/build-webpack": "0.900.7", - "@angular-devkit/core": "9.0.7", - "@babel/core": "7.7.7", - "@babel/generator": "7.7.7", - "@babel/preset-env": "7.7.7", - "@ngtools/webpack": "9.0.7", - "ajv": "6.10.2", - "autoprefixer": "9.7.1", + "version": "0.901.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.1.tgz", + "integrity": "sha512-6uEvo5htsJoxQHBVwHOGmM6YWq5q6m9UWMv/ughlek0RtSLFfOt9TZQ/yQHgtGQsCQvscD/jBzVoD0zD5Ax/SQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.901.1", + "@angular-devkit/build-optimizer": "0.901.1", + "@angular-devkit/build-webpack": "0.901.1", + "@angular-devkit/core": "9.1.1", + "@babel/core": "7.9.0", + "@babel/generator": "7.9.3", + "@babel/preset-env": "7.9.0", + "@babel/template": "7.8.6", + "@jsdevtools/coverage-istanbul-loader": "3.0.3", + "@ngtools/webpack": "9.1.1", + "ajv": "6.12.0", + "autoprefixer": "9.7.4", "babel-loader": "8.0.6", "browserslist": "^4.9.1", - "cacache": "13.0.1", + "cacache": "15.0.0", "caniuse-lite": "^1.0.30001032", "circular-dependency-plugin": "5.2.0", "copy-webpack-plugin": "5.1.1", "core-js": "3.6.4", - "coverage-istanbul-loader": "2.0.3", "cssnano": "4.1.10", - "file-loader": "4.2.0", - "find-cache-dir": "3.0.0", - "glob": "7.1.5", - "jest-worker": "24.9.0", + "file-loader": "6.0.0", + "find-cache-dir": "3.3.1", + "glob": "7.1.6", + "jest-worker": "25.1.0", "karma-source-map-support": "1.4.0", - "less": "3.10.3", + "less": "3.11.1", "less-loader": "5.0.0", - "license-webpack-plugin": "2.1.3", - "loader-utils": "1.2.3", - "magic-string": "0.25.4", - "mini-css-extract-plugin": "0.8.0", + "license-webpack-plugin": "2.1.4", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "0.9.0", "minimatch": "3.0.4", - "open": "7.0.0", + "open": "7.0.3", "parse5": "4.0.0", - "postcss": "7.0.21", + "postcss": "7.0.27", "postcss-import": "12.0.1", "postcss-loader": "3.0.0", - "raw-loader": "3.1.0", - "regenerator-runtime": "0.13.3", - "rimraf": "3.0.0", - "rollup": "1.25.2", - "rxjs": "6.5.3", - "sass": "1.23.3", - "sass-loader": "8.0.0", - "semver": "6.3.0", + "raw-loader": "4.0.0", + "regenerator-runtime": "0.13.5", + "rimraf": "3.0.2", + "rollup": "2.1.0", + "rxjs": "6.5.4", + "sass": "1.26.3", + "sass-loader": "8.0.2", + "semver": "7.1.3", "source-map": "0.7.3", "source-map-loader": "0.2.4", "source-map-support": "0.5.16", "speed-measure-webpack-plugin": "1.3.1", - "style-loader": "1.0.0", + "style-loader": "1.1.3", "stylus": "0.54.7", "stylus-loader": "3.0.2", - "terser": "4.5.1", - "terser-webpack-plugin": "2.3.3", + "terser": "4.6.10", + "terser-webpack-plugin": "2.3.5", "tree-kill": "1.2.2", - "webpack": "4.41.2", + "webpack": "4.42.0", "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.9.0", + "webpack-dev-server": "3.10.3", "webpack-merge": "4.2.2", "webpack-sources": "1.4.3", - "webpack-subresource-integrity": "1.3.4", - "worker-plugin": "3.2.0" + "webpack-subresource-integrity": "1.4.0", + "worker-plugin": "4.0.2" }, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, "@babel/generator": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", - "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz", + "integrity": "sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ==", "dev": true, "requires": { - "@babel/types": "^7.7.4", + "@babel/types": "^7.9.0", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -120,62 +129,73 @@ } } }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true }, "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -186,46 +206,34 @@ "path-is-absolute": "^1.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", "dev": true }, "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "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" } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true }, "source-map-support": { @@ -247,9 +255,9 @@ } }, "terser": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz", - "integrity": "sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ==", + "version": "4.6.10", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz", + "integrity": "sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -264,107 +272,45 @@ "dev": true } } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "webpack-dev-server": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", - "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.4", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, "@angular-devkit/build-optimizer": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.7.tgz", - "integrity": "sha512-gxin2oPNMN+PYo82At2JP1Q+uxnvwyDFWA1Wl+Ufuc5zHGhjKqxdQjkdMF7OT0ihtmkllN+t/NTB7rcx/Sx9Wg==", + "version": "0.901.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.1.tgz", + "integrity": "sha512-o0A9CcyDQSUnC5CQIKf92VH8amIYRYrMgLf2kdhSMcy0QV+rEJyN81dSvwX/Yxgnr9NbWEAQg7jnyKk06vfhOw==", "dev": true, "requires": { - "loader-utils": "1.2.3", + "loader-utils": "2.0.0", "source-map": "0.7.3", - "tslib": "1.10.0", - "typescript": "3.6.4", + "tslib": "1.11.1", + "typescript": "3.6.5", "webpack-sources": "1.4.3" }, "dependencies": { - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, "typescript": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", - "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.5.tgz", + "integrity": "sha512-BEjlc0Z06ORZKbtcxGrIvvwYs5hAnuo6TKdNFL55frVDlB+na3z5bsLhFaIxmT+dPWgBIjMo6aNnTOgHHmHgiQ==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.7.tgz", - "integrity": "sha512-Nwwqjo1ZpHFLavN+nXOmuBgGjhoMBZGelDCvHtiQlQ9N6i7k9cKnP7eU5pY7jbalBguS+gWg5wJIGnbqk1K9Rg==", + "version": "0.901.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.1.tgz", + "integrity": "sha512-9oNI+wPSk8yECy+f0EebfMx4PH3uDJRrifYZAxcr84IpzEbpfpRuYhE3ecwqd7k0zu2Kdjw1uUrGxBuH4/sbGg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/core": "9.0.7", - "rxjs": "6.5.3" + "@angular-devkit/architect": "0.901.1", + "@angular-devkit/core": "9.1.1", + "rxjs": "6.5.4" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -373,34 +319,55 @@ } }, "@angular-devkit/core": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.7.tgz", - "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", + "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", "dev": true, "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.4", - "rxjs": "6.5.3", + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", "source-map": "0.7.3" }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -409,20 +376,66 @@ } }, "@angular-devkit/schematics": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.7.tgz", - "integrity": "sha512-ryPC+l24f3gX5DFMTLkDM/q2Kp6LPzBn6400k7j4qVdb1cIrZx+JUQd7F4iAksTTkX15EQPanptQXeztUrl9Ng==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.1.tgz", + "integrity": "sha512-6wx2HcvafHvEjEa1tjDzW2hXrOiSE8ALqJUArb3+NoO1BDM42aGcqyPo0ODzKtDk12CgSsFXdNKRpQ5AmpSPtw==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "ora": "4.0.2", - "rxjs": "6.5.3" + "@angular-devkit/core": "9.1.1", + "ora": "4.0.3", + "rxjs": "6.5.4" }, "dependencies": { + "@angular-devkit/core": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", + "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -431,14 +444,14 @@ } }, "@angular/animations": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.0.7.tgz", - "integrity": "sha512-74gY7onajmmnksy5E0/32bFv3B9NuWxV64kqD15YjGrh8AWe1BHt5enQI+rJ2tO8m2DKnwZsctis6k0Kcy+YKQ==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.1.tgz", + "integrity": "sha512-IvKv8sV0ymbzDEX2ZLW+F6nOTQqDYallHexuzRVT9txvNE8TNHyySvLcyC5dTmX9fj9LA72NZ6nFyhxq0LFvtQ==" }, "@angular/cdk": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.1.3.tgz", - "integrity": "sha512-K6XJzfqP+PE0ahyBUYrnoW+3ocwDpPN3dE9a+XRtZ0vM4P/FElweWj5zjNwWktb+uF9yal6oMPWXJNOAfonpPw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.1.tgz", + "integrity": "sha512-aSG1UNPszkSnpNuDCNd7ZgT29oQ8vqHPmoqjvJI0JkEv3i6uEs5tRuhWl3TK39wDNuwdlq0AY47XTa/0Ppb5RQ==", "requires": { "parse5": "^5.0.0" }, @@ -452,33 +465,90 @@ } }, "@angular/cli": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.7.tgz", - "integrity": "sha512-/9CUNSSVyTtTNUADZ/VXJDEdhineMN/rfd35w6VsHiob49tKkeOTggaoiSne3RY4VCTqlo7GGf4KhhVXEMGnDQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.1.tgz", + "integrity": "sha512-sjRAV4UF8M5v+2gw+EwCYSgciBZDc05AbNxQt+uUdxdfR1QU9hifWq8WDxfOR6jdDP5YqMtQsNaFNwrUyjJJoQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7", - "@schematics/angular": "9.0.7", - "@schematics/update": "0.900.7", + "@angular-devkit/architect": "0.901.1", + "@angular-devkit/core": "9.1.1", + "@angular-devkit/schematics": "9.1.1", + "@schematics/angular": "9.1.1", + "@schematics/update": "0.901.1", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "^4.1.1", + "debug": "4.1.1", "ini": "1.3.5", - "inquirer": "7.0.0", - "npm-package-arg": "6.1.1", - "npm-pick-manifest": "3.0.2", - "open": "7.0.0", - "pacote": "9.5.8", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.0.0", + "open": "7.0.3", + "pacote": "9.5.12", "read-package-tree": "5.3.1", - "rimraf": "3.0.0", - "semver": "6.3.0", + "rimraf": "3.0.2", + "semver": "7.1.3", "symbol-observable": "1.2.0", - "universal-analytics": "^0.4.20", - "uuid": "^3.3.2" + "universal-analytics": "0.4.20", + "uuid": "7.0.2" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.901.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.1.tgz", + "integrity": "sha512-foWDAurMfBDYLAJxHpTFkJBub1c2A8+eWHbBjgqIHmT8xadnE7t8nSA9XDl+k/kIoWw/qFU+6IttPirudYc/vw==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.1", + "rxjs": "6.5.4" + }, + "dependencies": { + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", + "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -500,6 +570,26 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -509,6 +599,15 @@ "restore-cursor": "^3.1.0" } }, + "color-convert": { + "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" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -518,6 +617,18 @@ "ms": "^2.1.1" } }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -527,24 +638,39 @@ "escape-string-regexp": "^1.0.5" } }, + "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 + }, + "hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.15", "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, @@ -554,12 +680,36 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "dev": true + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -573,23 +723,14 @@ "dev": true }, "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "onetime": { @@ -601,6 +742,16 @@ "mimic-fn": "^2.1.0" } }, + "open": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -612,18 +763,27 @@ } }, "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "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" } }, + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true }, "string-width": { @@ -635,34 +795,24 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "type-fest": { @@ -670,23 +820,35 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true + }, + "uuid": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, "@angular/common": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.7.tgz", - "integrity": "sha512-B58YgxZva1DBaeayOBsaUOOkoyR+GRibuNC3gfOMm2vXeW9eCNX+jvDtw767GnKm2yGzIq8wB3x6GHojN00dPw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.1.tgz", + "integrity": "sha512-bS13veMs7//YqYjYJ+JI78ylaCyVcdFKZKikd5SZa6+r6fajcyvLnSKqrKypG3O1BeJ8vOG/Pq54P5gWhbR6eA==" }, "@angular/compiler": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.7.tgz", - "integrity": "sha512-hFpkuGpzxpK5h59LHHAjTFWsY6DCXZwgJFqvCuTPxWi/srvLGZRXrpC6Z1SlgHI9xxXaPfoa4uWw2VfA3BnqEg==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.1.tgz", + "integrity": "sha512-u1IP6IzUgK6lIzrG1cxp96umXgtThyhuFn/KPoyVt7wPxZ6vVR0ZxjM7zycEcrMGzk0nf0nyOKaksJk9sTXTbg==" }, "@angular/compiler-cli": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.7.tgz", - "integrity": "sha512-+RXghex63v0Vi8vpQtDpWiqpAAnrTaN3bHT5fntRenq5+Ok5vL1MJ1mzbTmBXs2tuwTqNlwMm2AlZB7G/xcDMQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.1.tgz", + "integrity": "sha512-2jGp0ck2kkLNMzXUo/3iJkrQqJ7oGXE8h2tksxBsH2ptnhexRYTHZ626t7Np128tduY5JeC7J1Jxz7MUuYsJ2Q==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -700,69 +862,53 @@ "semver": "^6.3.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "yargs": "13.1.0" + "yargs": "15.3.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "color-convert": { + "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": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "color-name": "~1.1.4" } }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fs-extra": { @@ -776,73 +922,48 @@ "universalify": "^0.1.0" } }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } + "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 }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "p-locate": "^4.1.0" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "p-limit": "^2.2.0" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -862,57 +983,59 @@ "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "wrap-ansi": { + "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": { - "is-number": "^7.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "yargs": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", - "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.0.0" + "yargs-parser": "^18.1.0" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -922,9 +1045,9 @@ } }, "@angular/core": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.7.tgz", - "integrity": "sha512-E9XZH5Dl+9MWG3MDC6wrKllhA8Rljpz66HOIeqKv2fHPed8kzuJZU3WJWLtbhDAXFwtGTyTZ4c82ZLSmqwTorg==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.1.tgz", + "integrity": "sha512-6lDlUlePafr/392hOvvTZZl6xPHT50U6658sHUAVIr0Un4mJ2MHNHKZtO45bpn3hM4gjFcYRQ7Rpd0umW74iTA==" }, "@angular/flex-layout": { "version": "9.0.0-beta.29", @@ -932,35 +1055,35 @@ "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==" }, "@angular/forms": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.7.tgz", - "integrity": "sha512-PaHAmjMJDtg/3aGCPuq5BCRC1eZ/DBCpva9f7NrA1kqk0LcLdebm0v2uHwTOBtiz/VEgPvxiS4tXC4rjvUtfEg==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.1.tgz", + "integrity": "sha512-NX+LuK8JFisiq3uHCOK6YoN/yIb2R9Ye5mwiOPkuZA3lZLKCnUXqCHZbM8VHy/WdjIxxeUaFMJc38yV8RVoabg==" }, "@angular/language-service": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.7.tgz", - "integrity": "sha512-IZG1kvw48JyFRy7bfMHqBixWrEHZmXmkP5DWsi5Tw6KusaczkMghI20BevCkodPcajXWHAUHNKyp1tlE3OnH0w==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.1.tgz", + "integrity": "sha512-T+/0X2VnmgW/vzynqYTVv29qtebNvrCB/yJqtNIlqXvBjcB8XRRwZPDZvRyl5BiwEPSsJnjdRFNH9krQHxYp+g==", "dev": true }, "@angular/material": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.1.3.tgz", - "integrity": "sha512-tRdd5+z9XwsbN+4WCuH3goyEjqw1Q6vKeURCdas8bh5AVOrCt8pcFlj3yA3P/u4fdhfTeFc67PJRz8Zm0n3moQ==" + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.1.tgz", + "integrity": "sha512-nqn/0Eg04DxwnkRGSM1xnmGgtfHYOBcEPbFeTu8c1qAbjFEozd6tpw4y6dQrCCL/JLNIRQPsxsUsVnKeWDF/4Q==" }, "@angular/platform-browser": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.7.tgz", - "integrity": "sha512-Por8omrEiSV2U/K2mm/Kuv+2R2rJkbAZ3ctEM6CWj9Y4Gz2akjOCxmEgWhhBeqdigcC3T1v707f52osf9jWBkg==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.1.tgz", + "integrity": "sha512-tjALKhdAWPErj0euIIdvx/31AHEZ7is7ADsMu+nYn2NY2gcPUuiqq3RCUJVxBYJ2Cclq1nlF0i2rEDKh7TrBKg==" }, "@angular/platform-browser-dynamic": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.7.tgz", - "integrity": "sha512-jwpyd93ofcRtchbayKD5v4GN4Lc7vbPe6dMUiwfnVnVAql0bOD/3YRI7w5qJ0Xx0sgQT+9Xo6jTXYnyUsZpEww==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.1.tgz", + "integrity": "sha512-kEox5UOwkRLjGKXLh5o5SYopoAylpKgrXtRrKRKTCMmZTpYSe1bLlXMjpwMAMZ9ZFSTvWp9iX94aT5bJDpLrRQ==" }, "@angular/router": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.7.tgz", - "integrity": "sha512-uKru9F/Zju//gg6INl54abnlpLdEUUO/GpCfMk4zqu8LCZGNFta6OY7VT+9DK9Vdrh/XUD70oE9WoelcRwwTYA==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.1.tgz", + "integrity": "sha512-OQ5Ctd+swF7ZNlgUxrkGKk2B4yBFqJm0QCxkM86kFDCKQV/4OButZ+4HPy1HxeozBIAmm2pbQA+YjsAUs0VZcQ==" }, "@babel/code-frame": { "version": "7.5.5", @@ -971,49 +1094,71 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "dev": true, + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, "@babel/core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", - "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.7", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.7", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -1035,20 +1180,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -1060,54 +1205,32 @@ "@babel/code-frame": "^7.8.3", "@babel/parser": "^7.8.6", "@babel/types": "^7.8.6" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - } } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - } } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1130,21 +1253,6 @@ "ms": "^2.1.1" } }, - "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1213,12 +1321,12 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1236,156 +1344,29 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } } } }, - "@babel/helper-call-delegate": { + "@babel/helper-compilation-targets": { "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz", - "integrity": "sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.7" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" } }, "@babel/helper-create-regexp-features-plugin": { @@ -1397,43 +1378,6 @@ "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-regex": "^7.8.3", "regexpu-core": "^4.7.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } } }, "@babel/helper-define-map": { @@ -1457,14 +1401,14 @@ } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -1477,20 +1421,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -1505,12 +1449,12 @@ } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1537,26 +1481,26 @@ } }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -1578,20 +1522,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -1606,29 +1550,29 @@ } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1686,12 +1630,12 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1708,12 +1652,12 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1730,12 +1674,12 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1743,9 +1687,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz", - "integrity": "sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.8.3", @@ -1753,7 +1697,7 @@ "@babel/helper-simple-access": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", "@babel/template": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/types": "^7.9.0", "lodash": "^4.17.13" }, "dependencies": { @@ -1776,20 +1720,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -1804,12 +1748,12 @@ } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1826,12 +1770,12 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -1876,26 +1820,26 @@ } }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -1917,20 +1861,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -1945,29 +1889,29 @@ } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2017,26 +1961,26 @@ } }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -2058,20 +2002,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -2086,29 +2030,29 @@ } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2156,20 +2100,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -2184,12 +2128,12 @@ } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2205,6 +2149,12 @@ "@babel/types": "^7.4.4" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, "@babel/helper-wrap-function": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", @@ -2227,26 +2177,26 @@ } }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -2268,20 +2218,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -2296,29 +2246,29 @@ } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2347,14 +2297,14 @@ } }, "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", "dev": true, "requires": { "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" }, "dependencies": { "@babel/code-frame": { @@ -2367,26 +2317,26 @@ } }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -2408,20 +2358,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -2436,29 +2386,29 @@ } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2542,14 +2492,35 @@ "@babel/plugin-syntax-json-strings": "^7.8.0" } }, - "@babel/plugin-proposal-object-rest-spread": { + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", + "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -2562,6 +2533,16 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.8.8", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", @@ -2599,6 +2580,24 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", @@ -2617,6 +2616,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, "@babel/plugin-syntax-top-level-await": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", @@ -2666,14 +2674,14 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz", - "integrity": "sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-optimise-call-expression": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", "@babel/helper-replace-supers": "^7.8.6", @@ -2691,14 +2699,14 @@ } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -2720,20 +2728,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -2748,12 +2756,12 @@ } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2770,9 +2778,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -2808,9 +2816,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz", - "integrity": "sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -2836,14 +2844,14 @@ } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -2856,20 +2864,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -2884,12 +2892,12 @@ } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -2915,47 +2923,47 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", - "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", - "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "@babel/helper-simple-access": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", - "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", - "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3" } }, @@ -2988,12 +2996,11 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz", - "integrity": "sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.8.7", "@babel/helper-get-function-arity": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" }, @@ -3008,12 +3015,12 @@ } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -3105,77 +3112,99 @@ } }, "@babel/preset-env": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", - "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.7", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.5", - "@babel/plugin-transform-modules-commonjs": "^7.7.5", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.7", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.5", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.6.0", + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", + "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } } } }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, "@babel/runtime": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", @@ -3376,6 +3405,17 @@ "to-regex-range": "^5.0.1" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fsevents": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", @@ -3406,6 +3446,12 @@ "is-glob": "^4.0.1" } }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3569,9 +3615,9 @@ } }, "@electron/get": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.9.0.tgz", - "integrity": "sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.10.0.tgz", + "integrity": "sha512-hlueNXU51c3CwQjBw/i5fwt+VfQgSQVUTdicpCHkhEjNZaa4CXJ5W1GaxSwtLE2dvRmAHjpIjUMHTqJ53uojfg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -3600,6 +3646,23 @@ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", "dev": true }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3614,6 +3677,99 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, + "@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz", + "integrity": "sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.1", + "loader-utils": "^1.4.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.4" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -3625,21 +3781,21 @@ } }, "@ngtools/webpack": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.7.tgz", - "integrity": "sha512-MvoMaErkjESefoIrbt8F2RpKDr9KavwvH4v3hwSAKooVNFdFKNsjJ7m3gCQehumEfsYFq2mrEK2sTW4/CpFlMQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.1.tgz", + "integrity": "sha512-4RPlk6aIlYhk9isTvXbMaA2G0LhxOzcZ+2iG7zV9Yj/Vm8+lrRexpQ/kC/Dh0GI/oCtKIkVpUzx5LTozYeTLdQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", + "@angular-devkit/core": "9.1.1", "enhanced-resolve": "4.1.1", - "rxjs": "6.5.3", + "rxjs": "6.5.4", "webpack-sources": "1.4.3" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -3654,32 +3810,128 @@ "dev": true }, "@schematics/angular": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.7.tgz", - "integrity": "sha512-3UCeexYx/YVo3kboyPZ8KgqBTduMA18AAm3s2yrC0qj41fBFVVZAZLa74uouTf4RYVgy9kR7J3uv6VLxrJPOnQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.1.tgz", + "integrity": "sha512-V0DcDNgHQ2YR+PGZI6+pf/mUNNxt5SusShkZ1PbwIMk/HUQpzEGkLjm3v1Jw9eIZKiuDx615GNU1xDzQ/KyNRQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7" + "@angular-devkit/core": "9.1.1", + "@angular-devkit/schematics": "9.1.1" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", + "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } } }, "@schematics/update": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.7.tgz", - "integrity": "sha512-e9tX2DGNYfj/k9mVICpQt2bWIYyD92dlsip7LzPeZGt+R9zCp5w19uBLa8Z00OgEGzFR1krhRvkQE5OxkkAnVw==", + "version": "0.901.1", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.1.tgz", + "integrity": "sha512-g5B8hjXKCbUNLKCkWQxc5r2D9lOQXRTLZJNIqva+l/ck0AML5MpelxkqQId9ZGLfQqfFk/XjdSHRWgcmUs1WnA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7", + "@angular-devkit/core": "9.1.1", + "@angular-devkit/schematics": "9.1.1", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", - "npm-package-arg": "^7.0.0", - "pacote": "9.5.8", - "rxjs": "6.5.3", - "semver": "6.3.0", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "rxjs": "6.5.4", + "semver": "7.1.3", "semver-intersect": "1.4.0" }, "dependencies": { + "@angular-devkit/core": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", + "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "hosted-git-info": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", @@ -3698,39 +3950,39 @@ "yallist": "^3.0.2" } }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "npm-package-arg": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", - "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true }, "yallist": { @@ -3768,12 +4020,6 @@ "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", "dev": true }, - "@types/estree": { - "version": "0.0.43", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.43.tgz", - "integrity": "sha512-WfOySUnBpyKXbkC9QuZguwOGhGnugDXT2f2P6X8EIis7qlnd5NI1Nr4kRi357NtguxezyizIcaFlQe0wx23XnA==", - "dev": true - }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -3807,9 +4053,9 @@ } }, "@types/jasmine": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.9.tgz", - "integrity": "sha512-KNL2Fq6GRmty2j6+ZmueT/Z/dkctLNH+5DFoGHNDtcgt7yME9NZd8x2p81Yuea1Xux/qAryDd3zVLUoKpDz1TA==", + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.10.tgz", + "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", "dev": true }, "@types/jasminewd2": { @@ -3838,9 +4084,9 @@ "integrity": "sha512-13gmo3M2qVvjQrWNseqM3+cR6S2Ss3grbR2NZltgMq94wOwqJYQdgn8qzwDshzgXqMlSUtyPZjysImmktu22ew==" }, "@types/node": { - "version": "13.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz", - "integrity": "sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==", + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", "dev": true }, "@types/pako": { @@ -3872,9 +4118,9 @@ "integrity": "sha512-hkgzYF+qnIl8uTO8rmUSVSfQ8BIfMXC4yJAF4n8BE758YsKBZvFC4NumnAegj7KmylP0liEZNpb9RRGFMbFejA==" }, "@types/webpack-sources": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz", - "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", + "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==", "dev": true, "requires": { "@types/node": "*", @@ -4125,9 +4371,9 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "acorn-node": { @@ -4449,6 +4695,23 @@ "ms": "^2.1.1" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "hosted-git-info": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", @@ -4776,6 +5039,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "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 + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -4783,17 +5052,17 @@ "dev": true }, "autoprefixer": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz", - "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { - "browserslist": "^4.7.2", - "caniuse-lite": "^1.0.30001006", + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.21", + "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" } }, @@ -4841,6 +5110,26 @@ "pkg-dir": "^3.0.0" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -4851,6 +5140,12 @@ "semver": "^5.6.0" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -5441,26 +5736,15 @@ } }, "browserslist": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", - "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.378", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" - }, - "dependencies": { - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "browserstack": { @@ -5483,20 +5767,10 @@ "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, "buffer-equal": { @@ -5505,12 +5779,6 @@ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -5588,6 +5856,23 @@ "ms": "^2.1.1" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5679,28 +5964,27 @@ "dev": true }, "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.0.tgz", + "integrity": "sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g==", "dev": true, "requires": { "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.2", "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "minipass": "^3.0.0", + "minipass": "^3.1.1", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", + "mkdirp": "^1.0.3", "move-concurrently": "^1.0.1", "p-map": "^3.0.0", "promise-inflight": "^1.0.1", "rimraf": "^2.7.1", - "ssri": "^7.0.0", + "ssri": "^8.0.0", + "tar": "^6.0.1", "unique-filename": "^1.1.1" }, "dependencies": { @@ -5718,12 +6002,6 @@ "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5733,6 +6011,30 @@ "yallist": "^3.0.2" } }, + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", @@ -5742,6 +6044,28 @@ "aggregate-error": "^3.0.0" } }, + "tar": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.1.tgz", + "integrity": "sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==", + "dev": true, + "requires": { + "chownr": "^1.1.3", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -5875,9 +6199,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001035", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz", - "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==", + "version": "1.0.30001041", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001041.tgz", + "integrity": "sha512-fqDtRCApddNrQuBxBS7kEiSGdBsgO4wiVw4G/IClfqzfhW45MbTumfN4cuUJGTM0YGFNn97DCXPJ683PS6zwvA==", "dev": true }, "canonical-path": { @@ -6215,9 +6539,9 @@ } }, "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", + "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", "dev": true }, "cli-width": { @@ -6339,9 +6663,9 @@ "dev": true }, "codelyzer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.1.tgz", - "integrity": "sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.2.tgz", + "integrity": "sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA==", "dev": true, "requires": { "app-root-path": "^2.2.1", @@ -6449,9 +6773,9 @@ "dev": true }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { @@ -6734,9 +7058,9 @@ }, "dependencies": { "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -6790,6 +7114,26 @@ "is-extglob": "^2.1.1" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6809,6 +7153,12 @@ "semver": "^5.6.0" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7090,8 +7440,25 @@ "strip-bom": "^3.0.0", "underscore": "^1.8.3", "which": "^1.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -7388,17 +7755,17 @@ } }, "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.8.5", "semver": "7.0.0" }, "dependencies": { @@ -7415,105 +7782,38 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "coverage-istanbul-loader": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz", - "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==", - "dev": true, - "requires": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.0", - "loader-utils": "^1.2.3", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.6.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -7684,14 +7984,14 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", "dev": true, "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" } }, "css-tree": { @@ -7728,9 +8028,9 @@ } }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssnano": { @@ -7811,12 +8111,36 @@ "dev": true }, "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.37" + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "currently-unhandled": { @@ -7851,9 +8175,9 @@ } }, "d3": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.15.0.tgz", - "integrity": "sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.15.1.tgz", + "integrity": "sha512-Xu9gT6Lm0jH3wWJJSRomFwqnGGi3YAfWIfxNFl4++YVgYOjo3F8V2idAG3nJBgpZOkD0/RHPZX6F4k6tzgOvYw==", "requires": { "d3-array": "1", "d3-axis": "1", @@ -7986,9 +8310,9 @@ } }, "d3-format": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.3.tgz", - "integrity": "sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ==" + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz", + "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==" }, "d3-geo": { "version": "1.11.9", @@ -8510,6 +8834,23 @@ "sanitize-filename": "^1.6.3" }, "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "iconv-lite": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.1.tgz", @@ -8688,9 +9029,9 @@ "dev": true }, "electron": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-8.1.1.tgz", - "integrity": "sha512-t+5zzFo7VOgckJc9YpImHJkpqeWxwpmEjywWbAa4IT5MULS7h1XU52H9gMswK/y8xc5lBNwxLhJSty/15+gi1A==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.2.tgz", + "integrity": "sha512-GH4RCbpuzEn3XpTmsf+wLaJ2KOPSOoBJvQ0s6ftTLs5+IQEgKZvkdYCj8TCBNXFhss31RT3BUqoEQQUyZErK0A==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -8699,9 +9040,9 @@ }, "dependencies": { "@types/node": { - "version": "12.12.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.29.tgz", - "integrity": "sha512-yo8Qz0ygADGFptISDj3pOC9wXfln/5pQaN/ysDIzOaAWXt73cNHmtEC8zSO2Y+kse/txmwIAJzkYZ5fooaS5DQ==", + "version": "12.12.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", + "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==", "dev": true } } @@ -8784,12 +9125,29 @@ "path-exists": "^4.0.0" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8948,6 +9306,23 @@ "color-name": "~1.1.4" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8972,9 +9347,9 @@ } }, "electron-to-chromium": { - "version": "1.3.379", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz", - "integrity": "sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg==", + "version": "1.3.404", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.404.tgz", + "integrity": "sha512-G7XYSpNXv/GhFLgjGyBJAs9LjLHBWhsvjf6VI/VbptG9KiABHSItETTgDe1LDjbHA5P/Rn2MMDKOvhewM+w2Cg==", "dev": true }, "elementtree": { @@ -9014,9 +9389,9 @@ "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { @@ -9826,15 +10201,32 @@ } }, "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } } }, "extsprintf": { @@ -9856,9 +10248,9 @@ }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, "isarray": { @@ -9934,9 +10326,9 @@ } }, "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { "pend": "~1.2.0" @@ -9958,13 +10350,13 @@ } }, "file-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", - "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" }, "dependencies": { "ajv": { @@ -10065,13 +10457,13 @@ } }, "find-cache-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^3.0.0", + "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" }, "dependencies": { @@ -10151,9 +10543,9 @@ "dev": true }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -10358,19 +10750,38 @@ } }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dev": true, "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" }, "dependencies": { "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true } } }, @@ -10959,6 +11370,12 @@ "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", "dev": true }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, "get-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", @@ -11049,9 +11466,9 @@ }, "dependencies": { "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", + "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", "dev": true, "optional": true } @@ -11173,17 +11590,24 @@ "dev": true }, "handlebars": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz", - "integrity": "sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12030,6 +12454,12 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "dev": true + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -12400,26 +12830,26 @@ } }, "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { @@ -12441,20 +12871,20 @@ } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { @@ -12469,29 +12899,29 @@ } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -12684,18 +13114,18 @@ "dev": true }, "jasmine-spec-reporter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.1.tgz", + "integrity": "sha512-RrOZ+bSPnbk1/9KKs5lm0Nl0cqDCh/XXVlCmu3nkhEJH6HTDh4hoJZu3q8e9aq37C0eXEf/JEJnYy+t4m3arZQ==", "dev": true, "requires": { - "colors": "1.1.2" + "colors": "1.4.0" }, "dependencies": { "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true } } @@ -12707,21 +13137,32 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", "dev": true, "requires": { "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" + }, + "dependencies": { + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -12795,12 +13236,12 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" }, "dependencies": { "minimist": { @@ -12850,12 +13291,11 @@ } }, "karma": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", - "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.1.tgz", + "integrity": "sha512-xrDGtZ0mykEQjx1BUHOP1ITi39MDsCGocmSvLJWHxUQpxuKwxk3ZUrC6HI2VWh1plLC6+7cA3B19m12yzO/FRw==", "dev": true, "requires": { - "bluebird": "^3.3.0", "body-parser": "^1.16.1", "braces": "^3.0.2", "chokidar": "^3.0.0", @@ -12867,38 +13307,37 @@ "glob": "^7.1.1", "graceful-fs": "^4.1.2", "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", + "isbinaryfile": "^4.0.2", "lodash": "^4.17.14", "log4js": "^4.0.0", "mime": "^2.3.1", "minimatch": "^3.0.2", - "optimist": "^0.6.1", "qjobs": "^1.1.4", "range-parser": "^1.2.0", "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", "socket.io": "2.1.1", "source-map": "^0.6.1", "tmp": "0.0.33", - "useragent": "2.3.0" + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" }, "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -12908,78 +13347,70 @@ "fill-range": "^7.0.1" } }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "color-convert": { + "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": { - "is-glob": "^4.0.1" + "color-name": "~1.1.4" } }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "binary-extensions": "^2.0.0" + "to-regex-range": "^5.0.1" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "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 + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "buffer-alloc": "^1.2.0" + "p-locate": "^4.1.0" } }, "mime": { @@ -12988,27 +13419,53 @@ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "p-limit": "^2.2.0" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13017,6 +13474,46 @@ "requires": { "is-number": "^7.0.0" } + }, + "wrap-ansi": { + "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", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + } + }, + "yargs-parser": { + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -13069,9 +13566,9 @@ } }, "karma-jasmine-html-reporter": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.2.tgz", - "integrity": "sha512-ILBPsXqQ3eomq+oaQsM311/jxsypw5/d0LnZXj26XkfThwq7jZ55A2CFSKJVA5VekbbOGvMyv7d3juZj0SeTxA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.3.tgz", + "integrity": "sha512-ci0VrjuCaFj+9d1tYlTE3KIPUCp0rz874zWWU3JgCMqGIyw5ke+BXWFPOAGAqUdCJcrMwneyvp1zFXA74MiPUA==", "dev": true }, "karma-source-map-support": { @@ -13137,9 +13634,9 @@ } }, "less": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", - "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", + "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==", "dev": true, "requires": { "clone": "^2.1.2", @@ -13150,7 +13647,8 @@ "mkdirp": "^0.5.0", "promise": "^7.1.1", "request": "^2.83.0", - "source-map": "~0.6.0" + "source-map": "~0.6.0", + "tslib": "^1.10.0" }, "dependencies": { "source-map": { @@ -13173,6 +13671,32 @@ "pify": "^4.0.1" }, "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -13181,6 +13705,21 @@ } } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -13192,9 +13731,9 @@ } }, "license-webpack-plugin": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", - "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz", + "integrity": "sha512-1Xq72fmPbTg5KofXs+yI5L4QqPFjQ6mZxoeI6D7gfiEDOtaEIk6PGrdLaej90bpDqKNHNxlQ/MW4tMAL6xMPJQ==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", @@ -13379,14 +13918,14 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, "locate-path": { @@ -13467,12 +14006,6 @@ } } }, - "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", - "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", - "dev": true - }, "loglevel-plugin-prefix": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", @@ -13565,9 +14098,9 @@ }, "dependencies": { "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -13694,9 +14227,9 @@ "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" }, "mathjax": { - "version": "2.7.7", - "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-2.7.7.tgz", - "integrity": "sha512-OOl0B2/0tSJAtAZarXnQuLDBLgTNRqiI9VqHTQzPsxf4okT2iIpDrvaklK9x2QEMD1sDj4yRn11Ygci41DxMAQ==" + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-2.7.8.tgz", + "integrity": "sha512-n4xZJ+cw7o01YOSVhxxjyOmibqBPCi+XTDof4siq78QWMx7Fxjzgb/mxMUEElMzTDodMV7ENIMsjREOSldOQPw==" }, "md5-file": { "version": "4.0.0", @@ -13872,9 +14405,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", - "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", "dev": true, "requires": { "loader-utils": "^1.1.0", @@ -13883,6 +14416,32 @@ "webpack-sources": "^1.1.0" }, "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "normalize-url": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", @@ -14063,12 +14622,20 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "moment": { @@ -14154,9 +14721,9 @@ "dev": true }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -14252,9 +14819,9 @@ } }, "node-fetch-npm": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.3.tgz", - "integrity": "sha512-DgwoKEsqLnFZtk3ap7GWBHcHwnUhsNmQqEDcdjfQ8GofLEFJ081NAd4Uin3R7RFZBWVJCwHISw1oaEqPgSLloA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", "dev": true, "requires": { "encoding": "^0.1.11", @@ -14262,12 +14829,6 @@ "safe-buffer": "^5.1.1" } }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", - "dev": true - }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -14308,21 +14869,10 @@ } }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true }, "nopt": { "version": "4.0.1", @@ -14386,6 +14936,23 @@ "pify": "^3.0.0" } }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", + "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "dev": true + } + } + }, "npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", @@ -14416,14 +14983,57 @@ } }, "npm-pick-manifest": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", - "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", + "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "semver": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", + "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "npm-registry-fetch": { @@ -14672,9 +15282,9 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -14791,12 +15401,13 @@ } }, "open": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", - "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", "dev": true, "requires": { - "is-wsl": "^2.1.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "dependencies": { "is-wsl": { @@ -14855,26 +15466,47 @@ } }, "ora": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", - "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", "dev": true, "requires": { - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.2.0", "is-interactive": "^1.0.0", "log-symbols": "^3.0.0", - "strip-ansi": "^5.2.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -14884,6 +15516,27 @@ "restore-cursor": "^3.1.0" } }, + "color-convert": { + "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" + } + }, + "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 + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "onetime": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", @@ -14904,12 +15557,21 @@ } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -15062,9 +15724,9 @@ } }, "pacote": { - "version": "9.5.8", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz", - "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==", + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", "dev": true, "requires": { "bluebird": "^3.5.3", @@ -15081,6 +15743,7 @@ "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", "npm-pick-manifest": "^3.0.0", @@ -15099,9 +15762,9 @@ }, "dependencies": { "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -15165,6 +15828,17 @@ "yallist": "^3.0.0" } }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -15514,34 +16188,6 @@ "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==", "dev": true }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -15549,9 +16195,9 @@ "dev": true }, "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -15576,25 +16222,6 @@ "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "postcss-colormin": { @@ -15712,6 +16339,34 @@ "postcss": "^7.0.0", "postcss-load-config": "^2.0.0", "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "postcss-merge-longhand": { @@ -16105,14 +16760,6 @@ "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" - }, - "dependencies": { - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - } } }, "postcss-svgo": { @@ -16170,9 +16817,9 @@ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" }, "primeng": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.1.tgz", - "integrity": "sha512-BmIq5F3+xUQ96G4fD4K2uR3azGitWCum++SVCXEgzzHI4zp55Xzyd96H8vHQg/IQxdT8ftlr/OpOHKACAFNgow==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.5.tgz", + "integrity": "sha512-juugoXZaU7TyGyTSFx0PNjObqM+/RTY/arJ/LwyH/0KaIv0V+Oqfvnx8btJ96kLOZ+h0xLWXLuAbxsTXe9EX6w==" }, "printj": { "version": "1.1.2", @@ -16634,13 +17281,13 @@ } }, "raw-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz", - "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.0.tgz", + "integrity": "sha512-iINUOYvl1cGEmfoaLjnZXt4bKfT2LJnZZib5N/LLyAphC+Dd11vNP9CNVb38j+SAJpFI1uo8j9frmih53ASy7Q==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^2.0.1" + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" }, "dependencies": { "ajv": { @@ -16661,6 +17308,32 @@ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "schema-utils": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", @@ -16751,6 +17424,23 @@ "lazy-val": "^1.0.4" }, "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "json5": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", @@ -16878,14 +17568,17 @@ } }, "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "registry-auth-token": { @@ -16908,15 +17601,15 @@ } }, "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -17115,9 +17808,9 @@ } }, "roarr": { - "version": "2.15.2", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.2.tgz", - "integrity": "sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q==", + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz", + "integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==", "dev": true, "optional": true, "requires": { @@ -17144,14 +17837,21 @@ "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==" }, "rollup": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.25.2.tgz", - "integrity": "sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.1.0.tgz", + "integrity": "sha512-gfE1455AEazVVTJoeQtcOq/U6GSxwoj4XPSWVsuWmgIxj7sBQNLDOSA82PbdMe+cP8ql8fR1jogPFe8Wg8g4SQ==", "dev": true, "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" + "fsevents": "~2.1.2" + }, + "dependencies": { + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + } } }, "run-async": { @@ -17178,9 +17878,9 @@ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "requires": { "tslib": "^1.9.0" } @@ -17215,24 +17915,24 @@ } }, "sass": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.3.tgz", - "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==", + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.3.tgz", + "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", - "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", "loader-utils": "^1.2.3", "neo-async": "^2.6.1", - "schema-utils": "^2.1.0", + "schema-utils": "^2.6.1", "semver": "^6.3.0" }, "dependencies": { @@ -17254,6 +17954,32 @@ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -17368,15 +18094,6 @@ } } }, - "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", - "dev": true, - "requires": { - "node-forge": "0.9.0" - } - }, "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", @@ -17878,46 +18595,6 @@ "uuid": "^3.0.1" } }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "socks": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", @@ -17978,6 +18655,34 @@ "requires": { "async": "^2.5.0", "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "source-map-resolve": { @@ -18186,12 +18891,11 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" } }, @@ -18505,13 +19209,13 @@ "dev": true }, "style-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", - "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", + "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==", "dev": true, "requires": { "loader-utils": "^1.2.3", - "schema-utils": "^2.0.1" + "schema-utils": "^2.6.4" }, "dependencies": { "ajv": { @@ -18532,6 +19236,32 @@ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "schema-utils": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", @@ -18625,6 +19355,34 @@ "loader-utils": "^1.0.2", "lodash.clonedeep": "^4.5.0", "when": "~3.6.x" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "sumchecker": { @@ -18842,6 +19600,25 @@ "requires": { "async-exit-hook": "^2.0.1", "fs-extra": "^8.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + } } }, "term-size": { @@ -18908,9 +19685,9 @@ } }, "terser-webpack-plugin": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz", - "integrity": "sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", "dev": true, "requires": { "cacache": "^13.0.1", @@ -18936,98 +19713,83 @@ "uri-js": "^4.2.2" } }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "semver": "^6.0.0" + "yallist": "^3.0.2" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { - "find-up": "^4.0.0" + "aggregate-error": "^3.0.0" } }, "schema-utils": { @@ -19040,12 +19802,6 @@ "ajv-keywords": "^3.4.1" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -19062,25 +19818,32 @@ "source-map": "^0.6.0" } }, - "supports-color": { + "ssri": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" } }, "terser": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", - "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", + "version": "4.6.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", + "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, @@ -19281,9 +20044,9 @@ "integrity": "sha512-ikUlS+/BcImLhNYyIgZcEmq4byc31QpC+46/6Jm5ECWkVFhf8SM2Fp/0pMVXPX6vk45SMCwrP4Taxucne8I0VA==" }, "ts-node": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz", - "integrity": "sha512-s659CsHrsxaRVDEleuOkGvbsA0rWHtszUNEt1r0CgAFN5ZZTQtDzpsluS7W5pOGJIa1xZE8R/zK4dEs+ldFezg==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.8.2.tgz", + "integrity": "sha512-duVj6BpSpUpD/oM4MfhO98ozgkp3Gt9qIp3jGxwU2DFvl/3IRaEAvbLa8G60uS7C77457e/m5TMowjedeRxI1Q==", "dev": true, "requires": { "arg": "^4.1.0", @@ -19361,9 +20124,9 @@ "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" }, "tslint": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.0.tgz", - "integrity": "sha512-fXjYd/61vU6da04E505OZQGb2VCN2Mq3doeWcOIryuG+eqdmFUXTYVwdhnbEu2k46LNLgUYt9bI5icQze/j0bQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.1.tgz", + "integrity": "sha512-kd6AQ/IgPRpLn6g5TozqzPdGNZ0q0jtXW4//hRcj10qLYBaa3mTUU2y2MCG+RXZm8Zx+KZi0eA+YCrMyNlF4UA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -19374,11 +20137,28 @@ "glob": "^7.1.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.10.0", "tsutils": "^2.29.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } } }, "tsutils": { @@ -19487,6 +20267,12 @@ "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", "dev": true }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + }, "uglify-js": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz", @@ -20002,16 +20788,6 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", - "dev": true, - "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - } - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -20055,9 +20831,9 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -20204,12 +20980,12 @@ "dev": true }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^2.1.8", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" }, @@ -20271,9 +21047,9 @@ } }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", + "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -20296,17 +21072,11 @@ "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", + "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.0", "webpack-sources": "^1.4.1" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, "ajv": { "version": "6.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", @@ -20320,9 +21090,9 @@ } }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -20373,6 +21143,26 @@ "path-is-absolute": "^1.0.0" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -20392,6 +21182,12 @@ "semver": "^5.6.0" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -20718,9 +21514,9 @@ } }, "webpack-subresource-integrity": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz", - "integrity": "sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.0.tgz", + "integrity": "sha512-GB1kB/LwAWC3CxwcedGhMkxGpNZxSheCe1q+KJP1bakuieAdX/rGHEcf5zsEzhKXpqsGqokgsDoD9dIkr61VDQ==", "dev": true, "requires": { "webpack-sources": "^1.3.0" @@ -20893,6 +21689,12 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -20903,12 +21705,40 @@ } }, "worker-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.2.0.tgz", - "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.2.tgz", + "integrity": "sha512-V+1zSZMOOKk+uBzKyNIODLQLsx59zSIOaI75J1EMS0iR1qy+KQR3y/pQ3T0vIhvPfDFapGRMsoMvQNEL3okqSA==", "dev": true, "requires": { "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "wrap-ansi": { @@ -21087,12 +21917,13 @@ } }, "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "fd-slicer": "~1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "yeast": { diff --git a/package.json b/package.json index aced423ae..b6d5d0023 100644 --- a/package.json +++ b/package.json @@ -36,17 +36,17 @@ }, "private": true, "dependencies": { - "@angular/animations": "^9.0.7", - "@angular/cdk": "^9.1.3", - "@angular/common": "^9.0.7", - "@angular/compiler": "^9.0.7", - "@angular/core": "^9.0.7", + "@angular/animations": "^9.1.1", + "@angular/cdk": "^9.2.1", + "@angular/common": "^9.1.1", + "@angular/compiler": "^9.1.1", + "@angular/core": "^9.1.1", "@angular/flex-layout": "^9.0.0-beta.29", - "@angular/forms": "^9.0.7", - "@angular/material": "^9.1.3", - "@angular/platform-browser": "^9.0.7", - "@angular/platform-browser-dynamic": "^9.0.7", - "@angular/router": "^9.0.7", + "@angular/forms": "^9.1.1", + "@angular/material": "^9.2.1", + "@angular/platform-browser": "^9.1.1", + "@angular/platform-browser-dynamic": "^9.1.1", + "@angular/router": "^9.1.1", "@types/pako": "^1.0.1", "@types/sprintf-js": "^1.1.2", "angular2-chartjs": "^0.5.1", @@ -61,12 +61,12 @@ "cordova-plugin-file-opener2": "^3.0.0", "cordova-plugin-local-notification": "^0.9.0-beta.2", "cordova-plugin-whitelist": "^1.3.4", - "core-js": "^3.6.4", + "core-js": "^3.6.5", "file-saver": "^2.0.2", "he": "^1.2.0", "jalhyd": "file:../jalhyd", "material-design-icons": "^3.0.1", - "mathjax": "^2.7.7", + "mathjax": "^2.7.8", "mermaid": "~8.3.1", "ngx-konami": "^1.7.1", "ngx-markdown": "^9.0.0", @@ -74,9 +74,9 @@ "ngx-matomo": "^0.1.4", "ngx-webstorage-service": "^4.1.0", "pako": "^1.0.11", - "primeng": "^9.0.1", + "primeng": "^9.0.5", "roboto-fontface": "^0.10.0", - "rxjs": "^6.5.4", + "rxjs": "^6.5.5", "screenfull": "^5.0.2", "svg-pan-zoom": "^3.6.1", "tslib": "^1.11.1", @@ -84,31 +84,31 @@ "zone.js": "^0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.900.7", - "@angular/cli": "^9.0.7", - "@angular/compiler-cli": "^9.0.7", - "@angular/language-service": "^9.0.7", + "@angular-devkit/build-angular": "^0.901.1", + "@angular/cli": "^9.1.1", + "@angular/compiler-cli": "^9.1.1", + "@angular/language-service": "^9.1.1", "@compodoc/compodoc": "^1.1.11", "@types/file-saver": "^2.0.1", - "@types/jasmine": "^3.5.9", + "@types/jasmine": "^3.5.10", "@types/jasminewd2": "^2.0.8", - "@types/node": "^13.9.2", - "codelyzer": "^5.1.2", + "@types/node": "^13.11.1", + "codelyzer": "^5.2.2", "cordova": "^9.0.0", - "electron": "^8.1.1", + "electron": "^8.2.2", "electron-builder": "^22.4.1", - "fs-extra": "^8.1.0", + "fs-extra": "^9.0.0", "jasmine-core": "^3.5.0", - "jasmine-spec-reporter": "~4.2.1", - "karma": "^4.4.1", + "jasmine-spec-reporter": "^5.0.1", + "karma": "^5.0.1", "karma-chrome-launcher": "^3.1.0", "karma-cli": "~2.0.0", "karma-coverage-istanbul-reporter": "^2.1.1", "karma-jasmine": "^3.1.1", - "karma-jasmine-html-reporter": "^1.5.2", + "karma-jasmine-html-reporter": "^1.5.3", "protractor": "^5.4.3", - "ts-node": "^8.7.0", - "tslint": "^6.1.0", + "ts-node": "^8.8.2", + "tslint": "^6.1.1", "typescript": "~3.7.5", "webpack-dev-server": "^3.10.3" }, diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json index e69de29bb..204203e1f 100644 --- a/src/app/calculators/verificateur/config.json +++ b/src/app/calculators/verificateur/config.json @@ -0,0 +1,40 @@ +[ + { + "id": "fs_pass", + "type": "fieldset", + "fields": [ + { + "id": "select_target_pass", + "type": "select_reference", + "reference": "nub", + "source": "verificateur_target" + }, + { + "type": "select", + "id": "select_pab_jet_type", + "property": "pabJetType", + "default": "SURFACE" + } + ] + }, + { + "id": "fs_species", + "type": "fieldset", + "fields": [ + { + "type": "select", + "id": "select_species_list", + "default": "SPECIES_1", + "source": "verificateur_species", + "multiple": true + } + ] + }, + { + "type": "options", + "selectIds": [ "select_pab_jet_type" ], + "targetPassSelectId": "select_target_pass", + "speciesListSelectId": "select_species_list", + "help": "verification/verificateur.html" + } +] diff --git a/src/app/calculators/verificateur/en.json b/src/app/calculators/verificateur/en.json new file mode 100644 index 000000000..eb48e9835 --- /dev/null +++ b/src/app/calculators/verificateur/en.json @@ -0,0 +1,13 @@ +{ + "fs_pass": "Fish pass parameters", + + "select_target_pass": "Fish pass to verify", + + "select_pab_jet_type": "Jet type (PAB)", + "select_pab_jet_type_0": "Diving", + "select_pab_jet_type_1": "Surface", + + "fs_species": "Species parameters", + + "select_species_list": "Species groups" +} diff --git a/src/app/calculators/verificateur/fr.json b/src/app/calculators/verificateur/fr.json new file mode 100644 index 000000000..13b6430de --- /dev/null +++ b/src/app/calculators/verificateur/fr.json @@ -0,0 +1,13 @@ +{ + "fs_pass": "Paramètres de la passe", + + "select_target_pass": "Passe à vérifier", + + "select_pab_jet_type": "Type de jet (PAB)", + "select_pab_jet_type_0": "Plongeant", + "select_pab_jet_type_1": "Surface", + + "fs_species": "Paramètres des espèces", + + "select_species_list": "Groupes d'espèces" +} diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index 4df1d3741..dd35d4673 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -1,5 +1,11 @@ <mat-form-field> - <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue"> + <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple"> + <mat-select-trigger *ngIf="isMultiple"> + {{ selectedValue && selectedValue[0] ? selectedValue[0].label : '' }} + <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> + (+ {{selectedValue.length - 1}} {{selectedValue?.length === 2 ? 'other' : 'others'}}) + </span> + </mat-select-trigger> <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> {{ entryLabel(e) }} </mat-option> diff --git a/src/app/components/results-chart/chart-type.component.ts b/src/app/components/results-chart/chart-type.component.ts index f3ed66b5a..b136874f6 100644 --- a/src/app/components/results-chart/chart-type.component.ts +++ b/src/app/components/results-chart/chart-type.component.ts @@ -53,6 +53,10 @@ export class ChartTypeSelectComponent implements IObservable { } } + public get isMultiple(): boolean { + return false; + } + public get label() { return this.intlService.localizeText("INFO_PARAMFIELD_CHART_TYPE"); } diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index 97ba41d40..b660c875c 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -30,6 +30,10 @@ export class SelectFieldLineComponent implements OnInit { return this._select.id; } + public get isMultiple(): boolean { + return this._select.multiple; + } + public get entries(): SelectEntry[] { if (! this._select) { return []; @@ -41,7 +45,7 @@ export class SelectFieldLineComponent implements OnInit { return entry.label; } - public get selectedValue(): SelectEntry { + public get selectedValue(): SelectEntry | SelectEntry[] { return this._select.getValue(); } @@ -49,7 +53,7 @@ export class SelectFieldLineComponent implements OnInit { return (this._select.getValue() !== undefined); } - public set selectedValue(v: SelectEntry) { + public set selectedValue(v: SelectEntry | SelectEntry[]) { this._select.setValue(v); } @@ -66,9 +70,11 @@ export class SelectFieldLineComponent implements OnInit { if (typeof this._select.helpLink === "string") { link = this._select.helpLink; } else { // object - const cv = this._select.getValue(); - const entryId = cv.id.substring(this._select.entriesBaseId.length); - link = this._select.helpLink[entryId]; + if (! this.isMultiple) { // @TODO manage multiple selections ? + const cv = this._select.getValue() as SelectEntry; + const entryId = cv.id.substring(this._select.entriesBaseId.length); + link = this._select.helpLink[entryId]; + } } window.open("assets/docs/" + this.appSetupService.language + "/calculators/" + link, "_blank"); $event.preventDefault(); @@ -81,9 +87,11 @@ export class SelectFieldLineComponent implements OnInit { if (typeof this._select.helpLink === "string") { return true; } else { // object - const cv = this._select.getValue(); - const entryId = cv.id.substring(this._select.entriesBaseId.length); - return Object.keys(this._select.helpLink).includes(entryId); + if (! this.isMultiple) { // @TODO manage multiple selections ? + const cv = this._select.getValue() as SelectEntry; + const entryId = cv.id.substring(this._select.entriesBaseId.length); + return Object.keys(this._select.helpLink).includes(entryId); + } } } return false; diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.ts b/src/app/components/select-model-field-line/select-model-field-line.component.ts index 592e3032e..31082006e 100644 --- a/src/app/components/select-model-field-line/select-model-field-line.component.ts +++ b/src/app/components/select-model-field-line/select-model-field-line.component.ts @@ -34,7 +34,7 @@ export class SelectModelFieldLineComponent implements OnInit { } public get modelUid() { - return this.selectedValue ? this.selectedValue.id : ""; + return this.selectedValue && ! Array.isArray(this.selectedValue) ? this.selectedValue.id : ""; } public get isValid(): boolean { @@ -57,11 +57,11 @@ export class SelectModelFieldLineComponent implements OnInit { } } - public get selectedValue(): SelectEntry { + public get selectedValue(): SelectEntry | SelectEntry[] { return this._select.getValue(); } - public set selectedValue(v: SelectEntry) { + public set selectedValue(v: SelectEntry | SelectEntry[]) { this._select.setValue(v); } diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 1512cf77e..d3333d8d6 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -24,6 +24,7 @@ import { TopFormulaireElementIterator } from "../form-iterator/top-element-itera import { CalculatorResults } from "../../results/calculator-results"; import { ServiceFactory } from "../../services/service-factory"; import { PabTable } from "../elements/pab-table"; +import { SelectEntry } from '../elements/select-entry'; /** * classe de base pour tous les formulaires @@ -400,7 +401,12 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs */ public getSelectedValue(selectFieldId: string): any { const select: SelectField = <SelectField>this.getFieldById(selectFieldId); - return select.getValue().value; + if (select.multiple) { + const values: string[] = (select.getValue() as SelectEntry[]).map((se) => se.value); + return values; + } else { + return (select.getValue() as SelectEntry).value; + } } /** @@ -408,9 +414,14 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs * @param selectFieldId id du SelectField * @returns label courant du select */ - public getSelectedLabel(selectFieldId: string): string { + public getSelectedLabel(selectFieldId: string): any { const select: SelectField = <SelectField>this.getFieldById(selectFieldId); - return select.getValue().label; + if (select.multiple) { + const labels: string[] = (select.getValue() as SelectEntry[]).map((se) => se.label); + return labels; + } else { + return (select.getValue() as SelectEntry).label; + } } public updateLocalisation(localisation: StringMap, lang: string) { diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts new file mode 100644 index 000000000..50560319a --- /dev/null +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -0,0 +1,91 @@ +import { IObservable, Nub } from "jalhyd"; + +import { SelectFieldNub } from "../elements/select-field-nub"; +import { FormulaireFixedVar } from "./form-fixedvar"; + +/** + * Formulaire pour les Vérificateurs + */ +export class FormulaireVerificateur extends FormulaireFixedVar { + + /** id of select configuring target pass Nub */ + private _targetPassSelectId: string; + + /** id of select configuring list of species */ + private _speciesListSelectId: string; + + protected parseOptions(json: {}) { + super.parseOptions(json); + this._targetPassSelectId = this.getOption(json, "targetPassSelectI"); + this._speciesListSelectId = this.getOption(json, "speciesListSelectId"); + } + + protected completeParse(json: {}, firstNotif: boolean = true) { + super.completeParse(json); + if (this._targetPassSelectId) { + const sel = this.getFormulaireNodeById(this._targetPassSelectId); + if (sel) { + sel.addObserver(this); + if (firstNotif) { + // force 1st observation + (sel as SelectFieldNub).notifySelectValueChanged(); + } + } + } + if (this._speciesListSelectId) { + const sel = this.getFormulaireNodeById(this._speciesListSelectId); + /* if (sel) { + sel.addObserver(this); + if (firstNotif) { + // force 1st observation + (sel as SelectFieldNub).notifySelectValueChanged(); + } + } */ + } + + } + + // interface Observer + + public update(sender: IObservable, data: any) { + // copied from FormDefinition, to avoid calling super.update() + if (sender instanceof Nub) { + switch (data.action) { + case "resultUpdated": + // forward Nub results update notification to FormCompute objects + this.reaffectResultComponents(); + break; + } + } + // copied from FormFixedVar, to avoid calling super.update() + if (data.action === "propertyChange") { + this.reset(); + } + + if (sender instanceof SelectFieldNub) { + if (data.action === "select") { + // update Verificateur property: Pass to check + this._currentNub.properties.setPropValue("nubToVerify", data.value.value); + // @TODO refresh jet type selector + } + }/* else if (sender instanceof SelectField) { + if (sender.id === "select_target_result") { + // refresh parameters selector + this.refreshParameterEntries(); + } + } */ + } + + /** + * Re-populate searched parameter selector with fresh entries + */ + /* private refreshParameterEntries() { + const pSel = this.getFormulaireNodeById(this._speciesListSelectId) as SelectFieldParameter; + if (pSel) { + pSel.updateEntries(); + // reflect changes in GUI + const inputYtarget = this.getFormulaireNodeById("Ytarget") as NgParameter; + inputYtarget.notifyValueModified(this); + } + } */ +} diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 338328bed..3e3b2714d 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -16,6 +16,7 @@ import { FieldsetContainer } from "./fieldset-container"; import { SelectFieldNub } from "./select-field-nub"; import { SelectFieldParameter } from "./select-field-parameter"; import { FormulaireFixedVar } from "../definition/form-fixedvar"; +import { SelectEntry } from './select-entry'; export class FieldSet extends FormulaireElement implements Observer { @@ -344,11 +345,18 @@ export class FieldSet extends FormulaireElement implements Observer { * @param selectFieldId id du SelectField * @returns valeur courante du select sans le préfixe */ - public getSelectedValue(selectFieldId: string): string { + public getSelectedValue(selectFieldId: string): string | string[] { for (const p of this.kids) { if (p instanceof SelectField && p.isDisplayed && p.id === selectFieldId) { - const value: string = p.getValue().value; - return FormulaireElement.removePrefix(value, selectFieldId + "_"); + if (! p.multiple) { + const value: string = (p.getValue() as SelectEntry).value; + return FormulaireElement.removePrefix(value, selectFieldId + "_"); + } else { + const values: string[] = (p.getValue() as SelectEntry[]).map((se) => { + return FormulaireElement.removePrefix(se.value, selectFieldId + "_"); + }); + return values; + } } } } diff --git a/src/app/formulaire/elements/select-field-model.ts b/src/app/formulaire/elements/select-field-model.ts index aa4147022..322ae965d 100644 --- a/src/app/formulaire/elements/select-field-model.ts +++ b/src/app/formulaire/elements/select-field-model.ts @@ -37,7 +37,7 @@ export abstract class SelectFieldModel extends SelectField { // populate this.populate(); // keep previously selected entry if possible - if (pse && pse.id) { + if (pse && ! Array.isArray(pse) && pse.id) { // @TODO manage multiple values this.setValueFromId(pse.id); } // if no entry is available anymore, unset value @@ -50,12 +50,15 @@ export abstract class SelectFieldModel extends SelectField { * Updates selectedValue; notifies observers only if * value.id has changed */ - public setValue(v: SelectEntry) { + public setValue(v: SelectEntry | SelectEntry[]) { const previousSelectedEntry = this._selectedEntry; this._selectedEntry = v; if ( ! previousSelectedEntry - || (previousSelectedEntry.id !== v.id) + || ( // @TODO manage multiple values + ! Array.isArray(previousSelectedEntry) + && previousSelectedEntry.id !== (v as SelectEntry).id + ) ) { this.notifyObservers({ "action": "select", diff --git a/src/app/formulaire/elements/select-field-nub.ts b/src/app/formulaire/elements/select-field-nub.ts index 3cbcf0720..9942f160f 100644 --- a/src/app/formulaire/elements/select-field-nub.ts +++ b/src/app/formulaire/elements/select-field-nub.ts @@ -3,7 +3,7 @@ import { SelectEntry } from "./select-entry"; import { ServiceFactory } from "../../services/service-factory"; import { decodeHtml } from "../../util"; -import { Session, Solveur } from "jalhyd"; +import { Session, Solveur, FishPass, CalculatorType } from "jalhyd"; /** * A select field that populates itself with references to Nubs @@ -24,11 +24,12 @@ export class SelectFieldNub extends SelectFieldReference { * Populates entries with available references */ protected populate() { + const fs = ServiceFactory.instance.formulaireService; + let candidateNubs: any[]; switch (this._source) { case "solveur_target": // Solveur, module cible (à calculer) // find all Nubs having at least one link to another Nub's result - const fs = ServiceFactory.instance.formulaireService; - const candidateNubs = + candidateNubs = Session.getInstance().getDownstreamNubs().concat( Session.getInstance().getUpstreamNubsHavingExtraResults() ).filter( @@ -50,6 +51,25 @@ export class SelectFieldNub extends SelectFieldReference { } } break; + + case "verificateur_target": // Vérificateur, passe cible (à vérifier) + // find all Nubs of type FishPass + candidateNubs = Session.getInstance().getAllNubs().filter((element) => { + return ( + (element instanceof FishPass) + && element.calcType !== CalculatorType.Par // ParSimulation extends Par @TODO find something better + ); + }); + for (const cn of candidateNubs) { + const nub = fs.getFormulaireFromId(cn.uid); + if (nub) { + const label = nub.calculatorName + " (" + fs.getLocalisedTitleFromCalculatorType(nub.calculatorType) + ")"; + this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); + } else { + // silent fail, this Verificateur nub was probably loaded before all the candidate nubs are done loading + } + } + break; } } diff --git a/src/app/formulaire/elements/select-field-reference.ts b/src/app/formulaire/elements/select-field-reference.ts index 4cbe101ed..924d1a869 100644 --- a/src/app/formulaire/elements/select-field-reference.ts +++ b/src/app/formulaire/elements/select-field-reference.ts @@ -45,10 +45,14 @@ export abstract class SelectFieldReference extends SelectField { this.populate(); // if no entry is available anymore, unset value if (this.entries.length === 0) { - super.setValue(undefined); + if (this.multiple) { + super.setValue([ undefined ]); + } else { + super.setValue(undefined); + } } else { - // keep previously selected entry if possible - if (pse && pse.id) { + // keep previously selected entry if possible @TODO manage multiple values + if (pse && ! Array.isArray(pse) && pse.id) { this.setValueFromId(pse.id); } else { this.setDefaultValue(); @@ -65,7 +69,10 @@ export abstract class SelectFieldReference extends SelectField { this._selectedEntry = v; if ( ! previousSelectedEntry - || (previousSelectedEntry.id !== v.id) + || ( // @TODO manage multiple values + ! Array.isArray(previousSelectedEntry) + && previousSelectedEntry.id !== v.id + ) ) { this.notifySelectValueChanged(); } diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 220fc7e2d..5fdf96889 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -5,7 +5,8 @@ import { StructureType, LoiDebit, Session, - Solveur + Solveur, + CalculatorType } from "jalhyd"; import { Field } from "./field"; @@ -14,6 +15,7 @@ import { StringMap } from "../../stringmap"; import { FormulaireNode } from "./formulaire-node"; import { FormulaireDefinition } from "../definition/form-definition"; import { ServiceFactory } from "../../services/service-factory"; +import { FishSpecies } from 'jalhyd/build/verification/fish_species'; export class SelectField extends Field { @@ -22,7 +24,7 @@ export class SelectField extends Field { protected _entries: SelectEntry[]; - protected _selectedEntry: SelectEntry; + protected _selectedEntry: SelectEntry | SelectEntry[]; /** name of the Nub property associated to this field, if any */ protected _associatedProperty: string; @@ -30,6 +32,9 @@ export class SelectField extends Field { /** default value for this field */ protected _defaultValue: string; + /** if true, user can select multiple values */ + protected _multiple = false; + constructor(parent: FormulaireNode) { super(parent); this.clearEntries(); @@ -51,6 +56,10 @@ export class SelectField extends Field { return this._defaultValue; } + public get multiple(): boolean { + return this._multiple; + } + public clearEntries() { this._entries = []; } @@ -99,11 +108,11 @@ export class SelectField extends Field { } } - public getValue() { + public getValue(): SelectEntry | SelectEntry[] { return this._selectedEntry; } - public setValue(v: SelectEntry) { + public setValue(v: SelectEntry | SelectEntry[]) { if (this._selectedEntry !== v) { this._selectedEntry = v; this.notifyValueChanged(); @@ -117,12 +126,6 @@ export class SelectField extends Field { }, this); } - public getLabel() { - if (this._selectedEntry) { - return this._selectedEntry.label; - } - } - public updateLocalisation(loc: StringMap) { super.updateLocalisation(loc); for (const e of this._entries) { @@ -140,6 +143,9 @@ export class SelectField extends Field { this._helpLink = field["help"]; this._associatedProperty = field["property"]; this._defaultValue = field["default"]; + if (field["multiple"] !== undefined) { + this._multiple = field["multiple"]; + } const source = field["source"]; const nub: Nub = (this.parentForm as FormulaireDefinition).currentNub; @@ -201,6 +207,18 @@ export class SelectField extends Field { } break; + case "verificateur_species": + // add UIDs of all Espece type Nubs in the session + const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); + for (const en of especeNubs) { + this.addEntry(new SelectEntry(en.uid, en.uid, "Espèce personnalisée : " + en.uid)); + } + // add all FishSpecies + for (let j = 0; j < Object.keys(FishSpecies).length / 2; j++) { + this.addEntry(new SelectEntry(this._entriesBaseId + j, j, "Groupe d'espèces " + j)); + } + break; + // general case : property values taken from an enum default: // find enum associated to property diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index cd8b20b3f..dac713d05 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -41,6 +41,7 @@ import { FormulaireSPP } from "../formulaire/definition/form-spp"; import { FormulaireFixedVar } from "../formulaire/definition/form-fixedvar"; import { FormulaireSection } from "../formulaire/definition/form-section"; import { FormulairePAR } from "../formulaire/definition/form-par"; +import { FormulaireVerificateur } from "../formulaire/definition/form-verificateur"; @Injectable() export class FormulaireService extends Observable { @@ -313,6 +314,10 @@ export class FormulaireService extends Observable { f = new FormulaireSPP(); break; + case CalculatorType.Verificateur: + f = new FormulaireVerificateur(); + break; + default: f = new FormulaireFixedVar(); } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 88a4f2bc9..ade6d6943 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -146,9 +146,9 @@ "INFO_ENUM_STRUCTUREFLOWREGIME_1": "Partially submerged", "INFO_ENUM_STRUCTUREFLOWREGIME_2": "Submerged", "INFO_ENUM_STRUCTUREFLOWREGIME_3": "Zero flow", - "INFO_ENUM_STRUCTUREJETTYPE_0": "Not applicable", - "INFO_ENUM_STRUCTUREJETTYPE_1": "Diving", - "INFO_ENUM_STRUCTUREJETTYPE_2": "Surface", + "INFO_ENUM_STRUCTUREJETTYPE_0": "Diving", + "INFO_ENUM_STRUCTUREJETTYPE_1": "Surface", + "INFO_ENUM_STRUCTUREJETTYPE_2": "Not applicable", "INFO_CHART_BUTTON_TITLE_RESET_ZOOM": "Restore default zoom", "INFO_CHART_BUTTON_TITLE_EXPORT_IMAGE": "Save picture", "INFO_CHART_BUTTON_TITLE_ENTER_FS": "Display fullscreen", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 16b96dce0..021a098f1 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -146,9 +146,9 @@ "INFO_ENUM_STRUCTUREFLOWREGIME_1": "Partiellement noyé", "INFO_ENUM_STRUCTUREFLOWREGIME_2": "Noyé", "INFO_ENUM_STRUCTUREFLOWREGIME_3": "Débit nul", - "INFO_ENUM_STRUCTUREJETTYPE_0": "Sans objet", - "INFO_ENUM_STRUCTUREJETTYPE_1": "Plongeant", - "INFO_ENUM_STRUCTUREJETTYPE_2": "De surface", + "INFO_ENUM_STRUCTUREJETTYPE_0": "Plongeant", + "INFO_ENUM_STRUCTUREJETTYPE_1": "De surface", + "INFO_ENUM_STRUCTUREJETTYPE_2": "Sans objet", "INFO_CHART_BUTTON_TITLE_RESET_ZOOM": "Réinitialiser le zoom", "INFO_CHART_BUTTON_TITLE_EXPORT_IMAGE": "Enregistrer l'image", "INFO_CHART_BUTTON_TITLE_ENTER_FS": "Afficher en plein écran", -- GitLab From 5d855bdb1a2f61e8f1260efcceec44b8aaff849c Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 16 Apr 2020 09:49:31 +0200 Subject: [PATCH 010/101] Removed unused component --- src/app/app.module.ts | 2 - .../select-model-field-line.component.html | 24 ----- .../select-model-field-line.component.scss | 12 --- .../select-model-field-line.component.ts | 94 ------------------ .../formulaire/elements/select-field-model.ts | 95 ------------------- 5 files changed, 227 deletions(-) delete mode 100644 src/app/components/select-model-field-line/select-model-field-line.component.html delete mode 100644 src/app/components/select-model-field-line/select-model-field-line.component.scss delete mode 100644 src/app/components/select-model-field-line/select-model-field-line.component.ts delete mode 100644 src/app/formulaire/elements/select-field-model.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 15ede0e09..6e9d00408 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -82,7 +82,6 @@ import { FixedResultsComponent } from "./components/fixedvar-results/fixed-resul import { VarResultsComponent } from "./components/fixedvar-results/var-results.component"; import { LogEntryComponent } from "./components/log-entry/log-entry.component"; import { ParamLinkComponent } from "./components/param-link/param-link.component"; -import { SelectModelFieldLineComponent } from "./components/select-model-field-line/select-model-field-line.component"; import { PabProfileChartComponent } from "./components/pab-profile-chart/pab-profile-chart.component"; import { PabTableComponent } from "./components/pab-table/pab-table.component"; import { VariableResultsSelectorComponent } from "./components/variable-results-selector/variable-results-selector.component"; @@ -231,7 +230,6 @@ const appRoutes: Routes = [ SectionCanvasComponent, SectionResultsComponent, SelectFieldLineComponent, - SelectModelFieldLineComponent, SessionPropertiesComponent, VarResultsComponent ], diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.html b/src/app/components/select-model-field-line/select-model-field-line.component.html deleted file mode 100644 index e85ced8af..000000000 --- a/src/app/components/select-model-field-line/select-model-field-line.component.html +++ /dev/null @@ -1,24 +0,0 @@ -<div class="container" fxLayout="row wrap" fxLayoutAlign="space-between start"> - - <!-- input de saisie de la valeur --> - <div fxFlex="1 0 120px"> - - <mat-form-field> - <mat-select [id]="selectId" [name]="selectId" [placeholder]="label" [(value)]="selectedValue" required> - <mat-option *ngFor="let e of entries" [value]="e" [title]="selectItemLabel(e)"> - {{ selectItemLabel(e) }} - </mat-option> - </mat-select> - </mat-form-field> - </div> - - <div class="button-container" fxFlex="0 0 auto"> - <button type="button" mat-icon-button *ngIf="selectedValue" [routerLink]="['/calculator/', modelUid]"> - <mat-icon>edit</mat-icon> - </button> - <button type="button" mat-icon-button *ngIf="entries.length === 0" (click)="createModel()" id="create-model"> - <mat-icon>add</mat-icon> - </button> - </div> - -</div> \ No newline at end of file diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.scss b/src/app/components/select-model-field-line/select-model-field-line.component.scss deleted file mode 100644 index a7a72dfa5..000000000 --- a/src/app/components/select-model-field-line/select-model-field-line.component.scss +++ /dev/null @@ -1,12 +0,0 @@ -mat-form-field { - width: calc(100% - 8px); - margin-right: 8px; -} - -.button-container { - text-align: right; - - button { - margin-top: 4px; - } -} diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.ts b/src/app/components/select-model-field-line/select-model-field-line.component.ts deleted file mode 100644 index 31082006e..000000000 --- a/src/app/components/select-model-field-line/select-model-field-line.component.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Component, Input, OnInit } from "@angular/core"; -import { Router } from "@angular/router"; - -import { SelectEntry } from "../../formulaire/elements/select-entry"; -import { FormulaireService } from "../../services/formulaire.service"; -import { FieldsetContainer } from "../../formulaire/elements/fieldset-container"; -import { SelectFieldModel } from "../../formulaire/elements/select-field-model"; - -@Component({ - selector: "select-model-field-line", - templateUrl: "./select-model-field-line.component.html", - styleUrls: [ - "./select-model-field-line.component.scss" - ] -}) -export class SelectModelFieldLineComponent implements OnInit { - @Input() - private _select: SelectFieldModel; - - public constructor( - private _formService: FormulaireService, - private router: Router - ) {} - - public get selectId() { - return this._select.id; - } - - public get entries(): SelectEntry[] { - if (! this._select) { - return []; - } - return this._select.entries; - } - - public get modelUid() { - return this.selectedValue && ! Array.isArray(this.selectedValue) ? this.selectedValue.id : ""; - } - - public get isValid(): boolean { - return (this._select.getValue() !== undefined); - } - - // called every time we navigate to the module - ngOnInit(): void { - this._select.updateEntries(); - } - - /** - * Label d'une entrée du select des modèles de cloisons - */ - public selectItemLabel(entry: SelectEntry): string { - if (entry && entry.id) { - const cloisonsForm = this._formService.getFormulaireFromNubId(entry.id); - const name = cloisonsForm.calculatorName; - return name; - } - } - - public get selectedValue(): SelectEntry | SelectEntry[] { - return this._select.getValue(); - } - - public set selectedValue(v: SelectEntry | SelectEntry[]) { - this._select.setValue(v); - } - - public get label() { - if (this._select) { - return this._select.label; - } else { - return ""; - } - } - - /** - * Creates a new Nub of type _select.calcType, to be used as a model - * when no other is available - */ - public createModel() { - this._formService.createFormulaire(this._select.calcType).then(f => { - this.router.navigate(["/calculator", f.uid]); - return f; - }).then(f => { - // on ajoute un ouvrage aux modulex de type "parallèle" - for (const e of f.allFormElements) { - if (e instanceof FieldsetContainer) { - e.addFromTemplate(0); - break; - } - } - }); - } -} diff --git a/src/app/formulaire/elements/select-field-model.ts b/src/app/formulaire/elements/select-field-model.ts deleted file mode 100644 index 322ae965d..000000000 --- a/src/app/formulaire/elements/select-field-model.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { SelectField } from "./select-field"; -import { SelectEntry } from "./select-entry"; -import { FormulaireNode } from "./formulaire-node"; -import { CalculatorType } from "jalhyd"; - -/** - * A select field that populates itself with references to - * available modules - */ -export abstract class SelectFieldModel extends SelectField { - - /** type of the targetted models; used by enclosing component to create new model */ - public calcType: CalculatorType; - - constructor(parent: FormulaireNode, calcType: CalculatorType) { - super(parent); - this.calcType = calcType; - this.initSelectedValue(); - } - - protected abstract initSelectedValue(); - - /** - * Populates entries with available models - */ - protected abstract populate(); - - /** - * Reloads available entries, trying to keep the current selected - * value; does not notify observers if value did not change - */ - public updateEntries() { - // store previous selected entry - const pse = this._selectedEntry; - // empty - this.clearEntries(); - // populate - this.populate(); - // keep previously selected entry if possible - if (pse && ! Array.isArray(pse) && pse.id) { // @TODO manage multiple values - this.setValueFromId(pse.id); - } - // if no entry is available anymore, unset value - if (this.entries.length === 0) { - super.setValue(undefined); - } - } - - /** - * Updates selectedValue; notifies observers only if - * value.id has changed - */ - public setValue(v: SelectEntry | SelectEntry[]) { - const previousSelectedEntry = this._selectedEntry; - this._selectedEntry = v; - if ( - ! previousSelectedEntry - || ( // @TODO manage multiple values - ! Array.isArray(previousSelectedEntry) - && previousSelectedEntry.id !== (v as SelectEntry).id - ) - ) { - this.notifyObservers({ - "action": "select", - "value": v - }, this); - } - } - - /** - * Sets value from given ID; if it was not found, sets the - * first available entry as selectedValue - */ - public setValueFromId(id: string) { - let found = false; - for (const e of this._entries) { - if (e.id === id) { - found = true; - this.setValue(e); - } - } - if (! found) { - // default to first available entry if any - if (this._entries.length > 0) { - this.setValue(this._entries[0]); - } else { - // notify observers that no value is selected anymore - this.notifyObservers({ - "action": "select", - "value": undefined - }, this); - } - } - } -} -- GitLab From ae13ededfda26d80c2a8bb61468e9e0d31928ae9 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 16 Apr 2020 13:22:16 +0200 Subject: [PATCH 011/101] Work on GUI for Verificateur --- src/app/calculators/verificateur/config.json | 1 - .../generic-select.component.html | 6 +++- .../results-chart/chart-type.component.ts | 4 +++ .../select-field-line.component.ts | 14 ++++++++ .../elements/select-field-reference.ts | 32 +++++++++++++++---- src/app/formulaire/elements/select-field.ts | 8 ++++- src/app/util.ts | 22 +++++++++++++ src/locale/messages.en.json | 2 ++ src/locale/messages.fr.json | 2 ++ 9 files changed, 81 insertions(+), 10 deletions(-) diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json index 204203e1f..5b03751ed 100644 --- a/src/app/calculators/verificateur/config.json +++ b/src/app/calculators/verificateur/config.json @@ -24,7 +24,6 @@ { "type": "select", "id": "select_species_list", - "default": "SPECIES_1", "source": "verificateur_species", "multiple": true } diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index dd35d4673..4d420c820 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -3,13 +3,17 @@ <mat-select-trigger *ngIf="isMultiple"> {{ selectedValue && selectedValue[0] ? selectedValue[0].label : '' }} <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> - (+ {{selectedValue.length - 1}} {{selectedValue?.length === 2 ? 'other' : 'others'}}) + (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) </span> </mat-select-trigger> <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> {{ entryLabel(e) }} </mat-option> </mat-select> + <button mat-button *ngIf="showClearButton" matSuffix mat-icon-button + aria-label="Clear" (click)="selectedValue=[]; $event.stopPropagation()"> + <mat-icon>close</mat-icon> + </button> <div *ngIf="enableHelpButton" class="overlap-select"> <mat-icon id="help-select" (click)="openHelp($event)" [title]="uitextOpenHelp" color="accent"> help diff --git a/src/app/components/results-chart/chart-type.component.ts b/src/app/components/results-chart/chart-type.component.ts index b136874f6..7b24c7098 100644 --- a/src/app/components/results-chart/chart-type.component.ts +++ b/src/app/components/results-chart/chart-type.component.ts @@ -57,6 +57,10 @@ export class ChartTypeSelectComponent implements IObservable { return false; } + public get showClearButton(): boolean { + return false; + } + public get label() { return this.intlService.localizeText("INFO_PARAMFIELD_CHART_TYPE"); } diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index b660c875c..f2c43341d 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -97,13 +97,27 @@ export class SelectFieldLineComponent implements OnInit { return false; } + public get showClearButton(): boolean { + return this.isMultiple && this.selectedValue && ! (Array.isArray(this.selectedValue) && this.selectedValue.length === 0); + } + public get uitextOpenHelp() { return this.i18nService.localizeText("INFO_CALCULATOR_OPEN_HELP"); } + public get uitextAndOther() { + return this.i18nService.localizeText("INFO_SELECT_MULTIPLE_AND_OTHER"); + } + + public get uitextAndOthers() { + return this.i18nService.localizeText("INFO_SELECT_MULTIPLE_AND_OTHERS"); + } + // called every time we navigate to the module ngOnInit(): void { + console.log("> ngOnInit()", this.selectId); if (this._select instanceof SelectFieldReference) { + console.log(">> updateEntries() !", this.selectId); this._select.updateEntries(); } } diff --git a/src/app/formulaire/elements/select-field-reference.ts b/src/app/formulaire/elements/select-field-reference.ts index 924d1a869..c4024feea 100644 --- a/src/app/formulaire/elements/select-field-reference.ts +++ b/src/app/formulaire/elements/select-field-reference.ts @@ -2,6 +2,8 @@ import { SelectField } from "./select-field"; import { SelectEntry } from "./select-entry"; import { FormulaireNode } from "./formulaire-node"; +import { arraysAreEqual } from "../../util"; + /** * A select field that populates itself with references to * available objects (for ex. Nub or ParamDefinition) @@ -46,7 +48,7 @@ export abstract class SelectFieldReference extends SelectField { // if no entry is available anymore, unset value if (this.entries.length === 0) { if (this.multiple) { - super.setValue([ undefined ]); + super.setValue([]); } else { super.setValue(undefined); } @@ -64,16 +66,24 @@ export abstract class SelectFieldReference extends SelectField { * Updates selectedValue; notifies observers only if * value.id has changed */ - public setValue(v: SelectEntry) { + public setValue(v: SelectEntry | SelectEntry[]) { const previousSelectedEntry = this._selectedEntry; this._selectedEntry = v; - if ( + // if value changed + let valueChanged = ( ! previousSelectedEntry - || ( // @TODO manage multiple values + || ( ! Array.isArray(previousSelectedEntry) + && ! Array.isArray(v) && previousSelectedEntry.id !== v.id ) - ) { + || ( + Array.isArray(previousSelectedEntry) + && Array.isArray(v) + && arraysAreEqual(previousSelectedEntry, v, "id", true) + ) + ); + if (valueChanged) { this.notifySelectValueChanged(); } } @@ -94,7 +104,11 @@ export abstract class SelectFieldReference extends SelectField { for (const e of this._entries) { if (e.id === id) { found = true; - this.setValue(e); + if (this._multiple) { + this.setValue([ e ]); + } else { + this.setValue(e); + } } } if (! found) { @@ -105,7 +119,11 @@ export abstract class SelectFieldReference extends SelectField { protected setDefaultValue() { // default to first available entry if any if (this._entries.length > 0) { - this.setValue(this._entries[0]); + if (this._multiple) { + this.setValue([ this._entries[0] ]); + } else { + this.setValue(this._entries[0]); + } } else { // notify observers that no value is selected anymore this.notifySelectValueChanged(); diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 5fdf96889..4818e5709 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -67,7 +67,11 @@ export class SelectField extends Field { public addEntry(e: SelectEntry) { this._entries.push(e); if (! this._selectedEntry) { - this.setValue(e); + if (this._multiple) { + this.setValue([ e ]); + } else { + this.setValue(e); + } } } @@ -207,9 +211,11 @@ export class SelectField extends Field { } break; + // possible values depend on Session case "verificateur_species": // add UIDs of all Espece type Nubs in the session const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); + console.log("especeNubs", especeNubs); for (const en of especeNubs) { this.addEntry(new SelectEntry(en.uid, en.uid, "Espèce personnalisée : " + en.uid)); } diff --git a/src/app/util.ts b/src/app/util.ts index 6f5719bc5..cfc9ca3af 100644 --- a/src/app/util.ts +++ b/src/app/util.ts @@ -161,3 +161,25 @@ export function generateValuesCombination( return formula(nub, vals); } } + +export function arraysAreEqual(arrayA: any[], arrayB: any[], property?: string, sort = false): boolean { + if (sort) { + arrayA.sort((a, b) => a-b); + arrayB.sort((a, b) => a-b); + } + let equal = true; + if (arrayA.length === arrayB.length) { + for (let i=0; i < arrayA.length; i++) { + const eA = arrayA[i]; + const eB = arrayB[i]; + if (property === undefined) { + equal = equal && (eA === eB); + } else { + equal = equal && (eA[property] === eB[property]); + } + } + } else { + equal = false; + } + return equal; +} diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index ade6d6943..fb4e4605e 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -472,6 +472,8 @@ "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Export as XLSX", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Param. section", "INFO_SECTIONPARAMETREE_TITRE": "Parametric section", + "INFO_SELECT_MULTIPLE_AND_OTHER": "other", + "INFO_SELECT_MULTIPLE_AND_OTHERS": "others", "INFO_SETUP_ENABLE_HOTKEYS": "Enable keyboard shortcuts", "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Create new calculators with empty fields (no default values)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Enable on-screen notifications", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 021a098f1..da9489786 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -473,6 +473,8 @@ "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Exporter en XLSX", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Sec. param.", "INFO_SECTIONPARAMETREE_TITRE": "Section paramétrée", + "INFO_SELECT_MULTIPLE_AND_OTHER": "autre", + "INFO_SELECT_MULTIPLE_AND_OTHERS": "autres", "INFO_SETUP_ENABLE_HOTKEYS": "Activer les raccourcis clavier", "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Créer les nouveaux modules avec des champs vides (aucune valeur par défaut)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Activer les notifications à l'écran", -- GitLab From 5e2bd1c00f97e9747b22f4179820f4814cd6a715 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 20 Apr 2020 15:20:07 +0200 Subject: [PATCH 012/101] Reorganize Select classes, update Verificateur GUI --- DEVELOPERS.md | 4 +- e2e/check-translations.e2e-spec.ts | 6 +- src/app/calculators/solveur/config.json | 6 +- src/app/calculators/verificateur/config.json | 6 +- .../select-field-line.component.ts | 6 +- src/app/formulaire/definition/form-solveur.ts | 17 +- .../definition/form-verificateur.ts | 56 ++--- src/app/formulaire/elements/fieldset.ts | 31 +-- .../elements/select-field-custom.ts | 216 ++++++++++++++++++ .../formulaire/elements/select-field-nub.ts | 76 ------ .../elements/select-field-parameter.ts | 50 ---- .../elements/select-field-reference.ts | 132 ----------- src/app/formulaire/elements/select-field.ts | 60 +++-- src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 15 files changed, 299 insertions(+), 369 deletions(-) create mode 100644 src/app/formulaire/elements/select-field-custom.ts delete mode 100644 src/app/formulaire/elements/select-field-nub.ts delete mode 100644 src/app/formulaire/elements/select-field-parameter.ts delete mode 100644 src/app/formulaire/elements/select-field-reference.ts diff --git a/DEVELOPERS.md b/DEVELOPERS.md index d5d7cb3a7..207e7687e 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -270,7 +270,7 @@ case CalculatorType.MacroRugoCompound: Les listes déroulantes sont toujours associées à des **propriétés** du Nub. -En général les valeurs autorisées sont tirées de l'**enum** correspondant, d'après le tableau `Session.enumFromProperty` de JaLHyd. Pour les autres cas, voir "si la liste n'est pas associée à un enum" ci-dessous. +En général les valeurs autorisées sont tirées de l'**enum** correspondant, d'après le tableau `Session.enumFromProperty` de JaLHyd. Pour les autres cas, voir les paragraphes "si la liste est associée à …" ci-dessous. #### configuration @@ -309,7 +309,7 @@ Dans le fichier de configuration du module, ajouter la définition des listes d Une liste déroulante peut être associée à une **source**, qui détermine quels sont les choix possibles. -Pour ajouter une source, modifier la méthode `parseConfig()` de la classe `SelectField`, dans le fichier `src/app/formulaire/elements/select-field.ts`. +Pour ajouter une source, modifier la méthode `loadEntriesFromSource()` de la classe `SelectField`, dans le fichier `src/app/formulaire/elements/select-field.ts`. Exemple pour la source "remous_target" associée à la propriété "varCalc", dans le module CourbeRemous : diff --git a/e2e/check-translations.e2e-spec.ts b/e2e/check-translations.e2e-spec.ts index ddcd763d3..e74d7f210 100644 --- a/e2e/check-translations.e2e-spec.ts +++ b/e2e/check-translations.e2e-spec.ts @@ -77,11 +77,7 @@ describe("ngHyd − check translation of all calculators", () => { } // check absence of "*** message not found" in whole DOM - const ps = await browser.getPageSource(); - expect(ps).not.toContain("*** message not found"); - /* const pos = ps.indexOf("*** message not found"); - const bout = ps.substring(pos - 50, pos + 50); - console.log("------------ BOUT ---------------", bout); */ + expect(await browser.getPageSource()).not.toContain("*** message not found", "missing translations found"); // empty session await navBar.clickMenuButton(); diff --git a/src/app/calculators/solveur/config.json b/src/app/calculators/solveur/config.json index fa1da444f..03262ac7d 100644 --- a/src/app/calculators/solveur/config.json +++ b/src/app/calculators/solveur/config.json @@ -5,8 +5,7 @@ "fields": [ { "id": "select_target_nub", - "type": "select_reference", - "reference": "nub", + "type": "select_custom", "source": "solveur_target" }, { @@ -25,8 +24,7 @@ "fields": [ { "id": "select_searched_param", - "type": "select_reference", - "reference": "parameter", + "type": "select_custom", "source": "solveur_searched" }, "Xinit" diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json index 5b03751ed..8ec8d41ca 100644 --- a/src/app/calculators/verificateur/config.json +++ b/src/app/calculators/verificateur/config.json @@ -5,8 +5,7 @@ "fields": [ { "id": "select_target_pass", - "type": "select_reference", - "reference": "nub", + "type": "select_custom", "source": "verificateur_target" }, { @@ -24,6 +23,7 @@ { "type": "select", "id": "select_species_list", + "property": "speciesList", "source": "verificateur_species", "multiple": true } @@ -31,7 +31,7 @@ }, { "type": "options", - "selectIds": [ "select_pab_jet_type" ], + "selectIds": [ "select_pab_jet_type", "select_species_list" ], "targetPassSelectId": "select_target_pass", "speciesListSelectId": "select_species_list", "help": "verification/verificateur.html" diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index f2c43341d..c432c19e7 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -3,8 +3,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { SelectField } from "../../formulaire/elements/select-field"; import { SelectEntry } from "../../formulaire/elements/select-entry"; import { I18nService } from "../../services/internationalisation.service"; -import { SelectFieldReference } from "../../formulaire/elements/select-field-reference"; import { ApplicationSetupService } from "../../services/app-setup.service"; +import { SelectFieldCustom } from "../../formulaire/elements/select-field-custom"; @Component({ selector: "select-field-line", @@ -115,9 +115,7 @@ export class SelectFieldLineComponent implements OnInit { // called every time we navigate to the module ngOnInit(): void { - console.log("> ngOnInit()", this.selectId); - if (this._select instanceof SelectFieldReference) { - console.log(">> updateEntries() !", this.selectId); + if (this._select instanceof SelectFieldCustom) { this._select.updateEntries(); } } diff --git a/src/app/formulaire/definition/form-solveur.ts b/src/app/formulaire/definition/form-solveur.ts index b6987a5d5..fad442e85 100644 --- a/src/app/formulaire/definition/form-solveur.ts +++ b/src/app/formulaire/definition/form-solveur.ts @@ -1,7 +1,6 @@ import { IObservable, ParamDefinition, Nub } from "jalhyd"; -import { SelectFieldNub } from "../elements/select-field-nub"; -import { SelectFieldParameter } from "../elements/select-field-parameter"; +import { SelectFieldCustom } from "../elements/select-field-custom"; import { NgParameter } from "../elements/ngparam"; import { FormulaireFixedVar } from "./form-fixedvar"; import { SelectField } from "../elements/select-field"; @@ -36,7 +35,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { sel.addObserver(this); if (firstNotif) { // force 1st observation - (sel as SelectFieldNub).notifySelectValueChanged(); + (sel as SelectFieldCustom).notifyValueChanged(); } } } @@ -56,7 +55,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { sel.addObserver(this); if (firstNotif) { // force 1st observation - (sel as SelectFieldNub).notifySelectValueChanged(); + (sel as SelectFieldCustom).notifyValueChanged(); } } } @@ -80,8 +79,8 @@ export class FormulaireSolveur extends FormulaireFixedVar { this.reset(); } - if (sender instanceof SelectFieldNub) { - if (data.action === "select") { + if (sender instanceof SelectFieldCustom) { + if (sender.id === "select_target_nub" && data.action === "select") { // update Solveur property: Nub to calculate try { // if searchedParam is set to a value that won't be available anymore @@ -98,9 +97,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { } // refresh parameters selector this.refreshParameterEntries(); - } - } else if (sender instanceof SelectFieldParameter) { - if (data.action === "select") { + } else if (sender.id === "select_searched_param" && data.action === "select") { // update Solveur property: searched Parameter try { const p: ParamDefinition = data.value.value; @@ -125,7 +122,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { * Re-populate searched parameter selector with fresh entries */ private refreshParameterEntries() { - const pSel = this.getFormulaireNodeById(this._searchedParamSelectId) as SelectFieldParameter; + const pSel = this.getFormulaireNodeById(this._searchedParamSelectId) as SelectFieldCustom; if (pSel) { pSel.updateEntries(); // reflect changes in GUI diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 50560319a..b72538822 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -1,7 +1,8 @@ -import { IObservable, Nub } from "jalhyd"; +import { IObservable, Nub, Verificateur } from "jalhyd"; -import { SelectFieldNub } from "../elements/select-field-nub"; +import { SelectFieldCustom } from "../elements/select-field-custom"; import { FormulaireFixedVar } from "./form-fixedvar"; +import { SelectField } from '../elements/select-field'; /** * Formulaire pour les Vérificateurs @@ -16,7 +17,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { protected parseOptions(json: {}) { super.parseOptions(json); - this._targetPassSelectId = this.getOption(json, "targetPassSelectI"); + this._targetPassSelectId = this.getOption(json, "targetPassSelectId"); this._speciesListSelectId = this.getOption(json, "speciesListSelectId"); } @@ -28,21 +29,10 @@ export class FormulaireVerificateur extends FormulaireFixedVar { sel.addObserver(this); if (firstNotif) { // force 1st observation - (sel as SelectFieldNub).notifySelectValueChanged(); + (sel as SelectFieldCustom).notifyValueChanged(); } } } - if (this._speciesListSelectId) { - const sel = this.getFormulaireNodeById(this._speciesListSelectId); - /* if (sel) { - sel.addObserver(this); - if (firstNotif) { - // force 1st observation - (sel as SelectFieldNub).notifySelectValueChanged(); - } - } */ - } - } // interface Observer @@ -62,30 +52,30 @@ export class FormulaireVerificateur extends FormulaireFixedVar { this.reset(); } - if (sender instanceof SelectFieldNub) { + console.log("> update", data, sender.constructor.name); + + if (sender instanceof SelectFieldCustom) { if (data.action === "select") { // update Verificateur property: Pass to check - this._currentNub.properties.setPropValue("nubToVerify", data.value.value); + let v = undefined; + if (data && data.value && data.value.value) { + v = data.value.value; + } + this._currentNub.properties.setPropValue("nubToVerify", data.value); // @TODO refresh jet type selector } - }/* else if (sender instanceof SelectField) { - if (sender.id === "select_target_result") { - // refresh parameters selector - this.refreshParameterEntries(); - } - } */ + } } - /** - * Re-populate searched parameter selector with fresh entries - */ - /* private refreshParameterEntries() { - const pSel = this.getFormulaireNodeById(this._speciesListSelectId) as SelectFieldParameter; + public onCalculatorInit() { + // refresh species list selector on each display, because Session might have gained new Espece nubs + console.log(">>>> speciesList avant rafraîchissement :", (this.currentNub as Verificateur).speciesList); + const pSel = this.getFormulaireNodeById(this._speciesListSelectId) as SelectField; if (pSel) { - pSel.updateEntries(); - // reflect changes in GUI - const inputYtarget = this.getFormulaireNodeById("Ytarget") as NgParameter; - inputYtarget.notifyValueModified(this); + /* pSel.clearEntries(); + pSel.parseConfig(); */ + // (pSel.parent as FieldSet).updateFields() } - } */ + } + } diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 3e3b2714d..13ee41a8d 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -13,8 +13,7 @@ import { SelectField } from "./select-field"; import { NgParameter, ParamRadioConfig } from "./ngparam"; import { StringMap } from "../../stringmap"; import { FieldsetContainer } from "./fieldset-container"; -import { SelectFieldNub } from "./select-field-nub"; -import { SelectFieldParameter } from "./select-field-parameter"; +import { SelectFieldCustom } from "./select-field-custom"; import { FormulaireFixedVar } from "../definition/form-fixedvar"; import { SelectEntry } from './select-entry'; @@ -84,23 +83,12 @@ export class FieldSet extends FormulaireElement implements Observer { return res; } - private parse_select_reference(json: {}): SelectField { - const refType = json["reference"]; + private parse_select_custom(json: {}): SelectField { const source = json["source"]; - let res: SelectField; if (source === undefined || source === "") { - throw new Error(`Fieldset.parse_select_reference(): "source" must not be empty`); - } - switch (refType) { - case "nub": // @TODO upstreamNub / downstreamNub ? - res = new SelectFieldNub(this, source); - break; - case "parameter": - res = new SelectFieldParameter(this, source); - break; - default: - throw new Error(`Fieldset.parse_select_reference(): unknown reference type ${refType}`); + throw new Error(`Fieldset.parse_select_custom(): "source" must not be empty`); } + const res: SelectField = new SelectFieldCustom(this); res.parseConfig(json); res.addObserver(this); return res; @@ -198,8 +186,8 @@ export class FieldSet extends FormulaireElement implements Observer { this.addField(param); break; - case "select_reference": - param = this.parse_select_reference(field); + case "select_custom": + param = this.parse_select_custom(field); this.addField(param); break; @@ -391,7 +379,12 @@ export class FieldSet extends FormulaireElement implements Observer { const fe = this.parentForm.getFieldById(sId); if (fe && data.value !== undefined) { const prop = (fe as SelectField).associatedProperty; - this.setPropValue(prop, data.value.value); + // for multiple select + if (Array.isArray(data.value)) { + this.setPropValue(prop, data.value.map((v: any) => v.value)); + } else { + this.setPropValue(prop, data.value.value); + } } } } diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts new file mode 100644 index 000000000..6c57eba10 --- /dev/null +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -0,0 +1,216 @@ +import { SelectEntry } from "./select-entry"; +import { ServiceFactory } from "../../services/service-factory"; +import { decodeHtml, arraysAreEqual } from "../../util"; + +import { Session, Solveur, FishPass, CalculatorType, Verificateur, Nub } from "jalhyd"; +import { SelectField } from './select-field'; + +/** + * A select field that populates itself with custom stuff (ex: references to Nubs, Parameters…) + */ +export class SelectFieldCustom extends SelectField { + + /** + * Loads UI with the value held by the model + */ + protected initSelectedValue() { + const nub = this.parentForm.currentNub; + console.log("[X] I S V", nub.constructor.name, this.source); + switch (this.source) { + + case "solveur_target": // Solveur, module cible (à calculer) + const ntc = (nub as Solveur).nubToCalculate; + if (ntc !== undefined) { + this.setValueFromId(this._entriesBaseId + ntc.uid); + } + break; + + case "solveur_searched": // Solveur, paramètre recherché (à faire varier) + const sp = (nub as Solveur).searchedParameter; + if (sp !== undefined) { + this.setValueFromId(this._entriesBaseId + sp.nubUid + "_" + sp.symbol); + } + break; + + case "verificateur_target": // Vérificateur, passe cible (à vérifier) + const ntv = (nub as Verificateur).nubToVerify; + if (ntv !== undefined) { + this.setValueFromId(this._entriesBaseId + ntv.uid); + } + break; + } + } + + /** + * Populates entries with available options + */ + protected populate() { + const fs = ServiceFactory.instance.formulaireService; + let candidateNubs: any[]; + switch (this.source) { + + case "solveur_target": // Solveur, module cible (à calculer) + // find all Nubs having at least one link to another Nub's result + candidateNubs = + Session.getInstance().getDownstreamNubs().concat( + Session.getInstance().getUpstreamNubsHavingExtraResults() + ).filter( + (element, index, self) => self.findIndex((e) => e.uid === element.uid) === index + ); + for (const cn of candidateNubs) { + const nub = fs.getFormulaireFromId(cn.uid); + if (nub) { + const calc = nub.calculatorName; + let label = calc; + // calculated param + if (cn.calculatedParam !== undefined) { + const varName = fs.expandVariableName(cn.calcType, cn.calculatedParam.symbol); + label += ` / ${varName} (${cn.calculatedParam.symbol})`; + } + this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); + } else { + // silent fail, this Solveur nub was probably loaded before all the candidate nubs are done loading + } + } + break; + + case "solveur_searched": // Solveur, paramètre recherché (à faire varier) + // find all non-calculated, non-linked parameters of all Nubs that + // the current "target" Nub depends on (if any) + const solv = this.parentForm.currentNub as Solveur; + const ntc: Nub = solv.nubToCalculate; + const searchableParams = Solveur.getDependingNubsSearchableParams( + ntc, + solv.targettedResult !== undefined && solv.targettedResult !== "" + ); + for (const p of searchableParams) { + if (p.visible) { + const calc = fs.getFormulaireFromId(p.originNub.uid).calculatorName; + const varName = fs.expandVariableName(p.originNub.calcType, p.symbol); + const label = `${p.symbol} - ${varName} (${calc})`; + this.addEntry(new SelectEntry(this._entriesBaseId + p.originNub.uid + "_" + p.symbol, p, decodeHtml(label))); + } + } + break; + + case "verificateur_target": // Vérificateur, passe cible (à vérifier) + // find all Nubs of type FishPass + candidateNubs = Session.getInstance().getAllNubs().filter((element) => { + return ( + (element instanceof FishPass) + && element.calcType !== CalculatorType.Par // ParSimulation extends Par @TODO find something better + ); + }); + for (const cn of candidateNubs) { + const nub = fs.getFormulaireFromId(cn.uid); + if (nub) { + const label = nub.calculatorName + " (" + fs.getLocalisedTitleFromCalculatorType(nub.calculatorType) + ")"; + this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); + } else { + // silent fail, this Verificateur nub was probably loaded before all the candidate nubs are done loading + } + } + break; + + } + } + + protected setDefaultValue() { + // default to first available entry if any + if (this._entries.length > 0) { + if (this._multiple) { + this.setValue([ this._entries[0] ]); + } else { + this.setValue(this._entries[0]); + } + } else { + // notify observers that no value is selected anymore + this.notifyValueChanged(); + } + } + + /** + * Once config is parsed, init original value from model + * (needs config, for this._entriesBaseId to be set) + */ + protected afterParseConfig() { + this.populate(); + this.initSelectedValue(); + } + + /** + * Reloads available entries, trying to keep the current selected + * value; does not notify observers if value did not change + */ + public updateEntries() { + // store previous selected entry + const pse = this._selectedEntry; + // empty + this.clearEntries(); + // populate + this.populate(); + // if no entry is available anymore, unset value + if (this.entries.length === 0) { + if (this.multiple) { + super.setValue([]); + } else { + super.setValue(undefined); + } + } else { + // keep previously selected entry if possible @TODO manage multiple values + if (pse && ! Array.isArray(pse) && pse.id) { + this.setValueFromId(pse.id); + } else { + this.setDefaultValue(); + } + } + } + + /** + * Updates selectedValue; notifies observers only if + * value.id has changed + */ + public setValue(v: SelectEntry | SelectEntry[]) { + const previousSelectedEntry = this._selectedEntry; + this._selectedEntry = v; + // if value changed + let valueChanged = ( + ! previousSelectedEntry + || ( + ! Array.isArray(previousSelectedEntry) + && ! Array.isArray(v) + && previousSelectedEntry.id !== v.id + ) + || ( + Array.isArray(previousSelectedEntry) + && Array.isArray(v) + && arraysAreEqual(previousSelectedEntry, v, "id", true) + ) + ); + if (valueChanged) { + this.notifyValueChanged(); + } + } + + /** + * Sets value from given ID; if it was not found, sets the + * first available entry as selectedValue + */ + public setValueFromId(id: string) { + let found = false; + for (const e of this._entries) { + if (e.id === id) { + found = true; + if (this._multiple) { + this.setValue([ e ]); + } else { + this.setValue(e); + } + } + } + if (! found) { + this.setDefaultValue(); + } + } + +} diff --git a/src/app/formulaire/elements/select-field-nub.ts b/src/app/formulaire/elements/select-field-nub.ts deleted file mode 100644 index 9942f160f..000000000 --- a/src/app/formulaire/elements/select-field-nub.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { SelectFieldReference } from "./select-field-reference"; -import { SelectEntry } from "./select-entry"; -import { ServiceFactory } from "../../services/service-factory"; -import { decodeHtml } from "../../util"; - -import { Session, Solveur, FishPass, CalculatorType } from "jalhyd"; - -/** - * A select field that populates itself with references to Nubs - */ -export class SelectFieldNub extends SelectFieldReference { - - protected initSelectedValue() { - const nub = this.parentForm.currentNub; - if (nub instanceof Solveur) { - const ntc = nub.nubToCalculate; - if (ntc !== undefined) { - this.setValueFromId(this._entriesBaseId + ntc.uid); - } - } - } - - /** - * Populates entries with available references - */ - protected populate() { - const fs = ServiceFactory.instance.formulaireService; - let candidateNubs: any[]; - switch (this._source) { - case "solveur_target": // Solveur, module cible (à calculer) - // find all Nubs having at least one link to another Nub's result - candidateNubs = - Session.getInstance().getDownstreamNubs().concat( - Session.getInstance().getUpstreamNubsHavingExtraResults() - ).filter( - (element, index, self) => self.findIndex((e) => e.uid === element.uid) === index - ); - for (const cn of candidateNubs) { - const nub = fs.getFormulaireFromId(cn.uid); - if (nub) { - const calc = nub.calculatorName; - let label = calc; - // calculated param - if (cn.calculatedParam !== undefined) { - const varName = fs.expandVariableName(cn.calcType, cn.calculatedParam.symbol); - label += ` / ${varName} (${cn.calculatedParam.symbol})`; - } - this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); - } else { - // silent fail, this Solveur nub was probably loaded before all the candidate nubs are done loading - } - } - break; - - case "verificateur_target": // Vérificateur, passe cible (à vérifier) - // find all Nubs of type FishPass - candidateNubs = Session.getInstance().getAllNubs().filter((element) => { - return ( - (element instanceof FishPass) - && element.calcType !== CalculatorType.Par // ParSimulation extends Par @TODO find something better - ); - }); - for (const cn of candidateNubs) { - const nub = fs.getFormulaireFromId(cn.uid); - if (nub) { - const label = nub.calculatorName + " (" + fs.getLocalisedTitleFromCalculatorType(nub.calculatorType) + ")"; - this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); - } else { - // silent fail, this Verificateur nub was probably loaded before all the candidate nubs are done loading - } - } - break; - } - } - -} diff --git a/src/app/formulaire/elements/select-field-parameter.ts b/src/app/formulaire/elements/select-field-parameter.ts deleted file mode 100644 index c5a9d7291..000000000 --- a/src/app/formulaire/elements/select-field-parameter.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { SelectFieldReference } from "./select-field-reference"; -import { SelectEntry } from "./select-entry"; -import { decodeHtml } from "../../util"; -import { ServiceFactory } from "../../services/service-factory"; - -import { Nub, Solveur } from "jalhyd"; - -/** - * A select field that populates itself with references to ParamDefinitions - */ -export class SelectFieldParameter extends SelectFieldReference { - - protected initSelectedValue() { - const nub = this.parentForm.currentNub; - if (nub instanceof Solveur) { - const sp = nub.searchedParameter; - if (sp !== undefined) { - this.setValueFromId(this._entriesBaseId + sp.nubUid + "_" + sp.symbol); - } - } - } - - /** - * Populates entries with available references - */ - protected populate() { - switch (this._source) { - case "solveur_searched": // Solveur, paramètre recherché (à faire varier) - // find all non-calculated, non-linked parameters of all Nubs that - // the current "target" Nub depends on (if any) - const fs = ServiceFactory.instance.formulaireService; - const solv = this.parentForm.currentNub as Solveur; - const ntc: Nub = solv.nubToCalculate; - const searchableParams = Solveur.getDependingNubsSearchableParams( - ntc, - solv.targettedResult !== undefined && solv.targettedResult !== "" - ); - for (const p of searchableParams) { - if (p.visible) { - const calc = fs.getFormulaireFromId(p.originNub.uid).calculatorName; - const varName = fs.expandVariableName(p.originNub.calcType, p.symbol); - const label = `${p.symbol} - ${varName} (${calc})`; - this.addEntry(new SelectEntry(this._entriesBaseId + p.originNub.uid + "_" + p.symbol, p, decodeHtml(label))); - } - } - break; - } - } - -} diff --git a/src/app/formulaire/elements/select-field-reference.ts b/src/app/formulaire/elements/select-field-reference.ts deleted file mode 100644 index c4024feea..000000000 --- a/src/app/formulaire/elements/select-field-reference.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { SelectField } from "./select-field"; -import { SelectEntry } from "./select-entry"; -import { FormulaireNode } from "./formulaire-node"; - -import { arraysAreEqual } from "../../util"; - -/** - * A select field that populates itself with references to - * available objects (for ex. Nub or ParamDefinition) - */ -export abstract class SelectFieldReference extends SelectField { - - /** source identifier for populate() method */ - protected _source: string; - - constructor(parent: FormulaireNode, source: string) { - super(parent); - this._source = source; - } - - protected abstract initSelectedValue(); - - /** - * Populates entries with available references - */ - protected abstract populate(); - - /** - * Once config is parsed, init original value from model - * (needs config, for this._entriesBaseId to be set) - */ - protected afterParseConfig() { - this.populate(); - this.initSelectedValue(); - } - - /** - * Reloads available entries, trying to keep the current selected - * value; does not notify observers if value did not change - */ - public updateEntries() { - // store previous selected entry - const pse = this._selectedEntry; - // empty - this.clearEntries(); - // populate - this.populate(); - // if no entry is available anymore, unset value - if (this.entries.length === 0) { - if (this.multiple) { - super.setValue([]); - } else { - super.setValue(undefined); - } - } else { - // keep previously selected entry if possible @TODO manage multiple values - if (pse && ! Array.isArray(pse) && pse.id) { - this.setValueFromId(pse.id); - } else { - this.setDefaultValue(); - } - } - } - - /** - * Updates selectedValue; notifies observers only if - * value.id has changed - */ - public setValue(v: SelectEntry | SelectEntry[]) { - const previousSelectedEntry = this._selectedEntry; - this._selectedEntry = v; - // if value changed - let valueChanged = ( - ! previousSelectedEntry - || ( - ! Array.isArray(previousSelectedEntry) - && ! Array.isArray(v) - && previousSelectedEntry.id !== v.id - ) - || ( - Array.isArray(previousSelectedEntry) - && Array.isArray(v) - && arraysAreEqual(previousSelectedEntry, v, "id", true) - ) - ); - if (valueChanged) { - this.notifySelectValueChanged(); - } - } - - public notifySelectValueChanged() { - this.notifyObservers({ - "action": "select", - "value": this._selectedEntry - }, this); - } - - /** - * Sets value from given ID; if it was not found, sets the - * first available entry as selectedValue - */ - public setValueFromId(id: string) { - let found = false; - for (const e of this._entries) { - if (e.id === id) { - found = true; - if (this._multiple) { - this.setValue([ e ]); - } else { - this.setValue(e); - } - } - } - if (! found) { - this.setDefaultValue(); - } - } - - protected setDefaultValue() { - // default to first available entry if any - if (this._entries.length > 0) { - if (this._multiple) { - this.setValue([ this._entries[0] ]); - } else { - this.setValue(this._entries[0]); - } - } else { - // notify observers that no value is selected anymore - this.notifySelectValueChanged(); - } - } -} diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 4818e5709..4b10ec0b7 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -16,6 +16,7 @@ import { FormulaireNode } from "./formulaire-node"; import { FormulaireDefinition } from "../definition/form-definition"; import { ServiceFactory } from "../../services/service-factory"; import { FishSpecies } from 'jalhyd/build/verification/fish_species'; +import { sprintf } from 'sprintf-js'; export class SelectField extends Field { @@ -35,6 +36,9 @@ export class SelectField extends Field { /** if true, user can select multiple values */ protected _multiple = false; + /** soruce identifier for populating with available values */ + protected source: string; + constructor(parent: FormulaireNode) { super(parent); this.clearEntries(); @@ -75,30 +79,6 @@ export class SelectField extends Field { } } - /** - * Reloads available entries, trying to keep the current selected - * value; should not notify observers if value did not change - */ - public updateEntries() { - // store previous selected entry - const pse = this._selectedEntry; - this._selectedEntry = undefined; - // empty - this.clearEntries(); - // populate - this.populate(); - // keep previously selected entry if possible - if (pse) { - this.setValue(pse); - } - } - - /** - * Empties then refills entries list with available entries; does - * nothing by default (to be overloaded) - */ - protected populate() { } - /** * Triggered at the end of parseConfig() */ @@ -124,6 +104,7 @@ export class SelectField extends Field { } public notifyValueChanged() { + console.log("NOT VAL CHA", this.id, this._selectedEntry) this.notifyObservers({ "action": "select", "value": this._selectedEntry @@ -150,11 +131,20 @@ export class SelectField extends Field { if (field["multiple"] !== undefined) { this._multiple = field["multiple"]; } - const source = field["source"]; + this.source = field["source"]; + this.loadEntriesFromSource(); + + this.afterParseConfig(); + } + + /** + * Adds available entries to the selector, depending on the "source" identifier + */ + protected loadEntriesFromSource() { const nub: Nub = (this.parentForm as FormulaireDefinition).currentNub; // ad-hoc cases - switch (source) { + switch (this.source) { // driven by string[], not enum (easier for variable names) case "remous_target": this.addEntry(new SelectEntry(this._entriesBaseId + "none", "")); @@ -211,13 +201,22 @@ export class SelectField extends Field { } break; - // possible values depend on Session + // possible values depend on Session @TODO does not work, because not refreshed when Session gets new Espece nubs case "verificateur_species": + console.log("[i] loading verif species"); // add UIDs of all Espece type Nubs in the session const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); - console.log("especeNubs", especeNubs); for (const en of especeNubs) { - this.addEntry(new SelectEntry(en.uid, en.uid, "Espèce personnalisée : " + en.uid)); + this.addEntry( + new SelectEntry( + en.uid, + en.uid, + sprintf( + ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), + ServiceFactory.instance.formulaireService.getFormulaireFromNubId(en.uid).calculatorName + ) + ) + ); } // add all FishSpecies for (let j = 0; j < Object.keys(FishSpecies).length / 2; j++) { @@ -236,7 +235,6 @@ export class SelectField extends Field { } } } - - this.afterParseConfig(); } + } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index fb4e4605e..88ab30d87 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -532,6 +532,7 @@ "INFO_YAXB_TITRE_COURT": "Linear f.", "INFO_TRIGO_TITRE": "Trigonometric function", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", + "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", "INFO_VERIFICATEUR_TITRE_COURT": "Verification", "INFO_ESPECE_TITRE": "Fish species characteristics", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index da9489786..97e80ba3f 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -533,6 +533,7 @@ "INFO_YAXB_TITRE_COURT": "F. affine", "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", + "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", "INFO_ESPECE_TITRE": "Caractéristiques d'une espèce", -- GitLab From 737fd67fe015b21194c7badce25f3258b93ef134 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 20 Apr 2020 17:12:40 +0200 Subject: [PATCH 013/101] Fix bug in refreshing fieldsets after compute --- src/app/formulaire/definition/form-definition.ts | 4 ++-- src/app/formulaire/definition/form-fixedvar.ts | 1 + .../definition/form-macrorugo-compound.ts | 15 +++++---------- .../definition/form-parallel-structures.ts | 2 +- src/app/formulaire/definition/form-solveur.ts | 6 +++--- .../formulaire/definition/form-verificateur.ts | 4 ++-- 6 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index d3333d8d6..026ffdba4 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -174,7 +174,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } /** called at the end of parseConfig() */ - protected completeParse(json: {}) { + protected completeParse(firstNotif: boolean = true) { this.helpLinks = this._resultsHelpLinks; } @@ -294,7 +294,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } } - this.completeParse(this._jsonConfig); + this.completeParse(); } public hasParameter(symbol: string): boolean { diff --git a/src/app/formulaire/definition/form-fixedvar.ts b/src/app/formulaire/definition/form-fixedvar.ts index 20314b520..4d553ef88 100644 --- a/src/app/formulaire/definition/form-fixedvar.ts +++ b/src/app/formulaire/definition/form-fixedvar.ts @@ -125,6 +125,7 @@ export class FormulaireFixedVar extends FormulaireDefinition { for (const fs of this.allFieldsets) { fs.updateFields(); } + this.completeParse(false); // re-add observers that were destroyed by updateFields() } // interface Observer diff --git a/src/app/formulaire/definition/form-macrorugo-compound.ts b/src/app/formulaire/definition/form-macrorugo-compound.ts index c94dad30a..2fb689c5b 100644 --- a/src/app/formulaire/definition/form-macrorugo-compound.ts +++ b/src/app/formulaire/definition/form-macrorugo-compound.ts @@ -51,9 +51,11 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset { } } - protected completeParse(json: {}) { - this.subscribeFieldsetContainer(); - this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron")); + protected completeParse(firstNotif: boolean = true) { + this.fieldsetContainer.addObserver(this); + if (firstNotif) { + this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron")); + } this.helpLinks = this._resultsHelpLinks; } @@ -65,13 +67,6 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset { return n as FieldsetContainer; } - /** - * abonnement en tant qu'observateur du FieldsetContainer - */ - private subscribeFieldsetContainer() { - this.fieldsetContainer.addObserver(this); - } - /** * abonnement en tant qu'observateur des NgParameter des FieldSet contenus dans le FieldsetContainer */ diff --git a/src/app/formulaire/definition/form-parallel-structures.ts b/src/app/formulaire/definition/form-parallel-structures.ts index 6e238dd76..6a097c297 100644 --- a/src/app/formulaire/definition/form-parallel-structures.ts +++ b/src/app/formulaire/definition/form-parallel-structures.ts @@ -92,7 +92,7 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset { return newStructure; } - protected completeParse(json: {}) { + protected completeParse(firstNotif: boolean = true) { this.subscribeFieldsetContainer(); this.helpLinks = this._resultsHelpLinks; } diff --git a/src/app/formulaire/definition/form-solveur.ts b/src/app/formulaire/definition/form-solveur.ts index fad442e85..1e2664d9f 100644 --- a/src/app/formulaire/definition/form-solveur.ts +++ b/src/app/formulaire/definition/form-solveur.ts @@ -27,8 +27,8 @@ export class FormulaireSolveur extends FormulaireFixedVar { this._searchedParamSelectId = this.getOption(json, "searchedParamSelectId"); } - protected completeParse(json: {}, firstNotif: boolean = true) { - super.completeParse(json); + protected completeParse(firstNotif: boolean = true) { + super.completeParse(); if (this._targetNubSelectId) { const sel = this.getFormulaireNodeById(this._targetNubSelectId); if (sel) { @@ -93,7 +93,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { if (trSel) { (trSel.parent as FieldSet).updateFields(); // trick to re-set observers - this.completeParse({}, false); + this.completeParse(false); } // refresh parameters selector this.refreshParameterEntries(); diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index b72538822..732a659a5 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -21,8 +21,8 @@ export class FormulaireVerificateur extends FormulaireFixedVar { this._speciesListSelectId = this.getOption(json, "speciesListSelectId"); } - protected completeParse(json: {}, firstNotif: boolean = true) { - super.completeParse(json); + protected completeParse(firstNotif: boolean = true) { + super.completeParse(); if (this._targetPassSelectId) { const sel = this.getFormulaireNodeById(this._targetPassSelectId); if (sel) { -- GitLab From 13c4c7c60312ccdf19c73a38f2abc02bdc24cdc8 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 20 Apr 2020 17:42:51 +0200 Subject: [PATCH 014/101] Add e2e test for Solveur selectors interdependence --- e2e/solveur.e2e-spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e/solveur.e2e-spec.ts b/e2e/solveur.e2e-spec.ts index 93adaae77..90d60c1d0 100644 --- a/e2e/solveur.e2e-spec.ts +++ b/e2e/solveur.e2e-spec.ts @@ -52,6 +52,10 @@ describe("Solveur - ", () => { const ntc = calcPage.getSelectById("select_target_nub"); const ntcV = await calcPage.getSelectValueText(ntc); expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); + // check targetted result + const ntt = calcPage.getSelectById("select_target_result"); + const nttV = await calcPage.getSelectValueText(ntt); + expect(nttV).toContain("Puissance dissipée (PV)"); // check searched Parameter const sp = calcPage.getSelectById("select_searched_param"); const spV = await calcPage.getSelectValueText(sp); @@ -66,6 +70,11 @@ describe("Solveur - ", () => { // check that result is not empty const hasResults = await calcPage.hasResults(); expect(hasResults).toBe(true); + + // change targetted Nub, check that targetted result changes too + await calcPage.changeSelectValue(ntc, 0); + const nttV2 = await calcPage.getSelectValueText(ntt); + expect(nttV2).not.toContain("Puissance dissipée (PV)"); }); it("create > feed > calculate > clone > calculate clone", async () => { -- GitLab From 3470983727f9f41d4807b65b2c98444bf4ae5198 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 21 Apr 2020 10:44:07 +0200 Subject: [PATCH 015/101] Simplified custom select process --- src/app/calculators/solveur/config.json | 3 +- src/app/calculators/verificateur/config.json | 3 +- .../formulaire/definition/form-fixedvar.ts | 25 ++++++++++++- .../definition/form-macrorugo-compound.ts | 1 + .../definition/form-parallel-structures.ts | 10 +---- src/app/formulaire/definition/form-solveur.ts | 37 +++---------------- .../definition/form-verificateur.ts | 35 ++---------------- 7 files changed, 38 insertions(+), 76 deletions(-) diff --git a/src/app/calculators/solveur/config.json b/src/app/calculators/solveur/config.json index 03262ac7d..f04658c8d 100644 --- a/src/app/calculators/solveur/config.json +++ b/src/app/calculators/solveur/config.json @@ -33,9 +33,8 @@ { "type": "options", "selectIds": [ "select_target_result" ], - "targetNubSelectId": "select_target_nub", + "customSelectIds": [ "select_target_nub", "select_searched_param" ], "targettedResultSelectId": "select_target_result", - "searchedParamSelectId": "select_searched_param", "_help": "solveur.html" } ] \ No newline at end of file diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json index 8ec8d41ca..95ad28bb6 100644 --- a/src/app/calculators/verificateur/config.json +++ b/src/app/calculators/verificateur/config.json @@ -32,8 +32,7 @@ { "type": "options", "selectIds": [ "select_pab_jet_type", "select_species_list" ], - "targetPassSelectId": "select_target_pass", - "speciesListSelectId": "select_species_list", + "customSelectIds": [ "select_target_pass" ], "help": "verification/verificateur.html" } ] diff --git a/src/app/formulaire/definition/form-fixedvar.ts b/src/app/formulaire/definition/form-fixedvar.ts index 4d553ef88..c9835398c 100644 --- a/src/app/formulaire/definition/form-fixedvar.ts +++ b/src/app/formulaire/definition/form-fixedvar.ts @@ -7,6 +7,7 @@ import { ParamRadioConfig, NgParameter } from "../elements/ngparam"; import { FieldSet } from "../elements/fieldset"; import { Nub, IObservable } from "jalhyd"; +import { SelectFieldCustom } from '../elements/select-field-custom'; export class FormulaireFixedVar extends FormulaireDefinition { @@ -16,6 +17,9 @@ export class FormulaireFixedVar extends FormulaireDefinition { /** ids of select fields */ private _selectIds: string[] = []; + /** ids of "custom" select fields */ + private _customSelectIds: string[] = []; + constructor() { super(); this._fixedResults = new FixedResults(); @@ -70,21 +74,40 @@ export class FormulaireFixedVar extends FormulaireDefinition { } public afterParseFieldset(fs: FieldSet) { - // observe all select fields @see this.update() + // observe all Select fields @see this.update() if (this._selectIds.length > 0) { for (const sId of this._selectIds) { const sel = fs.getFormulaireNodeById(sId); if (sel) { + // Formulaire is listening to FieldSet properties (@TODO why not directly Select ?) fs.properties.addObserver(this); } } } } + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + // observe all CustomSelect fields @TODO move to afterParseFieldset ? + if (this._customSelectIds.length > 0) { + for (const csId of this._customSelectIds) { + const sel = this.getFormulaireNodeById(csId); + // Formulaire is listening to Select value + sel.addObserver(this); + if (firstNotif) { + // force 1st observation + (sel as SelectFieldCustom).notifyValueChanged(); + } + } + } + } + protected parseOptions(json: {}) { super.parseOptions(json); // get ids of all select fields this._selectIds = this.getOption(json, "selectIds") || []; + // get ids of all "custom" select fields + this._customSelectIds = this.getOption(json, "customSelectIds") || []; } protected compute() { diff --git a/src/app/formulaire/definition/form-macrorugo-compound.ts b/src/app/formulaire/definition/form-macrorugo-compound.ts index 2fb689c5b..9ab7b18dd 100644 --- a/src/app/formulaire/definition/form-macrorugo-compound.ts +++ b/src/app/formulaire/definition/form-macrorugo-compound.ts @@ -52,6 +52,7 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset { } protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); this.fieldsetContainer.addObserver(this); if (firstNotif) { this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron")); diff --git a/src/app/formulaire/definition/form-parallel-structures.ts b/src/app/formulaire/definition/form-parallel-structures.ts index 6a097c297..87b347930 100644 --- a/src/app/formulaire/definition/form-parallel-structures.ts +++ b/src/app/formulaire/definition/form-parallel-structures.ts @@ -93,7 +93,8 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset { } protected completeParse(firstNotif: boolean = true) { - this.subscribeFieldsetContainer(); + super.completeParse(firstNotif); + this.fieldsetContainer.addObserver(this); this.helpLinks = this._resultsHelpLinks; } @@ -128,13 +129,6 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset { } } - /** - * abonnement en tant qu'observateur du FieldsetContainer - */ - private subscribeFieldsetContainer() { - this.fieldsetContainer.addObserver(this); - } - /** * abonnement en tant qu'observateur des NgParameter des FieldSet contenus dans le FieldsetContainer */ diff --git a/src/app/formulaire/definition/form-solveur.ts b/src/app/formulaire/definition/form-solveur.ts index 1e2664d9f..db1b2ef45 100644 --- a/src/app/formulaire/definition/form-solveur.ts +++ b/src/app/formulaire/definition/form-solveur.ts @@ -11,34 +11,18 @@ import { FieldSet } from "../elements/fieldset"; */ export class FormulaireSolveur extends FormulaireFixedVar { - /** id of select configuring target Nub */ - private _targetNubSelectId: string; - /** id of select configuring targetted result */ private _targettedResultSelectId: string; - /** id of select configuring searched param */ - private _searchedParamSelectId: string; - protected parseOptions(json: {}) { super.parseOptions(json); - this._targetNubSelectId = this.getOption(json, "targetNubSelectId"); this._targettedResultSelectId = this.getOption(json, "targettedResultSelectId"); - this._searchedParamSelectId = this.getOption(json, "searchedParamSelectId"); } protected completeParse(firstNotif: boolean = true) { - super.completeParse(); - if (this._targetNubSelectId) { - const sel = this.getFormulaireNodeById(this._targetNubSelectId); - if (sel) { - sel.addObserver(this); - if (firstNotif) { - // force 1st observation - (sel as SelectFieldCustom).notifyValueChanged(); - } - } - } + super.completeParse(firstNotif); + // even though this._targettedResultSelectId is a regular select, an extra action + // is needed: refresh searched parameter selector if (this._targettedResultSelectId) { const sel = this.getFormulaireNodeById(this._targettedResultSelectId); if (sel) { @@ -49,17 +33,6 @@ export class FormulaireSolveur extends FormulaireFixedVar { } } } - if (this._searchedParamSelectId) { - const sel = this.getFormulaireNodeById(this._searchedParamSelectId); - if (sel) { - sel.addObserver(this); - if (firstNotif) { - // force 1st observation - (sel as SelectFieldCustom).notifyValueChanged(); - } - } - } - } // interface Observer @@ -111,7 +84,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { inputXinit.notifyValueModified(this); } } else if (sender instanceof SelectField) { - if (sender.id === "select_target_result") { + if (sender.id === this._targettedResultSelectId) { // refresh parameters selector this.refreshParameterEntries(); } @@ -122,7 +95,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { * Re-populate searched parameter selector with fresh entries */ private refreshParameterEntries() { - const pSel = this.getFormulaireNodeById(this._searchedParamSelectId) as SelectFieldCustom; + const pSel = this.getFormulaireNodeById("select_searched_param") as SelectFieldCustom; if (pSel) { pSel.updateEntries(); // reflect changes in GUI diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 732a659a5..2e5569599 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -2,39 +2,12 @@ import { IObservable, Nub, Verificateur } from "jalhyd"; import { SelectFieldCustom } from "../elements/select-field-custom"; import { FormulaireFixedVar } from "./form-fixedvar"; -import { SelectField } from '../elements/select-field'; /** * Formulaire pour les Vérificateurs */ export class FormulaireVerificateur extends FormulaireFixedVar { - /** id of select configuring target pass Nub */ - private _targetPassSelectId: string; - - /** id of select configuring list of species */ - private _speciesListSelectId: string; - - protected parseOptions(json: {}) { - super.parseOptions(json); - this._targetPassSelectId = this.getOption(json, "targetPassSelectId"); - this._speciesListSelectId = this.getOption(json, "speciesListSelectId"); - } - - protected completeParse(firstNotif: boolean = true) { - super.completeParse(); - if (this._targetPassSelectId) { - const sel = this.getFormulaireNodeById(this._targetPassSelectId); - if (sel) { - sel.addObserver(this); - if (firstNotif) { - // force 1st observation - (sel as SelectFieldCustom).notifyValueChanged(); - } - } - } - } - // interface Observer public update(sender: IObservable, data: any) { @@ -70,12 +43,12 @@ export class FormulaireVerificateur extends FormulaireFixedVar { public onCalculatorInit() { // refresh species list selector on each display, because Session might have gained new Espece nubs console.log(">>>> speciesList avant rafraîchissement :", (this.currentNub as Verificateur).speciesList); - const pSel = this.getFormulaireNodeById(this._speciesListSelectId) as SelectField; + /* const pSel = this.getFormulaireNodeById(this._speciesListSelectId) as SelectField; if (pSel) { - /* pSel.clearEntries(); - pSel.parseConfig(); */ + pSel.clearEntries(); + pSel.parseConfig(); // (pSel.parent as FieldSet).updateFields() - } + } */ } } -- GitLab From e460adc9eb382cd3c5ea381ac8eba649a5a39735 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 21 Apr 2020 12:23:29 +0200 Subject: [PATCH 016/101] Fix methods visibility --- src/app/app.component.ts | 2 +- .../components/calculator-list/calculator-list.component.ts | 4 ++-- src/app/formulaire/definition/form-section.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 435edb999..c7bd6a30d 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -447,7 +447,7 @@ export class AppComponent implements OnInit, OnDestroy, Observer { // interface Observer - update(sender: any, data: any): void { + public update(sender: any, data: any): void { if (sender instanceof FormulaireService) { switch (data["action"]) { case "createForm": diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index f014d75c8..de8820b9d 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -236,14 +236,14 @@ export class CalculatorListComponent implements OnInit { // interface Observer - update(sender: any, data: any): void { + public update(sender: any, data: any): void { if (sender instanceof I18nService) { // reload themes if language changed this.loadCalculatorsThemes(); } } - ngOnInit() { + public ngOnInit() { this.loadCalculatorsThemes(); } } diff --git a/src/app/formulaire/definition/form-section.ts b/src/app/formulaire/definition/form-section.ts index 77669213a..30cdd2c40 100644 --- a/src/app/formulaire/definition/form-section.ts +++ b/src/app/formulaire/definition/form-section.ts @@ -6,7 +6,7 @@ import { IObservable, Session, SectionNub } from "jalhyd"; export class FormulaireSection extends FormulaireFixedVar { - update(sender: IObservable, data: any) { + public update(sender: IObservable, data: any) { super.update(sender, data); // changement de propriété du FieldSet contenant le select de choix du type de section if (sender instanceof FieldSet && sender.id === "fs_section" && data.action === "propertyChange") { -- GitLab From 2e2bd75ef653fda43803f3be5a342fbbd28e701b Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 21 Apr 2020 12:26:07 +0200 Subject: [PATCH 017/101] Verificateur: made Species List a CustomSelect --- src/app/calculators/verificateur/config.json | 7 +- .../definition/form-verificateur.ts | 20 +---- .../elements/select-field-custom.ts | 75 +++++++++++++++---- src/app/formulaire/elements/select-field.ts | 28 +------ 4 files changed, 69 insertions(+), 61 deletions(-) diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json index 95ad28bb6..fb1779508 100644 --- a/src/app/calculators/verificateur/config.json +++ b/src/app/calculators/verificateur/config.json @@ -21,9 +21,8 @@ "type": "fieldset", "fields": [ { - "type": "select", + "type": "select_custom", "id": "select_species_list", - "property": "speciesList", "source": "verificateur_species", "multiple": true } @@ -31,8 +30,8 @@ }, { "type": "options", - "selectIds": [ "select_pab_jet_type", "select_species_list" ], - "customSelectIds": [ "select_target_pass" ], + "selectIds": [ "select_pab_jet_type" ], + "customSelectIds": [ "select_target_pass", "select_species_list" ], "help": "verification/verificateur.html" } ] diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 2e5569599..7546562ae 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -28,27 +28,15 @@ export class FormulaireVerificateur extends FormulaireFixedVar { console.log("> update", data, sender.constructor.name); if (sender instanceof SelectFieldCustom) { - if (data.action === "select") { + if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check - let v = undefined; - if (data && data.value && data.value.value) { - v = data.value.value; - } this._currentNub.properties.setPropValue("nubToVerify", data.value); // @TODO refresh jet type selector + } else if (sender.id === "select_species_list" && data.action === "select") { + // update Verificateur property: Species list (string[]) + this._currentNub.properties.setPropValue("speciesList", data.value.map((v: any) => v.value)); } } } - public onCalculatorInit() { - // refresh species list selector on each display, because Session might have gained new Espece nubs - console.log(">>>> speciesList avant rafraîchissement :", (this.currentNub as Verificateur).speciesList); - /* const pSel = this.getFormulaireNodeById(this._speciesListSelectId) as SelectField; - if (pSel) { - pSel.clearEntries(); - pSel.parseConfig(); - // (pSel.parent as FieldSet).updateFields() - } */ - } - } diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 6c57eba10..de7436625 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -1,9 +1,11 @@ import { SelectEntry } from "./select-entry"; import { ServiceFactory } from "../../services/service-factory"; +import { SelectField } from './select-field'; import { decodeHtml, arraysAreEqual } from "../../util"; -import { Session, Solveur, FishPass, CalculatorType, Verificateur, Nub } from "jalhyd"; -import { SelectField } from './select-field'; +import { FishSpecies, Session, Solveur, FishPass, CalculatorType, Verificateur, Nub } from "jalhyd"; + +import { sprintf } from 'sprintf-js'; /** * A select field that populates itself with custom stuff (ex: references to Nubs, Parameters…) @@ -38,6 +40,13 @@ export class SelectFieldCustom extends SelectField { this.setValueFromId(this._entriesBaseId + ntv.uid); } break; + + case "verificateur_species": // Vérificateur, liste d'espèces (choix multiple) + const sl = (nub as Verificateur).speciesList; + if (sl !== undefined) { + this.setValueFromId(sl.map((s) => this._entriesBaseId + s )); + } + break; } } @@ -112,6 +121,27 @@ export class SelectFieldCustom extends SelectField { } break; + case "verificateur_species": + console.log("[i] loading verif species"); + // add UIDs of all Espece type Nubs in the session + const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); + for (const en of especeNubs) { + this.addEntry( + new SelectEntry( + en.uid, + en.uid, + sprintf( + ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), + ServiceFactory.instance.formulaireService.getFormulaireFromNubId(en.uid).calculatorName + ) + ) + ); + } + // add all FishSpecies + for (let j = 0; j < Object.keys(FishSpecies).length / 2; j++) { + this.addEntry(new SelectEntry(this._entriesBaseId + j, String(j), "Groupe d'espèces " + j)); + } + break; } } @@ -157,9 +187,15 @@ export class SelectFieldCustom extends SelectField { super.setValue(undefined); } } else { - // keep previously selected entry if possible @TODO manage multiple values - if (pse && ! Array.isArray(pse) && pse.id) { - this.setValueFromId(pse.id); + // keep previously selected entry(ies) if possible + if (pse) { + if (! Array.isArray(pse) && pse.id) { + this.setValueFromId(pse.id); + } else if (Array.isArray(pse) && pse.length > 0) { + this.setValueFromId(pse.map((e) => e.id )); + } else { + this.setDefaultValue(); + } } else { this.setDefaultValue(); } @@ -172,6 +208,10 @@ export class SelectFieldCustom extends SelectField { */ public setValue(v: SelectEntry | SelectEntry[]) { const previousSelectedEntry = this._selectedEntry; + /* if (Array.isArray(v)) { + // keep selection ordered + v.sort((a,b) => (a.value > b.value) ? -1 : ((b.value > a.value) ? 1 : 0)); + } */ this._selectedEntry = v; // if value changed let valueChanged = ( @@ -184,7 +224,7 @@ export class SelectFieldCustom extends SelectField { || ( Array.isArray(previousSelectedEntry) && Array.isArray(v) - && arraysAreEqual(previousSelectedEntry, v, "id", true) + && ! arraysAreEqual(previousSelectedEntry, v, "id", true) ) ); if (valueChanged) { @@ -193,17 +233,24 @@ export class SelectFieldCustom extends SelectField { } /** - * Sets value from given ID; if it was not found, sets the + * Sets value from given ID(s); if it was not found, sets the * first available entry as selectedValue */ - public setValueFromId(id: string) { + public setValueFromId(id: string | string[]) { let found = false; - for (const e of this._entries) { - if (e.id === id) { - found = true; - if (this._multiple) { - this.setValue([ e ]); - } else { + let entries = []; + if (this._multiple && Array.isArray(id)) { + for (const e of this._entries) { + if (id.includes(e.id)) { + entries.push(e); + found = true; + } + } + this.setValue(entries); + } else { + for (const e of this._entries) { + if (e.id === id) { + found = true; this.setValue(e); } } diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 4b10ec0b7..4d04e9a9a 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -5,8 +5,7 @@ import { StructureType, LoiDebit, Session, - Solveur, - CalculatorType + Solveur } from "jalhyd"; import { Field } from "./field"; @@ -15,8 +14,6 @@ import { StringMap } from "../../stringmap"; import { FormulaireNode } from "./formulaire-node"; import { FormulaireDefinition } from "../definition/form-definition"; import { ServiceFactory } from "../../services/service-factory"; -import { FishSpecies } from 'jalhyd/build/verification/fish_species'; -import { sprintf } from 'sprintf-js'; export class SelectField extends Field { @@ -201,29 +198,6 @@ export class SelectField extends Field { } break; - // possible values depend on Session @TODO does not work, because not refreshed when Session gets new Espece nubs - case "verificateur_species": - console.log("[i] loading verif species"); - // add UIDs of all Espece type Nubs in the session - const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); - for (const en of especeNubs) { - this.addEntry( - new SelectEntry( - en.uid, - en.uid, - sprintf( - ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), - ServiceFactory.instance.formulaireService.getFormulaireFromNubId(en.uid).calculatorName - ) - ) - ); - } - // add all FishSpecies - for (let j = 0; j < Object.keys(FishSpecies).length / 2; j++) { - this.addEntry(new SelectEntry(this._entriesBaseId + j, j, "Groupe d'espèces " + j)); - } - break; - // general case : property values taken from an enum default: // find enum associated to property -- GitLab From a28181dc82196c525f86be7d97028dc9e3d82996 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 21 Apr 2020 15:30:23 +0200 Subject: [PATCH 018/101] Verificateur PAB jet type is disabled when target pass is not a PAB Species list selection is ordered --- .../generic-select.component.html | 4 +-- .../results-chart/chart-type.component.ts | 4 +++ .../select-field-line.component.ts | 31 +++++++++++++++++++ src/app/formulaire/definition/form-solveur.ts | 2 +- .../definition/form-verificateur.ts | 14 +++++---- .../elements/select-field-custom.ts | 5 --- src/app/formulaire/elements/select-field.ts | 4 ++- 7 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index 4d420c820..ba4971cc0 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -1,7 +1,7 @@ <mat-form-field> - <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple"> + <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple" [disabled]="isDisabled"> <mat-select-trigger *ngIf="isMultiple"> - {{ selectedValue && selectedValue[0] ? selectedValue[0].label : '' }} + {{ sortedSelectedValues && sortedSelectedValues[0] ? sortedSelectedValues[0].label : '' }} <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) </span> diff --git a/src/app/components/results-chart/chart-type.component.ts b/src/app/components/results-chart/chart-type.component.ts index 7b24c7098..a7be551c1 100644 --- a/src/app/components/results-chart/chart-type.component.ts +++ b/src/app/components/results-chart/chart-type.component.ts @@ -57,6 +57,10 @@ export class ChartTypeSelectComponent implements IObservable { return false; } + public get isDisabled(): boolean { + return false; + } + public get showClearButton(): boolean { return false; } diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index c432c19e7..a8f76d36d 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -34,6 +34,10 @@ export class SelectFieldLineComponent implements OnInit { return this._select.multiple; } + public get isDisabled(): boolean { + return this._select.disabled; + } + public get entries(): SelectEntry[] { if (! this._select) { return []; @@ -49,6 +53,33 @@ export class SelectFieldLineComponent implements OnInit { return this._select.getValue(); } + /** + * Present selected values in a meaningful order, for multiple select box label (… + n others) + */ + public get sortedSelectedValues(): SelectEntry[] { + let ssv: any[] = undefined; + if (Array.isArray(this.selectedValue)) { + ssv = JSON.parse(JSON.stringify(this.selectedValue)); // array copy + ssv.sort((a, b) => { + // numbers ? + if (! isNaN(Number(a._value)) && ! isNaN(Number(b._value))) { + return (Number(a._value) > Number(b._value)) ? 1 : ((Number(b._value) > Number(a._value)) ? -1 : 0) + } else { + // numbers after strings @TODO convenient for Verificateur/SpeciesList, but elsewhere ? + if (! isNaN(Number(a._value))) { + return 1; + } else if (! isNaN(Number(b._value))) { + return -1; + } else { + // keep original order + return 0; + } + } + }); + } + return ssv; + } + public get isValid(): boolean { return (this._select.getValue() !== undefined); } diff --git a/src/app/formulaire/definition/form-solveur.ts b/src/app/formulaire/definition/form-solveur.ts index db1b2ef45..481ea5f6d 100644 --- a/src/app/formulaire/definition/form-solveur.ts +++ b/src/app/formulaire/definition/form-solveur.ts @@ -38,7 +38,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { // interface Observer public update(sender: IObservable, data: any) { - // copied from FormDefinition, to avoid calling super.update() + // copied from FormDefinition, to avoid calling super.update() that would trigger an unwanted this.refreshFieldsets(); if (sender instanceof Nub) { switch (data.action) { case "resultUpdated": diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 7546562ae..586daaafa 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -1,6 +1,7 @@ -import { IObservable, Nub, Verificateur } from "jalhyd"; +import { IObservable, Nub, Verificateur, CalculatorType } from "jalhyd"; import { SelectFieldCustom } from "../elements/select-field-custom"; +import { SelectField } from '../elements/select-field'; import { FormulaireFixedVar } from "./form-fixedvar"; /** @@ -11,7 +12,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { // interface Observer public update(sender: IObservable, data: any) { - // copied from FormDefinition, to avoid calling super.update() + // copied from FormDefinition, to avoid calling super.update() that would trigger an unwanted this.refreshFieldsets(); if (sender instanceof Nub) { switch (data.action) { case "resultUpdated": @@ -25,13 +26,14 @@ export class FormulaireVerificateur extends FormulaireFixedVar { this.reset(); } - console.log("> update", data, sender.constructor.name); - if (sender instanceof SelectFieldCustom) { if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check - this._currentNub.properties.setPropValue("nubToVerify", data.value); - // @TODO refresh jet type selector + this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); + // refresh jet type selector + const ntv = (this._currentNub as Verificateur).nubToVerify; + (this.getFormulaireNodeById("select_pab_jet_type") as SelectField).disabled = ! (ntv !== undefined && ntv.calcType === CalculatorType.Pab); + } else if (sender.id === "select_species_list" && data.action === "select") { // update Verificateur property: Species list (string[]) this._currentNub.properties.setPropValue("speciesList", data.value.map((v: any) => v.value)); diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index de7436625..8a7fdfeed 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -122,7 +122,6 @@ export class SelectFieldCustom extends SelectField { break; case "verificateur_species": - console.log("[i] loading verif species"); // add UIDs of all Espece type Nubs in the session const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); for (const en of especeNubs) { @@ -208,10 +207,6 @@ export class SelectFieldCustom extends SelectField { */ public setValue(v: SelectEntry | SelectEntry[]) { const previousSelectedEntry = this._selectedEntry; - /* if (Array.isArray(v)) { - // keep selection ordered - v.sort((a,b) => (a.value > b.value) ? -1 : ((b.value > a.value) ? 1 : 0)); - } */ this._selectedEntry = v; // if value changed let valueChanged = ( diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 4d04e9a9a..70d1bf2d1 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -33,6 +33,9 @@ export class SelectField extends Field { /** if true, user can select multiple values */ protected _multiple = false; + /** if true, select box is grayed out */ + public disabled = false; + /** soruce identifier for populating with available values */ protected source: string; @@ -101,7 +104,6 @@ export class SelectField extends Field { } public notifyValueChanged() { - console.log("NOT VAL CHA", this.id, this._selectedEntry) this.notifyObservers({ "action": "select", "value": this._selectedEntry -- GitLab From cec42253d709f9684a3079e4af6eb45f38b779a5 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 10:30:13 +0200 Subject: [PATCH 019/101] Fix arraysAreEqual() --- src/app/util.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/app/util.ts b/src/app/util.ts index cfc9ca3af..704320407 100644 --- a/src/app/util.ts +++ b/src/app/util.ts @@ -163,15 +163,17 @@ export function generateValuesCombination( } export function arraysAreEqual(arrayA: any[], arrayB: any[], property?: string, sort = false): boolean { + let aA: any[] = JSON.parse(JSON.stringify(arrayA)); // array copy + let aB: any[] = JSON.parse(JSON.stringify(arrayB)); // array copy if (sort) { - arrayA.sort((a, b) => a-b); - arrayB.sort((a, b) => a-b); + aA.sort((a, b) => a-b); + aB.sort((a, b) => a-b); } let equal = true; - if (arrayA.length === arrayB.length) { - for (let i=0; i < arrayA.length; i++) { - const eA = arrayA[i]; - const eB = arrayB[i]; + if (aA.length === aB.length) { + for (let i=0; i < aA.length; i++) { + const eA = aA[i]; + const eB = aB[i]; if (property === undefined) { equal = equal && (eA === eB); } else { -- GitLab From 108fdbee4260d4d39e8bb5194dbcb7e306aa71ea Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 10:31:55 +0200 Subject: [PATCH 020/101] Fix species_list select assignation and sorting --- .../generic-select.component.html | 2 +- .../select-field-line.component.ts | 27 ------------------- .../definition/form-verificateur.ts | 6 +++-- .../elements/select-field-custom.ts | 13 ++++++--- src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 6 files changed, 17 insertions(+), 33 deletions(-) diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index ba4971cc0..8c352a2cf 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -1,7 +1,7 @@ <mat-form-field> <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple" [disabled]="isDisabled"> <mat-select-trigger *ngIf="isMultiple"> - {{ sortedSelectedValues && sortedSelectedValues[0] ? sortedSelectedValues[0].label : '' }} + {{ selectedValue && selectedValue[0] ? selectedValue[0].label : '' }} <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) </span> diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index a8f76d36d..09d05640b 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -53,33 +53,6 @@ export class SelectFieldLineComponent implements OnInit { return this._select.getValue(); } - /** - * Present selected values in a meaningful order, for multiple select box label (… + n others) - */ - public get sortedSelectedValues(): SelectEntry[] { - let ssv: any[] = undefined; - if (Array.isArray(this.selectedValue)) { - ssv = JSON.parse(JSON.stringify(this.selectedValue)); // array copy - ssv.sort((a, b) => { - // numbers ? - if (! isNaN(Number(a._value)) && ! isNaN(Number(b._value))) { - return (Number(a._value) > Number(b._value)) ? 1 : ((Number(b._value) > Number(a._value)) ? -1 : 0) - } else { - // numbers after strings @TODO convenient for Verificateur/SpeciesList, but elsewhere ? - if (! isNaN(Number(a._value))) { - return 1; - } else if (! isNaN(Number(b._value))) { - return -1; - } else { - // keep original order - return 0; - } - } - }); - } - return ssv; - } - public get isValid(): boolean { return (this._select.getValue() !== undefined); } diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 586daaafa..0c7db5328 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -29,14 +29,16 @@ export class FormulaireVerificateur extends FormulaireFixedVar { if (sender instanceof SelectFieldCustom) { if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check - this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); + (this._currentNub as Verificateur).nubToVerify = data.value ? data.value.value : undefined; // refresh jet type selector const ntv = (this._currentNub as Verificateur).nubToVerify; (this.getFormulaireNodeById("select_pab_jet_type") as SelectField).disabled = ! (ntv !== undefined && ntv.calcType === CalculatorType.Pab); } else if (sender.id === "select_species_list" && data.action === "select") { // update Verificateur property: Species list (string[]) - this._currentNub.properties.setPropValue("speciesList", data.value.map((v: any) => v.value)); + const caca = data.value.map((v: any) => v.value); + console.log("FormVerificateur.update species_list", caca); + (this._currentNub as Verificateur).speciesList = caca; } } } diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 8a7fdfeed..7b5584a50 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -17,7 +17,7 @@ export class SelectFieldCustom extends SelectField { */ protected initSelectedValue() { const nub = this.parentForm.currentNub; - console.log("[X] I S V", nub.constructor.name, this.source); + switch (this.source) { case "solveur_target": // Solveur, module cible (à calculer) @@ -137,8 +137,15 @@ export class SelectFieldCustom extends SelectField { ); } // add all FishSpecies - for (let j = 0; j < Object.keys(FishSpecies).length / 2; j++) { - this.addEntry(new SelectEntry(this._entriesBaseId + j, String(j), "Groupe d'espèces " + j)); + for (let j = 1; j < Object.keys(FishSpecies).length / 2; j++) { // exclude "0" (SPECIES_CUSTOM) + const spgId = FishSpecies[j].substring(FishSpecies[j].lastIndexOf("_") + 1); + this.addEntry( + new SelectEntry( + this._entriesBaseId + spgId, + FishSpecies[j], + ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_SPECIES_GROUP") + " " + spgId + ) + ); } break; } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 88ab30d87..ee758e7d0 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -533,6 +533,7 @@ "INFO_TRIGO_TITRE": "Trigonometric function", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", + "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", "INFO_VERIFICATEUR_TITRE_COURT": "Verification", "INFO_ESPECE_TITRE": "Fish species characteristics", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 97e80ba3f..f0a1a4d71 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -534,6 +534,7 @@ "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", + "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", "INFO_ESPECE_TITRE": "Caractéristiques d'une espèce", -- GitLab From 7af18d4f3a2de74dd564d137ae1d1f3fd288b361 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 10:45:38 +0200 Subject: [PATCH 021/101] Fix again --- src/app/formulaire/definition/form-verificateur.ts | 2 +- src/app/formulaire/elements/select-field-custom.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 0c7db5328..92d538c98 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -29,7 +29,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { if (sender instanceof SelectFieldCustom) { if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check - (this._currentNub as Verificateur).nubToVerify = data.value ? data.value.value : undefined; + this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); // refresh jet type selector const ntv = (this._currentNub as Verificateur).nubToVerify; (this.getFormulaireNodeById("select_pab_jet_type") as SelectField).disabled = ! (ntv !== undefined && ntv.calcType === CalculatorType.Pab); diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 7b5584a50..393d5a0bb 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -44,7 +44,10 @@ export class SelectFieldCustom extends SelectField { case "verificateur_species": // Vérificateur, liste d'espèces (choix multiple) const sl = (nub as Verificateur).speciesList; if (sl !== undefined) { - this.setValueFromId(sl.map((s) => this._entriesBaseId + s )); + this.setValueFromId(sl.map((s) => { + const spgId = s.substring(s.lastIndexOf("_") + 1); + return this._entriesBaseId + spgId; + })); } break; } -- GitLab From 508c3bbedab7e34e7cdaa14a0b2e1ffac7e6078b Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 11:14:41 +0200 Subject: [PATCH 022/101] Verificateur: make jet type selector's disabled state persist after calculation --- .../formulaire/definition/form-verificateur.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 92d538c98..6c07e62c5 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -30,9 +30,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); - // refresh jet type selector - const ntv = (this._currentNub as Verificateur).nubToVerify; - (this.getFormulaireNodeById("select_pab_jet_type") as SelectField).disabled = ! (ntv !== undefined && ntv.calcType === CalculatorType.Pab); + this.refreshJetTypeSelector(); } else if (sender.id === "select_species_list" && data.action === "select") { // update Verificateur property: Species list (string[]) @@ -43,4 +41,18 @@ export class FormulaireVerificateur extends FormulaireFixedVar { } } + protected compute() { + this.runNubCalc(this.currentNub); + this.reaffectResultComponents(); + // do not refreshFieldsets() (useless here) or jet type selector's disabled state will be reset + } + + /** + * Disables Jet Type selector if target pass is not a Pab + */ + protected refreshJetTypeSelector() { + const ntv = (this._currentNub as Verificateur).nubToVerify; + (this.getFormulaireNodeById("select_pab_jet_type") as SelectField).disabled = ! (ntv !== undefined && ntv.calcType === CalculatorType.Pab); + } + } -- GitLab From 918668437b5ebaa6f3eefc76a1cfa6d5ca308afe Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 11:45:08 +0200 Subject: [PATCH 023/101] Remove debug message --- src/app/formulaire/definition/form-verificateur.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 6c07e62c5..64651ced6 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -34,9 +34,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { } else if (sender.id === "select_species_list" && data.action === "select") { // update Verificateur property: Species list (string[]) - const caca = data.value.map((v: any) => v.value); - console.log("FormVerificateur.update species_list", caca); - (this._currentNub as Verificateur).speciesList = caca; + (this._currentNub as Verificateur).speciesList = data.value.map((v: any) => v.value); } } } -- GitLab From cd147f2513312730a5642e88c589c491288092ba Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 15:21:18 +0200 Subject: [PATCH 024/101] Verificateur: translation of species groups names --- .../elements/select-field-custom.ts | 2 +- src/locale/messages.en.json | 20 +++++++++++++++++++ src/locale/messages.fr.json | 20 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 393d5a0bb..86d32757d 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -146,7 +146,7 @@ export class SelectFieldCustom extends SelectField { new SelectEntry( this._entriesBaseId + spgId, FishSpecies[j], - ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_SPECIES_GROUP") + " " + spgId + ServiceFactory.instance.i18nService.localizeText("INFO_ENUM_" + FishSpecies[j]) + " (" + spgId + ")" ) ); } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index ee758e7d0..009d6aa43 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -139,6 +139,26 @@ "INFO_ENUM_OUVRAGE_Q_REGIME_3": "Zero flow", "INFO_ENUM_PARFLOWREGIME_0": "Free", "INFO_ENUM_PARFLOWREGIME_1": "Submerged", + "INFO_ENUM_SPECIES_1": "Salmon, trout [50-100]", + "INFO_ENUM_SPECIES_2": "Mules", + "INFO_ENUM_SPECIES_3a": "Great Shad", + "INFO_ENUM_SPECIES_3b": "Shad shad", + "INFO_ENUM_SPECIES_3c": "Sea lamprey", + "INFO_ENUM_SPECIES_4a": "Trout [25-55]", + "INFO_ENUM_SPECIES_4b": "River trout [15-30]", + "INFO_ENUM_SPECIES_5": "Aspe, pike", + "INFO_ENUM_SPECIES_6": "Common Shadow", + "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu", + "INFO_ENUM_SPECIES_7b": "River Lamprey", + "INFO_ENUM_SPECIES_8a": "Common Carp", + "INFO_ENUM_SPECIES_8b": "Common bream, pike-perch", + "INFO_ENUM_SPECIES_8c": "Brim bream, ide, monkfish, perch, tench", + "INFO_ENUM_SPECIES_8d": "Vandoises", + "INFO_ENUM_SPECIES_9a": "Ablette, cockle, carrassin, roach...", + "INFO_ENUM_SPECIES_9b": "Apron, sculpins, bolts, loche...", + "INFO_ENUM_SPECIES_10": "Able, cowherd, stickleback, minnows", + "INFO_ENUM_SPECIES_11a": "European eel [yellow]", + "INFO_ENUM_SPECIES_11b": "European Eel [glass eel]", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Weir", "INFO_ENUM_STRUCTUREFLOWMODE_1": "Orifice", "INFO_ENUM_STRUCTUREFLOWMODE_2": "Zero flow", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index f0a1a4d71..9279c70ed 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -139,6 +139,26 @@ "INFO_ENUM_OUVRAGE_Q_REGIME_3": "Débit nul", "INFO_ENUM_PARFLOWREGIME_0": "Dénoyé", "INFO_ENUM_PARFLOWREGIME_1": "Noyé", + "INFO_ENUM_SPECIES_1": "Saumon, truite [50-100]", + "INFO_ENUM_SPECIES_2": "Mulets", + "INFO_ENUM_SPECIES_3a": "Grande Alose", + "INFO_ENUM_SPECIES_3b": "Alose feinte", + "INFO_ENUM_SPECIES_3c": "Lamproie marine", + "INFO_ENUM_SPECIES_4a": "Truite [25-55]", + "INFO_ENUM_SPECIES_4b": "Truite de rivière [15-30]", + "INFO_ENUM_SPECIES_5": "Aspe, brochet", + "INFO_ENUM_SPECIES_6": "Ombre commun", + "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu", + "INFO_ENUM_SPECIES_7b": "Lamproie fluviatile", + "INFO_ENUM_SPECIES_8a": "Carpe commune", + "INFO_ENUM_SPECIES_8b": "Brème commune, sandre", + "INFO_ENUM_SPECIES_8c": "Brème bordelière, ide, lotte, perche, tanche", + "INFO_ENUM_SPECIES_8d": "Vandoises", + "INFO_ENUM_SPECIES_9a": "Ablette, blageon, carrassin, gardon...", + "INFO_ENUM_SPECIES_9b": "Apron, chabots, goujons, loche...", + "INFO_ENUM_SPECIES_10": "Able, bouvière, épinoche(tte), vairons", + "INFO_ENUM_SPECIES_11a": "Anguille européenne [jaune]", + "INFO_ENUM_SPECIES_11b": "Anguille européenne [civelle]", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Surface libre", "INFO_ENUM_STRUCTUREFLOWMODE_1": "En charge", "INFO_ENUM_STRUCTUREFLOWMODE_2": "Débit nul", -- GitLab From 3a2b73b9de838bbfe34bf3ae6d165875726ad0a0 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 22 Apr 2020 15:38:52 +0200 Subject: [PATCH 025/101] Translation for verificateur success message --- src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 2 files changed, 2 insertions(+) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 009d6aa43..cb4d578b0 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -552,6 +552,7 @@ "INFO_YAXB_TITRE_COURT": "Linear f.", "INFO_TRIGO_TITRE": "Trigonometric function", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", + "INFO_VERIF_OK": "Crossing criteria are met for all species", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 9279c70ed..48087a03a 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -553,6 +553,7 @@ "INFO_YAXB_TITRE_COURT": "F. affine", "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", + "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", -- GitLab From 416512b91842dca78a30e6f24a54eaec8b69dcff Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 23 Apr 2020 11:47:21 +0200 Subject: [PATCH 026/101] Update translation --- src/locale/messages.en.json | 4 ++-- src/locale/messages.fr.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index cb4d578b0..7087d4297 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -606,8 +606,8 @@ "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "None of the aprons is crossable", - "ERROR_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", - "ERROR_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum: %maxDH%)", "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum: %maxDH%)", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 48087a03a..1d5f56c7f 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -607,8 +607,8 @@ "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum: %maxV%)", "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum: %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", - "ERROR_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum: %maxV%)", - "ERROR_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum: %minY%)", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum: %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum: %minY%)", "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum: %maxDH%)", "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum: %maxDH%)", -- GitLab From 6e9360b2b61ffab37fc87a7e6a4caa99aeaa9f77 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 23 Apr 2020 15:46:10 +0200 Subject: [PATCH 027/101] Espece: split parameters into 3 fieldsets --- src/app/calculators/espece/config.json | 18 +++++++++++++++--- src/app/calculators/espece/en.json | 4 +++- src/app/calculators/espece/fr.json | 4 +++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index d11f5f33e..963ce4147 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -1,6 +1,6 @@ [ { - "id": "fs_param_species", + "id": "fs_param_pab", "type": "fieldset", "fields": [ { @@ -22,7 +22,13 @@ { "id": "HMin", "allowEmpty": true - }, + } + ] + }, + { + "id": "fs_param_pam", + "type": "fieldset", + "fields": [ { "id": "YMin", "allowEmpty": true @@ -30,7 +36,13 @@ { "id": "VMax", "allowEmpty": true - }, + } + ] + }, + { + "id": "fs_param_par", + "type": "fieldset", + "fields": [ { "id": "YMinSB", "allowEmpty": true diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index 2f28082b7..b98d29c43 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -1,5 +1,7 @@ { - "fs_param_species": "Species parameters", + "fs_param_pab": "Fish ladders", + "fs_param_pam": "Rock-ramp fishpasses", + "fs_param_par": "Humpback fishways", "DHMax": "Maximal fall", "BMin": "Minimal slot or weir width", diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index 8100e4607..bb190a2ff 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -1,5 +1,7 @@ { - "fs_param_species": "Paramètres de l'espèce", + "fs_param_pab": "Passes à bassins", + "fs_param_pam": "Passes à macrorugosités", + "fs_param_par": "Passes à ralentisseurs", "DHMax": "Chute maximale", "BMin": "Largeur minimale de fente ou échancrure latérale", -- GitLab From ed527d7252aa45290f1d40acabf9deb1c40ffa8b Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 27 Apr 2020 11:10:17 +0200 Subject: [PATCH 028/101] Update translation for Verificateur --- src/locale/messages.en.json | 6 ++++-- src/locale/messages.fr.json | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 7087d4297..f42c1c58a 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -613,8 +613,8 @@ "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum: %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", - "ERROR_VERIF_PAB_JETS": "Wall #%N%: at least one jet of type %required% is required, jets of type %forbidden% are forbidden", - "ERROR_VERIF_PAB_JETS_DW": "Downwall: at least one jet of type %required% is required, jets of type %forbidden% are forbidden", + "ERROR_VERIF_PAB_JETS": "Wall #%N%: at least one jet of type %required% is required", + "ERROR_VERIF_PAB_JETS_DW": "Downwall: at least one jet of type %required% is required", "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum: %minLB%)", "ERROR_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", @@ -622,5 +622,7 @@ "ERROR_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", + "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", + "ERROR_VERIF_SPECIES_KO": "Crossability criteria are not met for species group %speciesGroup%", "WARNING_VERIF_PAR_SPECIES_GROUP": "Species groups 3a, 3b et 7b are discouraged for this pass type" } diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 1d5f56c7f..00ff6492e 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -614,8 +614,8 @@ "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum: %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum: %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum: %minB%)", - "ERROR_VERIF_PAB_JETS": "Cloison n°%N% : au moins un jet de type %required% requis, jets de type %forbidden% interdits", - "ERROR_VERIF_PAB_JETS_DW": "Cloison aval : au moins un jet de type %required% requis, jets de type %forbidden% interdits", + "ERROR_VERIF_PAB_JETS": "Cloison n°%N% : au moins un jet de type %required% requis", + "ERROR_VERIF_PAB_JETS_DW": "Cloison aval : au moins un jet de type %required% requis", "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum: %minLB%)", "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum: %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum: %minH%)", @@ -623,5 +623,7 @@ "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum: %minY%)", + "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", + "ERROR_VERIF_SPECIES_KO": "Le franchissement est impossible pour le groupe d'espèces %speciesGroup%", "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" } -- GitLab From 86583ec722624bb50b884ec4c4d38b98dd0ee007 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 28 Apr 2020 18:17:16 +0200 Subject: [PATCH 029/101] Verificateur: reorganize Espece fields, translations --- src/app/calculators/espece/config.json | 26 +++++- src/app/calculators/espece/en.json | 21 +++-- src/app/calculators/espece/fr.json | 21 +++-- src/app/calculators/verificateur/config.json | 6 -- .../definition/form-verificateur.ts | 9 -- src/locale/messages.en.json | 11 ++- src/locale/messages.fr.json | 89 ++++++++++--------- 7 files changed, 103 insertions(+), 80 deletions(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index 963ce4147..096e616f0 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -1,10 +1,10 @@ [ { - "id": "fs_param_pab", + "id": "fs_param_pab_s", "type": "fieldset", "fields": [ { - "id": "DHMax", + "id": "DHMaxS", "allowEmpty": true }, { @@ -12,11 +12,29 @@ "allowEmpty": true }, { - "id": "PMin", + "id": "PMinS", "allowEmpty": true }, { - "id": "LMin", + "id": "LMinS", + "allowEmpty": true + } + ] + }, + { + "id": "fs_param_pab_p", + "type": "fieldset", + "fields": [ + { + "id": "DHMaxP", + "allowEmpty": true + }, + { + "id": "PMinP", + "allowEmpty": true + }, + { + "id": "LMinP", "allowEmpty": true }, { diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index b98d29c43..11f45ce1a 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -1,22 +1,29 @@ { - "fs_param_pab": "Fish ladders", + "fs_param_pab_s": "Fish ladders, surface jets or orifices", + "fs_param_pab_p": "Fish ladders, diving jets", "fs_param_pam": "Rock-ramp fishpasses", "fs_param_par": "Humpback fishways", - "DHMax": "Maximal fall", + "DHMaxS": "Maximal fall", + "DHMaxP": "Maximal fall", "BMin": "Minimal slot or weir width", - "PMin": "Minimal basin width", - "LMin": "Minimal basin length", + "PMinS": "Minimal basin width", + "PMinP": "Minimal basin width", + "LMinS": "Minimal basin length", + "LMinP": "Minimal basin length", "HMin": "Minimal head on weir", "YMin": "Minimal water level", "VMax": "Maximal flow velocity", "YMinSB": "Minimal water level on superactive baffles", "YMinPB": "Minimal water level on plane baffles", - "UNIT_DHMax": "m", + "UNIT_DHMaxS": "m", + "UNIT_DHMaxP": "m", "UNIT_BMin": "m", - "UNIT_PMin": "m", - "UNIT_LMin": "m", + "UNIT_PMinS": "m", + "UNIT_PMinP": "m", + "UNIT_LMinS": "m", + "UNIT_LMinP": "m", "UNIT_HMin": "m", "UNIT_YMin": "m", "UNIT_VMax": "m/s", diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index bb190a2ff..2c2ae4107 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -1,22 +1,29 @@ { - "fs_param_pab": "Passes à bassins", + "fs_param_pab_s": "Passes à bassins, jets de surface et orifices", + "fs_param_pab_p": "Passes à bassins, jets plongeants", "fs_param_pam": "Passes à macrorugosités", "fs_param_par": "Passes à ralentisseurs", - "DHMax": "Chute maximale", + "DHMaxS": "Chute maximale", + "DHMaxP": "Chute maximale", "BMin": "Largeur minimale de fente ou échancrure latérale", - "PMin": "Profondeur minimale de bassin", - "LMin": "Longueur minimale de bassin", + "PMinS": "Profondeur minimale de bassin", + "PMinP": "Profondeur minimale de bassin", + "LMinS": "Longueur minimale de bassin", + "LMinP": "Longueur minimale de bassin", "HMin": "Charge minimale sur l'échancrure", "YMin": "Tirant d'eau minimal", "VMax": "Vitesse d'écoulement maximale", "YMinSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", "YMinPB": "Tirant d'eau minimal sur les ralentisseurs plans", - "UNIT_DHMax": "m", + "UNIT_DHMaxS": "m", + "UNIT_DHMaxP": "m", "UNIT_BMin": "m", - "UNIT_PMin": "m", - "UNIT_LMin": "m", + "UNIT_PMinS": "m", + "UNIT_PMinP": "m", + "UNIT_LMinS": "m", + "UNIT_LMinP": "m", "UNIT_HMin": "m", "UNIT_YMin": "m", "UNIT_VMax": "m/s", diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json index fb1779508..f3a9a7a2a 100644 --- a/src/app/calculators/verificateur/config.json +++ b/src/app/calculators/verificateur/config.json @@ -7,12 +7,6 @@ "id": "select_target_pass", "type": "select_custom", "source": "verificateur_target" - }, - { - "type": "select", - "id": "select_pab_jet_type", - "property": "pabJetType", - "default": "SURFACE" } ] }, diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 64651ced6..413343c32 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -30,7 +30,6 @@ export class FormulaireVerificateur extends FormulaireFixedVar { if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); - this.refreshJetTypeSelector(); } else if (sender.id === "select_species_list" && data.action === "select") { // update Verificateur property: Species list (string[]) @@ -45,12 +44,4 @@ export class FormulaireVerificateur extends FormulaireFixedVar { // do not refreshFieldsets() (useless here) or jet type selector's disabled state will be reset } - /** - * Disables Jet Type selector if target pass is not a Pab - */ - protected refreshJetTypeSelector() { - const ntv = (this._currentNub as Verificateur).nubToVerify; - (this.getFormulaireNodeById("select_pab_jet_type") as SelectField).disabled = ! (ntv !== undefined && ntv.calcType === CalculatorType.Pab); - } - } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index f42c1c58a..c4d501706 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -609,12 +609,14 @@ "WARNING_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", - "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum: %maxDH%)", - "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum: %maxDH%)", + "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet : %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet : %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_JET_DW":"Downwall: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET_DW": "Downwall: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", - "ERROR_VERIF_PAB_JETS": "Wall #%N%: at least one jet of type %required% is required", - "ERROR_VERIF_PAB_JETS_DW": "Downwall: at least one jet of type %required% is required", "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum: %minLB%)", "ERROR_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", @@ -624,5 +626,6 @@ "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_SPECIES_KO": "Crossability criteria are not met for species group %speciesGroup%", + "INFO_VERIF_SPECIES_OK": "Crossability criteria are met for species group %speciesGroup%", "WARNING_VERIF_PAR_SPECIES_GROUP": "Species groups 3a, 3b et 7b are discouraged for this pass type" } diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 00ff6492e..56eddf83d 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -10,7 +10,7 @@ "WARNING_ERRORS_ABSTRACT": "%nb% erreurs rencontrées lors du calcul", "ERROR_BIEF_Z1_CALC_FAILED": "Impossible de calculer la cote amont (calcul interrompu avant l'amont)", "ERROR_BIEF_Z2_CALC_FAILED": "Impossible de calculer la cote aval (calcul interrompu avant l'aval)", - "ERROR_DICHO_CONVERGE": "La dichotomie n'a pas pu converger. Dernière approximation: %lastApproximation%", + "ERROR_DICHO_CONVERGE": "La dichotomie n'a pas pu converger. Dernière approximation : %lastApproximation%", "ERROR_DICHO_FUNCTION_VARIATION": "Dichotomie : impossible de determiner le sens de variation de la fonction", "ERROR_DICHO_INIT_DOMAIN": "Dichotomie : la valeur cible %targetSymbol%=%targetValue% n'existe pas pour la variable %variableSymbol% prise dans l'intervalle %variableInterval%", "ERROR_DICHO_INVALID_STEP_GROWTH": "Dichotomie : l'augmentation du pas pour la recherche de l'intervalle de départ est incorrecte (=0)", @@ -23,7 +23,7 @@ "WARNING_ERROR_IN_CALC_CHAIN_STEPS": "Des erreurs sont survenues durant le calcul en chaîne", "ERROR_INTERVAL_OUTSIDE": "Intervalle : la valeur %value% est hors de l'intervalle %interval%", "ERROR_INTERVAL_UNDEF": "Interval : valeur 'undefined' incorrecte", - "ERROR_INVALID_AT_POSITION": "Position %s :", + "ERROR_INVALID_AT_POSITION": "Position %s :", "ERROR_LOADING_SESSION": "Impossible de charger la session", "ERROR_MINMAXSTEP_MAX": "La valeur n'est pas dans ]%s,%s]", "ERROR_MINMAXSTEP_MIN": "La valeur n'est pas dans [%s,%s[", @@ -62,10 +62,10 @@ "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCOR": "Non convergence du calcul de la hauteur correspondante (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Non convergence du calcul de la hauteur normale (Méthode de Newton)", "ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "La pente est négative ou nulle, la hauteur normale est infinie", - "ERROR_SECTION_SURFACE_NULLE": "Section : calcul impossible à cause d'une surface nulle", + "ERROR_SECTION_SURFACE_NULLE": "Section : calcul impossible à cause d'une surface nulle", "ERROR_SOMETHING_FAILED_IN_CHILD": "Le calcul du module enfant n°%number% a échoué", "ERROR_SOLVEUR_NO_VARIATED_PARAMS_ALLOWED": "Le solveur ne peut pas être utilisé avec une chaîne de modules contenant des paramètres variés", - "ERROR_STRUCTURE_Q_TROP_ELEVE": "Le débit passant par les autres ouvrages est trop élevé: le paramètre demandé n'est pas calculable.", + "ERROR_STRUCTURE_Q_TROP_ELEVE": "Le débit passant par les autres ouvrages est trop élevé : le paramètre demandé n'est pas calculable.", "INFO_CALCULATOR_CALC_NAME": "Nom du module de calcul", "INFO_CALCULATOR_CALCULER": "Calculer", "INFO_CALCULATOR_CLONE": "Dupliquer", @@ -85,7 +85,7 @@ "INFO_BIEF_TITRE": "Cotes amont/aval d'un bief", "INFO_CLOISONS_TITRE_COURT": "Cloisons", "INFO_CLOISONS_TITRE": "Passe à bassins : Cloisons", - "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :", + "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :", "INFO_CLOSE_DIALOGUE_TEXT": "Attention ! Les paramètres et résultats du module de calcul seront perdus.", "INFO_CLOSE_DIALOGUE_TITRE": "Fermeture du module de calcul", "INFO_CONCENTRATIONBLOCS_TITRE": "Concentration de blocs", @@ -105,8 +105,8 @@ "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Modifier la valeur initiale", "INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS": "entre %s et %s", "INFO_DIALOG_EDIT_PAB_N_DEVICES": "%s ouvrage(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s cloison(s) : %s ouvrage(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s cloison(s) + %s ouvrage(s) : %s ouvrages", + "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s cloison(s) : %s ouvrage(s)", + "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s cloison(s) + %s ouvrage(s) : %s ouvrages", "INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE": "Variable à modifier", "INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE": "Valeur fixe", "INFO_DIALOG_EDIT_PAB_OPTION_DELTA": "Delta", @@ -116,7 +116,7 @@ "INFO_DIALOG_ERROR_LOADING_FILE": "La syntaxe du fichier semble incorrecte", "INFO_DIALOG_FILE_IS_EMPTY": "Le fichier ne contient aucun module", "INFO_DIALOG_FIX_MISSING_DEPENDENCIES": "Résoudre les dépendances", - "INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "Mauvaise version du format de fichier (fichier: %s, jalhyd: %s)", + "INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "Mauvaise version du format de fichier (fichier : %s, jalhyd : %s)", "INFO_DIALOG_LOAD_SESSION_FILENAME": "Choisir un fichier", "INFO_DIALOG_LOAD_SESSION_TITLE": "Charger des modules de calcul", "INFO_DIALOG_PAB_NB": "Nombre de chutes", @@ -254,12 +254,12 @@ "INFO_LIB_CLOISON": "Cloison n°", "INFO_LIB_COTE": "Cote (m)", "INFO_LIB_COTE_VANNE_LEVANTE": "Cote vanne levante", - "INFO_LIB_CV": "Cv: Coefficient de vitesse d'approche", - "INFO_LIB_CVQT": "CV.QT: Débit corrigé", + "INFO_LIB_CV": "Cv : Coefficient de vitesse d'approche", + "INFO_LIB_CVQT": "CV.QT : Débit corrigé", "INFO_LIB_DH": "Chute", - "INFO_LIB_DHR": "DHR: Chute résiduelle", + "INFO_LIB_DHR": "DHR : Chute résiduelle", "INFO_LIB_DISTANCE_AMONT": "Distance depuis l'amont (m)", - "INFO_LIB_EC": "EC: Énergie cinétique", + "INFO_LIB_EC": "EC : Énergie cinétique", "INFO_LIB_ENUM_MACRORUGOFLOWTYPE": "Type d'écoulement", "INFO_LIB_ENUM_PARFLOWREGIME": "Régime", "INFO_LIB_FLU": "Ligne d'eau fluviale", @@ -451,16 +451,16 @@ "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_REPEAT_LAST": "Répéter la dernière valeur", "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_RECYCLE": "Réutiliser les valeurs", "INFO_PARAMFIELD_PARAMVARIER_IMPORT_FICHIER": "Importer un fichier", - "INFO_PARAMFIELD_PARAMVARIER_MINMAXSTEP": "min : %s, max : %s, pas : %s", + "INFO_PARAMFIELD_PARAMVARIER_MINMAXSTEP": "min : %s, max : %s, pas : %s", "INFO_PARAMFIELD_PARAMVARIER_MODE": "Mode", "INFO_PARAMFIELD_PARAMVARIER_SEPARATEUR_DECIMAL": "Séparateur décimal", "INFO_PARAMFIELD_PARAMVARIER_SEPARATEUR_POINT": ". (point)", "INFO_PARAMFIELD_PARAMVARIER_SEPARATEUR_VIRGULE": ", (virgule)", "INFO_PARAMFIELD_PARAMVARIER_SHOW_CHART": "Afficher le graphique des valeurs", "INFO_PARAMFIELD_PARAMVARIER_TITLE": "Valeurs multiples", - "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT_ERROR": "Format incorrect; séparateurs acceptés: %s", + "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT_ERROR": "Format incorrect; séparateurs acceptés : %s", "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT": "Liste de valeurs", - "INFO_PARAMFIELD_PARAMVARIER_VALUES": "Valeurs :", + "INFO_PARAMFIELD_PARAMVARIER_VALUES": "Valeurs :", "INFO_PARAMFIELD_PARAMVARIER": "varier", "INFO_PARAMFIELD_PASVARIATION": "Avec un pas de", "INFO_PARAMFIELD_VALEURMAXI": "À la valeur maximum", @@ -471,7 +471,7 @@ "INFO_QUICKNAV_CHARTS": "graphiques", "INFO_QUICKNAV_INPUT": "données", "INFO_QUICKNAV_RESULTS": "résultats", - "WARNING_PROBLEMS_ENCOUNTERED": "Des problèmes sont survenus durant le calcul (info: %info%, avertissement: %warning%, erreur: %error%)", + "WARNING_PROBLEMS_ENCOUNTERED": "Des problèmes sont survenus durant le calcul (info : %info%, avertissement : %warning%, erreur : %error%)", "INFO_REGIMEUNIFORME_TITRE_COURT": "R. uniforme", "INFO_REGIMEUNIFORME_TITRE": "Régime uniforme", "INFO_REMOUS_CALCUL_FLUVIAL": "Condition limite aval >= Hauteur critique : calcul de la partie fluviale à partir de l'aval", @@ -487,7 +487,7 @@ "INFO_REMOUSRESULTS_TIRANT": "Tirant d'eau (m)", "INFO_REMOUSRESULTS_TIRANTCRITIQUE": "Tirant d'eau critique", "INFO_REMOUSRESULTS_TIRANTNORMAL": "Tirant d'eau normal", - "INFO_REPORT_BUG_BODY": "Ceci est un rapport d'erreur.\n\nMerci de décrire rapidement ci-dessous le problème rencontré, et les étapes qui vous y ont mené :\n\n\n\n\n--- État de la session en cours - ne pas modifier le texte ci-dessous ---\n--------------------------------------------------------------------------------------------\n\n", + "INFO_REPORT_BUG_BODY": "Ceci est un rapport d'erreur.\n\nMerci de décrire rapidement ci-dessous le problème rencontré, et les étapes qui vous y ont mené :\n\n\n\n\n--- État de la session en cours - ne pas modifier le texte ci-dessous ---\n--------------------------------------------------------------------------------------------\n\n", "INFO_REPORT_BUG_SUBJECT": "Rapport d'erreur", "INFO_REQUIRES": "dépend de", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Exporter en XLSX", @@ -499,7 +499,7 @@ "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Créer les nouveaux modules avec des champs vides (aucune valeur par défaut)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Activer les notifications à l'écran", "INFO_SETUP_LANGUAGE": "Langue", - "INFO_SETUP_NEWTON_MAX_ITER": "Solveur : nombre d'itérations maximum", + "INFO_SETUP_NEWTON_MAX_ITER": "Solveur : nombre d'itérations maximum", "INFO_SETUP_PRECISION_AFFICHAGE": "Nombre de décimales affichées", "INFO_SETUP_PRECISION_CALCUL": "Précision de calcul", "INFO_SETUP_RESTORE_DEFAULT_VALUES": "Restaurer les valeurs par défaut", @@ -539,7 +539,7 @@ "INFO_THEME_VERIFICATION_TITRE": "Vérification de passes", "INFO_TITREJOURNAL": "Journal de calcul", "INFO_TITREJOURNAL_GLOBAL": "Synthèse du journal de calcul", - "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par le pôle R&D écohydraulique regroupant l'<a href=\"https://ofb.gouv.fr\" target=\"_blank\">OFB</a> (Office Français de la Biodiversité) et l’<a href=\"https://www.imft.fr\" target=\"_blank\">IMFT</a> (Institut de mécanique des fluides de Toulouse) et par l'<a href=\"http://g-eau.fr\" target=\"_blank\">UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception des dispositifs de franchissement piscicoles pour la montaison et la dévalaison ainsi que des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs/fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs/fr/index.html\" target=\"_blank\">documentation</a>.</p>", + "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par le pôle R&D écohydraulique regroupant l'<a href=\"https ://ofb.gouv.fr\" target=\"_blank\">OFB</a> (Office Français de la Biodiversité) et l’<a href=\"https ://www.imft.fr\" target=\"_blank\">IMFT</a> (Institut de mécanique des fluides de Toulouse) et par l'<a href=\"http ://g-eau.fr\" target=\"_blank\">UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception des dispositifs de franchissement piscicoles pour la montaison et la dévalaison ainsi que des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs/fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs/fr/index.html\" target=\"_blank\">documentation</a>.</p>", "INFO_WELCOME_SUBTITLE": "Modules de calcul d'hydraulique", "INFO_EXAMPLE_LABEL_CHANNEL_FLOW": "Débit d'un chenal avec ouvrages", "INFO_EXAMPLE_LABEL_PAB_COMPLETE": "Passe à bassins type", @@ -554,7 +554,7 @@ "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", - "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", + "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", @@ -571,19 +571,19 @@ "WARNING_STRUCTUREKIVI_PELLE_TROP_FAIBLE": "La pelle du seuil doit mesurer au moins 0,1 m. Le coefficient béta est forcé à 0", "WARNING_VANLEV_ZDV_INF_MIN": "Seuil régulé : cote minimale de seuil atteinte", "WARNING_VANLEV_ZDV_SUP_MAX": "Seuil régulé : cote maximale de seuil atteinte", - "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Préconisation pour le guidage des poissons : α ≤ 45°", - "WARNING_GRILLE_BETA_GREATER_THAN_26": "Préconisation pour le guidage des poissons : β ≤ 26°", - "WARNING_GRILLE_VN_GREATER_THAN_05": "Préconisation pour éviter le placage des poissons sur le plan de grille (barrière physique) ou leur passage prématuré au travers (barrière comportementale) : VN ≤ 0.5 m/s.<br>Au-delà de la valeur moyenne calculée ici, se reporter aux préconisations tirées de la caractérisation expérimentale des valeurs effectives de vitesses.", + "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Préconisation pour le guidage des poissons : α ≤ 45°", + "WARNING_GRILLE_BETA_GREATER_THAN_26": "Préconisation pour le guidage des poissons : β ≤ 26°", + "WARNING_GRILLE_VN_GREATER_THAN_05": "Préconisation pour éviter le placage des poissons sur le plan de grille (barrière physique) ou leur passage prématuré au travers (barrière comportementale) : VN ≤ 0.5 m/s.<br>Au-delà de la valeur moyenne calculée ici, se reporter aux préconisations tirées de la caractérisation expérimentale des valeurs effectives de vitesses.", "WARNING_LECHAPT_CALMON_SPEED_OUTSIDE_04_2": "Cette formule n'est pas conseillée pour une vitesse non comprise entre 0.4 et 2 m/s", "WARNING_UPSTREAM_BOTTOM_HIGHER_THAN_WATER": "La cote de l'eau à l'amont est plus basse ou égale à la cote de fond", "WARNING_DOWNSTREAM_BOTTOM_HIGHER_THAN_WATER": "La cote de l'eau à l'aval est plus basse ou égale à la cote de fond", "WARNING_NEGATIVE_SILL": "La pelle du seuil devrait être positive", "WARNING_RAMP_WIDTH_LOWER_THAN_PATTERN_WIDTH": "La largeur de la rampe devrait comprendre au moins un motif de plot (%pattern%m)", "WARNING_RAMP_WIDTH_NOT_MULTIPLE_OF_HALF_PATTERN_WIDTH": "La largeur de la rampe devrait être un multiple d'un demi motif (%halfPattern%m). Les valeurs voisines sont %lower% et %higher%", - "WARNING_YN_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "Hauteur normale: pente négative ou nulle, hauteur normale infinie", - "WARNING_YN_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Hauteur normale: non convergence du calcul (méthode de Newton)", - "WARNING_SECTION_OVERFLOW": "Débordement: la cote de l'eau dépasse la cote de berge", - "WARNING_SECTION_OVERFLOW_ABSC": "Débordement: la cote de l'eau dépasse la cote de berge entre les abscisses %xa% et %xb%", + "WARNING_YN_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "Hauteur normale : pente négative ou nulle, hauteur normale infinie", + "WARNING_YN_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Hauteur normale : non convergence du calcul (méthode de Newton)", + "WARNING_SECTION_OVERFLOW": "Débordement : la cote de l'eau dépasse la cote de berge", + "WARNING_SECTION_OVERFLOW_ABSC": "Débordement : la cote de l'eau dépasse la cote de berge entre les abscisses %xa% et %xb%", "WARNING_SESSION_LOAD_NOTES_MERGED": "Les notes ont été fusionnées", "WARNING_VALUE_ROUNDED_TO_INTEGER": "La valeur de %symbol% a été arrondie à %rounded%", "WARNING_VARIATED_LENGTH_LIMITED_BY_LINKED_RESULT": "Le nombre de résultats est limité par le résultat lié %symbol%", @@ -604,26 +604,29 @@ "INFO_PARENT_PREFIX": "%name% n°%position% : ", "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : ", "ERROR_VERIF_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs", - "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum: %maxV%)", - "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum: %minY%)", + "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", + "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", - "WARNING_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum: %maxV%)", - "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum: %minY%)", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum : %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum : %minY%)", "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", - "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum: %maxDH%)", - "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum: %maxDH%)", - "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum: %minB%)", - "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum: %minB%)", - "ERROR_VERIF_PAB_JETS": "Cloison n°%N% : au moins un jet de type %required% requis", - "ERROR_VERIF_PAB_JETS_DW": "Cloison aval : au moins un jet de type %required% requis", - "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum: %minLB%)", - "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum: %minH%)", - "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum: %minH%)", - "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum: %minPB%)", - "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_JET_DW":"Cloison aval : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET_DW": "Cloison aval : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum : %minLB%)", + "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum : %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", - "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum: %minY%)", + "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", "ERROR_VERIF_SPECIES_KO": "Le franchissement est impossible pour le groupe d'espèces %speciesGroup%", + "INFO_VERIF_SPECIES_OK": "Le franchissement est possible pour le groupe d'espèces %speciesGroup%", "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" } -- GitLab From 79ac9b114db288cb3f99c2aa8d4f962349afb072 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 29 Apr 2020 17:22:45 +0200 Subject: [PATCH 030/101] Update translation for Verificateur --- src/app/formulaire/definition/form-verificateur.ts | 3 +-- src/locale/messages.en.json | 10 ++++++++++ src/locale/messages.fr.json | 10 ++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 413343c32..5da57ecf1 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -1,7 +1,6 @@ -import { IObservable, Nub, Verificateur, CalculatorType } from "jalhyd"; +import { IObservable, Nub, Verificateur } from "jalhyd"; import { SelectFieldCustom } from "../elements/select-field-custom"; -import { SelectField } from '../elements/select-field'; import { FormulaireFixedVar } from "./form-fixedvar"; /** diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index c4d501706..96f93168e 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -617,9 +617,17 @@ "WARNING_VERIF_PAB_DHMAX_JET_DW": "Downwall: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", + "WARNING_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", + "WARNING_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum: %minLB%)", "ERROR_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", + "WARNING_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", + "WARNING_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", + "ERROR_VERIF_PAB_SMIN": "Wall #%NC%, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", + "ERROR_VERIF_PAB_SMIN_DW": "Downwall, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN": "Wall #%NC%, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN_DW": "Downwall, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", "ERROR_VERIF_PAB_YMOY": "Wall #%N%: basin depth %PB% too low (minimum: %minPB%)", "ERROR_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", @@ -627,5 +635,7 @@ "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_SPECIES_KO": "Crossability criteria are not met for species group %speciesGroup%", "INFO_VERIF_SPECIES_OK": "Crossability criteria are met for species group %speciesGroup%", + "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "Wall #%N% is not crossable", + "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "Downwall is not crossable", "WARNING_VERIF_PAR_SPECIES_GROUP": "Species groups 3a, 3b et 7b are discouraged for this pass type" } diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 56eddf83d..cbea22c5c 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -618,9 +618,17 @@ "WARNING_VERIF_PAB_DHMAX_JET_DW": "Cloison aval : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "WARNING_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "WARNING_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum : %minLB%)", "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "WARNING_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", + "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum : %minPB%)", "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", @@ -628,5 +636,7 @@ "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", "ERROR_VERIF_SPECIES_KO": "Le franchissement est impossible pour le groupe d'espèces %speciesGroup%", "INFO_VERIF_SPECIES_OK": "Le franchissement est possible pour le groupe d'espèces %speciesGroup%", + "ERROR_VERIF_PAB_WALLS_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", + "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "La cloison aval n'est pas franchissable", "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" } -- GitLab From 422316c3c2f7ad367affb4ea7273a1ece93a3305 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 30 Apr 2020 10:31:01 +0200 Subject: [PATCH 031/101] Improve HTML entities decoding, and fix wrong --- src/app/app.component.ts | 13 ++++--------- .../generic-select/generic-select.component.html | 2 +- .../select-field-line.component.ts | 3 ++- src/locale/messages.fr.json | 4 ++-- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index c7bd6a30d..92170a313 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -24,6 +24,8 @@ import { DialogSaveSessionComponent } from "./components/dialog-save-session/dia import { QuicknavComponent } from "./components/quicknav/quicknav.component"; import { NotificationsService } from "./services/notifications.service"; +import { decodeHtml } from './util'; + import { HotkeysService, Hotkey } from "angular2-hotkeys"; import { MatomoInjector, MatomoTracker } from "ngx-matomo"; @@ -268,13 +270,6 @@ export class AppComponent implements OnInit, OnDestroy, Observer { } } - /** clodo trick @see https://www.julesgaston.fr/encoder-decoder-entites-html-entities-javascript/ */ - public static decodeHTMLEntities(text: string): string { - const textArea = document.createElement("textarea"); - textArea.innerHTML = text; - return textArea.value; - } - /** * Triggered at app startup. * Preferences are loaded by app setup service @@ -338,11 +333,11 @@ export class AppComponent implements OnInit, OnDestroy, Observer { } public getCalculatorLabel(t: CalculatorType) { - return AppComponent.decodeHTMLEntities(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); + return decodeHtml(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); } public getFullCalculatorTitle(calc: { title: string, type: CalculatorType, active?: boolean }): string { - return AppComponent.decodeHTMLEntities(calc.title + " (" + this.getCalculatorLabel(calc.type) + ")"); + return decodeHtml(calc.title + " (" + this.getCalculatorLabel(calc.type) + ")"); } public get calculators() { diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index 8c352a2cf..7ce468d11 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -1,7 +1,7 @@ <mat-form-field> <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple" [disabled]="isDisabled"> <mat-select-trigger *ngIf="isMultiple"> - {{ selectedValue && selectedValue[0] ? selectedValue[0].label : '' }} + {{ selectedValue && selectedValue[0] ? entryLabel(selectedValue[0]) : '' }} <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) </span> diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index 09d05640b..b438c0256 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -5,6 +5,7 @@ import { SelectEntry } from "../../formulaire/elements/select-entry"; import { I18nService } from "../../services/internationalisation.service"; import { ApplicationSetupService } from "../../services/app-setup.service"; import { SelectFieldCustom } from "../../formulaire/elements/select-field-custom"; +import { decodeHtml } from "../../util"; @Component({ selector: "select-field-line", @@ -46,7 +47,7 @@ export class SelectFieldLineComponent implements OnInit { } protected entryLabel(entry: SelectEntry): string { - return entry.label; + return decodeHtml(entry.label); } public get selectedValue(): SelectEntry | SelectEntry[] { diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index cbea22c5c..fe6856a2e 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -487,7 +487,7 @@ "INFO_REMOUSRESULTS_TIRANT": "Tirant d'eau (m)", "INFO_REMOUSRESULTS_TIRANTCRITIQUE": "Tirant d'eau critique", "INFO_REMOUSRESULTS_TIRANTNORMAL": "Tirant d'eau normal", - "INFO_REPORT_BUG_BODY": "Ceci est un rapport d'erreur.\n\nMerci de décrire rapidement ci-dessous le problème rencontré, et les étapes qui vous y ont mené :\n\n\n\n\n--- État de la session en cours - ne pas modifier le texte ci-dessous ---\n--------------------------------------------------------------------------------------------\n\n", + "INFO_REPORT_BUG_BODY": "Ceci est un rapport d'erreur.\n\nMerci de décrire rapidement ci-dessous le problème rencontré, et les étapes qui vous y ont mené:\n\n\n\n\n--- État de la session en cours - ne pas modifier le texte ci-dessous ---\n--------------------------------------------------------------------------------------------\n\n", "INFO_REPORT_BUG_SUBJECT": "Rapport d'erreur", "INFO_REQUIRES": "dépend de", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Exporter en XLSX", @@ -539,7 +539,7 @@ "INFO_THEME_VERIFICATION_TITRE": "Vérification de passes", "INFO_TITREJOURNAL": "Journal de calcul", "INFO_TITREJOURNAL_GLOBAL": "Synthèse du journal de calcul", - "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par le pôle R&D écohydraulique regroupant l'<a href=\"https ://ofb.gouv.fr\" target=\"_blank\">OFB</a> (Office Français de la Biodiversité) et l’<a href=\"https ://www.imft.fr\" target=\"_blank\">IMFT</a> (Institut de mécanique des fluides de Toulouse) et par l'<a href=\"http ://g-eau.fr\" target=\"_blank\">UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception des dispositifs de franchissement piscicoles pour la montaison et la dévalaison ainsi que des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs/fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs/fr/index.html\" target=\"_blank\">documentation</a>.</p>", + "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par le pôle R&D écohydraulique regroupant l'<a href=\"https://ofb.gouv.fr\" target=\"_blank\">OFB</a> (Office Français de la Biodiversité) et l’<a href=\"https://www.imft.fr\" target=\"_blank\">IMFT</a> (Institut de mécanique des fluides de Toulouse) et par l'<a href=\"http://g-eau.fr\" target=\"_blank\">UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception des dispositifs de franchissement piscicoles pour la montaison et la dévalaison ainsi que des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs/fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs/fr/index.html\" target=\"_blank\">documentation</a>.</p>", "INFO_WELCOME_SUBTITLE": "Modules de calcul d'hydraulique", "INFO_EXAMPLE_LABEL_CHANNEL_FLOW": "Débit d'un chenal avec ouvrages", "INFO_EXAMPLE_LABEL_PAB_COMPLETE": "Passe à bassins type", -- GitLab From 025c9f469de9543dae85812abfbf114780bf868a Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 30 Apr 2020 11:38:57 +0200 Subject: [PATCH 032/101] Enhance translation i18nService: detect and translate ENUM_X and FORM_ID_Y in regular messages update Verificateur messages and fish species list --- .../elements/select-field-custom.ts | 2 +- .../services/internationalisation.service.ts | 18 +++++++- src/locale/messages.en.json | 46 ++++++++++--------- src/locale/messages.fr.json | 46 ++++++++++--------- 4 files changed, 66 insertions(+), 46 deletions(-) diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 86d32757d..3320cf8b8 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -146,7 +146,7 @@ export class SelectFieldCustom extends SelectField { new SelectEntry( this._entriesBaseId + spgId, FishSpecies[j], - ServiceFactory.instance.i18nService.localizeText("INFO_ENUM_" + FishSpecies[j]) + " (" + spgId + ")" + ServiceFactory.instance.i18nService.localizeText("INFO_ENUM_" + FishSpecies[j]) ) ); } diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 5ba795217..45fbe17cd 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -143,7 +143,7 @@ export class I18nService extends Observable implements Observer { public localizeMessage(r: Message, nDigits: number = 3): string { let text: string; let m: string = this.getMessageFromCode(r.code); - + // replace %X% by formatted value of extraVar.X for (const k in r.extraVar) { if (r.extraVar.hasOwnProperty(k)) { const v: any = r.extraVar[k]; @@ -167,6 +167,21 @@ export class I18nService extends Observable implements Observer { m = this.replaceAll(m, "%" + k + "%", s); } } + // replace "ENUM_X_Y" by translated enum value; + // example for lang "fr" : "ENUM_SPECIES_6" => "INFO_ENUM_SPECIES_6" => "Ombre commun" + m = m.replace(/(ENUM_[^ ,;\.]+)/g, (match, p1) => { + return this.localizeText("INFO_" + p1); + }); + + // replace "FORM_ID_X" by form name in current session, if any + m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { + const form = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(p1); // cannot inject FormulaireService => cyclic dependency :/ + let formName = "**UNKNOWN_FORM**"; + if (form !== undefined) { + formName = form.calculatorName; + } + return formName; + }); // replace "ENUM_X_Y" by translated enum value; // example for lang "fr" : "ENUM_SPECIES_6" => "INFO_ENUM_SPECIES_6" => "Ombre commun" @@ -239,6 +254,7 @@ export class I18nService extends Observable implements Observer { /** * Met en forme un result en fonction du libellé qui l'accompagne * Les result avec le terme "ENUM_" sont traduit avec le message INFO_ENUM_[Nom de la variable après ENUM_] + * Exemple pour la langue "fr" : "ENUM_STRUCTUREFLOWREGIME_1" => "INFO_ENUM_STRUCTUREFLOWREGIME_1" => "Partiellement noyé" */ public formatResult(label: string, value: number): string { if (value === undefined) { diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 96f93168e..132e2b4f1 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -139,26 +139,26 @@ "INFO_ENUM_OUVRAGE_Q_REGIME_3": "Zero flow", "INFO_ENUM_PARFLOWREGIME_0": "Free", "INFO_ENUM_PARFLOWREGIME_1": "Submerged", - "INFO_ENUM_SPECIES_1": "Salmon, trout [50-100]", - "INFO_ENUM_SPECIES_2": "Mules", - "INFO_ENUM_SPECIES_3a": "Great Shad", - "INFO_ENUM_SPECIES_3b": "Shad shad", - "INFO_ENUM_SPECIES_3c": "Sea lamprey", - "INFO_ENUM_SPECIES_4a": "Trout [25-55]", - "INFO_ENUM_SPECIES_4b": "River trout [15-30]", - "INFO_ENUM_SPECIES_5": "Aspe, pike", - "INFO_ENUM_SPECIES_6": "Common Shadow", - "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu", - "INFO_ENUM_SPECIES_7b": "River Lamprey", - "INFO_ENUM_SPECIES_8a": "Common Carp", - "INFO_ENUM_SPECIES_8b": "Common bream, pike-perch", - "INFO_ENUM_SPECIES_8c": "Brim bream, ide, monkfish, perch, tench", - "INFO_ENUM_SPECIES_8d": "Vandoises", - "INFO_ENUM_SPECIES_9a": "Ablette, cockle, carrassin, roach...", - "INFO_ENUM_SPECIES_9b": "Apron, sculpins, bolts, loche...", - "INFO_ENUM_SPECIES_10": "Able, cowherd, stickleback, minnows", - "INFO_ENUM_SPECIES_11a": "European eel [yellow]", - "INFO_ENUM_SPECIES_11b": "European Eel [glass eel]", + "INFO_ENUM_SPECIES_1": "Salmon, trout [50-100] (1)", + "INFO_ENUM_SPECIES_2": "Mules (2)", + "INFO_ENUM_SPECIES_3a": "Great Shad (3a)", + "INFO_ENUM_SPECIES_3b": "Shad shad (3b)", + "INFO_ENUM_SPECIES_3c": "Sea lamprey (3c)", + "INFO_ENUM_SPECIES_4a": "Trout [25-55] (4a)", + "INFO_ENUM_SPECIES_4b": "River trout [15-30] (4b)", + "INFO_ENUM_SPECIES_5": "Aspe, pike (5)", + "INFO_ENUM_SPECIES_6": "Common Shadow (6)", + "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu (7a)", + "INFO_ENUM_SPECIES_7b": "River Lamprey (7b)", + "INFO_ENUM_SPECIES_8a": "Common Carp (8a)", + "INFO_ENUM_SPECIES_8b": "Common bream, pike-perch (8b)", + "INFO_ENUM_SPECIES_8c": "Brim bream, ide, monkfish, perch, tench (8c)", + "INFO_ENUM_SPECIES_8d": "Vandoises (8d)", + "INFO_ENUM_SPECIES_9a": "Ablette, cockle, carrassin, roach... (9a)", + "INFO_ENUM_SPECIES_9b": "Apron, sculpins, bolts, loche... (9b)", + "INFO_ENUM_SPECIES_10": "Able, cowherd, stickleback, minnows (10)", + "INFO_ENUM_SPECIES_11a": "European eel [yellow] (11a)", + "INFO_ENUM_SPECIES_11b": "European Eel [glass eel] (11b)", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Weir", "INFO_ENUM_STRUCTUREFLOWMODE_1": "Orifice", "INFO_ENUM_STRUCTUREFLOWMODE_2": "Zero flow", @@ -633,8 +633,10 @@ "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", - "ERROR_VERIF_SPECIES_KO": "Crossability criteria are not met for species group %speciesGroup%", - "INFO_VERIF_SPECIES_OK": "Crossability criteria are met for species group %speciesGroup%", + "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", + "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", + "ERROR_VERIF_SPECIES_NUB_KO": "Crossability criteria are not met for custom species FORM_ID_%uid%", + "INFO_VERIF_SPECIES_NUB_OK": "Crossability criteria are met for custom species FORM_ID_%uid%", "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "Wall #%N% is not crossable", "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "Downwall is not crossable", "WARNING_VERIF_PAR_SPECIES_GROUP": "Species groups 3a, 3b et 7b are discouraged for this pass type" diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index fe6856a2e..d2d4687f2 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -139,26 +139,26 @@ "INFO_ENUM_OUVRAGE_Q_REGIME_3": "Débit nul", "INFO_ENUM_PARFLOWREGIME_0": "Dénoyé", "INFO_ENUM_PARFLOWREGIME_1": "Noyé", - "INFO_ENUM_SPECIES_1": "Saumon, truite [50-100]", - "INFO_ENUM_SPECIES_2": "Mulets", - "INFO_ENUM_SPECIES_3a": "Grande Alose", - "INFO_ENUM_SPECIES_3b": "Alose feinte", - "INFO_ENUM_SPECIES_3c": "Lamproie marine", - "INFO_ENUM_SPECIES_4a": "Truite [25-55]", - "INFO_ENUM_SPECIES_4b": "Truite de rivière [15-30]", - "INFO_ENUM_SPECIES_5": "Aspe, brochet", - "INFO_ENUM_SPECIES_6": "Ombre commun", - "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu", - "INFO_ENUM_SPECIES_7b": "Lamproie fluviatile", - "INFO_ENUM_SPECIES_8a": "Carpe commune", - "INFO_ENUM_SPECIES_8b": "Brème commune, sandre", - "INFO_ENUM_SPECIES_8c": "Brème bordelière, ide, lotte, perche, tanche", - "INFO_ENUM_SPECIES_8d": "Vandoises", - "INFO_ENUM_SPECIES_9a": "Ablette, blageon, carrassin, gardon...", - "INFO_ENUM_SPECIES_9b": "Apron, chabots, goujons, loche...", - "INFO_ENUM_SPECIES_10": "Able, bouvière, épinoche(tte), vairons", - "INFO_ENUM_SPECIES_11a": "Anguille européenne [jaune]", - "INFO_ENUM_SPECIES_11b": "Anguille européenne [civelle]", + "INFO_ENUM_SPECIES_1": "Saumon, truite [50-100] (1)", + "INFO_ENUM_SPECIES_2": "Mulets (2)", + "INFO_ENUM_SPECIES_3a": "Grande Alose (3a)", + "INFO_ENUM_SPECIES_3b": "Alose feinte (3b)", + "INFO_ENUM_SPECIES_3c": "Lamproie marine (3c)", + "INFO_ENUM_SPECIES_4a": "Truite [25-55] (4a)", + "INFO_ENUM_SPECIES_4b": "Truite de rivière [15-30] (4b)", + "INFO_ENUM_SPECIES_5": "Aspe, brochet (5)", + "INFO_ENUM_SPECIES_6": "Ombre commun (6)", + "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu (7a)", + "INFO_ENUM_SPECIES_7b": "Lamproie fluviatile (7b)", + "INFO_ENUM_SPECIES_8a": "Carpe commune (8a)", + "INFO_ENUM_SPECIES_8b": "Brème commune, sandre (8b)", + "INFO_ENUM_SPECIES_8c": "Brème bordelière, ide, lotte, perche, tanche (8c)", + "INFO_ENUM_SPECIES_8d": "Vandoises (8d)", + "INFO_ENUM_SPECIES_9a": "Ablette, blageon, carrassin, gardon... (9a)", + "INFO_ENUM_SPECIES_9b": "Apron, chabots, goujons, loche... (9b)", + "INFO_ENUM_SPECIES_10": "Able, bouvière, épinoche(tte), vairons (10)", + "INFO_ENUM_SPECIES_11a": "Anguille européenne [jaune] (11a)", + "INFO_ENUM_SPECIES_11b": "Anguille européenne [civelle] (11b)", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Surface libre", "INFO_ENUM_STRUCTUREFLOWMODE_1": "En charge", "INFO_ENUM_STRUCTUREFLOWMODE_2": "Débit nul", @@ -634,8 +634,10 @@ "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", - "ERROR_VERIF_SPECIES_KO": "Le franchissement est impossible pour le groupe d'espèces %speciesGroup%", - "INFO_VERIF_SPECIES_OK": "Le franchissement est possible pour le groupe d'espèces %speciesGroup%", + "ERROR_VERIF_SPECIES_GROUP_KO": "Le franchissement est impossible pour le groupe d'espèces ENUM_%speciesGroup%", + "INFO_VERIF_SPECIES_GROUP_OK": "Le franchissement est possible pour le groupe d'espèces ENUM_%speciesGroup%", + "ERROR_VERIF_SPECIES_NUB_KO": "Le franchissement est impossible pour l'espèce personnalisée FORM_ID_%uid%", + "INFO_VERIF_SPECIES_NUB_OK": "Le franchissement est possible pour l'espèce personnalisée FORM_ID_%uid%", "ERROR_VERIF_PAB_WALLS_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "La cloison aval n'est pas franchissable", "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" -- GitLab From eeccb00a5fb07269d4095bcc9ab9336ae52cb4dd Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 30 Apr 2020 11:52:26 +0200 Subject: [PATCH 033/101] Modules diagram: added Verificateur links --- .../modules-diagram.component.ts | 20 ++++++++++++++++++- src/locale/messages.en.json | 2 ++ src/locale/messages.fr.json | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/app/components/modules-diagram/modules-diagram.component.ts b/src/app/components/modules-diagram/modules-diagram.component.ts index 150764b20..0ec976df7 100644 --- a/src/app/components/modules-diagram/modules-diagram.component.ts +++ b/src/app/components/modules-diagram/modules-diagram.component.ts @@ -18,7 +18,10 @@ import { Nub, MacrorugoCompound, Pab, - Solveur + Solveur, + Verificateur, + Espece, + FishSpecies } from "jalhyd"; import { I18nService } from "../../services/internationalisation.service"; @@ -222,6 +225,21 @@ export class ModulesDiagramComponent implements AfterContentInit, AfterViewCheck def.push(nub.uid + "-->|" + finds + ":" + sp.symbol + "|" + sp.parentNub.uid); } } + // add Verificateur links + if (nub instanceof Verificateur) { + const ntv = nub.nubToVerify; + const sp = nub.species.filter((sp) => { + return sp.species === FishSpecies.SPECIES_CUSTOM; + }); + const verifiesPass = this.intlService.localizeText("INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS"); + const verifiesSpecies = this.intlService.localizeText("INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES"); + if (ntv !== undefined) { + def.push(nub.uid + "-->|" + verifiesPass + "|" + ntv.uid); + } + for (const s of sp) { + def.push(nub.uid + "-->|" + verifiesSpecies + "|" + s.uid); + } + } } return def.join("\n"); diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 132e2b4f1..5820aaabf 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -98,6 +98,8 @@ "INFO_DEVER_TITRE": "Free flow weir stage-discharge laws", "INFO_DIAGRAM_SOLVEUR_FINDS": "finds", "INFO_DIAGRAM_SOLVEUR_READS": "reads", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS": "verifies pass", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES": "verifies species", "INFO_DIAGRAM_TITLE": "Calculation modules diagram", "INFO_DIAGRAM_DRAWING_ERROR": "Error while drawing diagram", "INFO_DIAGRAM_CALCULATED_PARAM": "calculated parameter", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index d2d4687f2..08262706c 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -98,6 +98,8 @@ "INFO_DEVER_TITRE": "Lois de déversoirs dénoyés", "INFO_DIAGRAM_SOLVEUR_FINDS": "trouve", "INFO_DIAGRAM_SOLVEUR_READS": "lit", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS": "vérifie la passe", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES": "vérifie les espèces", "INFO_DIAGRAM_TITLE": "Diagramme des modules de calcul", "INFO_DIAGRAM_DRAWING_ERROR": "Erreur lors du dessin du diagramme", "INFO_DIAGRAM_CALCULATED_PARAM": "paramètre calculé", -- GitLab From 2597f59f95744a486155f868448ae6033219473c Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 30 Apr 2020 12:07:09 +0200 Subject: [PATCH 034/101] Update translation --- src/locale/messages.en.json | 3 +++ src/locale/messages.fr.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 5820aaabf..9184c785d 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -555,6 +555,7 @@ "INFO_TRIGO_TITRE": "Trigonometric function", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", "INFO_VERIF_OK": "Crossing criteria are met for all species", + "WARNING_VERIF_OK_BUT": "Crossing criteria are met for all species, but there are warnings", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", @@ -636,8 +637,10 @@ "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", + "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", "ERROR_VERIF_SPECIES_NUB_KO": "Crossability criteria are not met for custom species FORM_ID_%uid%", + "WARNING_VERIF_SPECIES_NUB_OK_BUT": "Crossability criteria are met for custom species FORM_ID_%uid%, but there are warnings", "INFO_VERIF_SPECIES_NUB_OK": "Crossability criteria are met for custom species FORM_ID_%uid%", "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "Wall #%N% is not crossable", "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "Downwall is not crossable", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 08262706c..af5843891 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -556,6 +556,7 @@ "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", + "WARNING_VERIF_OK_BUT": "Les critères de franchissement sont remplis pour toutes les espèces, mais il y a des avertissements", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", @@ -637,8 +638,10 @@ "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", "ERROR_VERIF_SPECIES_GROUP_KO": "Le franchissement est impossible pour le groupe d'espèces ENUM_%speciesGroup%", + "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Le franchissement est possible pour le groupe d'espèces ENUM_%speciesGroup%, mais il y a des avertissements", "INFO_VERIF_SPECIES_GROUP_OK": "Le franchissement est possible pour le groupe d'espèces ENUM_%speciesGroup%", "ERROR_VERIF_SPECIES_NUB_KO": "Le franchissement est impossible pour l'espèce personnalisée FORM_ID_%uid%", + "WARNING_VERIF_SPECIES_NUB_OK_BUT": "Le franchissement est possible pour l'espèce personnalisée FORM_ID_%uid%, mais il y a des avertissements", "INFO_VERIF_SPECIES_NUB_OK": "Le franchissement est possible pour l'espèce personnalisée FORM_ID_%uid%", "ERROR_VERIF_PAB_WALLS_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "La cloison aval n'est pas franchissable", -- GitLab From 3d1b89a5099210ffd5b3e8f523c65907e607479d Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 30 Apr 2020 14:46:43 +0200 Subject: [PATCH 035/101] Verificateur: fix bug in custom species reference loading --- src/app/formulaire/definition/form-verificateur.ts | 6 ------ src/app/formulaire/elements/select-field-custom.ts | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 5da57ecf1..a55e3357e 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -37,10 +37,4 @@ export class FormulaireVerificateur extends FormulaireFixedVar { } } - protected compute() { - this.runNubCalc(this.currentNub); - this.reaffectResultComponents(); - // do not refreshFieldsets() (useless here) or jet type selector's disabled state will be reset - } - } diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 3320cf8b8..270fb2b79 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -130,7 +130,7 @@ export class SelectFieldCustom extends SelectField { for (const en of especeNubs) { this.addEntry( new SelectEntry( - en.uid, + this._entriesBaseId + en.uid, en.uid, sprintf( ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), -- GitLab From c59273115e310f88b63ff4a8988d7ab3c07037dd Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 30 Apr 2020 14:54:22 +0200 Subject: [PATCH 036/101] Update translation --- src/locale/messages.fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index af5843891..fb1deb92f 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -99,7 +99,7 @@ "INFO_DIAGRAM_SOLVEUR_FINDS": "trouve", "INFO_DIAGRAM_SOLVEUR_READS": "lit", "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS": "vérifie la passe", - "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES": "vérifie les espèces", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES": "vérifie l'espèce", "INFO_DIAGRAM_TITLE": "Diagramme des modules de calcul", "INFO_DIAGRAM_DRAWING_ERROR": "Erreur lors du dessin du diagramme", "INFO_DIAGRAM_CALCULATED_PARAM": "paramètre calculé", -- GitLab From 586f65259b85d3f3e604d33a3202e2170e3c6c45 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 4 May 2020 13:46:34 +0200 Subject: [PATCH 037/101] Added VerificateurResults improved calculator results organization updated e2e --- e2e/calc-all-examples.e2e-spec.ts | 2 +- e2e/calculator.po.ts | 2 + src/app/app.module.ts | 2 + .../calculator-results.component.html | 13 +- .../calculator-results.component.ts | 85 ++++++--- .../fixedvar-results/results.component.ts | 4 - .../jet-results/jet-results.component.ts | 3 +- .../pab-results/pab-results.component.ts | 2 +- .../remous-results.component.ts | 5 - .../section-results.component.html | 19 +++ .../section-results.component.ts | 58 +++---- .../verificateur-results.component.html | 8 + .../verificateur-results.component.scss | 0 .../verificateur-results.component.ts | 161 ++++++++++++++++++ src/app/formulaire/definition/form-pab.ts | 2 +- .../definition/form-verificateur.ts | 61 ++++++- src/app/results/param-calc-results.ts | 2 +- src/app/results/verificateur-results.ts | 14 ++ 18 files changed, 362 insertions(+), 81 deletions(-) create mode 100644 src/app/components/verificateur-results/verificateur-results.component.html create mode 100644 src/app/components/verificateur-results/verificateur-results.component.scss create mode 100644 src/app/components/verificateur-results/verificateur-results.component.ts create mode 100644 src/app/results/verificateur-results.ts diff --git a/e2e/calc-all-examples.e2e-spec.ts b/e2e/calc-all-examples.e2e-spec.ts index 31a63bbab..7f6fbc861 100644 --- a/e2e/calc-all-examples.e2e-spec.ts +++ b/e2e/calc-all-examples.e2e-spec.ts @@ -6,7 +6,7 @@ import { browser, by, element } from "protractor"; /** * Calculate all modules of all examples */ -describe("ngHyd − calculate all modules of all examples −", async () => { +describe("ngHyd − example sessions −", async () => { let listPage: ListPage; let calcPage: CalculatorPage; diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index 1edff79f8..2639f2077 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -125,6 +125,8 @@ export class CalculatorPage { || await element(by.css("fixedvar-results results-chart > chart-results-container")).isPresent() || + await element(by.css("section-results fixed-results > .fixed-results-container")).isPresent() + || await element(by.css("remous-results #main-chart")).isPresent() || await element(by.css("pab-results pab-results-table")).isPresent() diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 6e9d00408..2fb9161a8 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -72,6 +72,7 @@ import { SectionCanvasComponent } from "./components/section-canvas/section-canv import { RemousResultsComponent } from "./components/remous-results/remous-results.component"; import { ResultsChartComponent } from "./components/results-chart/results-chart.component"; import { PabResultsComponent } from "./components/pab-results/pab-results.component"; +import { VerificateurResultsComponent } from "./components/verificateur-results/verificateur-results.component"; import { PabResultsTableComponent } from "./components/pab-results/pab-results-table.component"; import { ChartTypeSelectComponent } from "./components/results-chart/chart-type.component"; import { LogComponent } from "./components/log/log.component"; @@ -215,6 +216,7 @@ const appRoutes: Routes = [ NgParamInputComponent, PabProfileChartComponent, PabResultsComponent, + VerificateurResultsComponent, PabResultsTableComponent, PabTableComponent, VariableResultsSelectorComponent, diff --git a/src/app/components/calculator-results/calculator-results.component.html b/src/app/components/calculator-results/calculator-results.component.html index e15f90423..319b3eab3 100644 --- a/src/app/components/calculator-results/calculator-results.component.html +++ b/src/app/components/calculator-results/calculator-results.component.html @@ -1,8 +1,9 @@ <div> - <section-results></section-results> - <remous-results></remous-results> - <pab-results></pab-results> - <macrorugo-compound-results></macrorugo-compound-results> - <jet-results></jet-results> - <fixedvar-results></fixedvar-results> + <section-results [hidden]="! isSP"></section-results> + <remous-results [hidden]="! isRemous"></remous-results> + <pab-results [hidden]="! isPAB"></pab-results> + <verificateur-results [hidden]="! isVerificateur"></verificateur-results> + <macrorugo-compound-results [hidden]="! isMRC"></macrorugo-compound-results> + <jet-results [hidden]="! isJet"></jet-results> + <fixedvar-results [hidden]="! showGenericResults"></fixedvar-results> </div> diff --git a/src/app/components/calculator-results/calculator-results.component.ts b/src/app/components/calculator-results/calculator-results.component.ts index 133296818..09df29e7e 100644 --- a/src/app/components/calculator-results/calculator-results.component.ts +++ b/src/app/components/calculator-results/calculator-results.component.ts @@ -8,6 +8,9 @@ import { MacrorugoCompoundResultsComponent } from "../macrorugo-compound-results import { FormulaireDefinition } from "../../formulaire/definition/form-definition"; import { JetResultsComponent } from "../jet-results/jet-results.component"; import { GenericCalculatorComponent } from "../generic-calculator/calculator.component"; +import { VerificateurResultsComponent } from "../verificateur-results/verificateur-results.component"; + +import { CalculatorType } from 'jalhyd'; @Component({ selector: "calc-results", @@ -41,6 +44,12 @@ export class CalculatorResultsComponent implements AfterViewChecked { @ViewChild(PabResultsComponent, { static: true }) private pabResultsComponent: PabResultsComponent; + /** + * composant d'affichage des résultats des vérificateurs de critères de franchissement + */ + @ViewChild(VerificateurResultsComponent, { static: true }) + private verificateurResultsComponent: VerificateurResultsComponent; + /** * composant d'affichage des résultats des passes à macrorugosités complexes */ @@ -63,45 +72,75 @@ export class CalculatorResultsComponent implements AfterViewChecked { @Inject(forwardRef(() => GenericCalculatorComponent)) private calculatorComponent: GenericCalculatorComponent ) { } + // @TODO this system is sh*tty ! public set formulaire(f: FormulaireDefinition) { this._formulaire = f; if (this._formulaire === undefined) { this.fixedVarResultsComponent.results = undefined; - this.sectionResultsComponent.results = undefined; - this.remousResultsComponent.results = undefined; - this.pabResultsComponent.results = undefined; - this.mrcResultsComponent.results = undefined; this.jetResultsComponent.results = undefined; + this.mrcResultsComponent.results = undefined; + this.pabResultsComponent.results = undefined; + this.remousResultsComponent.results = undefined; + this.sectionResultsComponent.results = undefined; + this.verificateurResultsComponent.results = undefined; } else { - this.sectionResultsComponent.results = f.results; - this.remousResultsComponent.results = f.results; - this.pabResultsComponent.results = f.results; - this.mrcResultsComponent.results = f.results; - // FixedVar and Jet are mutually incompatible (the 2nd extend the 1st) - if (this.isJet) { - this.jetResultsComponent.results = f.results; - this.fixedVarResultsComponent.results = undefined; - } else { - this.fixedVarResultsComponent.results = f.results; - this.jetResultsComponent.results = undefined; - } + if (this.showGenericResults) this.fixedVarResultsComponent.results = f.results; + if (this.isJet) this.jetResultsComponent.results = f.results; + if (this.isMRC) this.mrcResultsComponent.results = f.results; + if (this.isPAB) this.pabResultsComponent.results = f.results; + if (this.isRemous) this.remousResultsComponent.results = f.results; + if (this.isSP) this.sectionResultsComponent.results = f.results; + if (this.isVerificateur) this.verificateurResultsComponent.results = f.results; } } public updateView() { - this.fixedVarResultsComponent.updateView(); - this.sectionResultsComponent.updateView(); - this.remousResultsComponent.updateView(); - this.pabResultsComponent.updateView(); - this.mrcResultsComponent.updateView(); - this.jetResultsComponent.updateView(); + if (this.showGenericResults) this.fixedVarResultsComponent.updateView(); + if (this.isJet) this.jetResultsComponent.updateView(); + if (this.isMRC) this.mrcResultsComponent.updateView(); + if (this.isPAB) this.pabResultsComponent.updateView(); + if (this.isRemous) this.remousResultsComponent.updateView(); + if (this.isSP) this.sectionResultsComponent.updateView(); + if (this.isVerificateur) this.verificateurResultsComponent.updateView(); } public ngAfterViewChecked() { this.afterViewChecked.emit(); } - public get isJet() { + /** Should we show the default FixedVarResultsComponent ? */ + public get showGenericResults(): boolean { + return ( + ! this.isJet + && ! this.isMRC + && ! this.isPAB + && ! this.isRemous + && ! this.isSP + && ! this.isVerificateur + ) + } + + public get isJet(): boolean { return this.calculatorComponent.isJet; } + + public get isMRC(): boolean { + return this.calculatorComponent.isMRC; + } + + public get isPAB(): boolean { + return this.calculatorComponent.isPAB; + } + + public get isRemous(): boolean { + return this.calculatorComponent.is(CalculatorType.CourbeRemous); + } + + public get isSP(): boolean { + return this.calculatorComponent.is(CalculatorType.SectionParametree); + } + + public get isVerificateur(): boolean { + return this.calculatorComponent.is(CalculatorType.Verificateur); + } } diff --git a/src/app/components/fixedvar-results/results.component.ts b/src/app/components/fixedvar-results/results.component.ts index e1829e929..550cff912 100644 --- a/src/app/components/fixedvar-results/results.component.ts +++ b/src/app/components/fixedvar-results/results.component.ts @@ -15,10 +15,6 @@ export class ResultsComponentDirective { /** max number of decimals for auto-adjusting charts axis graduations */ public static CHARTS_AXIS_PRECISION = 10; - public constructor() { - const sf = <Screenfull>screenfull; - } - /** tracks the fullscreen state */ public get isFullscreen() { const sf = <Screenfull>screenfull; diff --git a/src/app/components/jet-results/jet-results.component.ts b/src/app/components/jet-results/jet-results.component.ts index 50d8a1a1d..28ecd927c 100644 --- a/src/app/components/jet-results/jet-results.component.ts +++ b/src/app/components/jet-results/jet-results.component.ts @@ -46,8 +46,7 @@ export class JetResultsComponent extends FixedVarResultsComponent { protected updateResults() { const superUpdated = super.updateResults(); - let trajectoryChartUpdated: boolean; - trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; + let trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; if (trajectoryChartUpdated) { // draw chart whether params are variating or not, diff --git a/src/app/components/pab-results/pab-results.component.ts b/src/app/components/pab-results/pab-results.component.ts index fe282c196..79551c24d 100644 --- a/src/app/components/pab-results/pab-results.component.ts +++ b/src/app/components/pab-results/pab-results.component.ts @@ -66,7 +66,7 @@ export class PabResultsComponent implements DoCheck { /** * update results table and chart when the variable index changed (event sent by - * PabVariableResultsSelectorComponent); variable index is already set in + * VariableResultsSelectorComponent); variable index is already set in * pabResults at this time */ public variableIndexChanged() { diff --git a/src/app/components/remous-results/remous-results.component.ts b/src/app/components/remous-results/remous-results.component.ts index 1e2f8d7b3..db14a54ce 100644 --- a/src/app/components/remous-results/remous-results.component.ts +++ b/src/app/components/remous-results/remous-results.component.ts @@ -141,11 +141,6 @@ export class RemousResultsComponent extends ResultsComponentDirective implements return this._tableHeaders; } - public getResultClass(i: number) { - // tslint:disable-next-line:no-bitwise - return "result_id_" + String(i & 1); - } - public get hasResults(): boolean { return this._remousResults !== undefined && this._remousResults.hasResults; } diff --git a/src/app/components/section-results/section-results.component.html b/src/app/components/section-results/section-results.component.html index 04625e227..7911644b1 100644 --- a/src/app/components/section-results/section-results.component.html +++ b/src/app/components/section-results/section-results.component.html @@ -1,4 +1,5 @@ <div class="section-results-container" #sectionResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> + <div fxFlex="1 1 100%"> <div class="section-results-buttons"> <button mat-icon-button (click)="exportAsImage(sectionResults)" [title]="uitextExportImageTitle"> @@ -18,3 +19,21 @@ </div> </div> </div> + +<div class="container"> + <!-- journal --> + <log></log> + + <results-chart *ngIf="showVarResults"></results-chart> + <!--<results-chart [hidden]="! showVarResultsChart"></results-chart>--> + + <div> + <!-- table des résultats fixés --> + <fixed-results [results]=fixedResults></fixed-results> + + <!-- table des résultats variés --> + <div *ngIf="showVarResults"> + <var-results [results]=varResults></var-results> + </div> + </div> +</div> diff --git a/src/app/components/section-results/section-results.component.ts b/src/app/components/section-results/section-results.component.ts index 130f45e7f..ea10156d3 100644 --- a/src/app/components/section-results/section-results.component.ts +++ b/src/app/components/section-results/section-results.component.ts @@ -5,9 +5,9 @@ import { ResultElement } from "jalhyd"; import { SectionCanvasComponent } from "../section-canvas/section-canvas.component"; import { SectionResults } from "../../results/section-results"; import { CalculatorResults } from "../../results/calculator-results"; -import { ResultsComponentDirective } from "../fixedvar-results/results.component"; import { I18nService } from "../../services/internationalisation.service"; import { AppComponent } from "../../app.component"; +import { FixedVarResultsComponent } from '../fixedvar-results/fixedvar-results.component'; @Component({ selector: "section-results", @@ -16,7 +16,7 @@ import { AppComponent } from "../../app.component"; "./section-results.component.scss" ] }) -export class SectionResultsComponent extends ResultsComponentDirective implements DoCheck { +export class SectionResultsComponent extends FixedVarResultsComponent implements DoCheck { constructor( private intlService: I18nService, @@ -26,6 +26,7 @@ export class SectionResultsComponent extends ResultsComponentDirective implement } public set results(rs: CalculatorResults[]) { + super.results = rs; this._resultElement = undefined; this._results = undefined; if (rs) { @@ -68,28 +69,17 @@ export class SectionResultsComponent extends ResultsComponentDirective implement */ private _resultElement: ResultElement; - private _doUpdate = false; - @ViewChild(SectionCanvasComponent) - private _sectionCanvas: SectionCanvasComponent; + private _sectionCanvasComponent: SectionCanvasComponent; public updateView() { - if (this._sectionCanvas) { - this._sectionCanvas.reset(); + if (this._sectionCanvasComponent) { + this._sectionCanvasComponent.reset(); } - if (this._results) { this._doUpdate = this._results.hasResults; } - } - - /** - * appelé pour gérer les changements non détectés par Angular - */ - public ngDoCheck() { - if (this._doUpdate) { - this._doUpdate = !this.updateResults(); - } + super.updateView(); } private isSectionLevel(s: string) { @@ -101,17 +91,18 @@ export class SectionResultsComponent extends ResultsComponentDirective implement return false; } - private updateResults() { - if (this._results && this._sectionCanvas) { + protected updateResults() { + const superUpdated = super.updateResults(); + if (this._results && this._sectionCanvasComponent !== undefined) { this._resultElement = new ResultElement(); // compute canvas optimal size the first time - if (this._sectionCanvas.originalSize === undefined) { + if (this._sectionCanvasComponent.originalSize === undefined) { const container = this.element.nativeElement.querySelector(".section-results-container"); const size = Math.min(container.offsetWidth, container.offsetHeight); - this._sectionCanvas.originalSize = size - 17; // 417 - 17 = 400 - this._sectionCanvas.size = this._sectionCanvas.originalSize; + this._sectionCanvasComponent.originalSize = size - 17; // 417 - 17 = 400 + this._sectionCanvasComponent.size = this._sectionCanvasComponent.originalSize; } // traduction des symboles des variables calculées @@ -123,30 +114,25 @@ export class SectionResultsComponent extends ResultsComponentDirective implement this._resultElement.addExtraResult(lbl, er); if (this.isSectionLevel(k)) { - this._sectionCanvas.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]); + this._sectionCanvasComponent.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]); } } } // ajout du tirant d'eau saisi const valY = this._results.result.sourceNub.getParameter("Y").singleValue; - this._sectionCanvas.addLevel(valY, "Y = " + this.formattedValue(valY), SectionResultsComponent.labelColors["Y"]); + this._sectionCanvasComponent.addLevel(valY, "Y = " + this.formattedValue(valY), SectionResultsComponent.labelColors["Y"]); // wait just a little to draw, in case this._sectionCanvas.size was changed above (1st run) setTimeout(() => { if (this._results && this._results.section) { - this._sectionCanvas.section = this._results.section; + this._sectionCanvasComponent.section = this._results.section; } }, 100); - - return true; } - return false; - } - public getResultClass(i: number) { - // tslint:disable-next-line:no-bitwise - return "result_id_" + String(i & 1); + let canvasUpdated = (! this.hasResults || this._sectionCanvasComponent !== undefined); + return superUpdated && canvasUpdated; } public exportAsImage(element: HTMLDivElement) { @@ -155,10 +141,10 @@ export class SectionResultsComponent extends ResultsComponentDirective implement /** redraw canvas on fullscreen state change (scale drawing) */ public fullscreenChange(isFullscreen: boolean) { - this._sectionCanvas.size = this.getContainerSize(! isFullscreen); - this.previousContainerSize = this._sectionCanvas.size; + this._sectionCanvasComponent.size = this.getContainerSize(! isFullscreen); + this.previousContainerSize = this._sectionCanvasComponent.size; setTimeout(() => { - this._sectionCanvas.draw(); + this._sectionCanvasComponent.draw(); }, 100); } @@ -173,7 +159,7 @@ export class SectionResultsComponent extends ResultsComponentDirective implement // when going back from fullscreen mode, container size tends to be // too high for whatever reason; use originalSize on this purpose if (useOriginalSize) { - size = Math.min(size, this._sectionCanvas.originalSize); + size = Math.min(size, this._sectionCanvasComponent.originalSize); } return size; } diff --git a/src/app/components/verificateur-results/verificateur-results.component.html b/src/app/components/verificateur-results/verificateur-results.component.html new file mode 100644 index 000000000..dbe866617 --- /dev/null +++ b/src/app/components/verificateur-results/verificateur-results.component.html @@ -0,0 +1,8 @@ +<div class="container"> + <log #generalLog [logTitle]="uitextGeneralLogTitle">log général</log> + + <variable-results-selector [results]="verificateurResults" (indexChange)="variableIndexChanged()"> + </variable-results-selector> + + <log #iterationLog></log> +</div> diff --git a/src/app/components/verificateur-results/verificateur-results.component.scss b/src/app/components/verificateur-results/verificateur-results.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts new file mode 100644 index 000000000..8a00642cc --- /dev/null +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -0,0 +1,161 @@ +import { Component, ViewChild, DoCheck } from "@angular/core"; + +import { cLog } from "jalhyd"; + +import { LogComponent } from "../log/log.component"; +import { CalculatorResults } from "../../results/calculator-results"; +import { VariableResultsSelectorComponent } from "../variable-results-selector/variable-results-selector.component"; +import { I18nService } from "../../services/internationalisation.service"; +import { VerificateurResults } from "../../results/verificateur-results"; +import { ResultsComponentDirective } from '../fixedvar-results/results.component'; + +@Component({ + selector: "verificateur-results", + templateUrl: "./verificateur-results.component.html", + styleUrls: [ + "./verificateur-results.component.scss" + ] +}) +export class VerificateurResultsComponent extends ResultsComponentDirective implements DoCheck { + + /** résultats non mis en forme */ + private _verificateurResults: VerificateurResults; + + /** true si les résultats doiventt être remis à jour */ + private _doUpdate = false; + + @ViewChild(VariableResultsSelectorComponent) + private variableResultsSelectorComponent: VariableResultsSelectorComponent; + + @ViewChild("generalLog") + private generalLogComponent: LogComponent; + + @ViewChild("iterationLog") + private iterationLogComponent: LogComponent; + + constructor( + private i18nService: I18nService, + ) { + super(); + } + + public set results(rs: CalculatorResults[]) { + this._verificateurResults = undefined; + if (rs.length > 0 && rs[0] instanceof VerificateurResults) { + this._verificateurResults = rs[0] as VerificateurResults; + } + this.updateView(); + } + + /** + * update iteration log when the variable index changed (event sent by + * VariableResultsSelectorComponent); variable index is already set in + * verificateurResults at this time + */ + public variableIndexChanged() { + this.updateView(); + } + + public updateView() { + if (this.iterationLogComponent) { + this.iterationLogComponent.log = undefined; + } + if (this.generalLogComponent) { + this.generalLogComponent.log = undefined; + } + if (this.variableResultsSelectorComponent) { + this.variableResultsSelectorComponent.results = undefined; + } + // set _doUpdate flag so that results are rebuilt on the next Angular display cycle + this._doUpdate = false; + if (this._verificateurResults !== undefined) { + this._doUpdate = this._doUpdate || this._verificateurResults.hasResults || this._verificateurResults.hasLog; + } + } + + public ngDoCheck() { + if (this._doUpdate) { + this._doUpdate = !this.updateResults(); + } + } + + /* + * Retourne les messages à afficher dans le composant de log global, au dessus + * du sélecteur d'itération : messages globaux du Verificateur + */ + private get globalLog(): cLog { + const l = new cLog(); + if (this._verificateurResults && this._verificateurResults.result && this._verificateurResults.result.hasGlobalLog()) { + l.addLog(this._verificateurResults.result.globalLog); + } + return l; + } + + /** + * Retourne les messages à afficher dans le composant de log "du bas" : logs de l'itération + * en cours (messages non-globaux du Vérificateur et eds Espèce), que le résultat varie ou non + */ + private get iterationLog(): cLog { + const l = new cLog(); + if (this._verificateurResults) { + // = 0 lorsque rien ne varie + const vi = this._verificateurResults.variableIndex; + // log du Verificateur pour l'itération en cours + if ( + this._verificateurResults.result + && this._verificateurResults.result.hasResultElements() + && this._verificateurResults.result.resultElements[vi] + && this._verificateurResults.result.resultElements[vi].hasLog() + ) { + l.addLog(this._verificateurResults.result.resultElements[vi].log); + } + // logs des Espece pour l'itération en cours + for (const er of this._verificateurResults.especeResults) { + if (er && er.hasResultElements() && er.resultElements[vi].hasLog()) { + l.addLog(er.resultElements[vi].log); + } + } + } + return l; + } + + /** + * met à jour l'affichage des résultats + * @returns true si les résultats ont pu être mis à jour + */ + private updateResults() { + let selectorUpdated: boolean; + + // results or not, there might be a log + const logUpdated = (this.iterationLogComponent !== undefined || this.generalLogComponent !== undefined); // gne ? + if (logUpdated) { + // order of logs is important ! + this.iterationLogComponent.log = this.iterationLog; + this.generalLogComponent.log = this.globalLog; + } + + if (this.hasResults) { + selectorUpdated = this.variableResultsSelectorComponent !== undefined; + if (selectorUpdated) { + this.variableResultsSelectorComponent.results = this._verificateurResults; + } + } else { + selectorUpdated = true; + } + + return logUpdated && selectorUpdated; + } + + public get verificateurResults() { + return this._verificateurResults; + } + + public get hasResults(): boolean { + return this._verificateurResults && this._verificateurResults.hasResults; + } + + public get uitextGeneralLogTitle(): string { + return this.i18nService.localizeText("INFO_TITREJOURNAL_GLOBAL"); + } + +} diff --git a/src/app/formulaire/definition/form-pab.ts b/src/app/formulaire/definition/form-pab.ts index 723d0713a..08bd3f1ab 100644 --- a/src/app/formulaire/definition/form-pab.ts +++ b/src/app/formulaire/definition/form-pab.ts @@ -82,7 +82,7 @@ export class FormulairePab extends FormulaireDefinition { return this._pabResults; } - public resetResults() { + public resetResults() { // @TODO why not resetFormResults() only ? this._pabResults.reset(); } diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index a55e3357e..2a46caf52 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -1,13 +1,72 @@ -import { IObservable, Nub, Verificateur } from "jalhyd"; +import { IObservable, Nub, Verificateur, Result } from "jalhyd"; import { SelectFieldCustom } from "../elements/select-field-custom"; import { FormulaireFixedVar } from "./form-fixedvar"; +import { VerificateurResults } from "../../results/verificateur-results"; +import { CalculatorResults } from "../../results/calculator-results"; /** * Formulaire pour les Vérificateurs */ export class FormulaireVerificateur extends FormulaireFixedVar { + protected _verificateurResults: VerificateurResults; + + constructor() { + super(); + this._verificateurResults = new VerificateurResults(); + } + + public get verificateurNub(): Verificateur { + return this.currentNub as Verificateur; + } + + public get verificateurResults() { + return this._verificateurResults; + } + + protected compute() { + this.runNubCalc(this.currentNub); + // reset variable index to avoid trying to access an index > 0 when nothing varies + const mrcr = this.verificateurResults; + mrcr.variableIndex = 0; + + this.reaffectResultComponents(); + } + + protected reaffectResultComponents() { + const ver: Verificateur = (this.currentNub as Verificateur); + // const varParams: NgParameter[] = this.getVariatedParameters(); + + // résultat de calcul de la passe à macrorugo complexe + const vr = this.verificateurResults; + // vr.calculatedParameter = computedParam; + vr.result = ver.result; + /* if (varParams) { + vr.variatedParameters = varParams; + } */ + vr.variatedParameters = []; + + // résultat de chaque Espece + const er: Result[] = []; + for (const sp of ver.species) { + er.push(sp.result); + } + vr.especeResults = er; + } + + public resetFormResults() { + this._verificateurResults.reset(); + } + + public get results(): CalculatorResults[] { + return [ this._verificateurResults ]; + } + + public get hasResults(): boolean { + return this._verificateurResults.hasResults; + } + // interface Observer public update(sender: IObservable, data: any) { diff --git a/src/app/results/param-calc-results.ts b/src/app/results/param-calc-results.ts index 62cd26f84..6a2418848 100644 --- a/src/app/results/param-calc-results.ts +++ b/src/app/results/param-calc-results.ts @@ -20,7 +20,7 @@ export abstract class CalculatedParamResults extends CalculatorResults { /** custom variables order for results tables */ public variablesOrder: string[] = []; - protected reset() { + public reset() { this._calculatedParam = undefined; this.calculatedParameterHeader = undefined; this.result = undefined; diff --git a/src/app/results/verificateur-results.ts b/src/app/results/verificateur-results.ts new file mode 100644 index 000000000..04f686404 --- /dev/null +++ b/src/app/results/verificateur-results.ts @@ -0,0 +1,14 @@ +import { MultiDimensionResults } from "./multidimension-results"; + +import { Result } from 'jalhyd'; + +export class VerificateurResults extends MultiDimensionResults { + + /** résultats des modules Espece */ + public especeResults: Result[]; + + public reset() { + super.reset(); + this.especeResults = []; + } +} -- GitLab From 11057ede998c3093de5373764f749add17e9f36b Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 11:46:54 +0200 Subject: [PATCH 038/101] Added new component log-drawer update Verificateur results with log-drawer --- src/app/app.module.ts | 4 +- .../log-drawer/log-drawer.component.html | 24 +++++++++ .../log-drawer/log-drawer.component.scss | 41 ++++++++++++++++ .../log-drawer/log-drawer.component.ts | 49 +++++++++++++++++++ .../pab-results-table.component.ts | 4 +- .../verificateur-results.component.html | 2 +- .../verificateur-results.component.ts | 29 ++++++++--- src/locale/messages.en.json | 27 +++++----- src/locale/messages.fr.json | 37 ++++++++------ 9 files changed, 178 insertions(+), 39 deletions(-) create mode 100644 src/app/components/log-drawer/log-drawer.component.html create mode 100644 src/app/components/log-drawer/log-drawer.component.scss create mode 100644 src/app/components/log-drawer/log-drawer.component.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2fb9161a8..5d9fd69fc 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -75,13 +75,14 @@ import { PabResultsComponent } from "./components/pab-results/pab-results.compon import { VerificateurResultsComponent } from "./components/verificateur-results/verificateur-results.component"; import { PabResultsTableComponent } from "./components/pab-results/pab-results-table.component"; import { ChartTypeSelectComponent } from "./components/results-chart/chart-type.component"; -import { LogComponent } from "./components/log/log.component"; import { CalculatorListComponent } from "./components/calculator-list/calculator-list.component"; import { ApplicationSetupComponent } from "./components/app-setup/app-setup.component"; import { BaseParamInputComponent } from "./components/base-param-input/base-param-input.component"; import { FixedResultsComponent } from "./components/fixedvar-results/fixed-results.component"; import { VarResultsComponent } from "./components/fixedvar-results/var-results.component"; +import { LogComponent } from "./components/log/log.component"; import { LogEntryComponent } from "./components/log-entry/log-entry.component"; +import { LogDrawerComponent } from './components/log-drawer/log-drawer.component'; import { ParamLinkComponent } from "./components/param-link/param-link.component"; import { PabProfileChartComponent } from "./components/pab-profile-chart/pab-profile-chart.component"; import { PabTableComponent } from "./components/pab-table/pab-table.component"; @@ -211,6 +212,7 @@ const appRoutes: Routes = [ JetResultsComponent, JetTrajectoryChartComponent, LogComponent, + LogDrawerComponent, LogEntryComponent, ModulesDiagramComponent, NgParamInputComponent, diff --git a/src/app/components/log-drawer/log-drawer.component.html b/src/app/components/log-drawer/log-drawer.component.html new file mode 100644 index 000000000..4b9bbd8ee --- /dev/null +++ b/src/app/components/log-drawer/log-drawer.component.html @@ -0,0 +1,24 @@ +<div *ngIf="hasEntries"> + <div class="hyd_log_drawer"> + <!-- titre --> + <div class="titre">{{ uitextTitreJournal }}</div> + <!-- entrées du journal --> + <div class="log-entry" *ngFor="let entry of log"> + <log-entry [_message]="entry.message"></log-entry> + <div *ngIf="entry.subLog.messages.length" class="drawer"> + <div class="open-drawer"> + <span *ngIf="! entry.isOpen"> + <a (click)="entry.isOpen = true;">{{ uitextShowDetails }}</a> + </span> + <span *ngIf="entry.isOpen"> + <a (click)="entry.isOpen = false">{{ uitextHideDetails }}</a> + </span> + </div> + <div class="drawer-contents" [hidden]="! entry.isOpen"> + <log-entry *ngFor="let m of entry.subLog.messages" [_message]="m"></log-entry> + </div> + </div> + </div> + + </div> +</div> diff --git a/src/app/components/log-drawer/log-drawer.component.scss b/src/app/components/log-drawer/log-drawer.component.scss new file mode 100644 index 000000000..2ae464717 --- /dev/null +++ b/src/app/components/log-drawer/log-drawer.component.scss @@ -0,0 +1,41 @@ +:host { + display: block; +} + +.hyd_log_drawer { + margin-top: 2.5em; + border: solid #ccc 1px; + border-radius: 2px; + padding: 1em; + padding-top : 1.3em; + + > .log-entry { + margin-bottom: 1.5em; + } +} + +.titre { + background-color: white; + border: 1px solid #ccc; + border-radius: 2px; + float: left; + font-weight: bold; + margin-bottom: -1em; + margin-top: -2.3em; + padding: 0.2em 0.5em; +} + +.open-drawer { + margin-top: -6px; + + a { + // text-decoration: underline; + cursor: pointer; + } +} + +.drawer-contents { + margin-left: 1em; + border-left: solid #ddd 1px; + padding-left: 1em; +} diff --git a/src/app/components/log-drawer/log-drawer.component.ts b/src/app/components/log-drawer/log-drawer.component.ts new file mode 100644 index 000000000..2394e46b8 --- /dev/null +++ b/src/app/components/log-drawer/log-drawer.component.ts @@ -0,0 +1,49 @@ +import { Component, Input } from "@angular/core"; + +import { cLog, Message } from "jalhyd"; + +import { I18nService } from "../../services/internationalisation.service"; + +@Component({ + selector: "log-drawer", + templateUrl: "./log-drawer.component.html", + styleUrls: [ + "./log-drawer.component.scss" + ] +}) +/** le log à tiroirs ! */ +export class LogDrawerComponent { + + /** A list of log messages accompanied by a sub-log (multiple messages) */ + public log: Array<{ message: Message, subLog: cLog }>; + + // title to display above the log + @Input() + public logTitle: string; + + constructor( + private intlService: I18nService, + ) { + this.log = []; + } + + public get uitextTitreJournal(): string { + if (this.logTitle) { + return this.logTitle; + } else { + return this.intlService.localizeText("INFO_TITREJOURNAL"); + } + } + + public get hasEntries(): boolean { + return this.log !== undefined && this.log.length !== 0; + } + + public get uitextShowDetails(): string { + return this.intlService.localizeText("INFO_LOG_SHOW_DETAILS"); + } + + public get uitextHideDetails(): string { + return this.intlService.localizeText("INFO_LOG_HIDE_DETAILS"); + } +} diff --git a/src/app/components/pab-results/pab-results-table.component.ts b/src/app/components/pab-results/pab-results-table.component.ts index 8fb591b99..45418cf16 100644 --- a/src/app/components/pab-results/pab-results-table.component.ts +++ b/src/app/components/pab-results/pab-results-table.component.ts @@ -1,6 +1,6 @@ import { Component, ViewChild, ElementRef } from "@angular/core"; -import { CloisonAval, Result } from "jalhyd"; +import { CloisonAval, Result, capitalize } from "jalhyd"; import { PabResults } from "../../results/pab-results"; import { I18nService } from "../../services/internationalisation.service"; @@ -40,7 +40,7 @@ export class PabResultsTableComponent extends ResultsComponentDirective { const devices = re.sourceNub.getChildren(); const jetTypes: string[] = devices.map((device) => { const jt = device.result.resultElements[vi].getValue("ENUM_StructureJetType"); - let jetType = this.intlService.localizeText("INFO_ENUM_STRUCTUREJETTYPE_" + jt); + let jetType = capitalize(this.intlService.localizeText("INFO_ENUM_STRUCTUREJETTYPE_" + jt)); if (devices.length > 1) { // evil HTML injection in table cell (simpler) jetType = this.intlService.localizeText("INFO_LIB_FS_OUVRAGE") + " n°" diff --git a/src/app/components/verificateur-results/verificateur-results.component.html b/src/app/components/verificateur-results/verificateur-results.component.html index dbe866617..1d0f78479 100644 --- a/src/app/components/verificateur-results/verificateur-results.component.html +++ b/src/app/components/verificateur-results/verificateur-results.component.html @@ -4,5 +4,5 @@ <variable-results-selector [results]="verificateurResults" (indexChange)="variableIndexChanged()"> </variable-results-selector> - <log #iterationLog></log> + <log-drawer #iterationLog></log-drawer> </div> diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts index 8a00642cc..c79542673 100644 --- a/src/app/components/verificateur-results/verificateur-results.component.ts +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -1,6 +1,6 @@ import { Component, ViewChild, DoCheck } from "@angular/core"; -import { cLog } from "jalhyd"; +import { cLog, Message } from "jalhyd"; import { LogComponent } from "../log/log.component"; import { CalculatorResults } from "../../results/calculator-results"; @@ -8,6 +8,7 @@ import { VariableResultsSelectorComponent } from "../variable-results-selector/v import { I18nService } from "../../services/internationalisation.service"; import { VerificateurResults } from "../../results/verificateur-results"; import { ResultsComponentDirective } from '../fixedvar-results/results.component'; +import { LogDrawerComponent } from "../log-drawer/log-drawer.component"; @Component({ selector: "verificateur-results", @@ -31,7 +32,7 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl private generalLogComponent: LogComponent; @ViewChild("iterationLog") - private iterationLogComponent: LogComponent; + private iterationLogComponent: LogDrawerComponent; constructor( private i18nService: I18nService, @@ -95,24 +96,36 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl * Retourne les messages à afficher dans le composant de log "du bas" : logs de l'itération * en cours (messages non-globaux du Vérificateur et eds Espèce), que le résultat varie ou non */ - private get iterationLog(): cLog { - const l = new cLog(); + private get iterationLog(): Array<{ message: Message, subLog: cLog }> { + const l: Array<{ message: Message, subLog: cLog }> = []; if (this._verificateurResults) { // = 0 lorsque rien ne varie const vi = this._verificateurResults.variableIndex; // log du Verificateur pour l'itération en cours + const element = { message: Message, subLog: cLog }; if ( this._verificateurResults.result && this._verificateurResults.result.hasResultElements() && this._verificateurResults.result.resultElements[vi] && this._verificateurResults.result.resultElements[vi].hasLog() ) { - l.addLog(this._verificateurResults.result.resultElements[vi].log); + // every log message of Verificateur is supposed to always be a status message for the nth Espece + const verLog: cLog = this._verificateurResults.result.resultElements[vi].log; + for (const vm of verLog.messages) { + l.push({ + message: vm, + subLog: new cLog() + }); + } + } + // logs des Espece pour l'itération en cours; l.length devrait toujours être égal à this._verificateurResults.especeResults.length + if (l.length !== this._verificateurResults.especeResults.length) { + throw new Error("VerificateurResultsComponent: l.length !== this._verificateurResults.especeResults.length (" + l.length + " / " + this._verificateurResults.especeResults.length) + ")"; } - // logs des Espece pour l'itération en cours - for (const er of this._verificateurResults.especeResults) { + for (let i = 0; i < this._verificateurResults.especeResults.length; i++) { + const er = this._verificateurResults.especeResults[i]; if (er && er.hasResultElements() && er.resultElements[vi].hasLog()) { - l.addLog(er.resultElements[vi].log); + l[i].subLog.addLog(er.resultElements[vi].log); } } } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 9184c785d..8f6a2e6fa 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -168,9 +168,9 @@ "INFO_ENUM_STRUCTUREFLOWREGIME_1": "Partially submerged", "INFO_ENUM_STRUCTUREFLOWREGIME_2": "Submerged", "INFO_ENUM_STRUCTUREFLOWREGIME_3": "Zero flow", - "INFO_ENUM_STRUCTUREJETTYPE_0": "Diving", - "INFO_ENUM_STRUCTUREJETTYPE_1": "Surface", - "INFO_ENUM_STRUCTUREJETTYPE_2": "Not applicable", + "INFO_ENUM_STRUCTUREJETTYPE_0": "diving", + "INFO_ENUM_STRUCTUREJETTYPE_1": "surface", + "INFO_ENUM_STRUCTUREJETTYPE_2": "not applicable", "INFO_CHART_BUTTON_TITLE_RESET_ZOOM": "Restore default zoom", "INFO_CHART_BUTTON_TITLE_EXPORT_IMAGE": "Save picture", "INFO_CHART_BUTTON_TITLE_ENTER_FS": "Display fullscreen", @@ -612,17 +612,19 @@ "WARNING_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", - "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet : %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet : %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", - "ERROR_VERIF_PAB_DHMAX_JET_DW":"Downwall: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET_DW": "Downwall: fall %DH% too high for jet type %jetType% (maximum: %maxDH%)", + "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_JET_DW":"Downwall: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET_DW": "Downwall: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "WARNING_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", "WARNING_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", - "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum: %minLB%)", + "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum for surface jet: %minLBS%, minimum for diving jet: %minLBS%)", + "ERROR_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", + "WARNING_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", "ERROR_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "WARNING_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", @@ -631,8 +633,11 @@ "ERROR_VERIF_PAB_SMIN_DW": "Downwall, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", "WARNING_VERIF_PAB_SMIN": "Wall #%NC%, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", "WARNING_VERIF_PAB_SMIN_DW": "Downwall, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", - "ERROR_VERIF_PAB_YMOY": "Wall #%N%: basin depth %PB% too low (minimum: %minPB%)", + "ERROR_VERIF_PAB_YMOY": "Wall #%N%: basin depth %PB% too low (minimum for surface jet: %minPBS%, minimum for diving jet: %minPBP%)", + "ERROR_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", + "WARNING_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", "ERROR_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", + "WARNING_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index fb1deb92f..14a4a2934 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -168,9 +168,9 @@ "INFO_ENUM_STRUCTUREFLOWREGIME_1": "Partiellement noyé", "INFO_ENUM_STRUCTUREFLOWREGIME_2": "Noyé", "INFO_ENUM_STRUCTUREFLOWREGIME_3": "Débit nul", - "INFO_ENUM_STRUCTUREJETTYPE_0": "Plongeant", - "INFO_ENUM_STRUCTUREJETTYPE_1": "De surface", - "INFO_ENUM_STRUCTUREJETTYPE_2": "Sans objet", + "INFO_ENUM_STRUCTUREJETTYPE_0": "plongeant", + "INFO_ENUM_STRUCTUREJETTYPE_1": "de surface", + "INFO_ENUM_STRUCTUREJETTYPE_2": "sans objet", "INFO_CHART_BUTTON_TITLE_RESET_ZOOM": "Réinitialiser le zoom", "INFO_CHART_BUTTON_TITLE_EXPORT_IMAGE": "Enregistrer l'image", "INFO_CHART_BUTTON_TITLE_ENTER_FS": "Afficher en plein écran", @@ -615,15 +615,17 @@ "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", - "ERROR_VERIF_PAB_DHMAX_JET_DW":"Cloison aval : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET_DW": "Cloison aval : chute %DH% trop importante pour le jet %jetType% (maximum : %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "ERROR_VERIF_PAB_DHMAX_JET_DW":"Cloison aval : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET_DW": "Cloison aval : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", "WARNING_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", "WARNING_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum : %minLB%)", + "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum pour jet de surface : %minLBS%, minimum pour jet plongeant : %minLBP%)", + "ERROR_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", + "WARNING_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", @@ -632,18 +634,21 @@ "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", - "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum : %minPB%)", + "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum pour jet de surface : %minPBS%, minimum pour jet plongeant : %minPBP%)", + "ERROR_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", + "WARNING_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "WARNING_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", - "ERROR_VERIF_SPECIES_GROUP_KO": "Le franchissement est impossible pour le groupe d'espèces ENUM_%speciesGroup%", - "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Le franchissement est possible pour le groupe d'espèces ENUM_%speciesGroup%, mais il y a des avertissements", - "INFO_VERIF_SPECIES_GROUP_OK": "Le franchissement est possible pour le groupe d'espèces ENUM_%speciesGroup%", - "ERROR_VERIF_SPECIES_NUB_KO": "Le franchissement est impossible pour l'espèce personnalisée FORM_ID_%uid%", - "WARNING_VERIF_SPECIES_NUB_OK_BUT": "Le franchissement est possible pour l'espèce personnalisée FORM_ID_%uid%, mais il y a des avertissements", - "INFO_VERIF_SPECIES_NUB_OK": "Le franchissement est possible pour l'espèce personnalisée FORM_ID_%uid%", - "ERROR_VERIF_PAB_WALLS_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", + "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", + "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", + "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", + "ERROR_VERIF_SPECIES_NUB_KO": "FORM_ID_%uid% : franchissement impossible", + "WARNING_VERIF_SPECIES_NUB_OK_BUT": "FORM_ID_%uid% : OK, avec des avertissements", + "INFO_VERIF_SPECIES_NUB_OK": "FORM_ID_%uid% : OK", + "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "La cloison aval n'est pas franchissable", "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" } -- GitLab From b6e2c2f3e61c4e3ff71c60fa5a01f8601db365c4 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 14:42:08 +0200 Subject: [PATCH 039/101] Add script to check missing translations of JaLHyd messages --- scripts/check-translations.js | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 scripts/check-translations.js diff --git a/scripts/check-translations.js b/scripts/check-translations.js new file mode 100644 index 000000000..8beb57298 --- /dev/null +++ b/scripts/check-translations.js @@ -0,0 +1,44 @@ +'use strict'; + +const fs = require('fs'); + +// read and transform JaLHyd message file +const jalhydMessagesPath = "../jalhyd/src/util/message.ts"; +let jm = fs.readFileSync(jalhydMessagesPath, "utf-8"); +// extract enum block +jm = jm.replace(/export enum MessageCode \{([^{]+)\}[\s\S]+/m, (match, p1) => { + return p1; +}); +// remove comments +jm = jm.replace(/\/\*[\s\S]*?\*\//gm, ""); +jm = jm.replace(/\/\/.+/g, ""); + +// remove spaces +jm = jm.replace(/[ \t]+/g, ""); +// remove line breaks +jm = jm.replace(/\n/g, ""); +// split on ";" +const messages = jm.split(","); + +// console.log(messages); + +// read every language file +const localePath = "src/locale"; +const localeDir = fs.readdirSync(localePath); +for (let i = 0; i < localeDir.length; i++) { + const localeFile = localeDir[i]; + const res = localeFile.match(/^messages\.([a-z]{2})\.json$/); + if (res) { + const lang = res[1]; + console.log("Loading translations for language [" + lang + "]"); + const langFilePath = localePath + '/' + localeFile; + let translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); + // console.log(translations); + // check against JaLHyd messages list + for (const mess of messages) { + if (! translations.includes(mess)) { + console.log(" missing message in [" + lang + "] translation: " + mess); + } + } + } +} -- GitLab From 221cf773f43eade417b6470c2d6de4d62721d8e0 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 14:42:12 +0200 Subject: [PATCH 040/101] ts lint --- src/app/app.component.ts | 2 +- src/app/app.module.ts | 2 +- .../calculator-results.component.ts | 32 +++++++++---------- .../dialog-edit-param-values.component.ts | 5 ++- .../jet-results/jet-results.component.ts | 4 +-- .../modules-diagram.component.ts | 4 +-- .../section-results.component.ts | 8 +++-- .../verificateur-results.component.ts | 9 ++++-- .../formulaire/definition/form-definition.ts | 2 +- .../formulaire/definition/form-fixedvar.ts | 2 +- src/app/formulaire/elements/fieldset.ts | 2 +- .../elements/select-field-custom.ts | 8 ++--- src/app/results/verificateur-results.ts | 2 +- .../services/internationalisation.service.ts | 3 +- src/app/util.ts | 10 +++--- 15 files changed, 52 insertions(+), 43 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 92170a313..e90029baf 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -24,7 +24,7 @@ import { DialogSaveSessionComponent } from "./components/dialog-save-session/dia import { QuicknavComponent } from "./components/quicknav/quicknav.component"; import { NotificationsService } from "./services/notifications.service"; -import { decodeHtml } from './util'; +import { decodeHtml } from "./util"; import { HotkeysService, Hotkey } from "angular2-hotkeys"; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 5d9fd69fc..51dceda8d 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -82,7 +82,7 @@ import { FixedResultsComponent } from "./components/fixedvar-results/fixed-resul import { VarResultsComponent } from "./components/fixedvar-results/var-results.component"; import { LogComponent } from "./components/log/log.component"; import { LogEntryComponent } from "./components/log-entry/log-entry.component"; -import { LogDrawerComponent } from './components/log-drawer/log-drawer.component'; +import { LogDrawerComponent } from "./components/log-drawer/log-drawer.component"; import { ParamLinkComponent } from "./components/param-link/param-link.component"; import { PabProfileChartComponent } from "./components/pab-profile-chart/pab-profile-chart.component"; import { PabTableComponent } from "./components/pab-table/pab-table.component"; diff --git a/src/app/components/calculator-results/calculator-results.component.ts b/src/app/components/calculator-results/calculator-results.component.ts index 09df29e7e..900cf877a 100644 --- a/src/app/components/calculator-results/calculator-results.component.ts +++ b/src/app/components/calculator-results/calculator-results.component.ts @@ -10,7 +10,7 @@ import { JetResultsComponent } from "../jet-results/jet-results.component"; import { GenericCalculatorComponent } from "../generic-calculator/calculator.component"; import { VerificateurResultsComponent } from "../verificateur-results/verificateur-results.component"; -import { CalculatorType } from 'jalhyd'; +import { CalculatorType } from "jalhyd"; @Component({ selector: "calc-results", @@ -84,24 +84,24 @@ export class CalculatorResultsComponent implements AfterViewChecked { this.sectionResultsComponent.results = undefined; this.verificateurResultsComponent.results = undefined; } else { - if (this.showGenericResults) this.fixedVarResultsComponent.results = f.results; - if (this.isJet) this.jetResultsComponent.results = f.results; - if (this.isMRC) this.mrcResultsComponent.results = f.results; - if (this.isPAB) this.pabResultsComponent.results = f.results; - if (this.isRemous) this.remousResultsComponent.results = f.results; - if (this.isSP) this.sectionResultsComponent.results = f.results; - if (this.isVerificateur) this.verificateurResultsComponent.results = f.results; + if (this.showGenericResults) { this.fixedVarResultsComponent.results = f.results; } + if (this.isJet) { this.jetResultsComponent.results = f.results; } + if (this.isMRC) { this.mrcResultsComponent.results = f.results; } + if (this.isPAB) { this.pabResultsComponent.results = f.results; } + if (this.isRemous) { this.remousResultsComponent.results = f.results; } + if (this.isSP) { this.sectionResultsComponent.results = f.results; } + if (this.isVerificateur) { this.verificateurResultsComponent.results = f.results; } } } public updateView() { - if (this.showGenericResults) this.fixedVarResultsComponent.updateView(); - if (this.isJet) this.jetResultsComponent.updateView(); - if (this.isMRC) this.mrcResultsComponent.updateView(); - if (this.isPAB) this.pabResultsComponent.updateView(); - if (this.isRemous) this.remousResultsComponent.updateView(); - if (this.isSP) this.sectionResultsComponent.updateView(); - if (this.isVerificateur) this.verificateurResultsComponent.updateView(); + if (this.showGenericResults) { this.fixedVarResultsComponent.updateView(); } + if (this.isJet) { this.jetResultsComponent.updateView(); } + if (this.isMRC) { this.mrcResultsComponent.updateView(); } + if (this.isPAB) { this.pabResultsComponent.updateView(); } + if (this.isRemous) { this.remousResultsComponent.updateView(); } + if (this.isSP) { this.sectionResultsComponent.updateView(); } + if (this.isVerificateur) { this.verificateurResultsComponent.updateView(); } } public ngAfterViewChecked() { @@ -117,7 +117,7 @@ export class CalculatorResultsComponent implements AfterViewChecked { && ! this.isRemous && ! this.isSP && ! this.isVerificateur - ) + ); } public get isJet(): boolean { diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts index 7da1e632c..3c419f000 100644 --- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts +++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts @@ -215,7 +215,10 @@ export class DialogEditParamValuesComponent implements OnInit { if (this.param.paramDefinition.step === 0) { return 0; } else { - return Math.max(0, Math.ceil((this.param.paramDefinition.max - this.param.paramDefinition.min) / this.param.paramDefinition.step) + 1); + return Math.max( + 0, + Math.ceil((this.param.paramDefinition.max - this.param.paramDefinition.min) / this.param.paramDefinition.step) + 1 + ); } } catch (e) { // min > max or something, silent fail diff --git a/src/app/components/jet-results/jet-results.component.ts b/src/app/components/jet-results/jet-results.component.ts index 28ecd927c..455521eab 100644 --- a/src/app/components/jet-results/jet-results.component.ts +++ b/src/app/components/jet-results/jet-results.component.ts @@ -28,7 +28,7 @@ export class JetResultsComponent extends FixedVarResultsComponent { return this.hasResults && ( this._fixedResults && this._fixedResults.result && this._fixedResults.result.sourceNub.result.ok || - this._varResults&& this._varResults.result && this._varResults.result.sourceNub.result.ok + this._varResults && this._varResults.result && this._varResults.result.sourceNub.result.ok ); } @@ -46,7 +46,7 @@ export class JetResultsComponent extends FixedVarResultsComponent { protected updateResults() { const superUpdated = super.updateResults(); - let trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; + const trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; if (trajectoryChartUpdated) { // draw chart whether params are variating or not, diff --git a/src/app/components/modules-diagram/modules-diagram.component.ts b/src/app/components/modules-diagram/modules-diagram.component.ts index 0ec976df7..80d08b7b7 100644 --- a/src/app/components/modules-diagram/modules-diagram.component.ts +++ b/src/app/components/modules-diagram/modules-diagram.component.ts @@ -228,8 +228,8 @@ export class ModulesDiagramComponent implements AfterContentInit, AfterViewCheck // add Verificateur links if (nub instanceof Verificateur) { const ntv = nub.nubToVerify; - const sp = nub.species.filter((sp) => { - return sp.species === FishSpecies.SPECIES_CUSTOM; + const sp = nub.species.filter((spe) => { + return spe.species === FishSpecies.SPECIES_CUSTOM; }); const verifiesPass = this.intlService.localizeText("INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS"); const verifiesSpecies = this.intlService.localizeText("INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES"); diff --git a/src/app/components/section-results/section-results.component.ts b/src/app/components/section-results/section-results.component.ts index ea10156d3..99df6bb4a 100644 --- a/src/app/components/section-results/section-results.component.ts +++ b/src/app/components/section-results/section-results.component.ts @@ -7,7 +7,7 @@ import { SectionResults } from "../../results/section-results"; import { CalculatorResults } from "../../results/calculator-results"; import { I18nService } from "../../services/internationalisation.service"; import { AppComponent } from "../../app.component"; -import { FixedVarResultsComponent } from '../fixedvar-results/fixedvar-results.component'; +import { FixedVarResultsComponent } from "../fixedvar-results/fixedvar-results.component"; @Component({ selector: "section-results", @@ -114,7 +114,9 @@ export class SectionResultsComponent extends FixedVarResultsComponent implements this._resultElement.addExtraResult(lbl, er); if (this.isSectionLevel(k)) { - this._sectionCanvasComponent.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]); + this._sectionCanvasComponent.addLevel( + er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k] + ); } } } @@ -131,7 +133,7 @@ export class SectionResultsComponent extends FixedVarResultsComponent implements }, 100); } - let canvasUpdated = (! this.hasResults || this._sectionCanvasComponent !== undefined); + const canvasUpdated = (! this.hasResults || this._sectionCanvasComponent !== undefined); return superUpdated && canvasUpdated; } diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts index c79542673..b384e2125 100644 --- a/src/app/components/verificateur-results/verificateur-results.component.ts +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -7,7 +7,7 @@ import { CalculatorResults } from "../../results/calculator-results"; import { VariableResultsSelectorComponent } from "../variable-results-selector/variable-results-selector.component"; import { I18nService } from "../../services/internationalisation.service"; import { VerificateurResults } from "../../results/verificateur-results"; -import { ResultsComponentDirective } from '../fixedvar-results/results.component'; +import { ResultsComponentDirective } from "../fixedvar-results/results.component"; import { LogDrawerComponent } from "../log-drawer/log-drawer.component"; @Component({ @@ -118,9 +118,12 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl }); } } - // logs des Espece pour l'itération en cours; l.length devrait toujours être égal à this._verificateurResults.especeResults.length + // logs des Espece pour l'itération en cours; l.length devrait toujours être égal à especeResults.length if (l.length !== this._verificateurResults.especeResults.length) { - throw new Error("VerificateurResultsComponent: l.length !== this._verificateurResults.especeResults.length (" + l.length + " / " + this._verificateurResults.especeResults.length) + ")"; + throw new Error( + "VerificateurResultsComponent: l.length !== this._verificateurResults.especeResults.length (" + + l.length + " / " + this._verificateurResults.especeResults.length + ")" + ); } for (let i = 0; i < this._verificateurResults.especeResults.length; i++) { const er = this._verificateurResults.especeResults[i]; diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 026ffdba4..7de69e2b6 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -24,7 +24,7 @@ import { TopFormulaireElementIterator } from "../form-iterator/top-element-itera import { CalculatorResults } from "../../results/calculator-results"; import { ServiceFactory } from "../../services/service-factory"; import { PabTable } from "../elements/pab-table"; -import { SelectEntry } from '../elements/select-entry'; +import { SelectEntry } from "../elements/select-entry"; /** * classe de base pour tous les formulaires diff --git a/src/app/formulaire/definition/form-fixedvar.ts b/src/app/formulaire/definition/form-fixedvar.ts index c9835398c..ca74b364d 100644 --- a/src/app/formulaire/definition/form-fixedvar.ts +++ b/src/app/formulaire/definition/form-fixedvar.ts @@ -7,7 +7,7 @@ import { ParamRadioConfig, NgParameter } from "../elements/ngparam"; import { FieldSet } from "../elements/fieldset"; import { Nub, IObservable } from "jalhyd"; -import { SelectFieldCustom } from '../elements/select-field-custom'; +import { SelectFieldCustom } from "../elements/select-field-custom"; export class FormulaireFixedVar extends FormulaireDefinition { diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 13ee41a8d..f9063cb45 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -15,7 +15,7 @@ import { StringMap } from "../../stringmap"; import { FieldsetContainer } from "./fieldset-container"; import { SelectFieldCustom } from "./select-field-custom"; import { FormulaireFixedVar } from "../definition/form-fixedvar"; -import { SelectEntry } from './select-entry'; +import { SelectEntry } from "./select-entry"; export class FieldSet extends FormulaireElement implements Observer { diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 270fb2b79..47a73730d 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -1,11 +1,11 @@ import { SelectEntry } from "./select-entry"; import { ServiceFactory } from "../../services/service-factory"; -import { SelectField } from './select-field'; +import { SelectField } from "./select-field"; import { decodeHtml, arraysAreEqual } from "../../util"; import { FishSpecies, Session, Solveur, FishPass, CalculatorType, Verificateur, Nub } from "jalhyd"; -import { sprintf } from 'sprintf-js'; +import { sprintf } from "sprintf-js"; /** * A select field that populates itself with custom stuff (ex: references to Nubs, Parameters…) @@ -219,7 +219,7 @@ export class SelectFieldCustom extends SelectField { const previousSelectedEntry = this._selectedEntry; this._selectedEntry = v; // if value changed - let valueChanged = ( + const valueChanged = ( ! previousSelectedEntry || ( ! Array.isArray(previousSelectedEntry) @@ -243,7 +243,7 @@ export class SelectFieldCustom extends SelectField { */ public setValueFromId(id: string | string[]) { let found = false; - let entries = []; + const entries = []; if (this._multiple && Array.isArray(id)) { for (const e of this._entries) { if (id.includes(e.id)) { diff --git a/src/app/results/verificateur-results.ts b/src/app/results/verificateur-results.ts index 04f686404..304785720 100644 --- a/src/app/results/verificateur-results.ts +++ b/src/app/results/verificateur-results.ts @@ -1,6 +1,6 @@ import { MultiDimensionResults } from "./multidimension-results"; -import { Result } from 'jalhyd'; +import { Result } from "jalhyd"; export class VerificateurResults extends MultiDimensionResults { diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 45fbe17cd..321b572e0 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -175,7 +175,8 @@ export class I18nService extends Observable implements Observer { // replace "FORM_ID_X" by form name in current session, if any m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { - const form = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(p1); // cannot inject FormulaireService => cyclic dependency :/ + // cannot inject FormulaireService => cyclic dependency :/ + const form = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(p1); let formName = "**UNKNOWN_FORM**"; if (form !== undefined) { formName = form.calculatorName; diff --git a/src/app/util.ts b/src/app/util.ts index 704320407..146002b23 100644 --- a/src/app/util.ts +++ b/src/app/util.ts @@ -163,15 +163,15 @@ export function generateValuesCombination( } export function arraysAreEqual(arrayA: any[], arrayB: any[], property?: string, sort = false): boolean { - let aA: any[] = JSON.parse(JSON.stringify(arrayA)); // array copy - let aB: any[] = JSON.parse(JSON.stringify(arrayB)); // array copy + const aA: any[] = JSON.parse(JSON.stringify(arrayA)); // array copy + const aB: any[] = JSON.parse(JSON.stringify(arrayB)); // array copy if (sort) { - aA.sort((a, b) => a-b); - aB.sort((a, b) => a-b); + aA.sort((a, b) => a - b); + aB.sort((a, b) => a - b); } let equal = true; if (aA.length === aB.length) { - for (let i=0; i < aA.length; i++) { + for (let i = 0; i < aA.length; i++) { const eA = aA[i]; const eB = aB[i]; if (property === undefined) { -- GitLab From 88a9a23f9b2475ce13a5d6a279fcf5460a63e245 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 15:02:30 +0200 Subject: [PATCH 041/101] Updated dependencies --- package-lock.json | 2025 ++++++++++++++++++++++----------------------- package.json | 20 +- 2 files changed, 1011 insertions(+), 1034 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6187c822a..dd1cb100d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,12 +11,12 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.901.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.1.tgz", - "integrity": "sha512-foWDAurMfBDYLAJxHpTFkJBub1c2A8+eWHbBjgqIHmT8xadnE7t8nSA9XDl+k/kIoWw/qFU+6IttPirudYc/vw==", + "version": "0.901.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.4.tgz", + "integrity": "sha512-w4RMj7eLhUSh70HUy5tW4EXjLQFXk0Lfr9WiSy5gvPGp+zzYxknI+Wn4Xid1wU/WS+4tuMv5nJIaNaH2sABESQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", + "@angular-devkit/core": "9.1.4", "rxjs": "6.5.4" }, "dependencies": { @@ -32,21 +32,21 @@ } }, "@angular-devkit/build-angular": { - "version": "0.901.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.1.tgz", - "integrity": "sha512-6uEvo5htsJoxQHBVwHOGmM6YWq5q6m9UWMv/ughlek0RtSLFfOt9TZQ/yQHgtGQsCQvscD/jBzVoD0zD5Ax/SQ==", + "version": "0.901.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.4.tgz", + "integrity": "sha512-Vod4bc6d38fuvqauIDQxKMe9hKW9m4QNzPKxEc+Dv5Xkv95WaGzkbUVu8M8t4E//sDDMpmcPdYOXSdR27WBi2Q==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.1", - "@angular-devkit/build-optimizer": "0.901.1", - "@angular-devkit/build-webpack": "0.901.1", - "@angular-devkit/core": "9.1.1", + "@angular-devkit/architect": "0.901.4", + "@angular-devkit/build-optimizer": "0.901.4", + "@angular-devkit/build-webpack": "0.901.4", + "@angular-devkit/core": "9.1.4", "@babel/core": "7.9.0", "@babel/generator": "7.9.3", "@babel/preset-env": "7.9.0", "@babel/template": "7.8.6", "@jsdevtools/coverage-istanbul-loader": "3.0.3", - "@ngtools/webpack": "9.1.1", + "@ngtools/webpack": "9.1.4", "ajv": "6.12.0", "autoprefixer": "9.7.4", "babel-loader": "8.0.6", @@ -56,6 +56,7 @@ "circular-dependency-plugin": "5.2.0", "copy-webpack-plugin": "5.1.1", "core-js": "3.6.4", + "css-loader": "3.5.1", "cssnano": "4.1.10", "file-loader": "6.0.0", "find-cache-dir": "3.3.1", @@ -83,7 +84,6 @@ "semver": "7.1.3", "source-map": "0.7.3", "source-map-loader": "0.2.4", - "source-map-support": "0.5.16", "speed-measure-webpack-plugin": "1.3.1", "style-loader": "1.1.3", "stylus": "0.54.7", @@ -141,9 +141,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -158,9 +158,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -236,24 +236,6 @@ "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "terser": { "version": "4.6.10", "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz", @@ -276,9 +258,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.901.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.1.tgz", - "integrity": "sha512-o0A9CcyDQSUnC5CQIKf92VH8amIYRYrMgLf2kdhSMcy0QV+rEJyN81dSvwX/Yxgnr9NbWEAQg7jnyKk06vfhOw==", + "version": "0.901.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.4.tgz", + "integrity": "sha512-iDMlNRwd8ICMBKnycfw55hdnL5kCiqUjQn+aK/4uOMJMz49tiYMNJAaznXX2BFKmYSmbapKjEbzx9yMYRi9Y7w==", "dev": true, "requires": { "loader-utils": "2.0.0", @@ -297,13 +279,13 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.901.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.1.tgz", - "integrity": "sha512-9oNI+wPSk8yECy+f0EebfMx4PH3uDJRrifYZAxcr84IpzEbpfpRuYhE3ecwqd7k0zu2Kdjw1uUrGxBuH4/sbGg==", + "version": "0.901.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.4.tgz", + "integrity": "sha512-YBOufI4TGAtIDCS6erFygYJX/fkd8xwI58d+7iFIBmtIJC4/fpGjX6qkHMCBgh8HXAkEPSORBCYQn9O44J1ZXQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.1", - "@angular-devkit/core": "9.1.1", + "@angular-devkit/architect": "0.901.4", + "@angular-devkit/core": "9.1.4", "rxjs": "6.5.4" }, "dependencies": { @@ -319,9 +301,9 @@ } }, "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz", + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==", "dev": true, "requires": { "ajv": "6.12.0", @@ -355,15 +337,6 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -376,62 +349,16 @@ } }, "@angular-devkit/schematics": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.1.tgz", - "integrity": "sha512-6wx2HcvafHvEjEa1tjDzW2hXrOiSE8ALqJUArb3+NoO1BDM42aGcqyPo0ODzKtDk12CgSsFXdNKRpQ5AmpSPtw==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.4.tgz", + "integrity": "sha512-RAbdnUEZ3JTLmWSBiXT5trsVx8Fi72fxN9CiRaluM09Cytg6BUc1wC5XCO0YPvhI400+3Ro1nwjPXezjg7LXzQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", + "@angular-devkit/core": "9.1.4", "ora": "4.0.3", "rxjs": "6.5.4" }, "dependencies": { - "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", - "dev": true, - "requires": { - "ajv": "6.12.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.5.4", - "source-map": "0.7.3" - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -444,14 +371,14 @@ } }, "@angular/animations": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.1.tgz", - "integrity": "sha512-IvKv8sV0ymbzDEX2ZLW+F6nOTQqDYallHexuzRVT9txvNE8TNHyySvLcyC5dTmX9fj9LA72NZ6nFyhxq0LFvtQ==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.4.tgz", + "integrity": "sha512-gMo/DbCm5BDArladMAeC7/75T2DvhLr4CSUGJt/P/aimTEG2ywoAALs3pzwSSe4qxrHiR0OIksVW3l4km3iXEw==" }, "@angular/cdk": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.1.tgz", - "integrity": "sha512-aSG1UNPszkSnpNuDCNd7ZgT29oQ8vqHPmoqjvJI0JkEv3i6uEs5tRuhWl3TK39wDNuwdlq0AY47XTa/0Ppb5RQ==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.2.tgz", + "integrity": "sha512-VNd+KuMN6cBcy4/8OyMxqYaxdjPP6IyCqIVijB2JREkc5Sg4VWmPgx2L3rHt/DzjsVBVRgx35uqOMymDezG3jQ==", "requires": { "parse5": "^5.0.0" }, @@ -465,16 +392,16 @@ } }, "@angular/cli": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.1.tgz", - "integrity": "sha512-sjRAV4UF8M5v+2gw+EwCYSgciBZDc05AbNxQt+uUdxdfR1QU9hifWq8WDxfOR6jdDP5YqMtQsNaFNwrUyjJJoQ==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.4.tgz", + "integrity": "sha512-H9MqoT4zyIv+Yo3cvRVkzafWGHsqt7jUvtvGwMHIDMTfEX+Q8yiYlDLL6WM3Eb6/hDmLcRGC/GI495sKS1z5qA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.1", - "@angular-devkit/core": "9.1.1", - "@angular-devkit/schematics": "9.1.1", - "@schematics/angular": "9.1.1", - "@schematics/update": "0.901.1", + "@angular-devkit/architect": "0.901.4", + "@angular-devkit/core": "9.1.4", + "@angular-devkit/schematics": "9.1.4", + "@schematics/angular": "9.1.4", + "@schematics/update": "0.901.4", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.1.1", @@ -492,63 +419,6 @@ "uuid": "7.0.2" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.901.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.1.tgz", - "integrity": "sha512-foWDAurMfBDYLAJxHpTFkJBub1c2A8+eWHbBjgqIHmT8xadnE7t8nSA9XDl+k/kIoWw/qFU+6IttPirudYc/vw==", - "dev": true, - "requires": { - "@angular-devkit/core": "9.1.1", - "rxjs": "6.5.4" - }, - "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } - } - }, - "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", - "dev": true, - "requires": { - "ajv": "6.12.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.5.4", - "source-map": "0.7.3" - }, - "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -617,18 +487,6 @@ "ms": "^2.1.1" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -680,12 +538,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", @@ -701,15 +553,6 @@ "yallist": "^3.0.2" } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -742,16 +585,6 @@ "mimic-fn": "^2.1.0" } }, - "open": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", - "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -772,13 +605,10 @@ } }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "semver": { "version": "7.1.3", @@ -836,19 +666,19 @@ } }, "@angular/common": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.1.tgz", - "integrity": "sha512-bS13veMs7//YqYjYJ+JI78ylaCyVcdFKZKikd5SZa6+r6fajcyvLnSKqrKypG3O1BeJ8vOG/Pq54P5gWhbR6eA==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.4.tgz", + "integrity": "sha512-JvCoCWVbx0tF7l/0WTi24ui/mc2SElyVSNchR4VK/FViARnkvnSBdI/Ef5QWXrsPyKU4PYBtnWWgyxRspH+FBA==" }, "@angular/compiler": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.1.tgz", - "integrity": "sha512-u1IP6IzUgK6lIzrG1cxp96umXgtThyhuFn/KPoyVt7wPxZ6vVR0ZxjM7zycEcrMGzk0nf0nyOKaksJk9sTXTbg==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.4.tgz", + "integrity": "sha512-B+f3lviFNEJtL9V9exSKYPSz2Ddb6dxgPzQR7GSjGikDo+fKMtC1PjNwgJooS9gavhQx30uwkEEMIPYQbM6nNA==" }, "@angular/compiler-cli": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.1.tgz", - "integrity": "sha512-2jGp0ck2kkLNMzXUo/3iJkrQqJ7oGXE8h2tksxBsH2ptnhexRYTHZ626t7Np128tduY5JeC7J1Jxz7MUuYsJ2Q==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.4.tgz", + "integrity": "sha512-n3PzqNnPD7s/AF9mv5CnarK0sgfoq4txFncHjJWBSltuTQoz6BDZyjuEdqsSLUvgAZPeLsmohemOzEE38HYHZA==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -943,12 +773,6 @@ "p-locate": "^4.1.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -1033,9 +857,9 @@ } }, "yargs-parser": { - "version": "18.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", - "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -1045,9 +869,9 @@ } }, "@angular/core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.1.tgz", - "integrity": "sha512-6lDlUlePafr/392hOvvTZZl6xPHT50U6658sHUAVIr0Un4mJ2MHNHKZtO45bpn3hM4gjFcYRQ7Rpd0umW74iTA==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.4.tgz", + "integrity": "sha512-ND240vncmVD2KVe/KSQU3d/DxxoRipFg1+jFOFZGt0n0orCBHk/V1fu9iaG1sRyldL0+rCQ+fTI+1N4DTmMnxA==" }, "@angular/flex-layout": { "version": "9.0.0-beta.29", @@ -1055,35 +879,35 @@ "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==" }, "@angular/forms": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.1.tgz", - "integrity": "sha512-NX+LuK8JFisiq3uHCOK6YoN/yIb2R9Ye5mwiOPkuZA3lZLKCnUXqCHZbM8VHy/WdjIxxeUaFMJc38yV8RVoabg==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.4.tgz", + "integrity": "sha512-Njt+pMLfPBchL0/ayIjJqXL6ZfM4Ccvf7KO1wS1HMzh3QlmfNa0JSgc4pfrbRJAMN9g7V/FYLyKejs1bJZkenA==" }, "@angular/language-service": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.1.tgz", - "integrity": "sha512-T+/0X2VnmgW/vzynqYTVv29qtebNvrCB/yJqtNIlqXvBjcB8XRRwZPDZvRyl5BiwEPSsJnjdRFNH9krQHxYp+g==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.4.tgz", + "integrity": "sha512-eyVxxiegdb4ESdFGfkuDN+YfUbOVHRQLjIl6ACFJQDNHzVXzbmuqpyr5hIJANIVady103/7+dqRxxJo1DdIdTQ==", "dev": true }, "@angular/material": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.1.tgz", - "integrity": "sha512-nqn/0Eg04DxwnkRGSM1xnmGgtfHYOBcEPbFeTu8c1qAbjFEozd6tpw4y6dQrCCL/JLNIRQPsxsUsVnKeWDF/4Q==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.2.tgz", + "integrity": "sha512-gdQiMJ6PtW/5fd+0mglHFyzxULDCBGjn9RTET3sUq2rkc9+jBXr4OvnsUyBWSnqqv97XqotVDIx5JgE4/YX/Rw==" }, "@angular/platform-browser": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.1.tgz", - "integrity": "sha512-tjALKhdAWPErj0euIIdvx/31AHEZ7is7ADsMu+nYn2NY2gcPUuiqq3RCUJVxBYJ2Cclq1nlF0i2rEDKh7TrBKg==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.4.tgz", + "integrity": "sha512-mBCHfTl+5tQfaUiGlDujP7mFBzovFc54Zi2kcCE8DSdSSVQ2TPBo6hXa6y2cL3hJPFZzQ7mC4ORFrsGADhHn/w==" }, "@angular/platform-browser-dynamic": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.1.tgz", - "integrity": "sha512-kEox5UOwkRLjGKXLh5o5SYopoAylpKgrXtRrKRKTCMmZTpYSe1bLlXMjpwMAMZ9ZFSTvWp9iX94aT5bJDpLrRQ==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.4.tgz", + "integrity": "sha512-YtVbnxyS6FU7xNpA6A95tmSfrB8+WC7OH3mbP8M9NaGk0OYz8B/JOe1HByP4JRpEGCvBtXdJ2NSW/MpLIT8SiQ==" }, "@angular/router": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.1.tgz", - "integrity": "sha512-OQ5Ctd+swF7ZNlgUxrkGKk2B4yBFqJm0QCxkM86kFDCKQV/4OButZ+4HPy1HxeozBIAmm2pbQA+YjsAUs0VZcQ==" + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.4.tgz", + "integrity": "sha512-yUyjCgG2P2Jh8MvoyC6yirmAtx1Qe7MKLuLvsa9WOB571QNEcNLTYMfAMHUKsQTcE/+o984QyLlneoibgI9wFA==" }, "@babel/code-frame": { "version": "7.5.5", @@ -1095,12 +919,12 @@ } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.6.tgz", + "integrity": "sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g==", "dev": true, "requires": { - "browserslist": "^4.9.1", + "browserslist": "^4.11.1", "invariant": "^2.2.4", "semver": "^5.5.0" } @@ -1139,12 +963,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1191,9 +1015,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -1208,26 +1032,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1321,9 +1145,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1344,9 +1168,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1357,13 +1181,13 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz", + "integrity": "sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", + "@babel/compat-data": "^7.9.6", + "browserslist": "^4.11.1", "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" @@ -1432,9 +1256,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -1449,9 +1273,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1481,12 +1305,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1533,9 +1357,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -1550,26 +1374,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1630,9 +1454,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1652,9 +1476,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1674,9 +1498,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1731,9 +1555,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -1748,9 +1572,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1770,9 +1594,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1820,12 +1644,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1872,9 +1696,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -1889,26 +1713,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1940,15 +1764,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.8.3", "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" }, "dependencies": { "@babel/code-frame": { @@ -1961,12 +1785,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -2013,9 +1837,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -2030,26 +1854,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -2111,9 +1935,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -2128,9 +1952,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -2177,12 +2001,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -2229,9 +2053,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -2246,26 +2070,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -2297,14 +2121,14 @@ } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", "dev": true, "requires": { "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" }, "dependencies": { "@babel/code-frame": { @@ -2317,12 +2141,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -2369,9 +2193,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -2386,26 +2210,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -2513,9 +2337,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz", + "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -2739,9 +2563,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -2756,9 +2580,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -2875,9 +2699,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -2892,9 +2716,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -2923,38 +2747,38 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz", + "integrity": "sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.8.3", "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { @@ -3015,9 +2839,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -3180,9 +3004,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -3691,9 +3515,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -3746,16 +3570,10 @@ "source-map": "^0.6.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { "ajv": "^6.12.0", @@ -3781,12 +3599,12 @@ } }, "@ngtools/webpack": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.1.tgz", - "integrity": "sha512-4RPlk6aIlYhk9isTvXbMaA2G0LhxOzcZ+2iG7zV9Yj/Vm8+lrRexpQ/kC/Dh0GI/oCtKIkVpUzx5LTozYeTLdQ==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.4.tgz", + "integrity": "sha512-CDlQzMnWraxf/dT3G5L+0N0VniWHWdzjLRP8pWBoyV0xlzWS1yL/lj8Mas2jEIuaUxZ8bi29mE7xa8prqewtBQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", + "@angular-devkit/core": "9.1.4", "enhanced-resolve": "4.1.1", "rxjs": "6.5.4", "webpack-sources": "1.4.3" @@ -3810,82 +3628,23 @@ "dev": true }, "@schematics/angular": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.1.tgz", - "integrity": "sha512-V0DcDNgHQ2YR+PGZI6+pf/mUNNxt5SusShkZ1PbwIMk/HUQpzEGkLjm3v1Jw9eIZKiuDx615GNU1xDzQ/KyNRQ==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.4.tgz", + "integrity": "sha512-7nbiYBRgXc+f0sa5iXTcF6/VMy/Xq0wyKKnDFiLCb2aFYR7EXRHWF2GuwDIg2bvFugLuCBDoNnXeddLE1TXGWg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", - "@angular-devkit/schematics": "9.1.1" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", - "dev": true, - "requires": { - "ajv": "6.12.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.5.4", - "source-map": "0.7.3" - }, - "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - } + "@angular-devkit/core": "9.1.4", + "@angular-devkit/schematics": "9.1.4" } }, "@schematics/update": { - "version": "0.901.1", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.1.tgz", - "integrity": "sha512-g5B8hjXKCbUNLKCkWQxc5r2D9lOQXRTLZJNIqva+l/ck0AML5MpelxkqQId9ZGLfQqfFk/XjdSHRWgcmUs1WnA==", + "version": "0.901.4", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.4.tgz", + "integrity": "sha512-jCtZY2Fbj502gKN5gdu1brnRy/ssyzTrWm69Ty73V+t8uL7nLr+/hny/VBJ8CiQnKQvxcgVl1xgvI1cXzpysVA==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", - "@angular-devkit/schematics": "9.1.1", + "@angular-devkit/core": "9.1.4", + "@angular-devkit/schematics": "9.1.4", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^8.0.0", @@ -3895,43 +3654,6 @@ "semver-intersect": "1.4.0" }, "dependencies": { - "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", - "dev": true, - "requires": { - "ajv": "6.12.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.5.4", - "source-map": "0.7.3" - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, "hosted-git-info": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", @@ -3950,15 +3672,6 @@ "yallist": "^3.0.2" } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "npm-package-arg": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", @@ -4084,9 +3797,9 @@ "integrity": "sha512-13gmo3M2qVvjQrWNseqM3+cR6S2Ss3grbR2NZltgMq94wOwqJYQdgn8qzwDshzgXqMlSUtyPZjysImmktu22ew==" }, "@types/node": { - "version": "13.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", - "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", + "version": "13.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", + "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", "dev": true }, "@types/pako": { @@ -4095,15 +3808,15 @@ "integrity": "sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==" }, "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, "@types/selenium-webdriver": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", - "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", "dev": true }, "@types/source-list-map": { @@ -4411,9 +4124,9 @@ } }, "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", "dev": true }, "after": { @@ -5140,12 +4853,6 @@ "semver": "^5.6.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -5161,9 +4868,9 @@ } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -5339,14 +5046,6 @@ "dev": true, "requires": { "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "bluebird": { @@ -5736,21 +5435,21 @@ } }, "browserslist": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", - "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001038", - "electron-to-chromium": "^1.3.390", + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", "node-releases": "^1.1.53", "pkg-up": "^2.0.0" } }, "browserstack": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", - "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz", + "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==", "dev": true, "requires": { "https-proxy-agent": "^2.2.1" @@ -6011,24 +5710,6 @@ "yallist": "^3.0.2" } }, - "minizlib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", - "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -6044,28 +5725,6 @@ "aggregate-error": "^3.0.0" } }, - "tar": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.1.tgz", - "integrity": "sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==", - "dev": true, - "requires": { - "chownr": "^1.1.3", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.0", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -6199,9 +5858,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001041", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001041.tgz", - "integrity": "sha512-fqDtRCApddNrQuBxBS7kEiSGdBsgO4wiVw4G/IClfqzfhW45MbTumfN4cuUJGTM0YGFNn97DCXPJ683PS6zwvA==", + "version": "1.0.30001051", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz", + "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw==", "dev": true }, "canonical-path": { @@ -6321,9 +5980,9 @@ } }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -6333,7 +5992,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.4.0" }, "dependencies": { "anymatch": { @@ -6371,16 +6030,16 @@ } }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -6417,12 +6076,20 @@ "dev": true }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + } } }, "to-regex-range": { @@ -6640,14 +6307,6 @@ "@types/q": "^1.5.1", "chalk": "^2.4.1", "q": "^1.1.2" - }, - "dependencies": { - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", - "dev": true - } } }, "code-block-writer": { @@ -7153,12 +6812,6 @@ "semver": "^5.6.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7956,6 +7609,89 @@ "timsort": "^0.3.0" } }, + "css-loader": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.1.tgz", + "integrity": "sha512-0G4CbcZzQ9D1Q6ndOfjFuMDo8uLYMu5vc9Abs5ztyHcKvmil6GJrMiNjzzi3tQvUF+mVRuDg7bE6Oc0Prolgig==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.5", + "semver": "^6.3.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "css-parse": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", @@ -9347,9 +9083,9 @@ } }, "electron-to-chromium": { - "version": "1.3.404", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.404.tgz", - "integrity": "sha512-G7XYSpNXv/GhFLgjGyBJAs9LjLHBWhsvjf6VI/VbptG9KiABHSItETTgDe1LDjbHA5P/Rn2MMDKOvhewM+w2Cg==", + "version": "1.3.428", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.428.tgz", + "integrity": "sha512-u3+5jEfgLKq/hGO96YfAoOAM1tgFnRDTCD5mLuev44tttcXix+INtVegAkmGzUcfDsnzkPt51XXurXZLLwXt0w==", "dev": true }, "elementtree": { @@ -9628,9 +9364,9 @@ } }, "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "es6-promisify": { @@ -10335,9 +10071,9 @@ } }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { @@ -10360,9 +10096,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -10378,9 +10114,9 @@ "dev": true }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { "ajv": "^6.12.0", @@ -10487,9 +10223,9 @@ } }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -11722,13 +11458,39 @@ "dev": true }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + } } }, "hash.js": { @@ -11965,15 +11727,6 @@ "debug": "^3.1.0" }, "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -12017,6 +11770,15 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -12830,12 +12592,12 @@ } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -12882,9 +12644,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/template": { @@ -12899,26 +12661,26 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -13114,20 +12876,12 @@ "dev": true }, "jasmine-spec-reporter": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.1.tgz", - "integrity": "sha512-RrOZ+bSPnbk1/9KKs5lm0Nl0cqDCh/XXVlCmu3nkhEJH6HTDh4hoJZu3q8e9aq37C0eXEf/JEJnYy+t4m3arZQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", "dev": true, "requires": { "colors": "1.4.0" - }, - "dependencies": { - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - } } }, "jasminewd2": { @@ -13242,14 +12996,6 @@ "dev": true, "requires": { "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "jsonfile": { @@ -13279,9 +13025,9 @@ } }, "jszip": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", - "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.4.0.tgz", + "integrity": "sha512-gZAOYuPl4EhPTXT0GjhI3o+ZAz3su6EhLrKUoAivcKqyqC7laS5JEv4XWZND9BgcDcF83vI85yGbDmDR6UhrIg==", "dev": true, "requires": { "lie": "~3.3.0", @@ -13291,9 +13037,9 @@ } }, "karma": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.1.tgz", - "integrity": "sha512-xrDGtZ0mykEQjx1BUHOP1ITi39MDsCGocmSvLJWHxUQpxuKwxk3ZUrC6HI2VWh1plLC6+7cA3B19m12yzO/FRw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.4.tgz", + "integrity": "sha512-UGqTe2LBiGQBXRN+Fygeiq63tbfOX45639SKSbPkLpARwnxROWJZg+froGkpHxr84FXCe8UGCf+1PITM6frT5w==", "dev": true, "requires": { "body-parser": "^1.16.1", @@ -13414,9 +13160,9 @@ } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true }, "p-locate": { @@ -13506,9 +13252,9 @@ } }, "yargs-parser": { - "version": "18.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", - "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -13691,12 +13437,6 @@ "json5": "^1.0.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -14055,9 +13795,9 @@ "dev": true }, "magic-string": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -14436,12 +14176,6 @@ "json5": "^1.0.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "normalize-url": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", @@ -14506,9 +14240,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minipass": { @@ -14556,28 +14290,19 @@ } }, "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", "dev": true, "requires": { - "minipass": "^2.9.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "dependencies": { - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -14869,9 +14594,9 @@ } }, "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "version": "1.1.54", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.54.tgz", + "integrity": "sha512-tLzytKpgwKQr37yw9CEODjNM9lnmsNxzlv575GzOZ16AgMvPcJis/DgrJX4UEV1KIYoXk6XoVfY6YaMOPJESAQ==", "dev": true }, "nopt": { @@ -14946,9 +14671,9 @@ }, "dependencies": { "semver": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", - "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -15023,9 +14748,9 @@ } }, "semver": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", - "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "yallist": { @@ -15037,9 +14762,9 @@ } }, "npm-registry-fetch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", - "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.4.tgz", + "integrity": "sha512-6jb34hX/iYNQebqWUHtU8YF6Cjb1H6ouTFPClYsyiW6lpFkljTpdeftm53rRojtja1rKAvKNIIiTS5Sjpw4wsA==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -15196,9 +14921,9 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -15411,10 +15136,13 @@ }, "dependencies": { "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } } } }, @@ -15433,24 +15161,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -15800,6 +15510,15 @@ } } }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -15828,6 +15547,15 @@ "yallist": "^3.0.0" } }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, "npm-pick-manifest": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", @@ -15854,6 +15582,21 @@ "figgy-pudding": "^3.5.1" } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -16360,12 +16103,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, @@ -16531,6 +16268,47 @@ } } }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, "postcss-normalize-charset": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", @@ -16794,9 +16572,9 @@ } }, "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "prelude-ls": { @@ -16925,9 +16703,9 @@ } }, "protractor": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", - "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz", + "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==", "dev": true, "requires": { "@types/q": "^0.0.32", @@ -16938,15 +16716,21 @@ "glob": "^7.0.3", "jasmine": "2.8.0", "jasminewd2": "^2.1.0", - "optimist": "~0.6.0", "q": "1.4.1", "saucelabs": "^1.5.0", "selenium-webdriver": "3.6.0", "source-map-support": "~0.4.0", "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.0.6" + "webdriver-manager": "^12.0.6", + "yargs": "^12.0.5" }, "dependencies": { + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -16995,12 +16779,6 @@ "pinkie-promise": "^2.0.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -17291,9 +17069,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17328,16 +17106,10 @@ "json5": "^1.0.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { "ajv": "^6.12.0", @@ -17846,9 +17618,9 @@ }, "dependencies": { "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true } @@ -17937,9 +17709,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17974,12 +17746,6 @@ "json5": "^1.0.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -17987,9 +17753,9 @@ "dev": true }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { "ajv": "^6.12.0", @@ -18676,12 +18442,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, @@ -18699,9 +18459,9 @@ } }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -19145,24 +18905,306 @@ "function-bind": "^1.0.2" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } } }, "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } } }, "string_decoder": { @@ -19219,9 +19261,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -19256,16 +19298,10 @@ "json5": "^1.0.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { "ajv": "^6.12.0", @@ -19376,12 +19412,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, @@ -19551,43 +19581,35 @@ } }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", + "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "dependencies": { - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -19702,9 +19724,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -19760,9 +19782,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "lru-cache": { @@ -19793,9 +19815,9 @@ } }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { "ajv": "^6.12.0", @@ -19808,16 +19830,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "ssri": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", @@ -19829,9 +19841,9 @@ } }, "terser": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -20044,15 +20056,15 @@ "integrity": "sha512-ikUlS+/BcImLhNYyIgZcEmq4byc31QpC+46/6Jm5ECWkVFhf8SM2Fp/0pMVXPX6vk45SMCwrP4Taxucne8I0VA==" }, "ts-node": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.8.2.tgz", - "integrity": "sha512-duVj6BpSpUpD/oM4MfhO98ozgkp3Gt9qIp3jGxwU2DFvl/3IRaEAvbLa8G60uS7C77457e/m5TMowjedeRxI1Q==", + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz", + "integrity": "sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw==", "dev": true, "requires": { "arg": "^4.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", + "source-map-support": "^0.5.17", "yn": "3.1.1" } }, @@ -20124,9 +20136,9 @@ "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" }, "tslint": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.1.tgz", - "integrity": "sha512-kd6AQ/IgPRpLn6g5TozqzPdGNZ0q0jtXW4//hRcj10qLYBaa3mTUU2y2MCG+RXZm8Zx+KZi0eA+YCrMyNlF4UA==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.2.tgz", + "integrity": "sha512-UyNrLdK3E0fQG/xWNqAFAC5ugtFyPO4JJR1KyyfQAyzR8W0fTRrC91A8Wej4BntFzcvETdCSDa/4PnNYJQLYiA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -20142,23 +20154,6 @@ "semver": "^5.3.0", "tslib": "^1.10.0", "tsutils": "^2.29.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } } }, "tsutils": { @@ -20230,18 +20225,18 @@ }, "dependencies": { "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } } } @@ -21078,9 +21073,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -21182,12 +21177,6 @@ "semver": "^5.6.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -21260,9 +21249,9 @@ }, "dependencies": { "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true } } @@ -21732,12 +21721,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, @@ -21838,12 +21821,6 @@ "xmlbuilder": "~11.0.0" }, "dependencies": { - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "xmlbuilder": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", diff --git a/package.json b/package.json index b6d5d0023..9a15dc891 100644 --- a/package.json +++ b/package.json @@ -84,31 +84,31 @@ "zone.js": "^0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.901.1", - "@angular/cli": "^9.1.1", - "@angular/compiler-cli": "^9.1.1", - "@angular/language-service": "^9.1.1", + "@angular-devkit/build-angular": "^0.901.4", + "@angular/cli": "^9.1.4", + "@angular/compiler-cli": "^9.1.4", + "@angular/language-service": "^9.1.4", "@compodoc/compodoc": "^1.1.11", "@types/file-saver": "^2.0.1", "@types/jasmine": "^3.5.10", "@types/jasminewd2": "^2.0.8", - "@types/node": "^13.11.1", + "@types/node": "^13.13.4", "codelyzer": "^5.2.2", "cordova": "^9.0.0", "electron": "^8.2.2", "electron-builder": "^22.4.1", "fs-extra": "^9.0.0", "jasmine-core": "^3.5.0", - "jasmine-spec-reporter": "^5.0.1", - "karma": "^5.0.1", + "jasmine-spec-reporter": "^5.0.2", + "karma": "^5.0.4", "karma-chrome-launcher": "^3.1.0", "karma-cli": "~2.0.0", "karma-coverage-istanbul-reporter": "^2.1.1", "karma-jasmine": "^3.1.1", "karma-jasmine-html-reporter": "^1.5.3", - "protractor": "^5.4.3", - "ts-node": "^8.8.2", - "tslint": "^6.1.1", + "protractor": "^5.4.4", + "ts-node": "^8.10.1", + "tslint": "^6.1.2", "typescript": "~3.7.5", "webpack-dev-server": "^3.10.3" }, -- GitLab From 63f102d9d8618f296f06624f66c518ab0fe015ab Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 16:57:19 +0200 Subject: [PATCH 042/101] Updated dependencies (2) --- package-lock.json | 777 +++++++++++++--------------------------------- package.json | 12 +- 2 files changed, 220 insertions(+), 569 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd1cb100d..dfa6e2674 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1091,50 +1091,6 @@ } } }, - "@babel/generator": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", - "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", - "dev": true, - "requires": { - "@babel/types": "^7.5.5", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.2.tgz", - "integrity": "sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==", - "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" - } - }, - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", - "requires": { - "glob": "^7.1.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, "@babel/helper-annotate-as-pure": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", @@ -1424,26 +1380,6 @@ } } }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, "@babel/helper-hoist-variables": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", @@ -1964,15 +1900,6 @@ } } }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, "@babel/helper-validator-identifier": { "version": "7.9.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", @@ -2279,12 +2206,6 @@ } } }, - "@babel/parser": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", - "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", - "dev": true - }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", @@ -3033,6 +2954,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "dev": true, "requires": { "regenerator-runtime": "^0.13.2" }, @@ -3040,66 +2962,7 @@ "regenerator-runtime": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" - } - } - }, - "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" - } - }, - "@babel/traverse": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", - "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", "dev": true } } @@ -3419,13 +3282,33 @@ } }, "@develar/schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-qjCqB4ctMig9Gz5bd6lkdFr3bO6arOdQqptdBSpF1ZpCnjofieCciEzkoS9ujY9cMGyllYSCSmBJ3x9OKHXzoA==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + } } }, "@dsherret/to-absolute-glob": { @@ -3482,9 +3365,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "ms": { @@ -4364,38 +4247,38 @@ "dev": true }, "app-builder-bin": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.5.tgz", - "integrity": "sha512-ZcHzJ9Xl+azPqdKzXZKdRZmkNmbxHHZyl4cbobNf8qMQpoPChpcov8riVrZSbu/0cT/JqJ8LOwJjy1OAwbChaQ==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.8.tgz", + "integrity": "sha512-ni3q7QTfQNWHNWuyn5x3FZu6GnQZv+TFnfgk5++svqleKEhHGqS1mIaKsh7x5pBX6NFXU3/+ktk98wA/AW4EXw==", "dev": true }, "app-builder-lib": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.4.1.tgz", - "integrity": "sha512-epwUzIM+2pcdy/If9koTP74CKx4v7xGPj75a2Z5cM4rrGN9yVZ3eDUBbfF0e0qE4Qmcv5pd0BAZJ26bGm8NWsQ==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.6.0.tgz", + "integrity": "sha512-ky2aLYy92U+Gh6dKq/e8/bNmCotp6/GMhnX8tDZPv9detLg9WuBnWWi1ktBPlpbl1DREusy+TIh+9rgvfduQoA==", "dev": true, "requires": { "7zip-bin": "~5.0.3", - "@develar/schema-utils": "~2.1.0", + "@develar/schema-utils": "~2.6.5", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.4.1", - "builder-util-runtime": "8.6.2", + "builder-util": "22.6.0", + "builder-util-runtime": "8.7.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", - "ejs": "^3.0.1", - "electron-publish": "22.4.1", - "fs-extra": "^8.1.0", + "ejs": "^3.1.2", + "electron-publish": "22.6.0", + "fs-extra": "^9.0.0", "hosted-git-info": "^3.0.4", "is-ci": "^2.0.0", - "isbinaryfile": "^4.0.4", + "isbinaryfile": "^4.0.6", "js-yaml": "^3.13.1", "lazy-val": "^1.0.4", "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", - "read-config-file": "5.0.2", + "read-config-file": "6.0.0", "sanitize-filename": "^1.6.3", - "semver": "^7.1.3", + "semver": "^7.3.2", "temp-file": "^3.3.7" }, "dependencies": { @@ -4408,23 +4291,6 @@ "ms": "^2.1.1" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "hosted-git-info": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", @@ -4434,6 +4300,12 @@ "lru-cache": "^5.1.1" } }, + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4450,9 +4322,9 @@ "dev": true }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "yallist": { @@ -4469,15 +4341,6 @@ "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", "dev": true }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -5496,23 +5359,23 @@ "dev": true }, "builder-util": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.4.1.tgz", - "integrity": "sha512-+ysLc7cC4w6P7rBxmZ5X2aU3QvcwFoWCl1us+mcUKdsGmJAtFUMPJqueeptdxjyPrPShIUOKHzA8uk5A3d1fHg==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.6.0.tgz", + "integrity": "sha512-jgdES2ExJYkuXC3DEaGAjFctKNA81C4QDy8zdoc+rqdSqheTizuDNtZg02uMFklmUES4V4fggmqds+Y7wraqng==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@types/debug": "^4.1.5", "@types/fs-extra": "^8.1.0", - "app-builder-bin": "3.5.5", + "app-builder-bin": "3.5.8", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.6.2", - "chalk": "^3.0.0", + "builder-util-runtime": "8.7.0", + "chalk": "^4.0.0", "debug": "^4.1.1", - "fs-extra": "^8.1.0", + "fs-extra": "^9.0.0", "is-ci": "^2.0.0", "js-yaml": "^3.13.1", - "source-map-support": "^0.5.16", + "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.3.7" }, @@ -5528,9 +5391,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5555,23 +5418,6 @@ "ms": "^2.1.1" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5584,22 +5430,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -5612,9 +5442,9 @@ } }, "builder-util-runtime": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.6.2.tgz", - "integrity": "sha512-9QnIBISfhgQ2BxtRLidVqf/v5HD73vSKZDllpUmGd2L6VORGQk7cZAPmPtw4HQM3gPBelyVJ5yIjMNZ8xjmd1A==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.0.tgz", + "integrity": "sha512-G1AqqVM2vYTrSFR982c1NNzwXKrGLQjVjaZaWQdn4O6Z3YKjdMDofw88aD9jpyK9ZXkrCxR0tI3Qe9wNbyTlXg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -6476,12 +6306,6 @@ } } }, - "compare-versions": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", - "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", - "dev": true - }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -7380,9 +7204,9 @@ "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA==" }, "cordova-plugin-file-opener2": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cordova-plugin-file-opener2/-/cordova-plugin-file-opener2-3.0.0.tgz", - "integrity": "sha512-yQcJ5coOlfkDcTfIhFJEL2A7SWtLhy50y51Cb+EEkI7Y0lP74Ec2tsMtIOhe9i8wPSoSfnDcN77Hj6CSeIjogA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-file-opener2/-/cordova-plugin-file-opener2-3.0.1.tgz", + "integrity": "sha512-Esj7f1mRj19Mj+M2xQphw88zZ/zA9RfljTfahHf5xIKhtoB4Nf1DRbohOiT6z/AHg18EugN9H2g2jiwcBTkRRA==" }, "cordova-plugin-local-notification": { "version": "0.9.0-beta.2", @@ -8290,15 +8114,6 @@ "ip-regex": "^2.1.0" } }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -8556,37 +8371,19 @@ } }, "dmg-builder": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.4.1.tgz", - "integrity": "sha512-hEemh7n0zoVt7zPPwvn7iOttP03oENjJ4ApttPmt8oDnX8T4q42MjGWyDlLkPMplMJfoTxkkNqmm296f0OYM8Q==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.6.0.tgz", + "integrity": "sha512-rJxuGhHIpcuDGBtWZMM8aLxkbZNgYO2MO5dUerDIBXebhX1K8DA23iz/uZ8ahcRNgWEv57b8GDqJbXKEfr5T0A==", "dev": true, "requires": { - "app-builder-lib": "~22.4.1", - "bluebird-lst": "^1.0.9", - "builder-util": "~22.4.1", - "fs-extra": "^8.1.0", + "app-builder-lib": "22.6.0", + "builder-util": "22.6.0", + "fs-extra": "^9.0.0", "iconv-lite": "^0.5.1", "js-yaml": "^3.13.1", "sanitize-filename": "^1.6.3" }, "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "iconv-lite": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.1.tgz", @@ -8759,15 +8556,18 @@ "dev": true }, "ejs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", - "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.2.tgz", + "integrity": "sha512-zFuywxrAWtX5Mk2KAuoJNkXXbfezpNA0v7i+YC971QORguPekpjpAgeOv99YWSdKXwj7JxI2QAWDeDkE8fWtXw==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } }, "electron": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.2.tgz", - "integrity": "sha512-GH4RCbpuzEn3XpTmsf+wLaJ2KOPSOoBJvQ0s6ftTLs5+IQEgKZvkdYCj8TCBNXFhss31RT3BUqoEQQUyZErK0A==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.5.tgz", + "integrity": "sha512-LxSCUwmlfJtRwthd3ofpYaZ+1C2hQSW8Ep1DD9K3VbnDItO+kb3t1z35daJgAab78j54aOwo9gMxJtvU0Ftj6w==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -8776,33 +8576,33 @@ }, "dependencies": { "@types/node": { - "version": "12.12.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", - "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==", + "version": "12.12.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.37.tgz", + "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==", "dev": true } } }, "electron-builder": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.4.1.tgz", - "integrity": "sha512-13CjZcGeJS+c3EKRwFT/Oty5Niif5g1FwDioBLEbjkPCPQgxdtDsr+rJtCu9qxkiKDYpAoPS+t/clNk0efONvQ==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.6.0.tgz", + "integrity": "sha512-aLHlB6DTfjJ3MI4AUIFeWnwIozNgNlbOk2c2sTHxB10cAKp0dBVSPZ7xF5NK0uwDhElvRzJQubnHtJD6zKg42Q==", "dev": true, "requires": { "@types/yargs": "^15.0.4", - "app-builder-lib": "22.4.1", + "app-builder-lib": "22.6.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.4.1", - "builder-util-runtime": "8.6.2", - "chalk": "^3.0.0", - "dmg-builder": "22.4.1", - "fs-extra": "^8.1.0", + "builder-util": "22.6.0", + "builder-util-runtime": "8.7.0", + "chalk": "^4.0.0", + "dmg-builder": "22.6.0", + "fs-extra": "^9.0.0", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", - "read-config-file": "5.0.2", + "read-config-file": "6.0.0", "sanitize-filename": "^1.6.3", "update-notifier": "^4.1.0", - "yargs": "^15.1.0" + "yargs": "^15.3.1" }, "dependencies": { "ansi-regex": { @@ -8822,9 +8622,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -8861,29 +8661,12 @@ "path-exists": "^4.0.0" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8967,9 +8750,9 @@ } }, "yargs": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", - "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "dev": true, "requires": { "cliui": "^6.0.0", @@ -8982,13 +8765,13 @@ "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.0" + "yargs-parser": "^18.1.1" } }, "yargs-parser": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.0.tgz", - "integrity": "sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -8998,17 +8781,17 @@ } }, "electron-publish": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.4.1.tgz", - "integrity": "sha512-nwKNum3KXm+01rtWX2pc1jhazdzDy2zYnQx+zmXphZchjd6UOMX3ZN0xyZUCKugw5ZliflT6LkgbrcBXBtYD3A==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.6.0.tgz", + "integrity": "sha512-+v05SBf9qR7Os5au+fifloNHy5QxHQkUGudBj68YaTb43Pn37UkwRxSc49Lf13s4wW32ohM45g8BOVInPJEdnA==", "dev": true, "requires": { "@types/fs-extra": "^8.1.0", "bluebird-lst": "^1.0.9", - "builder-util": "~22.4.1", - "builder-util-runtime": "8.6.2", - "chalk": "^3.0.0", - "fs-extra": "^8.1.0", + "builder-util": "22.6.0", + "builder-util-runtime": "8.7.0", + "chalk": "^4.0.0", + "fs-extra": "^9.0.0", "lazy-val": "^1.0.4", "mime": "^2.4.4" }, @@ -9024,9 +8807,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -9042,23 +8825,6 @@ "color-name": "~1.1.4" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -9066,9 +8832,9 @@ "dev": true }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true }, "supports-color": { @@ -9946,23 +9712,6 @@ "debug": "^2.6.9", "mkdirp": "^0.5.4", "yauzl": "^2.10.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } } }, "extsprintf": { @@ -10130,14 +9879,13 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "filelist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", "dev": true, "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "minimatch": "^3.0.4" } }, "fill-range": { @@ -11202,9 +10950,9 @@ }, "dependencies": { "semver": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", - "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true, "optional": true } @@ -11568,9 +11316,9 @@ "dev": true }, "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "html-minifier": { @@ -12478,95 +12226,12 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul-api": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", - "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "compare-versions": "^3.4.0", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, - "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, "istanbul-lib-instrument": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", @@ -12718,43 +12383,45 @@ } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "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 }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -12823,12 +12490,33 @@ } }, "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.6.1.tgz", + "integrity": "sha512-pHUK3+V0BjOb1XSi95rbBksrMdIqLVC9bJqDnshVyleYsET3H0XAq+3VB2E3notcYvv4wRdRHn13p7vobG+wfQ==", "dev": true, "requires": { - "html-escaper": "^2.0.0" + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } } }, "jalhyd": { @@ -13293,12 +12981,15 @@ } }, "karma-coverage-istanbul-reporter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", - "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.2.tgz", + "integrity": "sha512-pg23tKKF867UIJUIZF252cNbiBnuMIPOMkeiULzjysr9K267Js2O/SoQBL1PCPctJVzvhOkE47yQPUKrWtyl6w==", "dev": true, "requires": { - "istanbul-api": "^2.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", "minimatch": "^3.0.4" } }, @@ -16595,9 +16286,9 @@ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" }, "primeng": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.5.tgz", - "integrity": "sha512-juugoXZaU7TyGyTSFx0PNjObqM+/RTY/arJ/LwyH/0KaIv0V+Oqfvnx8btJ96kLOZ+h0xLWXLuAbxsTXe9EX6w==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.6.tgz", + "integrity": "sha512-RGVTkXwHTb7609zTU/uJFYdbJV124kOwrMiwnHjFn6UkwmS3yTX0Kkr21v8KOTJqsKLq3OWVYhkOwvUklipAAg==" }, "printj": { "version": "1.1.2", @@ -16615,7 +16306,8 @@ "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true }, "process": { "version": "0.11.10", @@ -17183,51 +16875,16 @@ } }, "read-config-file": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.2.tgz", - "integrity": "sha512-tVt1lsiSjs+FtL/vtfCivqtKR1UNk3BB3uPJQvJqkgtAYDvZjo0xyXFYSVmzaTcO+Jdi5G7O2K2vDV+p1M/oug==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz", + "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==", "dev": true, "requires": { "dotenv": "^8.2.0", "dotenv-expand": "^5.1.0", - "fs-extra": "^8.1.0", "js-yaml": "^3.13.1", - "json5": "^2.1.1", + "json5": "^2.1.2", "lazy-val": "^1.0.4" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz", - "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg==", - "dev": true - } } }, "read-package-json": { @@ -19636,9 +19293,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true } } @@ -20030,12 +19687,6 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -20629,9 +20280,9 @@ "dev": true }, "is-installed-globally": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.1.tgz", - "integrity": "sha512-oiEcGoQbGc+3/iijAijrK2qFpkNoNjsHOm/5V5iaeydyrS/hnwaRCEgH5cpW0P3T1lSjV5piB7S5b5lEugNLhg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "requires": { "global-dirs": "^2.0.1", @@ -20651,9 +20302,9 @@ "dev": true }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -21790,9 +21441,9 @@ "dev": true }, "xlsx": { - "version": "0.15.6", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.15.6.tgz", - "integrity": "sha512-7vD9eutyLs65iDjNFimVN+gk/oDkfkCgpQUjdE82QgzJCrBHC4bGPH7fzKVyy0UPp3gyFVQTQEFJaWaAvZCShQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.0.tgz", + "integrity": "sha512-W/LQZjh6o7WDGmCIUXp2FUPSej2XRdaiTgZN31Oh68JlL7jpm796p3eI5zOpphYNT12qkgnXYaCysAsoiyZvOQ==", "requires": { "adler-32": "~1.2.0", "cfb": "^1.1.4", diff --git a/package.json b/package.json index 9a15dc891..7f39c893d 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "cordova-plugin-badge": "^0.8.8", "cordova-plugin-device": "^2.0.3", "cordova-plugin-file": "^6.0.2", - "cordova-plugin-file-opener2": "^3.0.0", + "cordova-plugin-file-opener2": "^3.0.1", "cordova-plugin-local-notification": "^0.9.0-beta.2", "cordova-plugin-whitelist": "^1.3.4", "core-js": "^3.6.5", @@ -74,13 +74,13 @@ "ngx-matomo": "^0.1.4", "ngx-webstorage-service": "^4.1.0", "pako": "^1.0.11", - "primeng": "^9.0.5", + "primeng": "^9.0.6", "roboto-fontface": "^0.10.0", "rxjs": "^6.5.5", "screenfull": "^5.0.2", "svg-pan-zoom": "^3.6.1", "tslib": "^1.11.1", - "xlsx": "^0.15.6", + "xlsx": "^0.16.0", "zone.js": "^0.10.3" }, "devDependencies": { @@ -95,15 +95,15 @@ "@types/node": "^13.13.4", "codelyzer": "^5.2.2", "cordova": "^9.0.0", - "electron": "^8.2.2", - "electron-builder": "^22.4.1", + "electron": "^8.2.5", + "electron-builder": "^22.6.0", "fs-extra": "^9.0.0", "jasmine-core": "^3.5.0", "jasmine-spec-reporter": "^5.0.2", "karma": "^5.0.4", "karma-chrome-launcher": "^3.1.0", "karma-cli": "~2.0.0", - "karma-coverage-istanbul-reporter": "^2.1.1", + "karma-coverage-istanbul-reporter": "^3.0.2", "karma-jasmine": "^3.1.1", "karma-jasmine-html-reporter": "^1.5.3", "protractor": "^5.4.4", -- GitLab From 24dbbc60be9116a88a27d5aa6cb88e68c0f9344c Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 16:57:59 +0200 Subject: [PATCH 043/101] Updated e2e for new Section results --- e2e/calculator.po.ts | 19 ++++++++++++------- e2e/compute-reset-chained-links.e2e-spec.ts | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index 2639f2077..fb065df26 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -121,22 +121,27 @@ export class CalculatorPage { async hasResults() { return ( - await element(by.css("fixedvar-results fixed-results > .fixed-results-container")).isPresent() + await this.presentAndVisible("fixedvar-results fixed-results > .fixed-results-container") || - await element(by.css("fixedvar-results results-chart > chart-results-container")).isPresent() + await this.presentAndVisible("fixedvar-results results-chart > chart-results-container") || - await element(by.css("section-results fixed-results > .fixed-results-container")).isPresent() + await this.presentAndVisible("section-results fixed-results > .fixed-results-container") || - await element(by.css("remous-results #main-chart")).isPresent() + await this.presentAndVisible("remous-results #main-chart") || - await element(by.css("pab-results pab-results-table")).isPresent() + await this.presentAndVisible("pab-results pab-results-table") || - await element(by.css("macrorugo-compound-results macrorugo-compound-results-table")).isPresent() + await this.presentAndVisible("macrorugo-compound-results macrorugo-compound-results-table") || - await element(by.css("jet-results .fixed-results-container")).isPresent() + await this.presentAndVisible("jet-results .fixed-results-container") ); } + async presentAndVisible(selector: string): Promise<boolean> { + const elt = element(by.css(selector)); + return await elt.isPresent() && await elt.isDisplayed(); + } + /** * For a given <table> element, check that values of all cells of all rows in <tbody> are * different from "NaN", "ERR" and optionally "" diff --git a/e2e/compute-reset-chained-links.e2e-spec.ts b/e2e/compute-reset-chained-links.e2e-spec.ts index c0ba8e5f4..75ac102b9 100644 --- a/e2e/compute-reset-chained-links.e2e-spec.ts +++ b/e2e/compute-reset-chained-links.e2e-spec.ts @@ -45,6 +45,7 @@ describe("ngHyd − compute then reset chained results − ", () => { // down-most module should have results let hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); // up-most should not await navbar.clickCalculatorTabForUid("ZTFxeW"); hasResults = await calcPage.hasResults(); -- GitLab From a9644f5aa67c41de5b172a63885a24943bdbb2dd Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 6 May 2020 10:42:23 +0200 Subject: [PATCH 044/101] Fix bug in Verificateur log --- .../verificateur-results.component.ts | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts index b384e2125..08c3ef53c 100644 --- a/src/app/components/verificateur-results/verificateur-results.component.ts +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -118,19 +118,16 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl }); } } - // logs des Espece pour l'itération en cours; l.length devrait toujours être égal à especeResults.length - if (l.length !== this._verificateurResults.especeResults.length) { - throw new Error( - "VerificateurResultsComponent: l.length !== this._verificateurResults.especeResults.length (" - + l.length + " / " + this._verificateurResults.especeResults.length + ")" - ); - } - for (let i = 0; i < this._verificateurResults.especeResults.length; i++) { - const er = this._verificateurResults.especeResults[i]; - if (er && er.hasResultElements() && er.resultElements[vi].hasLog()) { - l[i].subLog.addLog(er.resultElements[vi].log); + // logs des Espece pour l'itération en cours; l.length devrait toujours être égal à especeResults.length, + // sauf s'il y a une erreur dans la passe calculée + if (l.length === this._verificateurResults.especeResults.length) { + for (let i = 0; i < this._verificateurResults.especeResults.length; i++) { + const er = this._verificateurResults.especeResults[i]; + if (er && er.hasResultElements() && er.resultElements[vi].hasLog()) { + l[i].subLog.addLog(er.resultElements[vi].log); + } } - } + } // else silent fail } return l; } -- GitLab From e47ba1cfea617dc379da882b2fb7b5f2d21be89a Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 6 May 2020 10:55:14 +0200 Subject: [PATCH 045/101] Verificateur: reset results when Select values change --- src/app/formulaire/definition/form-verificateur.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 2a46caf52..3059f51c5 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -85,6 +85,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { } if (sender instanceof SelectFieldCustom) { + this.reset(); // reset results if (sender.id === "select_target_pass" && data.action === "select") { // update Verificateur property: Pass to check this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); -- GitLab From 2626e71081e9ee0b92743a57a6d8e076584fd482 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 7 May 2020 13:41:30 +0200 Subject: [PATCH 046/101] Fix bug in PAB results reset --- src/app/formulaire/definition/form-pab.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/formulaire/definition/form-pab.ts b/src/app/formulaire/definition/form-pab.ts index 08bd3f1ab..593aa219a 100644 --- a/src/app/formulaire/definition/form-pab.ts +++ b/src/app/formulaire/definition/form-pab.ts @@ -82,7 +82,7 @@ export class FormulairePab extends FormulaireDefinition { return this._pabResults; } - public resetResults() { // @TODO why not resetFormResults() only ? + public resetFormResults() { this._pabResults.reset(); } -- GitLab From 1ce1801429b34cee01925a1da7e676c853c4c4c2 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 7 May 2020 15:49:16 +0200 Subject: [PATCH 047/101] Verificateur: manage variating passes --- .../verificateur-results.component.ts | 9 ++++++--- .../definition/form-verificateur.ts | 19 +++++++++++++------ src/app/results/verificateur-results.ts | 5 +++++ src/locale/messages.en.json | 2 ++ src/locale/messages.fr.json | 4 ++++ 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts index 08c3ef53c..2222240c5 100644 --- a/src/app/components/verificateur-results/verificateur-results.component.ts +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -101,8 +101,6 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl if (this._verificateurResults) { // = 0 lorsque rien ne varie const vi = this._verificateurResults.variableIndex; - // log du Verificateur pour l'itération en cours - const element = { message: Message, subLog: cLog }; if ( this._verificateurResults.result && this._verificateurResults.result.hasResultElements() @@ -123,7 +121,12 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl if (l.length === this._verificateurResults.especeResults.length) { for (let i = 0; i < this._verificateurResults.especeResults.length; i++) { const er = this._verificateurResults.especeResults[i]; - if (er && er.hasResultElements() && er.resultElements[vi].hasLog()) { + if ( + er + && er.hasResultElements() + && er.resultElements[vi] + && er.resultElements[vi].hasLog()) + { l[i].subLog.addLog(er.resultElements[vi].log); } } diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 3059f51c5..ad7f3fffc 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -4,6 +4,8 @@ import { SelectFieldCustom } from "../elements/select-field-custom"; import { FormulaireFixedVar } from "./form-fixedvar"; import { VerificateurResults } from "../../results/verificateur-results"; import { CalculatorResults } from "../../results/calculator-results"; +import { NgParameter } from "../elements/ngparam"; +import { ServiceFactory } from "../../services/service-factory"; /** * Formulaire pour les Vérificateurs @@ -34,18 +36,23 @@ export class FormulaireVerificateur extends FormulaireFixedVar { this.reaffectResultComponents(); } + protected findPassVariatedParameters(): NgParameter[] { + let pvp = [] + const passUid = this.verificateurNub.nubToVerify.uid; + const passForm = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(passUid); + pvp = passForm.getVariatedParameters(); + return pvp; + } + protected reaffectResultComponents() { const ver: Verificateur = (this.currentNub as Verificateur); - // const varParams: NgParameter[] = this.getVariatedParameters(); // résultat de calcul de la passe à macrorugo complexe const vr = this.verificateurResults; - // vr.calculatedParameter = computedParam; vr.result = ver.result; - /* if (varParams) { - vr.variatedParameters = varParams; - } */ - vr.variatedParameters = []; + + // paramètres qui varient, pour le sélecteur d'itération + vr.variatedParameters = this.findPassVariatedParameters(); // résultat de chaque Espece const er: Result[] = []; diff --git a/src/app/results/verificateur-results.ts b/src/app/results/verificateur-results.ts index 304785720..59b1cdd26 100644 --- a/src/app/results/verificateur-results.ts +++ b/src/app/results/verificateur-results.ts @@ -7,6 +7,11 @@ export class VerificateurResults extends MultiDimensionResults { /** résultats des modules Espece */ public especeResults: Result[]; + public constructor() { + super(); + this.reset(); + } + public reset() { super.reset(); this.especeResults = []; diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 8f6a2e6fa..728fc8d75 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -555,6 +555,7 @@ "INFO_TRIGO_TITRE": "Trigonometric function", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", "INFO_VERIF_OK": "Crossing criteria are met for all species", + "INFO_VERIF_VARYING_OK": "Crossing criteria are met for all species and all pass modalities", "WARNING_VERIF_OK_BUT": "Crossing criteria are met for all species, but there are warnings", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", @@ -641,6 +642,7 @@ "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", + "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 14a4a2934..9a77d60bd 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -556,7 +556,9 @@ "INFO_TRIGO_TITRE": "Fonction trigonométrique", "INFO_TRIGO_TITRE_COURT": "F. trigo.", "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", + "INFO_VERIF_VARYING_OK": "Les critères de franchissement sont remplis pour toutes les espèces et toutes les modalités de la passe", "WARNING_VERIF_OK_BUT": "Les critères de franchissement sont remplis pour toutes les espèces, mais il y a des avertissements", + "WARNING_VERIF_VARYING_OK_BUT": "Seules certaines modalités de la passe sont franchissables", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", @@ -607,6 +609,7 @@ "INFO_PARENT_PREFIX": "%name% n°%position% : ", "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : ", "ERROR_VERIF_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs", + "ERROR_VERIF_VARYING_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs à l'itération %i%", "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", @@ -642,6 +645,7 @@ "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", + "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", -- GitLab From 2ae40740fecc20a389c22b778d40342ddb606efc Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 11 May 2020 10:04:18 +0200 Subject: [PATCH 048/101] Updated dependencies --- package-lock.json | 2868 +++++++++++++++------------------------------ package.json | 36 +- 2 files changed, 949 insertions(+), 1955 deletions(-) diff --git a/package-lock.json b/package-lock.json index dfa6e2674..60a0a4bbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,12 +11,12 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.901.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.4.tgz", - "integrity": "sha512-w4RMj7eLhUSh70HUy5tW4EXjLQFXk0Lfr9WiSy5gvPGp+zzYxknI+Wn4Xid1wU/WS+4tuMv5nJIaNaH2sABESQ==", + "version": "0.901.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.5.tgz", + "integrity": "sha512-VO+8qBkaq54xAjdtvhEhQ86gZxS0V1wC9hGblw3O+XXri/euHky4811B2BbEylPy8/kRy5sUYcuwcyZrVxJ2TQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.4", + "@angular-devkit/core": "9.1.5", "rxjs": "6.5.4" }, "dependencies": { @@ -32,21 +32,21 @@ } }, "@angular-devkit/build-angular": { - "version": "0.901.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.4.tgz", - "integrity": "sha512-Vod4bc6d38fuvqauIDQxKMe9hKW9m4QNzPKxEc+Dv5Xkv95WaGzkbUVu8M8t4E//sDDMpmcPdYOXSdR27WBi2Q==", + "version": "0.901.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.5.tgz", + "integrity": "sha512-XottEBXE7cmkx6LPu33lXJCSAlxFkIu2ErWvV1oy+La6aZEuoJVntxzIKLprJmTiiD/4IDDQLWwp4m+EC96kyg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.4", - "@angular-devkit/build-optimizer": "0.901.4", - "@angular-devkit/build-webpack": "0.901.4", - "@angular-devkit/core": "9.1.4", + "@angular-devkit/architect": "0.901.5", + "@angular-devkit/build-optimizer": "0.901.5", + "@angular-devkit/build-webpack": "0.901.5", + "@angular-devkit/core": "9.1.5", "@babel/core": "7.9.0", "@babel/generator": "7.9.3", "@babel/preset-env": "7.9.0", "@babel/template": "7.8.6", "@jsdevtools/coverage-istanbul-loader": "3.0.3", - "@ngtools/webpack": "9.1.4", + "@ngtools/webpack": "9.1.5", "ajv": "6.12.0", "autoprefixer": "9.7.4", "babel-loader": "8.0.6", @@ -97,77 +97,9 @@ "webpack-merge": "4.2.2", "webpack-sources": "1.4.3", "webpack-subresource-integrity": "1.4.0", - "worker-plugin": "4.0.2" + "worker-plugin": "4.0.3" }, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz", - "integrity": "sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, "ajv": { "version": "6.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", @@ -180,12 +112,41 @@ "uri-js": "^4.2.2" } }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, "core-js": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", "dev": true }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", @@ -206,6 +167,24 @@ "path-is-absolute": "^1.0.0" } }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "regenerator-runtime": { "version": "0.13.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", @@ -230,6 +209,17 @@ "tslib": "^1.9.0" } }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "semver": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", @@ -254,13 +244,62 @@ "dev": true } } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", + "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } } } }, "@angular-devkit/build-optimizer": { - "version": "0.901.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.4.tgz", - "integrity": "sha512-iDMlNRwd8ICMBKnycfw55hdnL5kCiqUjQn+aK/4uOMJMz49tiYMNJAaznXX2BFKmYSmbapKjEbzx9yMYRi9Y7w==", + "version": "0.901.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.5.tgz", + "integrity": "sha512-xmAMvLMSa8BvqlZ0wsC37Qop/7/pEaQRKLeowC3CCI3jiYDF10Tihar+Hjc04NVSal8ZBP9/+Gp3Yr0x61HcFA==", "dev": true, "requires": { "loader-utils": "2.0.0", @@ -270,6 +309,12 @@ "webpack-sources": "1.4.3" }, "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, "typescript": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.5.tgz", @@ -279,13 +324,13 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.901.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.4.tgz", - "integrity": "sha512-YBOufI4TGAtIDCS6erFygYJX/fkd8xwI58d+7iFIBmtIJC4/fpGjX6qkHMCBgh8HXAkEPSORBCYQn9O44J1ZXQ==", + "version": "0.901.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.5.tgz", + "integrity": "sha512-4HHOFFRu3yUBe0otaDHh4PID99XvnBJj7hYzvbB5BvP0ULif4/W0aoU2STnern4lH4pJmrtqYawBZ84ETXN/Ag==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.4", - "@angular-devkit/core": "9.1.4", + "@angular-devkit/architect": "0.901.5", + "@angular-devkit/core": "9.1.5", "rxjs": "6.5.4" }, "dependencies": { @@ -301,9 +346,9 @@ } }, "@angular-devkit/core": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz", - "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.5.tgz", + "integrity": "sha512-i0BJ6Ad3bcDE6e4Ev9Flbw7P0bz9p94FDVfEOPGBTrbJQZSqOm3CqaH2y5LGfl7acSPUi54hK481h1QRUFBkTQ==", "dev": true, "requires": { "ajv": "6.12.0", @@ -349,12 +394,12 @@ } }, "@angular-devkit/schematics": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.4.tgz", - "integrity": "sha512-RAbdnUEZ3JTLmWSBiXT5trsVx8Fi72fxN9CiRaluM09Cytg6BUc1wC5XCO0YPvhI400+3Ro1nwjPXezjg7LXzQ==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.5.tgz", + "integrity": "sha512-nkNiGrVl7xLaYYj/oT1wOBowa4Driv2f4abn78AJI/pd/EXA45G/rI9gO/kEG8lHn+FAMQedaywX9N4JDOxCGg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.4", + "@angular-devkit/core": "9.1.5", "ora": "4.0.3", "rxjs": "6.5.4" }, @@ -371,14 +416,14 @@ } }, "@angular/animations": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.4.tgz", - "integrity": "sha512-gMo/DbCm5BDArladMAeC7/75T2DvhLr4CSUGJt/P/aimTEG2ywoAALs3pzwSSe4qxrHiR0OIksVW3l4km3iXEw==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.6.tgz", + "integrity": "sha512-7Pp7aqNNcH4fu1BnOVpvqJJHjE7RZ5K1oD396OWCh35pgpLowLSpFjhbVhzGrcAuxHyKnnHSX3etLn2hDaHxmQ==" }, "@angular/cdk": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.2.tgz", - "integrity": "sha512-VNd+KuMN6cBcy4/8OyMxqYaxdjPP6IyCqIVijB2JREkc5Sg4VWmPgx2L3rHt/DzjsVBVRgx35uqOMymDezG3jQ==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.3.tgz", + "integrity": "sha512-tQr/yt8GNGsZ/DTT+PMq7XdRmL56hwVCyf8F12JQAawutSLfTfMb+S1lpN7L/0Pb/L5JBuCfG2HmXK7vHo02gw==", "requires": { "parse5": "^5.0.0" }, @@ -392,16 +437,16 @@ } }, "@angular/cli": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.4.tgz", - "integrity": "sha512-H9MqoT4zyIv+Yo3cvRVkzafWGHsqt7jUvtvGwMHIDMTfEX+Q8yiYlDLL6WM3Eb6/hDmLcRGC/GI495sKS1z5qA==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.5.tgz", + "integrity": "sha512-Decn0p+s0SLc5p2GN7k8dUrOY43hBuCz8PxueW0gEln7NjlpdmHk+6JQn0ZRl2/2Dbk+eTGzPXyCxGwqsW3jjw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.4", - "@angular-devkit/core": "9.1.4", - "@angular-devkit/schematics": "9.1.4", - "@schematics/angular": "9.1.4", - "@schematics/update": "0.901.4", + "@angular-devkit/architect": "0.901.5", + "@angular-devkit/core": "9.1.5", + "@angular-devkit/schematics": "9.1.5", + "@schematics/angular": "9.1.5", + "@schematics/update": "0.901.5", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.1.1", @@ -666,19 +711,19 @@ } }, "@angular/common": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.4.tgz", - "integrity": "sha512-JvCoCWVbx0tF7l/0WTi24ui/mc2SElyVSNchR4VK/FViARnkvnSBdI/Ef5QWXrsPyKU4PYBtnWWgyxRspH+FBA==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.6.tgz", + "integrity": "sha512-L9vw//wE+8QcSArOA411uJ68znnszCiPrbzSBV0BRZeadc7X68MwANA9qjtiTWZx5Xh9pNfHHwsCUyv2lUeinQ==" }, "@angular/compiler": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.4.tgz", - "integrity": "sha512-B+f3lviFNEJtL9V9exSKYPSz2Ddb6dxgPzQR7GSjGikDo+fKMtC1PjNwgJooS9gavhQx30uwkEEMIPYQbM6nNA==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.6.tgz", + "integrity": "sha512-tHOQEjWuWqSkrk6/vI6BK7uJnpAyFajCXPW37rH5xspF/aMbetrpoOiGBNUQg/HLaFh04nOAnnFntjLkW0ooaA==" }, "@angular/compiler-cli": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.4.tgz", - "integrity": "sha512-n3PzqNnPD7s/AF9mv5CnarK0sgfoq4txFncHjJWBSltuTQoz6BDZyjuEdqsSLUvgAZPeLsmohemOzEE38HYHZA==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.6.tgz", + "integrity": "sha512-1b7m9tvSQJE4y95wNCdi34MORcsmXPC1vaylYlzChVM2et9Y2eKHYcRs+4g329j66irLBGpS/7cgTT2pgJ+IbA==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -869,9 +914,9 @@ } }, "@angular/core": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.4.tgz", - "integrity": "sha512-ND240vncmVD2KVe/KSQU3d/DxxoRipFg1+jFOFZGt0n0orCBHk/V1fu9iaG1sRyldL0+rCQ+fTI+1N4DTmMnxA==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.6.tgz", + "integrity": "sha512-iXgPh5DebLwkMzLtQ6WKiv/mo4hpwMOwYex3O4F2CKToR2tKPnXbV5WC/ADGm0XYXiocSKQPiyL4ZrUjVeKEqA==" }, "@angular/flex-layout": { "version": "9.0.0-beta.29", @@ -879,35 +924,35 @@ "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==" }, "@angular/forms": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.4.tgz", - "integrity": "sha512-Njt+pMLfPBchL0/ayIjJqXL6ZfM4Ccvf7KO1wS1HMzh3QlmfNa0JSgc4pfrbRJAMN9g7V/FYLyKejs1bJZkenA==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.6.tgz", + "integrity": "sha512-3KiFjLDipZVgS5rfnZ8EoKlkUokOR8dmuw2xdjKHgzflWFFeuaY9ZtQgjZGw9/jkwWlc9P38BOSEHbK8NakdDw==" }, "@angular/language-service": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.4.tgz", - "integrity": "sha512-eyVxxiegdb4ESdFGfkuDN+YfUbOVHRQLjIl6ACFJQDNHzVXzbmuqpyr5hIJANIVady103/7+dqRxxJo1DdIdTQ==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.6.tgz", + "integrity": "sha512-pB18hVoAbIuk1Wus8ur7yUxSukfPR4pCXiOfbxDQ94qlCzLAzIwXbaNV4erpBfL/fUKxMY3h8RrVt0dfm6M5RQ==", "dev": true }, "@angular/material": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.2.tgz", - "integrity": "sha512-gdQiMJ6PtW/5fd+0mglHFyzxULDCBGjn9RTET3sUq2rkc9+jBXr4OvnsUyBWSnqqv97XqotVDIx5JgE4/YX/Rw==" + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.3.tgz", + "integrity": "sha512-QJltLNp8a/eoozPgkFLISEWgdlX9q9+fZaLJ8c9tHEp2IT5sFYBFHf8dPl0pUyxgOXkS/0HD43I1qki71/T7Kw==" }, "@angular/platform-browser": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.4.tgz", - "integrity": "sha512-mBCHfTl+5tQfaUiGlDujP7mFBzovFc54Zi2kcCE8DSdSSVQ2TPBo6hXa6y2cL3hJPFZzQ7mC4ORFrsGADhHn/w==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.6.tgz", + "integrity": "sha512-ebQhbT0Z55vwlQwAY4+s3Bcf1Q4wEN5Yk43iCuVt4g2kFkg09UP0z8aYtbuh7VQDyv/W4TTIGX8smGBWstoedQ==" }, "@angular/platform-browser-dynamic": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.4.tgz", - "integrity": "sha512-YtVbnxyS6FU7xNpA6A95tmSfrB8+WC7OH3mbP8M9NaGk0OYz8B/JOe1HByP4JRpEGCvBtXdJ2NSW/MpLIT8SiQ==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.6.tgz", + "integrity": "sha512-7AL3hWu4oY0LRiMS9ZEFXPW2uqybWcVNFDHjPp3UwsDIT4+sW3DIm8P+UvAOFkkRwaHpPDqm4chTTiAHygC/1Q==" }, "@angular/router": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.4.tgz", - "integrity": "sha512-yUyjCgG2P2Jh8MvoyC6yirmAtx1Qe7MKLuLvsa9WOB571QNEcNLTYMfAMHUKsQTcE/+o984QyLlneoibgI9wFA==" + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.6.tgz", + "integrity": "sha512-Oz4nVQUR6t68DSzZuSrVaqrzmA7/0PIEi0sc85CE+UuOEoAqGMwN0NdQYizFT62WZ16DRI/1tZ+TTWvdmpEv8w==" }, "@babel/code-frame": { "version": "7.5.5", @@ -962,47 +1007,6 @@ "@babel/highlight": "^7.8.3" } }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, "@babel/highlight": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", @@ -1014,51 +1018,6 @@ "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -1091,6 +1050,26 @@ } } }, + "@babel/generator": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz", + "integrity": "sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "@babel/helper-annotate-as-pure": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", @@ -1098,19 +1077,6 @@ "dev": true, "requires": { "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -1121,19 +1087,6 @@ "requires": { "@babel/helper-explode-assignable-expression": "^7.8.3", "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-compilation-targets": { @@ -1169,76 +1122,6 @@ "@babel/helper-function-name": "^7.8.3", "@babel/types": "^7.8.3", "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-explode-assignable-expression": { @@ -1249,135 +1132,26 @@ "requires": { "@babel/traverse": "^7.8.3", "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" } }, "@babel/helper-hoist-variables": { @@ -1387,19 +1161,6 @@ "dev": true, "requires": { "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-member-expression-to-functions": { @@ -1409,19 +1170,6 @@ "dev": true, "requires": { "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-module-imports": { @@ -1431,19 +1179,6 @@ "dev": true, "requires": { "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-module-transforms": { @@ -1459,65 +1194,6 @@ "@babel/template": "^7.8.6", "@babel/types": "^7.9.0", "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-optimise-call-expression": { @@ -1527,19 +1203,6 @@ "dev": true, "requires": { "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-plugin-utils": { @@ -1568,135 +1231,6 @@ "@babel/template": "^7.8.3", "@babel/traverse": "^7.8.3", "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@babel/helper-replace-supers": { @@ -1709,135 +1243,6 @@ "@babel/helper-optimise-call-expression": "^7.8.3", "@babel/traverse": "^7.9.6", "@babel/types": "^7.9.6" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@babel/helper-simple-access": { @@ -1848,56 +1253,15 @@ "requires": { "@babel/template": "^7.8.3", "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" } }, "@babel/helper-validator-identifier": { @@ -1909,142 +1273,13 @@ "@babel/helper-wrap-function": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helpers": { @@ -2056,135 +1291,6 @@ "@babel/template": "^7.8.3", "@babel/traverse": "^7.9.6", "@babel/types": "^7.9.6" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@babel/highlight": { @@ -2206,6 +1312,12 @@ } } }, + "@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", + "dev": true + }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", @@ -2432,85 +1544,6 @@ "@babel/helper-replace-supers": "^7.8.6", "@babel/helper-split-export-declaration": "^7.8.3", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/plugin-transform-computed-properties": { @@ -2577,76 +1610,6 @@ "requires": { "@babel/helper-function-name": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/plugin-transform-literals": { @@ -2748,28 +1711,6 @@ "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/plugin-transform-property-literals": { @@ -2922,68 +1863,152 @@ "invariant": "^2.2.2", "levenary": "^1.1.1", "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" }, "dependencies": { - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } } } }, - "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", - "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" }, "dependencies": { - "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, "@babel/types": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", - "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } } }, "@braintree/sanitize-url": { @@ -3397,18 +2422,6 @@ "schema-utils": "^2.6.4" }, "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -3418,12 +2431,6 @@ "safe-buffer": "~5.1.1" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -3453,16 +2460,6 @@ "source-map": "^0.6.1" } }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3482,12 +2479,12 @@ } }, "@ngtools/webpack": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.4.tgz", - "integrity": "sha512-CDlQzMnWraxf/dT3G5L+0N0VniWHWdzjLRP8pWBoyV0xlzWS1yL/lj8Mas2jEIuaUxZ8bi29mE7xa8prqewtBQ==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.5.tgz", + "integrity": "sha512-6VzmlXRnf7phwLOiy0WrxHFHD5TuNQgVVpD/VFkZjtCTOsZyGQYGVPfaqxvn13M4Mm8bjrN4mk06VowCFm2oHw==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.4", + "@angular-devkit/core": "9.1.5", "enhanced-resolve": "4.1.1", "rxjs": "6.5.4", "webpack-sources": "1.4.3" @@ -3511,23 +2508,23 @@ "dev": true }, "@schematics/angular": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.4.tgz", - "integrity": "sha512-7nbiYBRgXc+f0sa5iXTcF6/VMy/Xq0wyKKnDFiLCb2aFYR7EXRHWF2GuwDIg2bvFugLuCBDoNnXeddLE1TXGWg==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.5.tgz", + "integrity": "sha512-kMscfnwd9TGLo8V+dE/Pzu4wNxZej/6F6z5XzMOQVFTbL+RqMDvtkHf9CarhiKBd5ogm4npfKV8ToNTUecFJkA==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.4", - "@angular-devkit/schematics": "9.1.4" + "@angular-devkit/core": "9.1.5", + "@angular-devkit/schematics": "9.1.5" } }, "@schematics/update": { - "version": "0.901.4", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.4.tgz", - "integrity": "sha512-jCtZY2Fbj502gKN5gdu1brnRy/ssyzTrWm69Ty73V+t8uL7nLr+/hny/VBJ8CiQnKQvxcgVl1xgvI1cXzpysVA==", + "version": "0.901.5", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.5.tgz", + "integrity": "sha512-JmB+AuU6C9eM8x/CxeBEDigRuypzuWx7gnloK9D5i2gP9r39clFNtWT7eM3YW3kl4uyEMzrQHx6esMWNUScVBw==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.4", - "@angular-devkit/schematics": "9.1.4", + "@angular-devkit/core": "9.1.5", + "@angular-devkit/schematics": "9.1.5", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^8.0.0", @@ -3680,9 +2677,9 @@ "integrity": "sha512-13gmo3M2qVvjQrWNseqM3+cR6S2Ss3grbR2NZltgMq94wOwqJYQdgn8qzwDshzgXqMlSUtyPZjysImmktu22ew==" }, "@types/node": { - "version": "13.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", - "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", + "version": "13.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", + "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==", "dev": true }, "@types/pako": { @@ -4476,6 +3473,14 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "assert": { @@ -4927,9 +3932,9 @@ } }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==", "dev": true }, "body-parser": { @@ -5271,21 +4276,49 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.1.0.tgz", + "integrity": "sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "browserify-zlib": { @@ -5546,15 +4579,6 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -5688,9 +4712,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001051", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz", - "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw==", + "version": "1.0.30001055", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001055.tgz", + "integrity": "sha512-MbwsBmKrBSKIWldfdIagO5OJWZclpJtS4h0Jrk/4HFrXJxTdVdH23Fd+xCiHriVGvYcWyW8mR/CPsYajlH8Iuw==", "dev": true }, "canonical-path": { @@ -6648,6 +5672,17 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -7311,6 +6346,14 @@ "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "create-error-class": { @@ -7454,24 +6497,6 @@ "semver": "^6.3.0" }, "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -7498,16 +6523,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -8251,6 +7266,12 @@ "path-is-inside": "^1.0.2" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -8359,6 +7380,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "dir-glob": { @@ -8849,9 +7878,9 @@ } }, "electron-to-chromium": { - "version": "1.3.428", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.428.tgz", - "integrity": "sha512-u3+5jEfgLKq/hGO96YfAoOAM1tgFnRDTCD5mLuev44tttcXix+INtVegAkmGzUcfDsnzkPt51XXurXZLLwXt0w==", + "version": "1.3.432", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.432.tgz", + "integrity": "sha512-/GdNhXyLP5Yl2322CUX/+Xi8NhdHBqL6lD9VJVKjH6CjoPGakvwZ5CpKgj/oOlbzuWWjOvMjDw1bBuAIRCNTlw==", "dev": true }, "elementtree": { @@ -8882,6 +7911,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "emoji-regex": { @@ -8952,6 +7989,17 @@ "requires": { "ms": "2.0.0" } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } } } }, @@ -8982,6 +8030,17 @@ "requires": { "ms": "2.0.0" } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } } } }, @@ -9007,18 +8066,6 @@ "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } } }, "ent": { @@ -9299,9 +8346,9 @@ } }, "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.1.tgz", + "integrity": "sha512-MnI0l35oYL2C/c80rjJN7qu50MDx39yYE7y7oYck2YA3v+y7EaAenY8IU8AP4d1RWqE8VAKWFGSh3rfP87ll3g==", "dev": true }, "events": { @@ -9829,49 +8876,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" } }, "file-saver": { @@ -10043,9 +9060,9 @@ } }, "follow-redirects": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.8.1.tgz", - "integrity": "sha512-micCIbldHioIegeKs41DoH0KS3AXfFzgS30qVkM6z/XOE/GJgvmsoc839NUqa1B9udYe9dQxgv7KFwng6+p/dw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", + "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", "dev": true, "requires": { "debug": "^3.0.0" @@ -11068,9 +10085,9 @@ "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, "handlebars": { @@ -11234,9 +10251,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "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 } } @@ -11405,12 +10422,12 @@ "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -11840,9 +10857,9 @@ } }, "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, "is-accessor-descriptor": { @@ -12204,9 +11221,9 @@ "dev": true }, "isbinaryfile": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.4.tgz", - "integrity": "sha512-pEutbN134CzcjlLS1myKX/uxNjwU5eBVSprvkpv3+3dqhBHUZLIWJQowC40w5c0Zf19vBY8mrZl88y5J4RAPbQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", "dev": true }, "isexe": { @@ -12233,152 +11250,22 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -12725,9 +11612,9 @@ } }, "karma": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.4.tgz", - "integrity": "sha512-UGqTe2LBiGQBXRN+Fygeiq63tbfOX45639SKSbPkLpARwnxROWJZg+froGkpHxr84FXCe8UGCf+1PITM6frT5w==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.5.tgz", + "integrity": "sha512-Q4Su7kNwkTgqS+KbSCYgH0p4a/0JIxVLyp7qKNV7vgPNhIF4kIoh0GlUfMKpw67BrR3hgPQSJoxgF7xnzUtPpg==", "dev": true, "requires": { "body-parser": "^1.16.1", @@ -13437,6 +12324,12 @@ } } }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, "loglevel-plugin-prefix": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", @@ -13703,9 +12596,9 @@ } }, "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, "requires": { "errno": "^0.1.3", @@ -13800,6 +12693,14 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "mime": { @@ -13878,6 +12779,17 @@ "query-string": "^4.1.0", "sort-keys": "^1.0.0" } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } } } }, @@ -14245,6 +13157,12 @@ "safe-buffer": "^5.1.1" } }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -14285,9 +13203,9 @@ } }, "node-releases": { - "version": "1.1.54", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.54.tgz", - "integrity": "sha512-tLzytKpgwKQr37yw9CEODjNM9lnmsNxzlv575GzOZ16AgMvPcJis/DgrJX4UEV1KIYoXk6XoVfY6YaMOPJESAQ==", + "version": "1.1.55", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz", + "integrity": "sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==", "dev": true }, "nopt": { @@ -14477,9 +13395,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "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 }, "yallist": { @@ -15075,10 +13993,13 @@ } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-retry": { "version": "3.0.1", @@ -15622,6 +14543,34 @@ "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==", "dev": true }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -15794,6 +14743,17 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } } } }, @@ -16137,12 +15097,6 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", @@ -16565,6 +15519,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "pump": { @@ -16760,24 +15722,6 @@ "schema-utils": "^2.5.0" }, "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -16797,16 +15741,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } } } }, @@ -17365,24 +16299,6 @@ "semver": "^6.3.0" }, "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -17409,16 +16325,6 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -17427,32 +16333,51 @@ } } }, - "saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + } + } + }, "scope-analyzer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.0.5.tgz", @@ -17517,6 +16442,15 @@ } } }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", @@ -18018,6 +16952,46 @@ "uuid": "^3.0.1" } }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "socks": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", @@ -18178,9 +17152,9 @@ "dev": true }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -18237,9 +17211,9 @@ "dev": true }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -18917,24 +17891,6 @@ "schema-utils": "^2.6.4" }, "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -18954,16 +17910,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } } } }, @@ -19380,18 +18326,6 @@ "webpack-sources": "^1.4.3" }, "dependencies": { - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "cacache": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", @@ -19418,12 +18352,6 @@ "unique-filename": "^1.1.1" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -19462,25 +18390,6 @@ "p-try": "^2.0.0" } }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -19532,9 +18441,9 @@ } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "time-stamp": { @@ -19782,9 +18691,9 @@ } }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz", + "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==" }, "tslint": { "version": "6.1.2", @@ -20828,6 +19737,16 @@ "semver": "^5.6.0" } }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -20840,6 +19759,17 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -20899,6 +19829,16 @@ "webpack-log": "^2.0.0" }, "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "mime": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", @@ -20908,9 +19848,9 @@ } }, "webpack-dev-server": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", - "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -20921,33 +19861,39 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.6", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", + "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -20968,6 +19914,28 @@ "upath": "^1.1.1" } }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -20977,25 +19945,28 @@ "ms": "^2.1.1" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, - "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, "ms": { @@ -21004,106 +19975,131 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", - "dev": true - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-regex": "^4.1.0" } } } }, - "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "dev": true, "requires": { - "node-forge": "0.9.0" + "websocket-extensions": ">=0.1.1" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-regex": "^4.1.0" } } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -21345,9 +20341,9 @@ } }, "worker-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.2.tgz", - "integrity": "sha512-V+1zSZMOOKk+uBzKyNIODLQLsx59zSIOaI75J1EMS0iR1qy+KQR3y/pQ3T0vIhvPfDFapGRMsoMvQNEL3okqSA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", + "integrity": "sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg==", "dev": true, "requires": { "loader-utils": "^1.1.0" @@ -21424,14 +20420,12 @@ } }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } }, "xdg-basedir": { diff --git a/package.json b/package.json index 7f39c893d..a7b29cd94 100644 --- a/package.json +++ b/package.json @@ -36,17 +36,17 @@ }, "private": true, "dependencies": { - "@angular/animations": "^9.1.1", - "@angular/cdk": "^9.2.1", - "@angular/common": "^9.1.1", - "@angular/compiler": "^9.1.1", - "@angular/core": "^9.1.1", + "@angular/animations": "^9.1.6", + "@angular/cdk": "^9.2.3", + "@angular/common": "^9.1.6", + "@angular/compiler": "^9.1.6", + "@angular/core": "^9.1.6", "@angular/flex-layout": "^9.0.0-beta.29", - "@angular/forms": "^9.1.1", - "@angular/material": "^9.2.1", - "@angular/platform-browser": "^9.1.1", - "@angular/platform-browser-dynamic": "^9.1.1", - "@angular/router": "^9.1.1", + "@angular/forms": "^9.1.6", + "@angular/material": "^9.2.3", + "@angular/platform-browser": "^9.1.6", + "@angular/platform-browser-dynamic": "^9.1.6", + "@angular/router": "^9.1.6", "@types/pako": "^1.0.1", "@types/sprintf-js": "^1.1.2", "angular2-chartjs": "^0.5.1", @@ -79,20 +79,20 @@ "rxjs": "^6.5.5", "screenfull": "^5.0.2", "svg-pan-zoom": "^3.6.1", - "tslib": "^1.11.1", + "tslib": "^1.11.2", "xlsx": "^0.16.0", "zone.js": "^0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.901.4", - "@angular/cli": "^9.1.4", - "@angular/compiler-cli": "^9.1.4", - "@angular/language-service": "^9.1.4", + "@angular-devkit/build-angular": "^0.901.5", + "@angular/cli": "^9.1.5", + "@angular/compiler-cli": "^9.1.6", + "@angular/language-service": "^9.1.6", "@compodoc/compodoc": "^1.1.11", "@types/file-saver": "^2.0.1", "@types/jasmine": "^3.5.10", "@types/jasminewd2": "^2.0.8", - "@types/node": "^13.13.4", + "@types/node": "^13.13.5", "codelyzer": "^5.2.2", "cordova": "^9.0.0", "electron": "^8.2.5", @@ -100,7 +100,7 @@ "fs-extra": "^9.0.0", "jasmine-core": "^3.5.0", "jasmine-spec-reporter": "^5.0.2", - "karma": "^5.0.4", + "karma": "^5.0.5", "karma-chrome-launcher": "^3.1.0", "karma-cli": "~2.0.0", "karma-coverage-istanbul-reporter": "^3.0.2", @@ -110,7 +110,7 @@ "ts-node": "^8.10.1", "tslint": "^6.1.2", "typescript": "~3.7.5", - "webpack-dev-server": "^3.10.3" + "webpack-dev-server": "^3.11.0" }, "cordova": { "plugins": { -- GitLab From bf2e9c9c905e30fab4b1ad896040bd5770ec60f3 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 11 May 2020 11:20:52 +0200 Subject: [PATCH 049/101] Translations for Verificateur : MRC crossable width --- src/locale/messages.en.json | 2 ++ src/locale/messages.fr.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 728fc8d75..cb3e4c301 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -610,8 +610,10 @@ "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "None of the aprons is crossable", + "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "Crossable width %width% m is lower than the width of a block pattern %patternWidth% m", "WARNING_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", + "INFO_VERIF_MRC_CROSSABLE_WIDTH": "Maximum crossable width is %width% m", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 9a77d60bd..bf68ad175 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -613,8 +613,10 @@ "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", + "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable %width% m est inférieure à la largeur d'un motif de blocs %patternWidth% m", "WARNING_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum : %maxV%)", "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum : %minY%)", + "INFO_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable maximale est %width% m", "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", -- GitLab From 8a2d919c5aec5a4540e1ae2b000a4371793e10bd Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 11 May 2020 15:36:38 +0200 Subject: [PATCH 050/101] Translations for Verificateur : PVMax --- src/app/calculators/espece/config.json | 10 ++++++++++ src/app/calculators/espece/en.json | 5 ++++- src/app/calculators/espece/fr.json | 5 ++++- src/locale/messages.en.json | 3 +++ src/locale/messages.fr.json | 11 +++++++---- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index 096e616f0..e3718104c 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -1,4 +1,14 @@ [ + { + "id": "fs_param_common", + "type": "fieldset", + "fields": [ + { + "id": "PVMax", + "allowEmpty": true + } + ] + }, { "id": "fs_param_pab_s", "type": "fieldset", diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index 11f45ce1a..cedf49fdf 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -1,4 +1,5 @@ { + "fs_param_common": "Common parameters", "fs_param_pab_s": "Fish ladders, surface jets or orifices", "fs_param_pab_p": "Fish ladders, diving jets", "fs_param_pam": "Rock-ramp fishpasses", @@ -16,6 +17,7 @@ "VMax": "Maximal flow velocity", "YMinSB": "Minimal water level on superactive baffles", "YMinPB": "Minimal water level on plane baffles", + "PVMax": "Maximal dissipated power", "UNIT_DHMaxS": "m", "UNIT_DHMaxP": "m", @@ -28,5 +30,6 @@ "UNIT_YMin": "m", "UNIT_VMax": "m/s", "UNIT_YMinSB": "m", - "UNIT_YMinPB": "m" + "UNIT_YMinPB": "m", + "UNIT_PVMax": "W/m³" } diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index 2c2ae4107..7654d4ce9 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -1,4 +1,5 @@ { + "fs_param_common": "Paramètres communs", "fs_param_pab_s": "Passes à bassins, jets de surface et orifices", "fs_param_pab_p": "Passes à bassins, jets plongeants", "fs_param_pam": "Passes à macrorugosités", @@ -16,6 +17,7 @@ "VMax": "Vitesse d'écoulement maximale", "YMinSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", "YMinPB": "Tirant d'eau minimal sur les ralentisseurs plans", + "PVMax": "Puissance volumique dissipée maximale", "UNIT_DHMaxS": "m", "UNIT_DHMaxP": "m", @@ -28,5 +30,6 @@ "UNIT_YMin": "m", "UNIT_VMax": "m/s", "UNIT_YMinSB": "m", - "UNIT_YMinPB": "m" + "UNIT_YMinPB": "m", + "UNIT_PVMax": "W/m³" } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index cb3e4c301..cf6f8349c 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -608,10 +608,12 @@ "INFO_PARENT_PREFIX_DOWNWALL": "downwall: ", "ERROR_VERIF_ERRORS_IN_PASS": "Pass to verify contains errors", "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", + "ERROR_VERIF_MR_PVMAX": "Dissipated power %PV% too high (maximum: %maxPV%)", "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "None of the aprons is crossable", "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "Crossable width %width% m is lower than the width of a block pattern %patternWidth% m", "WARNING_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", + "WARNING_VERIF_MRC_PVMAX_APRON_N": "Apron #%N%: dissipated power %PV% too high (maximum: %maxPV%)", "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", "INFO_VERIF_MRC_CROSSABLE_WIDTH": "Maximum crossable width is %width% m", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", @@ -641,6 +643,7 @@ "WARNING_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", "ERROR_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", "WARNING_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", + "ERROR_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% too high (maximum: %maxPV%)", "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index bf68ad175..9883598a3 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -611,10 +611,12 @@ "ERROR_VERIF_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs", "ERROR_VERIF_VARYING_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs à l'itération %i%", "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", + "ERROR_VERIF_MR_PVMAX": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%)", "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable %width% m est inférieure à la largeur d'un motif de blocs %patternWidth% m", "WARNING_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum : %maxV%)", + "WARNING_VERIF_MRC_PVMAX_APRON_N": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%) dans le radier %N%", "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum : %minY%)", "INFO_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable maximale est %width% m", "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", @@ -635,15 +637,16 @@ "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "WARNING_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", - "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", - "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", - "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", - "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum: %minS%)", + "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum pour jet de surface : %minPBS%, minimum pour jet plongeant : %minPBP%)", "ERROR_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", "WARNING_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", "WARNING_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "ERROR_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% trop élevée (maximum : %maxPV%)", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", -- GitLab From 5545ea5de82e194902a50e363a1e73f0f3aaeff8 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 11 May 2020 16:34:23 +0200 Subject: [PATCH 051/101] Translation for Verificateur --- src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 2 files changed, 2 insertions(+) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index cf6f8349c..a5a2a62fc 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -645,6 +645,7 @@ "WARNING_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", "ERROR_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% too high (maximum: %maxPV%)", "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", + "ERROR_VERIF_PAR_SLOPE": "Slope %S% too high (maximum: %maxS%)", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 9883598a3..5b9cc4524 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -648,6 +648,7 @@ "WARNING_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", "ERROR_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% trop élevée (maximum : %maxPV%)", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", + "ERROR_VERIF_PAR_SLOPE": "La pente %S% m est trop élevée (maximum : %maxS% m)", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", -- GitLab From d2309e0b11e540154b9925e2b00ee3b4cf5e7407 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Mon, 18 May 2020 09:35:11 +0200 Subject: [PATCH 052/101] Simplified ServiceFactory singleton --- src/app/app.component.ts | 12 +++--- .../base-param-input.component.ts | 4 +- .../calculator-list.component.ts | 30 +++++++------- .../dialog-load-session.component.ts | 2 +- .../fixedvar-results/results.component.ts | 2 +- .../param-field-line.component.ts | 6 +-- .../jalhyd-model-validation.directive.ts | 8 ++-- .../formulaire/definition/form-definition.ts | 4 +- src/app/formulaire/definition/form-section.ts | 2 +- .../definition/form-verificateur.ts | 2 +- .../formulaire/elements/formulaire-element.ts | 2 +- src/app/formulaire/elements/ngparam.ts | 4 +- .../elements/select-field-custom.ts | 8 ++-- src/app/formulaire/elements/select-field.ts | 4 +- src/app/results/calculator-results.ts | 6 +-- src/app/results/macrorugo-compound-results.ts | 2 +- src/app/results/pab-results.ts | 2 +- src/app/results/plottable-pab-results.ts | 2 +- src/app/results/remous-results.ts | 2 +- src/app/results/var-results.ts | 14 +++---- .../services/internationalisation.service.ts | 2 +- src/app/services/service-factory.ts | 41 +++++++++---------- src/app/util.ts | 2 +- 23 files changed, 80 insertions(+), 83 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index e90029baf..f308e323b 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -97,11 +97,11 @@ export class AppComponent implements OnInit, OnDestroy, Observer { private matomoInjector: MatomoInjector, private matomoTracker: MatomoTracker ) { - ServiceFactory.instance.httpService = httpService; - ServiceFactory.instance.applicationSetupService = appSetupService; - ServiceFactory.instance.i18nService = intlService; - ServiceFactory.instance.formulaireService = formulaireService; - ServiceFactory.instance.notificationsService = notificationsService; + ServiceFactory.httpService = httpService; + ServiceFactory.applicationSetupService = appSetupService; + ServiceFactory.i18nService = intlService; + ServiceFactory.formulaireService = formulaireService; + ServiceFactory.notificationsService = notificationsService; if (! isDevMode()) { // évite de mettre en place un bandeau RGPD @@ -150,7 +150,7 @@ export class AppComponent implements OnInit, OnDestroy, Observer { */ public static onHotkey(func: any, that: any) { return (event: KeyboardEvent): boolean => { - if (ServiceFactory.instance.applicationSetupService.enableHotkeys) { + if (ServiceFactory.applicationSetupService.enableHotkeys) { func.call(that); return false; // Prevent bubbling } else { diff --git a/src/app/components/base-param-input/base-param-input.component.ts b/src/app/components/base-param-input/base-param-input.component.ts index aab6cebb6..25573571b 100644 --- a/src/app/components/base-param-input/base-param-input.component.ts +++ b/src/app/components/base-param-input/base-param-input.component.ts @@ -69,7 +69,7 @@ export class NgBaseParam extends Observable { if (v === null || v === "") { // NULL values are always invalid - msg = ServiceFactory.instance.i18nService.localizeText("ERROR_PARAM_NULL"); + msg = ServiceFactory.i18nService.localizeText("ERROR_PARAM_NULL"); } else { try { this._param.checkValueAgainstDomain(v); @@ -77,7 +77,7 @@ export class NgBaseParam extends Observable { } catch (e) { if (e instanceof Message) { // ici au début le service de localisation n'a pas encore chargé ses messages… - msg = ServiceFactory.instance.i18nService.localizeMessage(e); + msg = ServiceFactory.i18nService.localizeMessage(e); } else { msg = "invalid value"; } diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index de8820b9d..e3c286fbe 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -31,15 +31,15 @@ export class CalculatorListComponent implements OnInit { private intlService: I18nService, private appSetupService: ApplicationSetupService ) { - ServiceFactory.instance.i18nService.addObserver(this); - ServiceFactory.instance.applicationSetupService.addObserver(this); + ServiceFactory.i18nService.addObserver(this); + ServiceFactory.applicationSetupService.addObserver(this); } /** triggered on init */ private loadCalculatorsThemes() { this._items = []; const unusedCalculators = EnumEx.getValues(CalculatorType); - const themes = ServiceFactory.instance.applicationSetupService.themes; + const themes = ServiceFactory.applicationSetupService.themes; if (themes) { // group by themes for (const theme of themes) { @@ -47,10 +47,10 @@ export class CalculatorListComponent implements OnInit { // get theme details from config const themeTitleKey = "INFO_THEME_" + theme.name + "_TITRE"; const themeDescriptionKey = "INFO_THEME_" + theme.name + "_DESCRIPTION"; - const credits = ServiceFactory.instance.i18nService.localizeText("INFO_THEME_CREDITS"); + const credits = ServiceFactory.i18nService.localizeText("INFO_THEME_CREDITS"); const item = { - title: ServiceFactory.instance.i18nService.localizeText(themeTitleKey), - description: ServiceFactory.instance.i18nService.localizeText(themeDescriptionKey), + title: ServiceFactory.i18nService.localizeText(themeTitleKey), + description: ServiceFactory.i18nService.localizeText(themeDescriptionKey), image: { path: "assets/images/themes/" + theme.image.path, credits: credits + " : " + theme.image.credits @@ -61,7 +61,7 @@ export class CalculatorListComponent implements OnInit { for (const calcType of theme.calculators) { item.calculators.push({ type: calcType, - label: ServiceFactory.instance.formulaireService.getLocalisedTitleFromCalculatorType(calcType), + label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(calcType), buttonId: "create-calc-" + calcType }); // mark as used @@ -79,8 +79,8 @@ export class CalculatorListComponent implements OnInit { const unusedThemeConfig = themes.find(i => i.name === undefined); const unusedTheme: any = {}; unusedTheme.calculators = []; - unusedTheme.title = ServiceFactory.instance.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_TITRE"); - unusedTheme.description = ServiceFactory.instance.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_DESCRIPTION"); + unusedTheme.title = ServiceFactory.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_TITRE"); + unusedTheme.description = ServiceFactory.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_DESCRIPTION"); unusedTheme.image = { path: "assets/images/themes/" + unusedThemeConfig.image.path }; @@ -94,7 +94,7 @@ export class CalculatorListComponent implements OnInit { ) { unusedTheme.calculators.push({ type: t, - label: ServiceFactory.instance.formulaireService.getLocalisedTitleFromCalculatorType(t), + label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(t), buttonId: "create-calc-" + t }); } @@ -107,7 +107,7 @@ export class CalculatorListComponent implements OnInit { } public create(t: CalculatorType) { - const p: Promise<FormulaireDefinition> = ServiceFactory.instance.formulaireService.createFormulaire(t); + const p: Promise<FormulaireDefinition> = ServiceFactory.formulaireService.createFormulaire(t); p.then(f => { this.router.navigate(["/calculator", f.uid]); return f; @@ -210,19 +210,19 @@ export class CalculatorListComponent implements OnInit { } public get uitextWelcomeSubtitle() { - return ServiceFactory.instance.i18nService.localizeText("INFO_WELCOME_SUBTITLE"); + return ServiceFactory.i18nService.localizeText("INFO_WELCOME_SUBTITLE"); } public get uitextWelcomeContent() { - return ServiceFactory.instance.i18nService.localizeText("INFO_WELCOME_CONTENT"); + return ServiceFactory.i18nService.localizeText("INFO_WELCOME_CONTENT"); } public get uitextExamplesTitle() { - return ServiceFactory.instance.i18nService.localizeText("INFO_EXAMPLES_TITLE"); + return ServiceFactory.i18nService.localizeText("INFO_EXAMPLES_TITLE"); } public get uitextExamplesSubtitle() { - return ServiceFactory.instance.i18nService.localizeText("INFO_EXAMPLES_SUBTITLE"); + return ServiceFactory.i18nService.localizeText("INFO_EXAMPLES_SUBTITLE"); } public onKC() { diff --git a/src/app/components/dialog-load-session/dialog-load-session.component.ts b/src/app/components/dialog-load-session/dialog-load-session.component.ts index a8f7aa817..35db621eb 100644 --- a/src/app/components/dialog-load-session/dialog-load-session.component.ts +++ b/src/app/components/dialog-load-session/dialog-load-session.component.ts @@ -148,7 +148,7 @@ export class DialogLoadSessionComponent { this.loadingError = false; this.loadingComplete = false; - const formService = ServiceFactory.instance.formulaireService; + const formService = ServiceFactory.formulaireService; formService.calculatorInfosFromSessionFile(this.file).then( calcInfos => { this.fileFormatVersion = calcInfos.formatVersion; diff --git a/src/app/components/fixedvar-results/results.component.ts b/src/app/components/fixedvar-results/results.component.ts index 550cff912..8ba53061a 100644 --- a/src/app/components/fixedvar-results/results.component.ts +++ b/src/app/components/fixedvar-results/results.component.ts @@ -102,7 +102,7 @@ export class ResultsComponentDirective { } else if (typeof p === "number") { originalValue = p; } - const nDigits = ServiceFactory.instance.applicationSetupService.displayPrecision; + const nDigits = ServiceFactory.applicationSetupService.displayPrecision; const minRenderableNumber = Number("1E-" + nDigits); // if required precision is too low, avoid rendering only zeroes if (originalValue < minRenderableNumber) { diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index a9dae488e..f0601b32a 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -22,8 +22,8 @@ import { ParamValuesComponent } from "../param-values/param-values.component"; export class ParamFieldLineComponent implements OnChanges { constructor() { - this.intlService = ServiceFactory.instance.i18nService; - this._formService = ServiceFactory.instance.formulaireService; + this.intlService = ServiceFactory.i18nService; + this._formService = ServiceFactory.formulaireService; this.valid = new EventEmitter(); this.inputChange = new EventEmitter(); } @@ -80,7 +80,7 @@ export class ParamFieldLineComponent implements OnChanges { } public get formHasResults(): boolean { - return ServiceFactory.instance.formulaireService.currentFormHasResults; + return ServiceFactory.formulaireService.currentFormHasResults; } @Input() diff --git a/src/app/directives/jalhyd-model-validation.directive.ts b/src/app/directives/jalhyd-model-validation.directive.ts index 71445d72f..758242ff9 100644 --- a/src/app/directives/jalhyd-model-validation.directive.ts +++ b/src/app/directives/jalhyd-model-validation.directive.ts @@ -110,7 +110,7 @@ export function jalhydModelValidatorMin(ngParam: NgParameter): ValidatorFn { "jalhydModelMin": { value: control.value, message: sprintf( - ServiceFactory.instance.i18nService.localizeText("ERROR_MINMAXSTEP_MIN"), + ServiceFactory.i18nService.localizeText("ERROR_MINMAXSTEP_MIN"), ngParam.domain.minValue, ngParam.maxValue ) @@ -130,7 +130,7 @@ export function jalhydModelValidatorMax(ngParam: NgParameter): ValidatorFn { "jalhydModelMax": { value: control.value, message: sprintf( - ServiceFactory.instance.i18nService.localizeText("ERROR_MINMAXSTEP_MAX"), + ServiceFactory.i18nService.localizeText("ERROR_MINMAXSTEP_MAX"), ngParam.minValue, ngParam.domain.maxValue ) @@ -153,8 +153,8 @@ export function jalhydModelValidatorStep(ngParam: NgParameter): ValidatorFn { "jalhydModelStep": { value: control.value, message: sprintf( - // ServiceFactory.instance.i18nService.localizeText("ERROR_MINMAXSTEP_STEP"), - ServiceFactory.instance.i18nService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"), + // ServiceFactory.i18nService.localizeText("ERROR_MINMAXSTEP_STEP"), + ServiceFactory.i18nService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"), ngParam.stepRefValue.toString() ) } diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 7de69e2b6..140741beb 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -108,7 +108,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs "name": name }, this); // convenient trick to notify param-link components - ServiceFactory.instance.formulaireService.propagateFormNameChange(this, name); + ServiceFactory.formulaireService.propagateFormNameChange(this, name); } public get jsonConfig(): {} { @@ -493,7 +493,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs // reset model results this.currentNub.resetResult(); // reset the result panels of all forms depending on this one - ServiceFactory.instance.formulaireService.resetAllDependingFormsResults(this, visited, symbol, forceResetAllDependencies); + ServiceFactory.formulaireService.resetAllDependingFormsResults(this, visited, symbol, forceResetAllDependencies); } protected abstract compute(); diff --git a/src/app/formulaire/definition/form-section.ts b/src/app/formulaire/definition/form-section.ts index 30cdd2c40..fd45ceb50 100644 --- a/src/app/formulaire/definition/form-section.ts +++ b/src/app/formulaire/definition/form-section.ts @@ -21,7 +21,7 @@ export class FormulaireSection extends FormulaireFixedVar { // show / hide dependent fields this.refreshFieldsets(); // empty fields ? only those belonging to the specific section type - if (ServiceFactory.instance.applicationSetupService.enableEmptyFieldsOnFormInit) { + if (ServiceFactory.applicationSetupService.enableEmptyFieldsOnFormInit) { // "LargeurBerge" is hackily used as LargeurFond in Rectangular and Trapez sections, omit it here this.emptyFields([ "Ks", "Q", "If", "YB", "iPrec", "Y" ]); } diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index ad7f3fffc..217298e80 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -39,7 +39,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { protected findPassVariatedParameters(): NgParameter[] { let pvp = [] const passUid = this.verificateurNub.nubToVerify.uid; - const passForm = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(passUid); + const passForm = ServiceFactory.formulaireService.getFormulaireFromNubId(passUid); pvp = passForm.getVariatedParameters(); return pvp; } diff --git a/src/app/formulaire/elements/formulaire-element.ts b/src/app/formulaire/elements/formulaire-element.ts index ae565987e..95c14c76d 100644 --- a/src/app/formulaire/elements/formulaire-element.ts +++ b/src/app/formulaire/elements/formulaire-element.ts @@ -30,7 +30,7 @@ export abstract class FormulaireElement extends FormulaireNode { constructor(parent: FormulaireNode) { super(parent); this._isDisplayed = true; - this.intlService = ServiceFactory.instance.i18nService; + this.intlService = ServiceFactory.i18nService; } get isDisplayed(): boolean { diff --git a/src/app/formulaire/elements/ngparam.ts b/src/app/formulaire/elements/ngparam.ts index 183c4e241..063bd5796 100644 --- a/src/app/formulaire/elements/ngparam.ts +++ b/src/app/formulaire/elements/ngparam.ts @@ -44,7 +44,7 @@ export class NgParameter extends InputField implements Observer { */ public static preview(p: ParamDefinition, compact: boolean = false): string { let valuePreview: string; - const i18n = ServiceFactory.instance.i18nService; + const i18n = ServiceFactory.i18nService; switch (p.valueMode) { case ParamValueMode.SINGLE: @@ -102,7 +102,7 @@ export class NgParameter extends InputField implements Observer { */ public static linkedValuePreview(ref: LinkedValue): string { let valuePreview: string; - const i18n = ServiceFactory.instance.i18nService; + const i18n = ServiceFactory.i18nService; if (ref.isParameter()) { const targetParam = (ref.element as ParamDefinition); diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 47a73730d..7044c06d2 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -57,7 +57,7 @@ export class SelectFieldCustom extends SelectField { * Populates entries with available options */ protected populate() { - const fs = ServiceFactory.instance.formulaireService; + const fs = ServiceFactory.formulaireService; let candidateNubs: any[]; switch (this.source) { @@ -133,8 +133,8 @@ export class SelectFieldCustom extends SelectField { this._entriesBaseId + en.uid, en.uid, sprintf( - ServiceFactory.instance.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), - ServiceFactory.instance.formulaireService.getFormulaireFromNubId(en.uid).calculatorName + ServiceFactory.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), + ServiceFactory.formulaireService.getFormulaireFromNubId(en.uid).calculatorName ) ) ); @@ -146,7 +146,7 @@ export class SelectFieldCustom extends SelectField { new SelectEntry( this._entriesBaseId + spgId, FishSpecies[j], - ServiceFactory.instance.i18nService.localizeText("INFO_ENUM_" + FishSpecies[j]) + ServiceFactory.i18nService.localizeText("INFO_ENUM_" + FishSpecies[j]) ) ); } diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 70d1bf2d1..d80ba9707 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -158,7 +158,7 @@ export class SelectField extends Field { // 1. calculated param const ntc = (nub as Solveur).nubToCalculate; if (ntc !== undefined && ntc.calculatedParam !== undefined) { // some nubs have no calculatedParam, for ex. SectionParam - const varName = ServiceFactory.instance.formulaireService.expandVariableName(ntc.calcType, ntc.calculatedParam.symbol); + const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, ntc.calculatedParam.symbol); this.addEntry(new SelectEntry( this._entriesBaseId + "none", "", @@ -168,7 +168,7 @@ export class SelectField extends Field { // 2. extra results if (ntc !== undefined && ntc.resultsFamilies !== undefined) { for (const er of Object.keys(ntc.resultsFamilies)) { - const varName = ServiceFactory.instance.formulaireService.expandVariableName(ntc.calcType, er); + const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, er); const e: SelectEntry = new SelectEntry( this._entriesBaseId + er, er, diff --git a/src/app/results/calculator-results.ts b/src/app/results/calculator-results.ts index e4b420907..36c23bbf9 100644 --- a/src/app/results/calculator-results.ts +++ b/src/app/results/calculator-results.ts @@ -24,10 +24,10 @@ export abstract class CalculatorResults { const children = referenceNub.getChildren(); const parameterNub = p.paramDefinition.parentNub; if (children.includes(parameterNub)) { - const cn = capitalize(ServiceFactory.instance.i18nService.childName(parameterNub.parent)); + const cn = capitalize(ServiceFactory.i18nService.childName(parameterNub.parent)); isChildParam = true; const pos = parameterNub.findPositionInParent() + 1; - res = sprintf(ServiceFactory.instance.i18nService.localizeText("INFO_STUFF_N"), cn) + pos + " : "; + res = sprintf(ServiceFactory.i18nService.localizeText("INFO_STUFF_N"), cn) + pos + " : "; } } if (displaySymbol && ! isChildParam) { @@ -58,7 +58,7 @@ export abstract class CalculatorResults { public getHelpLink(symbol: string): string { // add help link if any if (this.helpLinks !== undefined && this.helpLinks[symbol] !== undefined) { - const helpURL = "assets/docs/" + ServiceFactory.instance.applicationSetupService.language + const helpURL = "assets/docs/" + ServiceFactory.applicationSetupService.language + "/calculators/" + this.helpLinks[symbol]; // pseudo-<mat-icon> dirty trick because <mat-icon> renderer cannot be // triggered when code is set through innerHTML diff --git a/src/app/results/macrorugo-compound-results.ts b/src/app/results/macrorugo-compound-results.ts index a5c609205..8aba75366 100644 --- a/src/app/results/macrorugo-compound-results.ts +++ b/src/app/results/macrorugo-compound-results.ts @@ -52,7 +52,7 @@ export class MacrorugoCompoundResults extends MultiDimensionResults { unit = p.unit; } } catch (e) { /* silent fail */ } - let label = ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct , h, unit); + let label = ServiceFactory.formulaireService.expandVariableNameAndUnit(ct , h, unit); label += this.getHelpLink(h); return label; }); diff --git a/src/app/results/pab-results.ts b/src/app/results/pab-results.ts index bcf4b2b68..d08b381f1 100644 --- a/src/app/results/pab-results.ts +++ b/src/app/results/pab-results.ts @@ -52,7 +52,7 @@ export class PabResults extends MultiDimensionResults { if (sn.parent) { ct = sn.parent.calcType; } - let label = ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct , h); + let label = ServiceFactory.formulaireService.expandVariableNameAndUnit(ct , h); label += this.getHelpLink(h); return label; }); diff --git a/src/app/results/plottable-pab-results.ts b/src/app/results/plottable-pab-results.ts index 7f52a5717..0d45afb05 100644 --- a/src/app/results/plottable-pab-results.ts +++ b/src/app/results/plottable-pab-results.ts @@ -31,7 +31,7 @@ export class PlottablePabResults implements PlottableData { */ public getChartAxisLabel(symbol: string): string { if (symbol === "x") { // specific case for wall abscissa - return ServiceFactory.instance.i18nService.localizeText("INFO_LIB_ABSCISSE_CLOISON"); + return ServiceFactory.i18nService.localizeText("INFO_LIB_ABSCISSE_CLOISON"); } else { return this.pabResults.headers[this.pabResults.columns.indexOf(symbol)]; } diff --git a/src/app/results/remous-results.ts b/src/app/results/remous-results.ts index a96934ca7..c6c9e3b8a 100644 --- a/src/app/results/remous-results.ts +++ b/src/app/results/remous-results.ts @@ -86,7 +86,7 @@ export class RemousResults extends CalculatorResults { // série de valeurs de X this._xValues = new ParamDefinition( p, - ServiceFactory.instance.i18nService.localizeText("INFO_REMOUSRESULTS_ABSCISSE"), + ServiceFactory.i18nService.localizeText("INFO_REMOUSRESULTS_ABSCISSE"), ParamDomainValue.POS_NULL ); } diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts index a6322e0f6..6e73b5d03 100644 --- a/src/app/results/var-results.ts +++ b/src/app/results/var-results.ts @@ -136,10 +136,10 @@ export class VarResults extends CalculatedParamResults implements PlottableData const pos = +match[1]; // only parent translation file is loaded; look for children translations in it // ct = sn.getChildren()[pos].calcType; symbol = match[2]; - const cn = capitalize(ServiceFactory.instance.i18nService.childName(sn)); - ret += sprintf(ServiceFactory.instance.i18nService.localizeText("INFO_STUFF_N"), cn) + (pos + 1) + " : "; + const cn = capitalize(ServiceFactory.i18nService.childName(sn)); + ret += sprintf(ServiceFactory.i18nService.localizeText("INFO_STUFF_N"), cn) + (pos + 1) + " : "; } - ret += ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, symbol); + ret += ServiceFactory.formulaireService.expandVariableNameAndUnit(ct, symbol); return ret; } @@ -378,19 +378,19 @@ export class VarResults extends CalculatedParamResults implements PlottableData unit = p.unit; } } catch (e) { /* silent fail */ } - let rh = ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, k, unit); + let rh = ServiceFactory.formulaireService.expandVariableNameAndUnit(ct, k, unit); rh += this.getHelpLink(k); this._resultHeaders.push(rh); } // entêtes des résultats des enfants for (const c of sn.getChildren()) { if (c.result) { - const cn = capitalize(ServiceFactory.instance.i18nService.childName(sn)); + const cn = capitalize(ServiceFactory.i18nService.childName(sn)); // using latest ResultElement; results count / types are supposed to be the same on every iteration for (const k of c.result.resultElement.keys) { - let rh = sprintf(ServiceFactory.instance.i18nService.localizeText("INFO_STUFF_N"), cn) + let rh = sprintf(ServiceFactory.i18nService.localizeText("INFO_STUFF_N"), cn) + (c.findPositionInParent() + 1) + " : " - + ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, k); + + ServiceFactory.formulaireService.expandVariableNameAndUnit(ct, k); rh += this.getHelpLink(k); this._resultHeaders.push(rh); } diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 321b572e0..7774b0069 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -176,7 +176,7 @@ export class I18nService extends Observable implements Observer { // replace "FORM_ID_X" by form name in current session, if any m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { // cannot inject FormulaireService => cyclic dependency :/ - const form = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(p1); + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(p1); let formName = "**UNKNOWN_FORM**"; if (form !== undefined) { formName = form.calculatorName; diff --git a/src/app/services/service-factory.ts b/src/app/services/service-factory.ts index 78d182b91..6d3c7b4ed 100644 --- a/src/app/services/service-factory.ts +++ b/src/app/services/service-factory.ts @@ -4,25 +4,22 @@ import { I18nService } from "./internationalisation.service"; import { HttpService } from "./http.service"; import { NotificationsService } from "./notifications.service"; -export class ServiceFactory { - private static _instance: ServiceFactory; // instance pour le pattern singleton - - private constructor() { } - - public applicationSetupService: ApplicationSetupService; - - public formulaireService: FormulaireService; - - public i18nService: I18nService; - - public httpService: HttpService; - - public notificationsService: NotificationsService; - - public static get instance() { - if (ServiceFactory._instance === undefined) { - ServiceFactory._instance = new ServiceFactory(); - } - return ServiceFactory._instance; - } -} + /** + * A "Singleton" the TS way, that holds pointers to all services, to be accessed + * at any time by classes that do not support injection; fed by AppComponent at + * construction time + */ + export const ServiceFactory: { + applicationSetupService: ApplicationSetupService; + formulaireService: FormulaireService; + i18nService: I18nService; + httpService: HttpService; + notificationsService: NotificationsService; + } = { + applicationSetupService: undefined, + formulaireService: undefined, + i18nService: undefined, + httpService: undefined, + notificationsService: undefined + }; + \ No newline at end of file diff --git a/src/app/util.ts b/src/app/util.ts index 146002b23..48b0981cc 100644 --- a/src/app/util.ts +++ b/src/app/util.ts @@ -26,7 +26,7 @@ export function fv(p: NgParameter | number): string { } else if (typeof p === "number") { value = p; } - const nDigits = ServiceFactory.instance.applicationSetupService.displayPrecision; + const nDigits = ServiceFactory.applicationSetupService.displayPrecision; return formattedValue(value, nDigits); } -- GitLab From c16714af896ecf8faf48812edad6d5ad273db336 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Wed, 24 Jun 2020 16:09:16 +0200 Subject: [PATCH 053/101] Fix bug in ServiceFactory call --- src/app/services/internationalisation.service.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 7774b0069..971508c2b 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -193,8 +193,7 @@ export class I18nService extends Observable implements Observer { // replace "FORM_ID_X" by form name in current session, if any m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { - // cannot inject FormulaireService => cyclic dependency :/ - const form = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(p1); + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(p1); // cannot inject FormulaireService => cyclic dependency :/ let formName = "**UNKNOWN_FORM**"; if (form !== undefined) { formName = form.calculatorName; -- GitLab From 1212974977e80786ce5bf885b10742760bd76c34 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Thu, 14 May 2020 11:48:38 +0200 Subject: [PATCH 054/101] Fix #404 - add Cunge (1980) to Walls, update doc --- src/locale/messages.en.json | 2 ++ src/locale/messages.fr.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index a5a2a62fc..faaad8191 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -357,6 +357,8 @@ "INFO_LINKED_VALUE_RESULT": "%s (%s)", "INFO_LINKED_VALUE_SECTION_RESULT": "%s (%s, section)", "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", + "INFO_LOG_HIDE_DETAILS": "hide details", + "INFO_LOG_SHOW_DETAILS": "show details", "INFO_MACRORUGO_TITRE_COURT": "Rock-ramp", "INFO_MACRORUGO_TITRE": "Rock-ramp fishpasses", "INFO_MENU_DIAGRAM_TITLE": "Modules diagram", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 5b9cc4524..b1e5adfb3 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -358,6 +358,8 @@ "INFO_LINKED_VALUE_RESULT": "%s (%s)", "INFO_LINKED_VALUE_SECTION_RESULT": "%s (%s, section)", "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", + "INFO_LOG_HIDE_DETAILS": "masquer les details", + "INFO_LOG_SHOW_DETAILS": "montrer les details", "INFO_MACRORUGO_TITRE_COURT": "Macro-rugo.", "INFO_MACRORUGO_TITRE": "Passe à macro-rugosités", "INFO_MENU_DIAGRAM_TITLE": "Diagramme des modules", -- GitLab From 1ee3491c8f4f12c62c72c521f6c9947b3efac314 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 22 Jul 2020 15:02:21 +0200 Subject: [PATCH 055/101] Fix rebase error --- src/app/formulaire/elements/select-field.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index d80ba9707..9be231395 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -116,7 +116,7 @@ export class SelectField extends Field { // some Select fields already have a translated label at this time; translate others if (e.label === undefined) { const aId = e.id.split("_"); - e.label = ServiceFactory.instance.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`, loc); + e.label = ServiceFactory.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`, loc); } } } -- GitLab From a36f63470cff432b05cb1f33af6d09da8f92d84d Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 29 Jul 2020 12:09:39 +0200 Subject: [PATCH 056/101] Fix #426 - HTML entities in translated messages --- src/app/services/internationalisation.service.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 971508c2b..d8ddcb808 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -119,16 +119,16 @@ export class I18nService extends Observable implements Observer { return `*** messages not loaded: ${this._currentLanguage} ***`; } if (messages[textKey] !== undefined) { - return messages[textKey]; + return decodeHtml(messages[textKey]); } else { // try general message - if(msg !== undefined && this._Messages["INFO_LIB_"+textKey.toUpperCase()] !== undefined) { - return this._Messages["INFO_LIB_"+textKey.toUpperCase()]; + if (msg !== undefined && this._Messages["INFO_LIB_" + textKey.toUpperCase()] !== undefined) { + return decodeHtml(this._Messages["INFO_LIB_" + textKey.toUpperCase()]); } if (!isDevMode()) { // try fallback language before giving up if (this._fallbackMessages[textKey] !== undefined) { - return this._fallbackMessages[textKey]; + return decodeHtml(this._fallbackMessages[textKey]); } } return `*** message not found: ${textKey} ***`; @@ -193,7 +193,8 @@ export class I18nService extends Observable implements Observer { // replace "FORM_ID_X" by form name in current session, if any m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { - const form = ServiceFactory.formulaireService.getFormulaireFromNubId(p1); // cannot inject FormulaireService => cyclic dependency :/ + // cannot inject FormulaireService => cyclic dependency :/ + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(p1); let formName = "**UNKNOWN_FORM**"; if (form !== undefined) { formName = form.calculatorName; -- GitLab From 2549a1ef64fad92b85cde7c9b983cd0cca0367d5 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 29 Jul 2020 15:27:35 +0200 Subject: [PATCH 057/101] Verificateur: add theme image --- src/app/config.json | 2 +- src/assets/images/themes/verification.jpg | Bin 34221 -> 76235 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/config.json b/src/app/config.json index 13f3cc083..35925d769 100644 --- a/src/app/config.json +++ b/src/app/config.json @@ -37,7 +37,7 @@ "name": "VERIFICATION", "image": { "path": "verification.jpg", - "credits": "????" + "credits": "S. Richard / OFB" }, "calculators": [ 31, 30 ] }, diff --git a/src/assets/images/themes/verification.jpg b/src/assets/images/themes/verification.jpg index 3cfe11de2b2ab17adb9a1f2eda7e2d92e79cf013..e38b8356a431c7260d930a82cab1211db5bb871a 100644 GIT binary patch literal 76235 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 literal 34221 zcmbSybyQr>wr1n*?!ny~hv2S_JHg!v8r<F8-5mmrB)Ge4aF^f#f(*ZV-+gb^{53PX zs(MwQs&iI-U8nZm>)XBGSKhY)=yFoBQUC}D2!PB-0le?vl}UP9TL1uxiU0-x0095d z002|~BqRg?`lAQ&(U>41|I^2F`Dgh3e}B?Hb3SIhuLHyZ@UXCOurTm&aBv6+@QBFR zD9A`i$OM>JXxJo#WTYg7#KfPdSZF^{Fi{c{)A7(Vv9SYzKr&iBAzlta7EU0?KM#RG zKtMo7LdHiy!RH_+Cg=EnmiHb220S1cFaQNX0f5ASfWm-y9{`YjtP|z~_dn48OCTVj zpkZL);1Lj!J|?uH10W%wpdg{4U|^s>phNh6j02!CU@*zqMPac(#&8tQ*c^e0h47SO zjlDRkvsYA{CN4n;h`4z81ccNyv~=_gKrU_`UOs+t2}vnw8Cf|sbq!4|Z5>@xGjj_| zD{C89x3BIVo?hO;A)#U65s^_z$tkI6=^2?>Ma3nhW#tu>RZYz;t>4?)!5w}51A{}u zBco$;^9zeh%PXsEJG*=P2Zu+;C#Tmpw|Dmse;%Kn|G@<TfciJA|3>zI;KKO81qlre z1r7HPE(l1Ej|PPS4MWZjizy0%Gj_(J;0T1r7E3H_>_wpDRK3D6ahXNLr2_6yU;hK` zU&#LNfCc@3A^UG&|AT7{fD8rkv3XD!0AWB`?aX0qCZrT9U(NA~BV=8}vB)l%hW^Ju zL%VAdZzVx52}33rbW>3-&2rgF+%1N>JI2PrfZ1PhrsRdhPEv*Ug;714csRjT>dH?y zppn7XMqY!NMrJpA7LtO&)UPG_t(nXH6r<%@J?dQlFv$Z}M@aNUmIg)q@Dge+@0@%8 zYxx%fsx2BAEzHE<iith6w6#)blw6t(b+Vl~Gjqm`%7_B$E~s|_i5b}VXDZ2YEe;1F z6<a|ru4)xn1uCvt?kermx@AZBOv*E=CDVyF`<l^TxGZ8CVk&#E=banf+m2*z*_*|R zD~GwVflUNXu2FKBZ9F0!tQ!Vi2{0rT^IW0x7Pq>r>@o~m3xs2~`IID2Ck8aRcn>MF z!-x_%$)ECdD`<U+_E2rB1D1g=-@bF~y>${Ysz2JC3A>|>MV&r8#+}C-%XhFBMX--< zFU%_?R_I@=F!w!WJFB-+x^`nOVNtf7=pzcwHP4Le$css3qb1JO^nNn!ttpE;#qaHi zANM~}TOAFf71Wr*y#+>DuV&dn-h$X*bK7M}D9XJ<bad7EU~JCGD4>27e8P%y{h1yw zr@AZwpSwSnplGSEB4jgb{}NSm4V&zIBH;!rMT8XP<iH1%E0k`PFf#z-*s99Z;R!}* zd<rdZL?gAqcB+mtVWx!0GK+y1yaiqEdDLpp*U&CH?zOh5>P*wlc+aE`Iaqy01}|Nh zf@K$Rvhjy)&Obfsl~=&}MC$+P9kf4Q(|Q1EE?N1V-s<fOSJY+9$=aCHyYqSaksh-p zC{T}F4rI0Gq0E?`m=Ziktubu<Dp`M9v?{7KahTY8lyY-q8h*h4{%nuE^(g7))G3+s z#lKT)XvYoqcRKN6Z2wYj2gKC$b}pvH;jA!2=r@G2L7>ZeT14T<nzI4Rw)U69+$`K| zq|D;%?%93Wo+#yXtD+7B2<CY~kb;eLn8eI#Mp+sqy~Pfk_g3D-F9t(vyN1hMnX#jH zz=Capdwch+M-N&)#0LAq;xx2pVJ+)n%TMM=zHxW1Lvhs8!B$3D&W(qZhB5Yo4%_Rq zO8-G!kJW<K?8(i}pz<YfihX_DV(l&&=E|vVvu>z~39q!;kS$$3)n2K?$zR@*&1vqM zg;PFiQ&j@&PxzIhE+u<WV^Mo>$#X5_ohVRIQv<gYit9ekvh<qzhgF$PBD7Ja<8diq zv4e;tYjf=#)rnyM;#zdybJuwOC)S0<cz8X4*^d-tTBNL*j-{{h>^~-fh#}YQnpY*I z)ijEwuH;=fHNsXs?*Q-O@Sf-FPN;)~k26>Dhz0`Y>+%4gd)6$&wcDN?1^wuIE3X zJuX$nXb!ldpOT_1pnjfo2!QE*>c~3$EhtoZGBT&XjvibI$F)*czsn^Id>HWWu$B9D z<16+{hV|w9hHzL)rBr{ki@S6h+(rT7={KHg|2{q{SFW~f=6)C>koH<!9&l5=I(Q$e zoy<`#k1_uHW7-gAdjwhf77lu}(r)sxx8yq@;z&^mR+0cAiGjY$*po9<^2IiB`Rj-s zt7T%K0DSyio#xpP3L7Ialk0_ExhbE)xwrBQ4Sz^M!s+Lfkr&xYWe;K#KY{>WoWlg$ zWn-yvYlJ&^Tdn@(=hCA{W}Ndw8Tp$b4j4r5a7H1mf#pA%gurEt(bh#+v~H)!-3wa_ z$tmf%j(EbS^8P<&uzu<=pyUOu^wN_!OhP_bA@!NfAbB-!Vd67xwNxww9^#k&Qaj0O zC=Gyv%=&dbch<fvn-eOWe$<Sj7-khu6mbm-=RDKrPm``lnZ}4C2fUv@_Cl9&(*9DD zJA?AdZ2Fk4+!^o75=DbmEe2dB=bkf3)%{c?&g5vWmRSs+*)EvbaCP3ScdW&dqAYsI z<4OXGg3s`<>zfo72BR_>tATP!j|IND@~TNu%es8Fhc3$ZY{;<)kH)9WI9aZoIXksM zAwkK{t?-yt1!_6W%04#6-=*wG_M+yZDwP;;wz`~5`4|>c75M*Xbj3KcTRUsjZXNXs zYASRVB_y#i_~;-cyDKr44d>Xi8TPeYFkP?|YA@=P`+ZJLg|-)*?JGZYfmOD-Gdhpu z>F4J#eEMb9W8P$Q;^+h2eZgwXbaBCCU(^InD1x}fIaM^>U_=VPk!80$pq*=Ed2wlD zX)2L}r>zxdjoxpM7!sos>Z!H<wQMOx-FF?sEq~1uo<ARC6MOR*v?QXrsmcAfv~x+q z`&wG-7H-US(%{E+%5p=EnoJ1P(67b9Ns|dIo5^@Cli|i%0qe3jH|F_nmtuXgt!nAP zPIB#+mQT)kccoR0rL^N9**{z_T8_@Hj_7S7J?+z#54C8>p2kbZMn;3JyZA9!YgIar zaYPSsn1M2%qRvf&ymnEJaG>3A(6i+x@gmC6tTsr4v!&;#I!(E{6x$sH0?stC<Y!IE zs9PxCAQ=+pk(0MKc$8W>PT1-C6^5^CacW%GRZsg%hv(?Rx9Q*f^3ka!zQkn=I_n-q zx@|(Kg^d;`nY?tOx<|FF9fr){$?`EKPAaoKff^x_Zl*3Wc{xbHcU8fXt+o^)0PUAy z$nvYWa+smC!;`SNVKRklz4p00p*|J7Wnhw`jV=AC?9I9BaKGj`<xLVf;r&Lp4cVi( z-9!@xGIA1X1~K6Yt9fhOM2!n1`<cd%ev|?B7A<N3alisqP7RB-i|e--B7az2X#&lb zkevHrT}Io#44@pN&!1Z~bE3i7>4|%OpXMBX^i$=j?MNx(3=UdzE!H#*)M&D&^_&>) z>=AUuBOCHxOs9#|3G^<_puud7skFr5vkeO|<|XBj8?R6FT*W5;V#<KCI(0T!yom9@ z1yLY3d20&y`*W``uGBH-v3bEP<E)&RU}t_$SdTT1h}pQ~uaII%x!k(n*kx_uqmD-m z7nTcRM%;xDR3EKZ|KvYSEgZ@NC47o^Q}OUsGo8<i%yoQ8VB8DJi&})l25Hh;hbgqH zZVoxOC+j}5AWY9)+yP8U!Z`9xzF4_f$voRJl`%KtLT^qr>QA^W`s%4SM^GD~p>J>X zc%`RX{1eP~Urzn_45S=%7=;oiiO9s?dh}4z9*(x=Zc(OJ`yo7^F3VXmt?=IggFLK8 zzy0seVAltqOG~U06=Bi8Sd^3UF9CS7w(@Q4&kB;}Rqyw+m}B|`x-n(6V`AEjmMX{n zcN)5^>-@JhqN`4qvj(b}7iQByfl&n*Q%=Xuzhy_PNuUX93&5H!-`Ns8shbU!3M*}J zy@8y)9F<=<JGz<%b*<-k7n+j;V7yDqa_wuhYg2x=Q=p9Iko7NL)#<ht6AbcHF3KgR zP(2eU)}0!yzIm)uVmkCXEK0V%D!x6`6TY$=aC(x-B(0wh$WTl<x8GMyU(Jgd_ayk@ zFGZCnhSN{1>XzQWv}w)zmdXr059U1(=^RGzjMRwb+uWTA!>w9BDBD9fK|87?F%tTR zrD4e!)RhUu$xLeT<IztYzwt*ae7CiTkO_HSYI|YQgNp@S$beP|o8AFPE%7^9PJXRe zFYFB#!)xV(q%%xQ6WwKxdCNu}H`|(0q8nEXgTEu~+~j{!9LhrR9|iZ89sfdTp3VG4 zaA4tZm|geCvaFZJXP&0vIRrs+hU)n1R{M9yb3N<l?%L;Qv^ckcc$*D{{?CU|^|sr# zGM_Mljz~s|S|4id;@~D-EeCFD^TYO2259NPW<sZJVG>D?&X;CUyb1+P1sC$w)@wiN zO_r`<R9@IA>a6)m2J7-kS~5LAF|5FOcOtnX_CnjXwcPv7knbab9HmPgLOhb~EzS%{ z>fZA$$_Tdn?)A>@OBL4&E&><^#90oNw6KtH1wc7OrSrL5uleX0@06}BUBR6*i6u2X z|5^pITJct2MsdiVcF<y|*Uv$pQXhFP&Cy@}sot2nt^M|KG_J=mc!tPnPty5cs7TsO z!Z>?h=*zTimgl4^4S?)0BYZ=O9-v3H-o_!EdYt&mv`*GXEex`!Fezb%YS(Qc{)IrH z7#n395m*1Km`AD@-$LQvzuy6diGqwfP#j)ViqnjTIeuYnKX=e(e;!Q<j|J~^f9@4L z(=!*t$Nl7U{k&V$Dyfv6y~>yh50;hu${8Nk#p;YMV^>=a^;^(kJAQymwe!j-1Xl(5 z4|fc#974Z88;WA7&6=H*)lRby_1fH}8HAYzFBQfz4v~$nW_gEgCxS#|1B9RmyOte2 z@!e=W?Ozl6&iVA6H%rTf{98%^xtW@lXmEW^E0It8%0(bG4F})8dAo36-I3unlbU#W zi&MXasX*p0b6yfQ$o+iXgWuWWad@^FGI47l$G`+AbTj~I&ca&o31-()y2xc~gg(b@ z-|fioTvya%#d1|uyYM54u<*dWl~^vX6!V4u@Zs0W>R}4Tq0nA}Y0*cISB7KxN(^m5 z5G(<dwQKy07M^AGDneG@)`U@WP)WwR)v!^<weB-(WYOXg#`<U%4c=i)JxRngXwds= zl9H-ucYeMsD^I^6mU~{4`_Rj78`T^$b{l;R&X9M|FlLy7^5F~oZqrw)B+a%qWFC21 z{Fm@kNjK-?0RYT~2t)v5Hy_aWvP_+vKR}qlntmCwezcUzN~c~ea7I&9Rkj~ly|Z>q z(+5+)>{|(1U!fQN7e@kG5(Yjh_UHV93UT_c9-F-*_?7LeHeQ&keFB)yS&YJ}m>U~4 ziG}M8sC2c&os^894+5R}RCsa_+fb{&0w56M`zjo;9q;ODF=E%be(sR}B)ggMQy=|$ z_N3*Q8{i9Lj-^PImtsYjEGwAAZs{_-v0y$41hphDr4E~1e6Rg#)A_~RsIMj-<J91Y zEY%!i7@KZT0P(QeGhEf2a%#vYQ0GROss4v7LB=1NV!ju;K~*u5uIG7{Ix1Yuf%dfl z%iGf3Vvlo1Vo70JIrZPRWzpp<I+gCc5_7Fc?S7Nakn6+9SVQrLupGc#R5%eB%(YXG zQRam-F#?k)syH$>GPde)2WinE7&o;kW+n%M2p9xF-r|V0a-|K=+=g$RTbp>_Z{E*A zKP)lAbKyLw%Q}U)?oWL@-Ks^$CaDx%%T7C@`1E9UZV%EdWY;eb*$IQ&1n+^H%8Cmt zwTIntn}bKIMPls-{fr2BS0loqwm_Z|VuKN3!u>9;inF%0uJ5;}SRB$s+(aazQ1fTn zv#GMZQ!L!!bz5@{>M^F&c>bQpc9>R<_xSs53kGJ^GBFkC4G*8oS_E-fFrSLdJN1AJ z<aoB>YQd?b1<s(9g(x<?@5s_{R(p3<KZuupZ!ZhRN{O781g1hgsn2xF8Y!he2~8T{ zjcs`A|1Kl707IMRMz+6E<-ewA<`dLp<8hw0X(0sx5c!_{uer*T_%6Md=kmmeQ9T9y zfHUfO?31((zSjN#I{b`rQ^-sTdO%|0F}+7zfsdN@_P6R`ZyrdBL*Z1}K^!6+wV<w7 zt5OS!A3GbfUG9@K8~3GaaB>%X;>mLK0IK_PQ|xobfYI_8M5`0ga$`iVk}0|i+4)*F zlF<@D)Ry^A*pq{?G{eR^quc7{4MHcA!%M~5799zqkYQ;G0SJS}hFw<kU#XjbrHWH> zbbDR$&Q!NZdd~TLeK};tfsgkuj23;pOm=&LUJRd2Pkk2MXX}8>hOX7JfP{ub)Hn8# z4I%KL{@YyR(JKeq-$%y1X2kibWtO(Z^`9?Lr}X_vS*0kdXB+9`hV3|$R)lO#%dI+- zgIz(=PpUlQpQ!RP+%NRr0c+gayEp&bo_h5b4jWrD=|xlT$biETz&kp6x)?`#nkunb zmzK6MRLjRVSg~~{KoT97I`tUUQ!MT8z)pcqL{?b)^MZ)=>2L7c8)BSZr))yehS>gf z!1fZarE0Fkxf_d>&l1-+c3<eUq`HG&b>f&lag5(Sn+fR1-c36HAilb+G)L~JvP&Ci zw7Z0Ec)P+`>YGg<WMgxYC2=*<3LTKDvKCmmzE;<uUt>ADKNq|_$(b=5o}Y^yA!AJ5 z`jwF6gn0kkK$=cQ*$=Ih{Xp^)r^_b&go-Ke$Zpm-J~GCW8U%uv-xs0{kfI%IkEU=g zHiWdWt`qNx3|uWM!JoRl2zP7O3&o-gwCPrIO6<PPP=cauda5`g90JzY9VI?sfN5o= zojWBX4d+erZy7=nFFLqZ8Es9!f`I`kDuO)*nTnJeT`dx!I~CKZ_AoYOO*_pHmrTD& z=9C!%P*Xj2c9S<L`=m>xP1;$9jCsC0`ypWEg|Xr4GLxjqw@%(IO6qT*Ix^yZRjSzz zwcF(OChbHU$NePfZ;dRyNij{(!3EO<WL0o-4*>~7^dsWPC+3QJg&6RV@b9eCE@=T2 z8sEfD%u-KP=ls6LnhB*7%1m9~0ORK29c@8sLT6C?;Z&CAi{b@=jyEOmx6c7}lBcPH zuY2!+ff+y29z2>4qev?JqUa{IEB2#nkC9;SzC60rtydLcr=dK*mb5S5@=vo-{qE2F z8@{kde}`h4+xW_Nz^+a1?@&DX$V*J;PwIA|raAV)=gXGVmotrn$tQ`=n%tEg^0Hka zY4T~RKeVB5M2B~jc)dN&{xr&yMcL~3N!Bvi$QH!%3luP|x?~ck3T_iSF^U1(1CS$n zkY<v+UaIo4nbMxWq01x3G7Mn{2L{2y*OIjexVE^oR2rYm{iN6!E45x&5+9*u?Y$eu zo(5LsgpH8M>?Vv%vA08hzMht|38Yav$2euzTN&_VQfBTUi!2+d;qf*NK#``8IY7?l z@lXqvW2=fLH-!5oICu8tm@ju>$H$wSuIlsze+`)y%;YS|Msy~LtySQRkSuL1i5=kR z4VsyiBoBp+V$dGq5woc(>iXSoX|+ca#YosmIKLsYr}LFj-8p6Bv*D)gcLvxQIQ*ih zDIz?f34csZ=GLalzLp+zfhCQ*c>8j>Yj#ZyXsl_zKSfb}<wIj-)_PL44srcVAld18 z;C7WpByo@=wg$yu^r1Oig7;g>oywRC=PgJQ^y#?DPX$gXUpIbS&4q*WCa-+!9Z)NY z-4iB>QMsOYoA*>f>&`ejy(xJ6D~cXj&oL*V2ctD!?rZuKj$SIk$C3b&w0X*g3m{2V z>iqZBf3fROkdXh>4}t!uF!2BI)G&x}aIo;mh{(uDh)75%sF>&|s2He7Na(oe7+Bai zI5@~?c=)*3_?Xx@*#BbJp+4?`hCzUVLBK{qLc#ujmiN97b{&EVA^{2l^MBZN;txt4 z?thr|k8l4)LIdDGIBKH*aMb@{-v4{}{lAD_bSU(XYjLQG8WhUoVYbaV#2gGVoUI9N zZkO|fM1%u#4W6i3B7h=09f*R1n9%S~5yqdHwh(bXp%aqB9wa0F+Ho&9sfZJ;$wCcM zLRY`%vrZiK<Rv`FW;+J6SC}g=9g^qS@tUDg>Tn_N6N($eMXQbTH_ug&JdT#{JakY* zk{<Sw>oASBUB_!poXKKqR&mX6Fk#Lhw2ojl0wU+#>eMfmg(Ny>#rf8V>U!<MW2G** z>EI<9Fy%^AF`}8BpcsPi6&IiZHs$1fx&|UR0l=u#@)(^DPeWc`SK;q=jZ<-9DqY4_ z&xTPk@Xm~>RU`X$m|rbEg3K~$U>G8<8!@a_6S$u>)nu&{Rka2S{S;9t+tHH21gpmL zNpPXs8%J!YyM#-rFGUFxs$>{i8Va9Lbp`r&GJCR0zz$VUka$8~Yt2Dk{2CjYn(nP~ zIl}F9kzGHJ&=LOX_Q?IftpOd!tGL(Ly}~b0wQP)CaW79mZ(FS<`FG6}q8!U38b1;l zj%hCb1wp*Zd5*R0pj!*G#wB~=`xIO3#(_ooq?#;R6a9Y1<iqWY0tOK6M68cXbPFda zqTE^)P%sRMaSAMwaayqrLXGC7r?0igjhq|}vX5?X0zu-N@zNAfRRHN7MrZ*tDFCP_ zYB^Z?Pf#~C@l)R8jY8ED-whUZ;uP2QI@kuxef<-HxWv=0T@I%96BE@5okRe#5~5=+ zRPJkEi`%I8gPoVEG?2QniFS2{B5eg`J?QyEx`v*Rm^+HXjV18KT^2brt3})nj=QwV znRSC&=Q*mT4Tl{`Z1Eh81~D4<Wfqz&Y}GAn6pPESxNBHF!9)&J)!KuL&jJ&Z-uY7@ z-pW(PCyqR^HovEQXH(D0`Ig&mel$(;KDQ|BruxwqPpka$k<_<#kCbc5%8ryw4UGhf zU5JiR3OF+aGrL~~&1;=9ty*+-I4Gr6rt*{@!q2;+FWm$zbBNjzh}`R@`EnsWFv2JG z%DAuAYt9SND204d%b&>8g_XB?O=q0Do%pRfo;-U~Wf&d4#8pCDPHe27*Z{7E#%7OM zTC@?+H<M^_kvLO@y?#B*MH>I>!9B%%oBhX#)TnN3{3368pg-M^I-5Z<*5ssE)oOB# z+jLM79Te*C6k9yAUBBh^_Yh_JF0~WRaY}vdEO@BGdxB&bcoWIxI~`s)p9L02^keu6 zmVSB%=pdI{j#*53^Qz4oDC!sM*Q-qK3#3l5H-{-#!+tFarMSe=6JZ1CyRizF<s5c- zO(hDLcZ77c>2|Si+PDqya5O5`?uA@X-gegUmGW<u>kSDC*KJ;1e$IUdAb1|LeXbwp zOVxlpbL8*vy^?L^!<9)DQ=fB|FH`NL6|1%(!N5qm^;tS!b*wOZ3!k)E{Zgmi09Na_ z7!fxbfgD#u@|9s}>6ve4Khc@az2`q5*>RRG?r%x8N$&P4D22f>Ii7+Y=hAPs{5k@5 z<$E+Fq2PmGa%gIs+xPyqc9F?nS^;t?sxKWsrDXp}?ciUX^pj0kK=>(on(Vn$QCKwf zQnA6RzS)m4KWqQlTQcM7I88h(*!s9b2z-FUM`_aOMN&L>>#$sW$j`eM>tzE<GuC2; zs?}!rQp<75gE4nWuHH_q)WT8eM8dtoAF@k1n>A;{d-h$!OW<7F(m%D;lH)E%^~h|f zUu&$lLXva#yl?=E3prMveb$=@Kh}LCuvU#-*H*`N>ZX7AxiX^`e6e~|e%p2mJh4mI zpBAt$8n6>`F4lW;yOr|=dxMmDtRjVZ&I~>;k4ULG(om>?IGT#gi6R?dG&fj<H~+>& zE``XNr($$4QzIX4s-N_G^n>s3X!B{>Uf_9t3v-!N&M|l$7g=WnyXY_v9-c35I6Y_l zI$7M^?|8_3>YqKnl`f<A@|aJ#uFYFAF9zS@6)k$j&&%BWsY<$OtI#?0mxjyorCH8> zB^Scb+~PU0_CUV7sV{nsPwH=z9b0Q%@;0!jYE{ao&b0&z?O9geel6uXdPTZtBqDND zJ|ZqTP!CiO?EAEXQI*727Br=;DBRVQe9~|mUOsq8rUIAYD>BXe9LdV!Z7eM0&0q+1 z4C@uYV0>T%f=d@7VV%|;hO;lM?|JR+>3XTReg|0YZSKAWAC;OA0Eg&b3_X}e9La5H za*wL%p;v^7;3Avck#oyd%{~DDy>>};t&^deMX&;Po1=&eyS5mu_PCNDXA3k_dh83T zYFRp98YWV(G{UefZLFQlt#Zk1pkvH1x5Tw?ZpQbS2|a6DyftyU`KBu9<w2hSh08$% z7F6$4(&t>Uy}iF0J}g<SzJqxN70*J-6tBWrxpD13W=-lb{I-~~S!$}4{v5W-PR%Bx zNGLTy8tPN%tj>!?kZXSF6v6rBsQuNoo@kcSsTG&bqIU7iO!Ln1(}*=e2asunIb|rX z(OO+pUFxFBgFlLkslj_llUa=kMUBB$WQu?mckY<oP1G!u9c#KyH~%nSb++6>Ie9Ea zu{`yR>dT)gNkm!gn`TWyyLt<5K1Z}4+<46>8=I>bXvMdNX}gP<btd>~=mk$XbBJY- zLuXL5kwDKJg^&{1(uU_ZrvMV}sVvkC1T}W_BKn+QUK$wm)H-#f2~_l~gj+EYcD)?{ zIusS;XDNNTe6G`?`p+>8q^zw1$->fxAvb*I8ktNw9>v2IUY(1#ue4fETQ;h!GA)+R zww@FG)pP9mlDGEj-d$Q8Qsq0j=xlKC5yem$YJdbp3WW#}(MBOw!5&Tk0=iqkK2$(> zfM^(93=<X*WGq^@jShv=j18CYiG_{;dLpXu#2UJtzkcEs$9xNJZPnh0d7r~)I2!M~ zY^9r2pWEZ|8;Zf7!+iD8XXoFmNk(tUGq#|6FxR|~Fp(3Aj+#jcQ~@FdEj`4%Z95h~ z1u6iGS0cQ)2M&4>dI1kNaSRp%A_KOxkEDMaJ=g?dP$Z&VL?&}q;TX9mhy+IQvoeb5 z**k#b{@#l;UTK{5YSkI+N*+)&67deuODflU{!QeLHtiQ9Wz{tc8>PRsIKjkYR0{5Y z&L`piJ-;hVlNAdGDTcrhh|BGSP_tl~0$CG9TYf~BL5G50;9w;p4f`nF*GmTv2ak<z zrmE4f0VKRo)9Jvo%U=5Ol+uQ5_I33*`De}_w~e+v?y#5#-;S4Zwb<-&PXedtWLF%f z9KogvusMh$5QkyGG%A$HarB498yfXc^)fdNnf10}6Xp;YGw32&yBK#$V;j0x0?U9O z)PLp`;0zH^{>2Fm5NtYvju8P%fegAri^@nqnR6-*<Onj0n|iKIYl7}qH!mtZv@xgl z_Sz*r%XO$qog#{_8yM8z=gia&D*Fi6x686wUCX6MhpU?|PnO5C>a_&Ui>OD|r7Ckl zfPhMrx2XLnW~<g2wIw_X)^N3l8PI~nC>fE&0bignSat#!*hM5sdV4q_zo7$YK!o&1 z&X-=^6i3%{9Ve}KC|6EDz}%h@A;w2HFGP2(Ho0FqCCW1U6*wsLDUF)AK^2u(b(0j? z9&?PEI_=gfX5>@76_BwIP8fxKpbV02H(eJr!npl+z=!Y3j1GW+hJ=8I_;9)bQ2#iv zAOB1E@V+rHVX?5u(Qzo)aX(RtQn7Jx0!2Q&S@;hp7y<@Tqzu}ZMYh;h6r)8q_xkZ^ z?X3i%ln-qjB=YQ}cqe;zRB*R<-J(3yO%^}48{`TBYLwx^c2IEfQcOP2U3XLZ6U~&D zKDV(jf5P_cldLc2xSjelJoKko0f^B`z^cvaSx=OmEJ!UbojLfn1<_e_JiR{72x6pL z>i!*|u#NE-l#1Xhm_qh@EQuDWIRQ&3*IV(6<am0^UWq|#eVk049IIteVzl9hDUMTe zu^|_HmfrT!_ajD^p4+M)d!g9PZXw1377N=Y0nD;xekNJZnFhz3(6C7&Na2GRIDg+n zD5uK^rZ#^E3%+104=r^MEY_=XS@XeJC1o76+#OjvruQSRk>fnF(*KM<|4Tc^s!I*T zts1s-b$<$62f1)0JlHILGlxG6+1b^1&zi(VQ({ma*Z-acB7;G1iJY};88FOoCytc9 zeT6D*IiQFs3PO@8PkmA_Em0iMO_ZM3GR&UiHUqiowM<3AyQ#~OCWdkGNcHSaCB#N< zQWB;YXXMU)DV&=QY#+ltm1i^{wpUd03oe`WdH9}n*Z(ufPtFya`H|83K(Ih_`5{u7 zNbydNEI^BTRQNWuUz$tb4-y{BdSHR#i!K?Fo}S(lIc#VT%Q(&m;iEqp8iTCv9F^_T zval1_Uho^VS~BkPot*#ndBP+`fb@2GEXFxnY*A6<lKGJIo>tvEU~eB>XPdRJIrgm! z+u?94DEsCeVE-+OkGoXZ^i0vls!?qq|Di0mA}-nJJYR&F_M5+wqJMunworKJw0wHq z$1X8Qkd%;I*!yWId~stEqtsY^aMsttDXou&GQk+khv7MR2iy+Zq+)Si?jp1II<%vC z(3K13KPq}hFn@C~N-ey)e-x7(!PdNso=?!QenRvVKud)drmC%hk(##1jHA2Jl&~mW z;^%Z{i<4uEGyIgB6)PZwuVS$-m^@kNFF3|RqJbe@xx0s_DP<lnjG#C%pfV<*<|uV< z5TzfIs2D%umAKy5PqoM>y)xEA-ma#ubU*1s8~M0~sw8PG8lGp-Tu#Gy*FW}3qxP&8 zZG7Tjf(%t1Z6Lrjon2b4`o&(1<U2`OTcT~Q7!$1S<R~Yu>^E1LC4P@eOMbJEI_pbq zsmp=ui?6cp0On$=R^`XYqh!PFY{5dcG3|ItIh6-R-g56B=0D6GaLF5A6gox?zJx%U zwq#wTrF`wrVp&^b(bJClA+fPrOSbsMimzkG*SjN~&tS4Pt8Vsw?AYQ9<EaXtYn1y@ zV;AvaTzK*=7GNqXUgek2__tu)C$YvabTug4{c>sRgx)qF#-qkR_ws-I;L1A}E>-fu z;Y%~l4)P@QwzsLsiFOTlho1P)(R?fDhg~85{QAj;oj(ThEvcussN@_soLc{~?W1{) zMx#l?_x%Va<i($NVlomn!Iuh|Fv5{=S9}a<{8eSMT5Be?-o!f@@Rv^6!*x1Gc|x#! zpLBP8YVSzs^FX{1BFT!I|M;Sd^Qg2P7yp%V6LH2Hb()xc;FxqgL#~4=Ut*YfBY9sn ziHfrB;FIml`HR0YKlw2qhd~^Y46yyt#g;^W)GTj-)7AQt<@B<cJ3XVPYh*cTu5+~c z_`8zxL7{aR3csz!rv2j>syXX?-9A4eN9K&iJU?ND!tq+I!iik1;z>uZR>7Ekl;1^8 zD}0IXH)5BLOH`D$((Q}3vVv6kc`<sk6MGKQ9Jgd7QvPu2gH84u#~8$@cEmGYCFQ1j z%4F0T(n5Z{$BL`rj(L6dyG|1UCbQLOkRqO4-K;?ocB*-1v&lu{`H)g^A)89i0}Hjf z$9j6;T(4Zn;3JcI;>e_w*(cczht61ona)Cwpx>b;BNux}`4;<vu@)^{i>s51*_0-O z5fhK!$B5$oQVeF4q^_Imyx1<*4Fl~`voRaZN-%ZyTA6G_vfMheR7QfAsmW-6gz;_U z5U$h!UF|^hIz)u_$4|CcCZ8r+u70q7Vx<;mOMDHpY4%UD3N9KF8(B_SneD#R3+bHl zwg)5LnA3gMV&O;~GN(%nMt>NoS$3VNc_<gVN7l6;2FKdXN#iXN|EMo|?AEKpKR!wV zx^P1V(+WhBjA+(wm?!qm1!>-a?Zr>n>PJs%Bor*vrF8}4RrtO$nH!KlCokvhcBSsq ztn+{EgG<3n3GJp#_SE30M+;}sx0apcC~(2f$k)gTr6Jb|bkFJt2TrK-8rEU`JiSUy z92@v@V(kgLW(?^$#vv8GK6D;H*KZy%YvL}HoqnC*(OpSgAnb<nCiqQa&<{o7%St0^ zGQMma)zWhS1hxL3n5I=zCXU%WFDcyh@L3ktVtsL>ufCW!ytX^OxYyzcUcQ8<ywMfA z4rQh+QaZ@jIT{5E>%FyphTQd)tpi6U@b}o{vI{eTxg)-+)4^2E{pM>)S{U>5=SoMX zc=ANZ4`fVj)RB3%`;?SS(x<HK%j5jwR7lK55pWjX1CmDT#~KGXQW2}}=trKXlS*<- z-oDaY`1>~T;OXx5tj)e%j`~QgQ!OsPa`>-|TBnwHzTSO&)eyceZk)~a3kUVDas%F} zReq&w?#A;>`eiz`BHuhj>3yxH%@+}zity%FD^3F0-2501F2>HpHJT2Kvlo+S?rmFs z)fiRjk=N{4r!zOD*q!nMIT!!jJ+PFNW2+zc@9Tm?zYNY>J^|U!amd;agX+D?aTo8> zaPHDV?+UbLb=5OI5oJ`_DnBX1fBN2#Teok~MsJ|r8dL|?usX#Xusj66up8$OP0Zhf zZKbWA%JT-v{`Np#?&H1;4LaZ$`3Odv`)^z-NhZ;RQwU*-Rgd28nX&ihz1f)PKvlBe z3a_2fBU!t3>i%8T3RA&6{Y5eC61|3WCLo@uzX1k&5NFaWrJM3a`7Z0%oU-~PJY>yj zS##B!Tuya9;Q94&YAcz=8>F+0C)#FY9E4bZyOP|8Rgd*_CXWxPFBgkrfy|7F;^O9} zSL^U=1Z~>_JCSsVaa8l?@8w7YK+*x#L|rmjCDp{SevsdH2KolEb5<8xNc;q);0Bs) z8uBVm#sWEL7VB7fN5%a7o8{$Y8dzEdX}HmIxxI+LTB9-5aW6l~r<TGX=Z1}kO)Q&* zEhybm#dPfDG4QTtBZc4&PUYe+^;=HHM?vjHnF>U=maZG**7coJ8X%rEbdtMg#n_9{ zR5f0QS8<>f{mN_nEH@Z29h)$&Tk3(~F2DGedx;nq5suEsBA>Jmrg#S!IJ~YfmQ;va z4TqKW?`R?o)ZoP$cz#W}62&;@a3yzxC1P2O(q2bgLc#)SzeVMR)>t^`ONp~C{7|%0 zcdraL4E9$^2{t^BJ^{72kswLnk|0M|eY?PnZ_#e2;67rLBydmHa87EIm-!T?$C6-q za?=`E`o_uF8hO(KCtzv2_V69#n!ItJ-#6{2Hus>xWWI*<Gu2Q^$Kz)FXS$)3foj^{ z{qN_|)w_blkRvfMnc6tX=KN#tgzJVFJOKUX;ekpwU&a3w_Kl%p}OmTU4FoH9R z38pw`kz<_;-6$Ioh&7nd^TD&&yLzm&iCfA}?Vq;!Ccvx_JC!*8{b1c?>8GO|nDCNu zfU%#kmu>;YP(Ukgaj#LQP5`foZI8S#t1|iPOYS#Yy8SOBgNFOu>xK)Ot1#`%EH6?H z&XIyEh)09cjvZAaC#HTY6GCbhJp)3>0?TuV`9!P6Hrt@P=zh)qm~SRLrI(sfEw+yt zned5{aWQ2Yfz{2B7h?H)joM%+^|?s20lQ1W_LUT;<rwF{e~J#+5XWL9bBj#_v#mnJ zhvS}N*ocjjdZ9sN!%@v``mGFiICB1#lc>UQe3DwJ_>lTkL5dU4rcFa|SRNyy8Yai1 z>WMzu+Iasu|DF%>xhCs5C(6e~N$C87FI%a;bp?QnJt@>FjFP$I#lcD=c_7o3iB;;F zwzTvHHLjINaYJn=5j~RVg^APsHd%KY%%AvL(N+0ju>6K+T|FxeGA7l=n;{KHO->rl z?wdBl)~3Gr)J*JTMqD?gSF)KF2i1d2!yi|ThJgMtk@{^{%F_qdzO_n(gs+|dIF4IW zOG`gI{t8!yTTfaHhD-Hql;YBU&P_R5^2*YUS4=DS)T-Sl%^ym&i1l#-4K5B<p)l2_ z`CUl#Vhg6dAw?Rw{7Q~5@cSj(KcD+Ewzl@=_d{5%e+^jw9WV^>#<bX6)iPN*_-QH2 zwvzt399sVns8Z78W=L5mu$PZz>onrCJU(KS*j@PalKXO_r+?=a_zswCQ68v0z|VhV zUAZ|ou|m9d`ZK%*65SZs)n0Adz_Z5>#It@(V@rPr#N)ku4`Ph(;n#goafHU(A(P#{ zep=f)-|Bf?e_S3FX7RKd*I^rsE<Mzlo0}Wa;-+_7;&wl1X=!O%c*$BI-f={sW3=x7 z^+bN+INu#-TzvDh`NDB)yY|J}_BHE?nk=bKZe`s<&AW^vKU^Eyk0TS;<W%hp^RF<A zn)<ba+v{9EPIxy$NkYqO={vy5VHxLwH}oAK5e`@y=^sy;+iksp`^z1j_J&p>=laOW zvTANYiW$C5dA)$Yynj4*(%G!D6yB?4%sHsq)n{iAr?>^n^QQlcjs#U-x~T2!P3djx zi3I@D`ty&A{tvDzxtEWqS)?cy0j#0L;&{&aHF))D#b0IW$4_C51uVyV<njO1>a&}a z^XzP+vM&*Pw-a$hPF>wyYLQS8l!^!eY-Hk>BB|ri5tx3{eOp6s?%m%K<o-GT-;Z!v zPQ)xRj}kgdwX&5vDVaEsz8BTs9V&A=!S=rc<Z}HorOSZviuR~k_s_<p8AfHO`9Vyi z_=%>>YeNWsr<zW}igQmk{)PauPm=iX(prEa?*OyJo_1%Wt!M5JcYEu6&GoLdYh*H} z_(|hbej+xro_Vrhxk=Y4Tx(=vBIoG`*0A@)^o`k;w=~Tft5VCuhylyrX0Ca?zfB^8 zKoAEW+uy`4`TnQo3nhdLhdVGV94{Q6Hw&87xS8<D*2TxWtdtr^m`y_5q#nc{J^I%f zr<Z6hC#;awhhhu^&&3tbTZ#NP>ZJ$a?54plz}mc#Vjvj&Gl_H$l=sQV6!gPiOoICe zHXVJzjXJG9ft)-MRkmcPwf>&WsMFSZ60wKSUP)D_Y6)42u_Kt5nYS8eB5_c*ub;em z1lYpOA^*iMn2Nr}#f>9z#naYy<+2$Dx&E3^oB_7=DA=GNCUg!nYniQM9jfy!q_ozq z)`#y0*W}C3pSf?pe?R1h12Lc#UFCg8dQPrq!_+<YQJ6MDQ>^+{w|9w{1!I~IbPOW* zKm)(*GxG%2CL!?m@P4(24kxet+Mgf#wXV$@K|m;Ab$%Ns?-<uls^+U&PY+2K5dQar zBVhk0#o{A#1oj`2;NR&b|D;%8LX)Fov4dc+KT)u8h{95e;81ZI<BF+@|BEO1$l4Hw z*xt9G?KL_u?0n&VBA}zU^RmLjUp0nT-f6q4ztVS=uk_;q&J+vZaFnN&ox1`DM`haE z$-f~zX0A+3W;UIVW^&R9jW^SnO{`|~b?QV{y0epmDp{*Y^Qumx*^#!v{@Z-os$dqP zXN~YHYv5Nd)fQPR;F@A}_n5aLwPX`sxbU0nN`09VgFWrd#wY<Lm4TBcOZ2lIlbXbH zI*UQ})kaio8`(39e)lUs!`1x4FnITwPx#V0<^HR+uVn3la>?lFJ?M->ZQR*uWCZN5 zs-!ehDLa2QbnptS<nKlhQ{ODnPYLbi7HCF5MDFS78EC=w)NTmVwvvicH!!*+9ptt8 z8lMU)-vd-#@h@}xIDYYWmsyPGlMeY~i%vVvSMB)(@;D9mSm&x^_1kgD<8y~H)wDeR zVL2PrE@jCRvr|+%bOIbMW-O2TV0VM;?Civ7yINT>7#4%q1KpNivl7%|j9*=@l4&aS z)>PdL=cx+v`a`+v+O6+h=ae%Q%Ad2C{Vs&2pGY&`0kcW3qGd0VS(`?=mAN&lSEu*I zDInFHN_hfr2YnaTjk(1_W%o&k4xGw8yrIEpTqf;CQ}McTxjasbvR1^ONo=a-a?XKn z9DVMb94r%2u3N64=;zK1PB+JXX{D5Rz?c>&W-Xl5O_G`g-pr;bJYu;NNtCc-u2S$Y zW;RD!la`(1V3}m{acg@kl&+?YVZJoJHI2!{L@)GGyRm~(WB5w0IC+!!jFC!8?r*VN z3rGBA)^c&sYl%709WB4halE6c0}+}F{(WQV@_ae6zM?}B&ep;ZNsRGIU%n}#1v*=q zj-QYKR%!C7w7COQlx_9h$xcd}#EDAOMh?ycJ3AX2I~)7Igl>qyZwJBC=2X3Ur;eFQ ziT!7bZDTNDqsd?tM(pbV!wH3rjkP7&mp7u9EN`2d^HETxQqWBrxJ(zUv=(3gw{e%B zU;Q8zfzs7wqBjSOd+9QzGcE<+i%*Gd5~DIFCDXnV9UnUWvQC6xu=18KhtVyIF>`Ws zm&uA&jMg&p=u2NcWcH0e`-D@OP`&s<Hcs8f*Ce9K$rpoRY^9>8EIN~^S^94H9Z>X{ z^c{f7pysxj>D)cB>q_BDVUb_u3mvJ%{1@bMFrLn${}Tz9`2_5*DBQuNN4Ev$K}?RP z%44hBGz?+p|5H3usEM7DvKcWsSMawfcz;1pXe{MGwJV48I8;mX`>P#Dwsww7jw32g zla6<&j<@<9P^|MNCSj7V25pQ5A4z?BYSOLAeD-soV<S95Gpg}buHMYrz~=8HY8su5 zAQx9I{()`cH5|Pj1ohH-PL=<Y6h?k)p~}H4g;q+gvgaRv=4kKw<DY{LLf)iA1sbJZ zesF|t6iN=h3JQvff+s+0dN~b^*^l3y%kd&{m(a$g?C>1`T{)Kh=i4%i(IYPN5cbAq zQ9RmJNmi<1spk{JX^l6>S8CAaGZ#lSzTdKHs)1fcHx4aB9neVZM;uO}HDN5%-Lzlm z58L#|i_?b0o%>3a^sc;IB^`!}R0IBbmji*OxMt~bomOX?JF-m5DNlbluWp#Pky}5q zO;TIYO;XGLzr_>B0>zV70)?k7LbKv(Wk+(VK7?!XAi>H-&2!25`B|r&8@o0*aMVlM zn`-O?475qug4CsALhQ&~)M=c)0KRlXrF7$XxGDStTf8a$1AA;lr?BKJT{-^v1tX@c z(9ftuoFUcSB$KA?y)*Ols{WORcD?uyUCaA#T?+*Z1q%c7f9l$QRIMn8O)U`?hmu1i z5SL2K*qKvYC8<&MUn&>!AC*hMf<m5Vo)6QHIT-DkAJi8gx51*{-mYyay*<+Koqj2m z$IbUhE0_#Pf1t6w%f&*>zo20@HX14Hg;-9PKUHH_E<3oHxtEeac+92z)TOj{JSd`F zuiuZuov1w>=|vA0M<6O3JZgAELrX(tk2B*GeaGkg@KMR>#jRq^JJ}+~KMGp^FRH_% z<*+@<pQ`y3j1#ga2Q#U_4qP&r?e;(H?Ay`lSdY%7u1J1ir5Xz5h|i&(ceIm*3%-T2 z_FQ18E`~cyYbPrY=Iu75t0q3jnFE;v&SY}6By7BjlfU>feNwEw@Otj_w2eH*0@+S0 zKk@vP@L2l}#*2;@ReolY<X37QD5T;mV$OrYwXu&+*4Ma6xMq{(SWVtO&Pv}96@6Vz z^v~YpMst?nVEUd!_@oU@4k^>b#Ejg@OZF>$BG$g|4xh!JVg>d0S=Q@ueP3DCeV=$< zsY&E(iQBaY+QKkYP3GtSP%E)ncnN}V9E0gL5k2K5G|eb7=}P-aCO~F7M9vNa<|&co z$5N~d&dE%3f&;~@qLNX^D{hn(aU2Y<c`>;=<ga;IZ%x9MAN=O5v_i{lPpYTrYGRt) zv1Bw_41F6oHj#@)wPg454d!vNlwK%8O2%a%R-v61JRy<$Xn?02EGc|xzFkj0e3O#9 z2TqY6h}FYpEN@I?h%UqeX-H}E0Z%W7_T<f6BbLM$Bo52$UL{S4xw&^tmidW31eeK< zTiwS_>?>;r2aB1RdEel8Hv1quRgB{)*ZJ6Ghkuy$)AXy9&WfD;!afDIs_C)I<|Rcf zao+x2{cOVAdgW%~M^QTWFt#4E#s190B36gEM15!;jX02XXGl0d_?1%A#Rsuu%B(x? z-_`VilP}ETL!>13FAk`G3BfZfUapkA%E~F)xndA(IP_)Yj>SHsa_PuwC{NH{+3)(` zePiv-s(OhqOI@uDtE&O0vZ#i7$&aiSEi5aiR~ms2EQVwzi3iN$j59Mc6O%bC6h=k{ z8c8A@Or%YgnXlV;c6eg+^9%o6mep(k7wR-Fx_wDbXWJG^*Vj7M)r$Qq)!OdW4Y}yn zPn9oFi-_b>!`E;s7Y{Y#GgJR6tHm}t)1Q51dy)3Ryx`LO?CpcyX_*WIBbh${@^Q&z z*^GTzSOY$1d1qLnB5)$$bHbV|tNx>u#VwTd5YZL}{w-}t>8v}ACcjXm7E0ex$2xQM zy;lkmJG^lO_Ezr{Qx;B-DN$$-@Bc6!$%_?Mz5H3<Shlt~Emd;UlpC~RUpPzsHKUg` z(ruBabkg2gEi4x537Qe((%7Q}mFfDD6kX<g=W5Q%EjpT?wR1N+l5?&2FbAhxjg@M0 zrwp;fYx1s*S~pwm2?q{gE}V%u(QQK;c4o^#AM1QYYSuJ2?3+{4VJv?1mwO&f?G#X| za=E*)PZi(@!BxxVbBdeEZm1M>%LeizdPlZ1#Nr6RND(c%i<i}gbFEC3Pg`Uwr~F1- zO01mGOzM`alM2GFoNdK(WA%?Tc?TeF5wxToe(%=(87}%{R7pQKtH#AYdP?mvbND%& z?fgQSR*itOl}n|(G>x?~GouP<^;ep;zluRMRLLC9(IwYYvm^TC9RT5S@Tgu*=<Jfc zvS4euhS`U@@D8{;6w4(hKh~<{pBppXTb-F#ueFz7S+Mq@SM6RtAAW5wZoX#$ZgHJ! z$g_N<*Of}vL(xjTpguO*)oyg0)prq4lULJ%E}A;2F1a3D{{w7kOd3Od2kfK*Q%q?e zS&yeKMBf1o?|{>(GwJ=G&&?e(PahZm=@$#Mq9wh>Tt54!{P*YDzxpko)t))Zva*7r z!nU?`z2>uRP~N6ZWs9mO)I2naXPpT+-T~!cm%Y?*4h`gya&ks=N!dLxLz6GTL_T;T zzx{O7J9Bzt%J9(T52tC$r4kQ6-j1=8$Bs!&mGq6&K9S9h<}1!)lPYT;`~8lKtCN;^ zHT_qLP@(ZhCN~zd7lFcD`75x?i|~gb5%~!0K|w;ne56Ig!u}_)hXF;7$u0_wPQd}f z`ow9>CL-qik?~ClR8e(-!8S>5>=l<#3r?DK4Z8lXSRbq~<csLSA>J>vT|rcG&+w}& zMCgDfB=Sd{yh|%3Th^YPf_#@&OfW#p3Gwoo5j?Jul(CsKYSymK*TslI76?oW{vd2! zYSIj&sgs=I4i>weYaGmhZlqy8M_y7i*s1<{IHbH$0B?*ffq+p{<H7x+-s1#}dj+BG zqkVKh2urh0&5|uwRv#il;SjZJol}t(n@(s}q-sF%1TJBkhh#j;623Cj+?0H#D~ky@ z>X2d3WT57NodG3o8**sj+zWcBn$HzyLesaWGM?qo+%?rEPCdg0a}FfYNs%QPget|P zmUk8}%MVTM3NwMntH0wKI)%rk6JmnMYPA_r1A+HddffeE0h1ObO!Pl4U!h)P+{B6{ z5;|BWhjyI!&k&~PAk`IETyOP<51Sb|ni)B7^)H|5F}Aqy%biI_RT>4T`uD3zL-8*y zT2(E9a*rOzWV<3TA*sM6E$xO3t?8LnIlys4%tAZH=AnMCs|P!VQ;swP@|UDwu8=E( zi8_6aUPHpGpsVZ~Ln1%<5HVMfYXCK-F1ffiwR~0)wjnM}dl|81NR14SyF8UI$^xJ< zb)cd7^FGG``V&&FD`W0V1bky{Dwi0*8?p*((LjQpT!iSVQqn~1@5Ql*6$>3<Y$)P^ zMe`PmMB6u}1*MZv<IUx-F|}HlO--ZbouRTiBscB)V%LblDwV3yJ~LSQJ1h+2P>N}` zIdvw@Iu*m_`1_8NuBln!I1Vp|ZioyqFbW}GDxH`8Y=)gS)7{9AAw;9OA`D#Wl&kii z>(NfTgsb*H5WQ9RJ=ep(EQj7}m6cA0@K|7v9U<kgIE5G#n)aJxHmfKuu%G@;syTDm zYr@wfSHgiQamd(=gvO@dOnXU_ExA0<D#HuI3oA@<{-(A0qx$lv#vjM3zm-olti|EG z;Lp|ln&tQU4FQ_R@oP8}@q|bEW6P31WH)KuT556nMv*=pu#CFW58=ulV(D_xtzBi! zFG4m{|B3hiUo>4+SXANGraOl2n4vqRkq+tZ?uMbe89IewNa^lIK)OLfK)OLhKw6OS z=bZEW-`-dIZr`kLt+!S(R@$UPo4NfK#iz)EYy!6e!l^?xCa$(w8c){67B*1(<^X*~ zWI=36;%`s<R7Hc>W7R(_xA+_ETo-nANBczod%V6pmEqv!oOB8OgHv4|nqZH7dz&!! z^=VBaJYyzEm`x%SEw(T`knLjF;JBl%*f}RX+hsfz=D#JcXsl%P3UZ<EFzksQ_A&)$ zLw;xE1`+wC6vtSFot>B0|60q6xiuU2_Ob-?H)!Rkc8oU4uFIVLjCddRV%~eU?8Gzk zRcYimz;J6DA9sBIxYh6ilR&o4K3%?g>G+%NXb+d<>^H6VtTIL|n6z(iPDHZTrYl?g zBE>o76nvIBO|@kZ^LNx2-?`<G#<Sz7$EyA((Ae_J>Zd!ym!WrLdeAkMLx-HdtSODH zOU}4h!cCI$km*+4n!lyjC%NZk0<kSY3K2j{SLr{pYZdRExV7@T^@)5ns95-(s;jl? zt)JaZu&^X@I#^}`Cg=Cc?rw#vwDcSYW!-RAv~`#J;5@blw<d-3J8{u(jOjXjuYAKC zL<s-EZ9kYNY#-%{$5PRO51Yg+9cOC19e7szxyjg39qL%Hu9z$u^#Q#~&U?#PBaCe| zVO4&t<DEK!3q4ysywb7QtJPE3K^PNt2}k0;&`n}IIpy|hJBXDTGQbX9pNZHM9eIZE zT*))`&bp+emUkeY<XI_ESIL3VKeR$=zePVS_>d$dqhh60Zzbz34O>Sa_OQF2TY0Fi zpu34(p7sWYU2AiTRNK0M7Z%Hf$E8>k6%=${r{B$Vr}J&jc~`PsoOC5DIJ6nD`GG8z zlj?~R<w_QHqx~pNyp1sx(|jQl=B@Yj1(E6RxP=6DP4wIZTy6)P)wE(n#0YB_N2593 zMl(_9cjN26L(a*aV`hx%CvDDkAnavSJ4mJNtOdilBVpAy@?bcHcupP9mP7|TfC{kg z%TYa74lqn`OFh*MRcf|xp->CinqcZj4R!us#q7RVZLsQ|`oWgp;I&OlMLemE?u#)v zPdp8Ys&-kz5hS5&?@sZZGfmsyLQ~&pB6hjWiGZ~myG^(8JUmGsOCIa^`ahXAv_Trz z?tIr(Dt3^&a1!qeNVXbE25;3$jdNp2v{gbE?>ilF^18K3+pn}68zOiMhqc>E?kW9X z=0s8j=1jX${lc8jcttzJio}N+L{>O4mP9{0_*Db=YrMg#3`>)4+9mEzf90`~Y?ySM zPwrEiJv=fBOx_jLMw6WCZ{^%DYu2iWM{&`sV)%cU9oa%(ISE62U!6pbrujfB(l&LC zKDWHd{)e$CSi^ys0`{7!v#~tjer}-1@fCw~dw<xP0fi!S-^U;C!jR>b=a(A!&~WB) zaJpX$`;vK1XmiC`miu08h~5PG>OMhlBzvNG{?Hefxy@$E0nQ!qZ#AF4{0f|8qHW@r zs%^}`7oza<WBW$JX$k-Cj=3+n0xKKsLh*;~kWH{A`H7#Qbjzgo#hUqwN+I#qblZKN z_TM7$PSdSn!vo@oJ|*nN5A|gSq<NLT<(7N9oDX$KSD4Y1<d`DWSm7-iC_k4?SSU)l z`28cU^^;yKdiWii%Ll+ZKwapi;#{L2vIJfwLGU+Yt@x73eXmSE8WkgHQgU!xov@Vx z+5&n@i;$Pm<R-$6R(#I2QQ#==l?^G}P|CDwJz>F%c3uROyA+x3!X!y{x1v{o3p;Vx z>T<Q0kqbMaK!sye<1o*Jr}%eILecTsZxJ9}Y+WszDeg&Z+ZX2XNdOS@X(<~Rra5WT ztu*Z`XO@>RbSxCmFx$QpTTO!5PE?~Cq%u?4)3VM)w3j%%F0tD!@aZVa*Og}4Bv0~9 zFJfyF*3m!yYV;3|;?bG)AKbKdltW5i?poDL1+$Q(>(tp#oobr&Gt)1NKR#DP@;)%a zjo*i8SX3g`rlV|;+^I4Qi6FzJvS<#A+kR-_Mtc}39tvf!MO?O$PVoLwsk72=?Ui~A z?`xH~>XVj7x0`!0+x2;9-Qm8Z00^ejjqP;k(36R?I7M+T+$m!ou@-C9`(slil=@;T zS*31_%<%0H;9O|2I$+GUddA}(Y3YvsT7#a`GSeevJG1&)WkuR|^2DpbDC>-$Yjg=I zHX)*S%oz5uu>N_PrlNFCt|>GL)}wD&9^N|cjyFY~sxkVp=PM}`O$in&a5BZ8Kvf>X zp9<k)BWOxp)Q!rOm$R>w3;(qg<}<4L@S#HynlW70RbLPR7H@Eoh4-EeM{EBGZa=`u z1)`#v{2*4wl!D$hu^HS)E{fgCeWjE%;+4OMIum@Icg{6$B>HFyp;)%|qo%V6Q9CB# zZ(w5KqzzzZ82#czF+}WirwsRn{_pKC(md3mNHx5goC8^sQ7G|}@XVfu+0lTB&#WR7 zp?m;{C*PFS)Z)0p7$#jFxK%oC5EHR<6|iUEvPidvVIF@_)UE$%NtzBjW>8~Z(X)A& zq}SAf)6q}5415YF$d<mUe$1<ovFG}^kwXU~(Du|b>T6K+6Kj5uwAxdU+EB<;jz{-N zfr@8%G6~APe@pZYWiuvqQ`vD|tQPXOhVbVx@rkdW?!QQEq1Z6VUIx<A3GOlr%AQ7v z{f0WEsX2j(_q^A5VM*NTD}<*u8M*)99BgXfGe<zrQyw4T@cZ8yVrIabzU>XiMnd>c zpwNG<8t`~;*+&3P%eN+Y;Vm6#@A8V4`~O955<vB`*ae??DGW4j>#38rZ@d&Il(0MR z7E`4Hc}>^b077r=6Z?gt7JMLjI+i!(whD>~hB0ALa#Ck*%&NX*p<?Wzh0qjVD_oHw zDHenQDN-|o+gh8LDT;Omf;zFu#?35KFLI&kVu)UhNWh1MKNf%&z&bx+6Z!CguQ4-V z-a_D-CEZb$)({9F^_Q9OPYT4wC`q44w`N$ZQscQcNkqY=`#?+p8s)=YXdWZ;oM;gh z&*G(`#|onCBhBY&XB8Q%S3Gp1f@iiM9gX<xZl^>R%ZV(5_%mk-3-Mq%O(ed#^rR}X zO1EoWg&#Th-6f-fwFzg3+(!@p=(160VXT}O^n)h%clfACgfVy#ULHc50_%vPBQ1P- z9`_m-9kH2gHMMBsR75YH3qI4c*ucK=cYmRrW{XLpL+-ReVL5TC*K#=$SVQtJ3f?BV zB<Dr1S*gTkw43Xu%uKi{AKt)CtdA6?cxr`OWst+~WszebtKCMGla0dY)saQSW@2wC z9kWPEV5L@|botP)wPtloRfi~<(D_-LvnE*%1G10IHtVQdpolklqm5d0)kpv|2{IUn z)>M>^30krZ)QeLW$4&>YU|)uJ<j^}v;63<MuyC6tM>J`{DmRLyn9yS+k5e!%SG56{ z#3v+5haXUrS|GD=Dk?||nKR7jgUv{k!{3z}iH+yK+Vc&>I3yt`(ie^plt~emGJA5V z#P=k#L9LEEMt?Fuk|L^t;*`B`#(EPG#&|kEuu~-8DmLVj8h}ru*1n*4p-jsx&<-wi zN}y*qMePgNlqTgH>?2UB39v3PM73lJ?f&A&a+~zC+BtszRcI}N!-}eaLW565GnP&! zC@n@CgS@rP1eZp47l+XB%{P_E82g!{7c-&w5ApX0eB0?P`AMHLdP+z4X6XEj#_m*N zv(Fnb^Ek>s1Z=0&sQ3ew<)O<^?0dv)-|70cB!gc$Z+{qfs}PYf@N}XZ{gl+yH-S!| zBCY*pKSe7Y)-1?Tp=7zK{F<%KLZYaIS38hSObGe-;UXR+&10VS^rqeT{JwFD=XGeu z^4=qpF%8$exW)GhZ3Fg#jNLPGj5S|@po3>$I_`3sdl9wI&iqMEvbc~3xsx3`X7wI_ z<rh%RTP4v*H-Jx*!o9noo=*lv#Q@Sgp_z6DOJ;E~8u4t&=r6K4={U!H8h(OHU0Yb! zuo@Cq*)C3~p=C=CBtV#-mgdr-{(#DCRpwIRa)?DrIU_bH{|Iy+7xGK_=CQ{%sSi4t z^yQCYcEc9Qv#Q@Dz5f(3+ezrI#ZV*1Bpr#1TQLa~7|#KIq^K)u;U<k<F_QTq*!_zH zR+~=N;gzPg-~mwH%=n4^F{blU>m4<U@<PP+(1#3cKGKas*^WNLR{hfuzhxB2PX+4% z+34i9AR&0!`^#P<fw1_5r``pcTt%0}m~+&Xq207;-a46T(b^0;3Nj@T46ONUeIk{6 zRzjBwA2Ar~PV*13p(9-7Q21Rj)${qu&s6LNx;oZJ3UpJ|n`n_5x+^1XQ=%#%s?KK| zDACKY;a>;Fq;fcN)7Ug(Hmy1|G5jf8X}>fmMCwOyq@$42u$C32NeRS@-L59I#1$Lk z4H3CqT4{BC9s8EKLsx5_R#98r2&Rf(B-Jegr33S20wv-SjTLQY$vgCZ4r$b7aKv)( zeWAI;zH!8+9PB$WUZU|^uvOBT2{;p|vpke`m)4#e;D~<38W~5Hz^pTmG)<DV4^Ak$ zl>CnTUbf0X7*jlX5Q&$<x;EFdh?uGoEc_3Sh12wO(vsF)*jKA!D}nQhYU&gM8lUhg zE|KT?0o3zkzooAM{G?REe~_{Hj&^ueYo@4$zbxRv$6R;7x8i6dj3yfHU^-DTFpd_v zs{=_(;Y^qJ{$`w<FO~a4agdc+fYN4^+6?D{Uz~$4WX9CIn;J;D9Wj3L?o-Z`{e^1( zfMbArc<em2F=j<0m?71pm|~)8Lt#T^NFMk46F4~rbzQdEQdoY5H=>>#ub3Ta6fv@G ztt@6(^fq8U8F#vCtc~Z0h13gSz~D=!T>1(5UiFD-v}Y8kjlvHY*9#nqTfC<I#BIKc z=XkR)kwX+?XhTAPHVAV)<m>U9#8R}D;PG?;S67Ux+k=H&u3E~TNH@q-J108UnG@0d zG+7#?`jUtq==73-*FcG`3<~>+XLdeGz&Nr6MBtKED=v^*4bN*B(oSd#6Ro!R0&U`u z%83b&p}!S16`**_8oAbab1*xG)k48%poQdb#3neAU$IX7AiPY~3qa&EFm7|Vd2`yr zUx>y&M7&g#_*SAk?u-_@<Est=aUfnz7K9NJ$7CrQL$r+||H~9P<m^>G{Og*H1CPT` z8)0N3Bs&W~@T9jfWwDA#i^K)Z{fyA#*!`TBsIPLm_(4T8uzJq+jt@|yCo?Tv6}CuY ziu?EA*NsjeUP+(A0z=pyh549EDBn+D{j=5I*gbTljQQPPSeC6cQSyDURol@OW?Dma zrBqC5dyXEobeYzy>?I%|ZCXU;DN*$_Y1$5#bS5>R^jQuMy`C(KBZurq=9+}e93?TR zytp5f6m^}bfO8qGve=g2+VZRI=9I^mW`aq|S@h$Z`+MAr@~59I2cPi=l=FP*W<<CB z8?o55!UKYHbZ<QTQo>a=#j7$a>{Y(MStkVLHPPK1+41qHOQsCRpcaszuh2fkTQ0UK zljshw*YPfHVu;ktpj0?HCoE=<G9pO;<sv2k*mvX@I{cydZNQg|nv9L{zCUBaJ_2}= zla@~pcb^f`8<==>yJ6*NyzB$A&ZB}S*uMWdO8+}7`yeZUI24qiwNz<UejXsJAz7U{ z5ua!s1VcL+`$De}{ySNKvqI7R1BrNaaS|DxSZpPF0*h5K0cA?G!Fq!{SCe_92^!jB z<M>E5BxPz^ZciLpQ9tPSdo10cbu`_l9;cFP5N$iJSwcaf6w5;-rY)qtXJCn4PGT@! zD?NNu?c3Gr3yA@1=R)*IRkGg1o7iE-%aB?`cBJLZ)R<wnSo)YkBCc_X>lEdwis2h# z<a!9&U&%&^sM!Y+@MY)?NK75=N><C3dX2g_m98v?^$O>ZZ5?QC0ht8T+h-c;cf2ET z2-fICaK-g{zt{`qS%Ql1F3XAX|HdpAFJo*Krr|@nU<DWamLfe8dD*oo8V`t0bd3ho z^Zt<L$cez$Jb|PjrB^$O5fsS%f@dpMPS<30A7aLjb0s2>eEwqv?~@bG>Zl)4ErTp4 z&l;b9k3Z>?>tKXY9Z&NZw^x|VXW#XOMWAf??{nTT!A>oY1W3jV|4+Y)zCYq9dfHDl zZ5K!&|8HwlZY==@7YswOFR_1c7b!Q}5m(sFkr)?D(nGN&Ns}mqUF7!%Gp(5w-X-?3 zITnAM7JIEXzDsV@N@2&@nV}`QF95<^?mqv6yLK&SrQqq`Uc~?7#XHWl*(z~~DdFuU zaYKvcn$Z4?zI2tCyws1TfOb-m$3p4em7VZ=AcVbgPb_rm3rb1)uCDPUl=C*MgF$2P z=2Cx4EbxBtwZfnu9lr%5!ALM8Qnh%g#THfBN^zR-_)Q!X<yGu$X7`t$ShiBy7l?n_ zM|)tqX_VRK9p{`*6@BW;%`_Y-Pj-RGoAKS|CAKV3`=Y9iRTJJ}<-J0<yK&$9eTPZ9 z7cye-s(@LY#a~3MZ|i2}hv4GM7HZQm^aYb<LIZ09KO(WDP+6+>bTKD1hrJQGe{jQ{ z)wiYPDu4+F9IUwLlO3g85oVxVlJlx2$*Avz@V-wE=LcRL#Y>nM@4bW5@+X*$Hw38t z5mEXEK6yO7>qBt@5yR!=Yg$X~K&GKQqrQh0`id3C`EDn7t<a>5e4g0A!yJ40&&ce$ zQ`lQ$IC#rNx8fRG1=+T@LaiL58yLHvrA8G9;lxmC@Z;|<V#<I)S6X%s8tt%3Wq#OZ zf2Kfhkl@5>qhq`CH=it;_t|A<;*D-vv`e}gSP49_i*nLSnvD)vXa*HShbjW=2}(oU zRr>&L-oB2wPN3$B*}{?CjLzrM4!Q3#;8>V89bM+9Im3j>=b<AE{j50!Iv3UKs>XYz zn_X+gI|@2gPrC6~grh@Ic?~^d&Y!!k|KRYrzscxN=oJtw$U9s0#W|GW)3XGAvpVS` zKDm51KbUd;*ZemkTfKjm5s>RCyKoB$pOTNI8{H4S;qOzTDOn^FwqVL2UvFqo@kUvL zjC{an0TcbfG{qga{k*g(E3=X*1h-ZrSxxQY-seS%6}zTLZqNdablA~t#fadF4f`!A zNS;)=XAh_HvU?Asvb`|;PU6zi+bM9c`Vs&0l9vAkGl6nLlV>}Iue^+qMi$fX5n#A^ zK&4R~?@X@U<Io(`(g;`8<)L$?Js2FnI?QPCOHNyc&S*_D;*)~xULa@vowc=P3>36~ zB3_i+zII&x3@gsfBXcsYRxn>HtZfUk79E^@_aw2`-z=)&sIs%V&b4zNR*>8O>FmuB zCNVYoQf22F48l9vHMu9)pOs%{G@Fyk$TrjFssR@o<ap-oq;utcNi6H(D}h0}r8yLz zzQ{KzB%$4AsFbNjUnr!5Krzy^<)&n$QQO$y_{_9uWitqSFam;#`j7eGv|G}O*7;%6 zGC671c$8GlqayZX<C=Glb{ikgUJw3K{1W`TYrQAIam#b}Frhq~vaG*5`s?s7=_eX+ zXPEyTxobI{+|<%!s{mg@c`({X)(WxPqGMcJ9p{a72Ac~VL;7=nJi!>>pjU|UA9^fh zvRB&mYKpKC*UT|!Oe$J#4oW}ciWhsfGZPQzhYyu<>3~5U?z`payA#W_+NIhNF@!9& zrTP=B1p^$XGPd4uGPU`E!c&!)NLS|FkJAL{LFOPrs1ofCG`d1H*LHVqpqa!nDm9|x zq7&~{dh1@NuoZ>JQDC*#ga76k^MPVj#mKC#;HfiY+`pN%o;1!;F!92ZZ(#UZ^@A6E zea|<97PD<57NvVbaKIX}$L^d6goxzbHKf!szl`3_^V=G9_+sRdiK~95LD6@giOQ3y zfS|k8G~lN~x}%5Y1530E1z894msS4nLGRJFrSgYXGka0qsIZCO5&Y7Am=w%E>r2J0 zY}C=&%sF7=x@KzILsr_(=nN0n;=el+uZ6cGJQ{;0gC@mj!ipBWgW2M%7?`Ydil3XG zhXRz3xBdb)1h!EV?9DX#M)-F5H4*N;f=wP4^f-A`O;2QwT}ut`sC<34)()eUvsy_a zvG+2R{=tz9Y*jb16Q;INgbYa%=kEQUxadi*RSP`ySktkTeaSw%@Gilp87Q&75LEVc zSn+4kzOXI@TTJu2$_xA@?Patd==f}ntrHwAYSlY)F0IP~ltbsC9;Utr8T@YcURr0{ zQ`fYa$ucQ1-DGDffNq4qbguNQuCUau%<u_}6<7LM{P_lL!m2tgEYTamu}83`CkB4e z);S@nrfdY|vu*Q!ghlaqV4sSEJRJKIBi1>kWM$3#0>3bk-#CLOFZ;o90$9K7wp_>6 z#Pw0eZ}n0g6~er67x)ni2iKS<JC)9Evqr8%UwfkR(8UDHK~;7{EcvrkbzCcQsY;;2 zwUx)}{)VCv(au2oyTL(q#;k!8mC_~tN5WYK&~CO1+p6F*#;k0fY;=MOl9(S-ko@+3 z=pd#l*)y8nq5myWzow9GMm(<*CpGEv9HZuV6qv-x;7rhqEb!#rIsO?#^XPL7?bijJ zod)Ei1zZhxGUp8N1#e(-iU9qbiX2bRMEP=icY1bclh9ss$4d3d;E-4!OI~}<ZE4q# zmYPA>8)ov~Jmdcw2muLea06De^7%+_1HPbS!|k~h=XLgQy3%9c2ke&`H#==fTE|Xf zqzrXYmnGclbEMU(zuoDCm7>fhAM<he)Dwb)%4@s2TrbNGFN~+50p-rVpu-n;t^Oh9 zjT{JHf}qF;Qr~-85N0j~=!VyCKi>DOys`HD<D5ioF?#XWI(&V32x~feX2Nr2>E2(~ ztt)4{R_$|Uz+FH}bC7$ceQfYCCBi$$-T}5B(4Qq<b%{M8zK8(n0?Z4=FQbe6uZENl zDr(GDtDc6ys>uDro-Xn8%oQ}@vh};1jO^%QFQcL}C6KgdLw+9ZJ_iL}UhSYm+1^B; zZCmdg;MIwlT$&wDbAX1~>qhf(BwNRuubaUt#J4^qqt1E;slT0GR&791dra<W`xfrd zY7c(JP^H3HM+VCh)3=+p{;RAr<7L-YhzQ@0QYFIgi$`tUTZ(fj2*@DiD3o-7?4m=m z*a?Q4L}TU4MpAM56z=LHX}lI9JDLjKH*H=w^T4fP*;*73*|NdM8#eAhI#(f=inWCf zY8ovh$;yd%JlsO)gw8!$xJ-UX6edw#ElaA}st}g;{V40Pn7G0?qZ%$HNU|j+-TiQ3 zx@3b0!wyoX*GX!;2G-{;QkeSgMe&BCG2#6OM|(T)$p15pzF9``0B=B=rX?*nJ)-yx zM&oW?_%Dq19}OsAn=rOnQ!FhT%R$M`vM-ouPe?#uSH*2Vt}6zw)L+$CM;b3FQho?S zVtKHHTELb)=BlJ(YS;)kP{5)FmX!hyq4{%SX#PeY<okxES3{tVjV*?JL{1ZvI-vB8 zil<G7-ydZ1?tpyA_6o+E*%diLNgUgfEE9%!GO)FFE*{&oVUSe|ZJ2*9sb>E9JHnjZ z3ydp_4P%v$79tGV-5C_pBih?L&YcsgD!CPk-lBLUX(eK+yJUo{2zx;84!vvLvTwCG z157e?0^iY`F+yL^3Ghqs>K3!#Wps<jwjzSvZG^3F0J;g{o?OuaJ%ICf^DS#?(}((p zYRTat&87)xA5fa*T5tz4)_cq+_S+~fF&O4MDmJW7oSQ%3l5#qJa4|HucG*_aPZ&?{ zc#}3MM||{2{w@cN4pA)123^xl{s9WBcL_HYYeYJzIM8I$3L+`&e6&!NXjxy1SLW$G zJyCJQF4UQ?ppq^3Xvr|<x#<vZW$7*1Pjnh<gaxWt;mD84FR`UnV;C@NHjAO7(RDX3 zLZZt|4cyJrSvx?G=Ztzyr!;fB`D%5Wu`h3mYvaO~!Tv}}Q5?)<D{SdOVI(1Z!J>5O z*F=@E4(WtzEjA2x6-V8KJjHF+0tJO#U_Cq0yjje9!15HH0{7JzjVGJ8NSj${N<?1% z{@!?TI?DnHva$X`3CaulX4;udvtu#H*y@JdMm?e-T52(wgk9~N!p3gu8NJmdlBeLa zpfT7H<NZ*&tXT3M%~ry$QJbM@;)`L0ic@=0YD`+5Zkc0WzCRwa9wvWEwLH@&w5<7! z1x~;szA1%)^H+?HNc^nK6-e@Y$&iW)Y(e_tSx+EWLdaY*wL;=W$XwGi#$c9fF^1Bn zARn>!I`yNKJ5Y1nIwej$JV(cAR4&z=aIdswcSFFPEf54af%PWhe(+Q5oFs3O*J^OT zH%&PsapeC82MDsr87O=YVQMnZ2(r4y2Ql6T&PkmJU}KxmNzFw&P9lFn);tjqo@K!2 zcP8g|h>JjHSxr+9O}p2>WZr#(Jdm9DwwTM7$o;U&F$aTuv`1uIKE9mPOu1LTqz*r0 z)T^9599U70^bF#REXlg0a?6k1DWd`ZCaX6nG7VZcvPJ^R>07b^rtim9FB4Rsj@nA1 zK=($ypwq4kk2T%tVJ2nkLSG<%bow$IttLiLC<<{pnMBLu*8RPz{N;m{OzC9Ji=N;T zzK%Fk)h#7RKo4><i%t8tS!uS#Mlq3yh-8eg+~pI7bOsZ1(fECI0oPle@~t_mse|uZ z=UC757n^CmnUENdjkUehHZ0CT`g@$pI>Bx1hot>t=E}jm_mc@8T8bbbHW549uotGH zbTA7N5GjwI@-fg~jNPXruFd;o+4(skoun>-N=4D9Xvo;m|DiL~2*g6h$)dE@s~*Eb zV`bpr0i+%qqy4fo`2Hk0>>Imz48nXuu6vNGLscUaX($9ZZI?^0#^FY~*7M<Vg`%H$ zk$KquZAwB=-F+kCn6m%|3zUC$%jut7D<7gfosB{={uaC>){np5OPuvL4=jm=<+$HH z#~)^@9A}(lqBWq-1q)Q3G4AIoJBF5w%Qm^^uco8_9bqI9@>h(W7MP7E0KjCs;sa@u z(W&zN=!}w-rF|TB5yWu~tfOfVWfp<+AyOv0_w+g|Yhsq%e-aXf$gjhYDd-Cu8Hl@S zN0alY@z?Ml7<@e(;*|LYVlQK8=w(RfKQH2IrRyXNGEN8-<+|Ypf)rJklD)OQ%F%!n zS1rfli#Y~|DRkUe!`{j-Bi?`5i?`Yf|E9(NFO2~YhX(}wr~HCx-*}8S8l(8~zt#6Y za!|mkOAGdI1j;LF=Az(RyUl)CmFO4HM1g@+h6|a?DlevKhM}7tOay^=?6)9yYyegT zmux{u7^*__9b{>fyUR3x5XI0=u1p|jZ^MR^ugcra%`MPTY&?^#6J=!3%f_eE_iL|u z>c^tC<ID9SU+ZrsX&(*IEG?#*Iytr@>2i4S=22loz&Yt@PS>2DP<5%A0Pn$o2#7RG zAEF{BOul*L(HwJ6TqdyGD}D(d^ff#t-#F7mjjlz|PvDlakP6Wco%cS;nA*~;+iT%h z5`kBc0**mI*Nfs05@9bdufM84`qEp-y^vn@Lw+11cZU9{EUsnm&Y~lYb_G7sikXZ0 zwQnT~qEk=16P$j$vid;Y>y3)ig8-aUpe`ro;3Pu@{lJQx;p!n4iTI@QWkXazSl~?C zB3@YtVV0xdE8jKR!J?JCAO_M~AjEgIw_kUcx}fhtA5G;`LzvFPq!(K=xN^I~U2fD) zo;06L{#0dXY>S-YM)5@(e~SBuuW@+9sqSwt>zF*@LXg%dr(q+UUpcQ`XrWt(i6Mf^ zdj!j-&2C>*3v|A{;Kt~v(eYYEq=gDUCmHku+8ugS`3#&jhmpA0X0WyY=vKu5RR<Cf z!^djCw&Q#%KV=O%G?WJY-{IikNbmB7olR%xyT}AvUQMH;osiKM<iPQ6!5-0ds2^_4 zNrOsw@NmeCki2R$@3BJvSa84I5B%!Q-0K8h_lu&8cU>v^8K1kiKMwQ=uv2Zs!f+Nd zUB27yP?2a)qj1}VY;5*MlVE4nsZ4ymX4(gGxA6UN!W?*WdjRbm&c@z3zpve6xU$Jf zY_Yg?ZK^j;{A>bcm-NfD(-)`=aP8J6p-<hPo(vL!11Q>ehYB7@2)xMm%FevUasAUm z;{>DDlSx(SVc+cJ_#{79u(D#7*~S?r)1mGbJ=f=Tp4x41NsX@E>t^l=^!A4{ZZ6&3 zLf<wy`}?vt8)6^*MC!I_6a2xyuWYX@RqI9h&av&Tgy@3*cxcv`N37_6_z!r><Tl*I zSe$sx(=2y={pr-&|4;xID^y>?0ZZnD{xVbq5)m@~*aG>Oyz`?iz0q3dVDDor-4C-c za;3O0*%H-NHGluX<$t0pT>b~A@%7;59~}G8kox%QQHyXeSHVq&yJkwZ-aF&LIM3E# zqd(4DjlO+5Ss8%l`C2pB!1@V~rEP}x9pclpm>254VbSkl!_wVuO7rWrpa~MGKVMDM z7b;Wd8n?;lQ>zQfw#LGLlor(6mxWUAGLo6ocv(JJcG`ELkxkKb;lgMY(rB7r8?5iV zJ`9C$mERU#h5xp+lAhicO(`hO_t`T33vL;j?)y~gn$UwA);hOg{`l62)4$dUQ*Cj- z4Cl25&Cx7Z6I{<-A%$=MgR_<Wk;=OxG;{E<YG~mv7Di#c@o0XrDHF!^yMr1v#e8?w zy(MU;GJcQb)1qxQv7uc7dFQRYiAx~DG<$2q-G*&GSLEE}Cf6(Ro57^kS98~dvMYrQ znmG)9d4R^qljfh5Y(i3bj)X6tp2q`l=FmyX>J(oLOuScCUw|D3Qg&;$1-=`u*|*3| ziu48zzdxmpw#g@>8--2EjCPW)9psbz5|N6<WqRct`EKH~KbKF9IwQ$7IeZl!lK9t9 zG%e{0UtyB=kB9NRz?);mdqP6_n=1p<^rZX!M|^}~?>}%vG!i97(EDGnCv57&$|7{V zl>gxVJSRPNzrT4OH23-s?%Bvp(0M0ytmkQ;OlIQ+_le!xxFPj-E5YAnWh&Kz&E2-i z<KyEMGy5Z`_t#j}?23)=uBYN;A(OqlpGfxh$kH46*u_jT6xu!gOee>TSj^c@VvY=C zNa35O(T`@n#OGsuk`*iZo-^*Co&AUw8e7{bh-ou!`m1A(_|8z4jZ+=dZKZE)%(LUW zYCfg0iqdZuXp@o4Ws<1S^#<L-x3(^q=3{YtHDe)xMVH-UWdHwg*^Gd<l$QVX;Qvo$ zzg+_Vy#wC#oPg%Rh0DGFmvFva0zEv$*&4=v%vjS)G9+T!`*7`8ySZ9je>i3bx%UNr zVv%r`DQhf|e1a93wo_y_$XgshSQP{$(Rqa+u4X_=w_~_wZ1TU69XI$b`9s>Gano2e zb0os7xF00DENwr+^Wi6cGcH6{;fgpVGseh-50NHj2VPENnv~ObcPNTvTGTW}w7PJ7 z$bo8lpeyHS1kjc8AQ)$|F&@mHBI-S6X+mAKVk&AZE)d>fwBl#sSn*0C+X&|uNLuqG zeZyPmyu~er3Fw)tjIO36W`1K`Bs5au{fP!27p|)G8w`-a4Yh0~re_${ruG*>>*g3o z=z)^ZSG!dVeRYqIIVK^BZ#YVh8aXBKEvz8qHpVh7Di@8Uf49{)eHgy5FJ4BJB)Cad za7Rh|-2)FRV;+Qj!w*&|(L3<k_mn9fl9#^PtV!e}8PR9esn)7U$mH_DE}x=5g=bEP z#zE02D^Mv~^3~eC?VMqKz(_dLJq_aB(gk~P;MKF(?Ycg$rxNLZP8q?~RH(Y^??NE2 z>VYLtr~z9=m)x#Yht6U9a_;0%E|uUrWgWbspMrhz3kn{@@iXY8%&=HkBz>2(Lffdj zhC1~T8|4sx$PnH)sw&cYC5*b!^v&Va5kBjY^a&@TJu~1f-J5qUT36mMsD6aw>k-g; zW*vJ_8saM1qIF%g4YN_%;l0*5nPEu~S6Tr`7vUX~SWQIJ>nr6H#quL+<V$#FfJf?v zN;QT@;K-96VNMO!MqT+8#fBLNZ;fdt#|D(E>P|G1+|~kSN9_l9lVg&(wAo3k`xyi> z2U=L0r&np9KI~Hg?ztlv*3k?J>X5VrFXRk`+wtf;o9Z~br>E58nh;O*V**KAV-eZ~ zu;ZOb!%YWL6u3_eC7TAS&9%mIGAm5w!85}O1c0iMRb!a)W>>brg?2VgoF;ZaHe4QN zPvrU)lJ2p|WCpV)9*qaZ0HG3&P$p6&%#5z*t5az<%tiL%h7-xb>?qQ1oeZKvL!k5u zgy6;}o9ie@{Z(!_HC#6@G5D-9@csu?#4@f%W%?;0iY8m4oaCViiwlync@$4nC`GE- zh{YCfeD(~f<cuRI#dP=sEBF(j{6-W%b90ilcb2LhJBxDT58G2xvp@<R5x35<b`n+< zi3&02k?QI=)`c!n+QEPVHB0A6^WJaUuLhLTO&!f7emHF1M{Ch$6~R+~FkizR5;D7I z0{73!M+hBjE6Qs+BP|+8L4U9o;)Gi$ZrJVln5|*XmI!X5^v1dS$l2UgTXLhc7&TD- zLnvY#1m>Je`53-l+oebv4kJ&+?2^^1qA;{{<5MdxYwHrz1!RRLd&Ea-m!4|F$<UA{ z@m3gmmFf%RMF2lTA`NHUVH}1<J5`80hKi3#vjKq2%!<|Q@EbCCXsOj79=<AT{TV>q z<|&plZ$2NQ3&W_B6tnZpl=%t9Y6Q3fp^gC(8I!me3mV$hacxmD*~fR>2hNeOu?-|{ zqD-|@8=!J0(CK&g4<6%%<#Mk`@NR!urFd$(7K}(CuIu*Q8`A9#ZdL?*?wuy7;ZEX& zRvM~m5!yax#(7}1x;WzC&9mRZsfWY5lk~RR|7b33R;_9k{b4Sb0Y+juk+60OaG1&v zTCpRH1X-bx%~<q6Sjh*S<|zkql`)+V%R{6L!v@*c!;s|72k}w3@UKnR2-aed^c5ir zN<VTuPs;qE-BEG{Iy6e%l*UxjQqEn=$`g=Z^(KL@-d{0_M=y#|%s=8R@sn5Gd6Qtf zM261upxAAKCe*p%;Jy%&KW}5-l0a*GHW`t(q?NAK@yFr-gI(~#I;?uTU9<7ZUyB(j zl1y8Qa;lB<<szp~b<vaQSdJYSm1dEj$F+)f99)hq%vsm6ko}d7MJ}@>2D7;P$xN$y z>WH3&R*0YJ=EE{TP@Ec0M&ej{-~3_P6Vei>4THbj0VR}Kk3R0Z7l+KTQIxa1E$sdA z`yD?tqF@uV@bXQ90?p{p>c_|z2=wkqFyUh=0ofuiniV4RnUL)fbp}`7YskKy87pPq z0oQ!10euNh1jZQ|^FDtY3ucC^=_9C(^D!HFR`zEPEGDdOWuQ`{fde9pend(W3Z`W0 z{3D<fvOo6a_aBtyo5Yh(Xs=dXy5C+8+KkSnV;|jUAc7(3Bj{n7PP@xHf*g*sjv6W( z;EBof5asqEn607yF{auR6nXT9P5PO4BcKhFrYnC$FZT!_A2Hh#A1Xzv8wFs)=@9IO z!tWm|v2E6}+KW&B(&0w&Lk=DuZH?B&aA62Y!P-rv<E|jC;pf7eQb0u2@aV}y8b}cA zHou3Us}PZu>5hJKZ7!dOhn0bbz!aTG^0t<66{tMg%EzKvH`q6!R{Yw{5I+_u68GOk zPDj%OQAD`?_wS@Xcji3(rmh%K{5fOqX|fR9Lq%g{D5p~}7XFHtkvg9`oP<ykRjCXP zPq5)h%!?QzRdz-&8O>gz;^8l2FL!7KQ0M-Ps2^PanF?8e<yCK)S!o$+^T+D)07R-> zGvVlT^^_D@%{p0P`4HNf{W-DmN(k6ySP=_t=fL~yoJLK_C{fXjNN|yJ+#!qR+Tle0 zpAz(C{j*R%?4y}?=&@NQzWE%4DN>zV-a~an89gmHWN3U3d!>rndF&BH!l9nZqFuhS z-S2;}zqd0dyrFUUwkTLxCTIF0e$1w+Nuk?G#)cI);;>){)%X3$2qL#nqFFa_AnmqP z%rVGBBTO6J45k}VIhXvCu)*q1uf=-@c&C|wf^7h!q&+1ws`W^knjjr$_FRZQR{w*K zrHRW$oQzlAXsN!`S$c}Hpn*=`QmkBx#3$8d6{DfvnAue`;u0rDoV-tqItXV%%{{6k zS$pvn)b7?m3kVsf$1%2GgiiImz<qZX8^&NB7>e_vK93<Bi*qG_G_nNh-H^aTDBzmO zDe3^wBsY?l{VGA$&2={5J1A*Md3CVZ6!8&0O_!W2<zYC$dR`zzNu)s6%KA`qro;0$ zVVneF3TtnZo#Tb~C-4V{$)e#(5slcVx6pxLUIRzU@ue;&s^hGwp;-^*_%k1Y<W`qv z28g6Fj>&dKB1!zmD&Z=jj-w^DBi~&G5rVE$f$+F)=B54JvWWtgQ>wxEsw`%BbP1kP z6>S<l;Y(^eZY1!dtg$_YX>N-=0h{d4awm?CN{uwni&71lQ(YF!Y%BygN~w{lZ0h5A zwzysLT~1RZ=?PsH!H-Mq1EGA1A+*TbWT;|#G%cxrglnJun3uxFdC334p?3B1-=@3= zW|C13vR4sKfmy|Mf@v=YRyP?3U=!JYZp-!k9c=3~o_LZF9?_n7d`G4GxfN-Tz*rk! zkE9klP=<Rq?KGdNG-Ea>M!H!i!liS(g;SVoMocq&H2uRTqHBenv^aA<C-~X_W}Xdq zvjaHccm2UnV#gw=_Wt}gM?JLE&AKSFNUAMgrMO>%B8+H1ARt=W0e<IiQt5Lj<55W1 z3@(Pz__LDM_?tNj@X=@bjrlw_f7~}i{0CP^x10D6F4LXjADl=mdC$wK!IS#4GA+q^ z06YKS><Rfkz#5cASxuJdQ`8VVcUa~|&T^hS^8@VxG#Nv*JkpunEjx8?WWmfrj`EOr zr>@mKRpn7(VXF}!g<B^yNyZNr@Cl4R67>Nvcwd1xRcEucer07}pqX%dkJkcL1qk%= ze(mR;`IOUxS{>(ggR#6*MOs3oEJ#&Kt?h&GI}ZNXbCdPW6*$Csi0Z?~$wh=!H@i*e zvh@X^Yh;`x{?!V8Y|o7jOo#`^M*fiU>%O>Zz-wU>UdVexpQ}Mh&Ruw1EdWyCxVhw8 z?mQC8GH=iStDO*`P+mxYCP$Gl6P_TY$e%X;ex<Y8_9AW@_{)R8;nX)EYoJ<@dY<H* z(;JPRt*iA(MyL}EFL*y|(Q<>xvJi`*5M*Ue`Q13ii#6q&f-s7f^9AanNi1xn2`xZ* zO5;yN=ur~?T&BX&T2gPdmk@h)xolIpRl_oj(^^Y)9~TJI1~l<vNu?Ge%=QgC-)r5! zmZ`ncLut)O;PeHPgb-)#o`Wry&-B=OPt)@&C!@2kNtop=t6jJ&CR&2OE8ci|N+}LW zE6QmZPMH}!s|6w52}W-{CY-RuqGiIptpgJuK)6<j#NPLgQ}h|z123^6cq<`Nc<W2= znlTXb4#f{cCZ9_g2uA3dABQ!bJOo|oL&+XuC^1`cz2Dscz{0rRD3uXN(LPdJS>%{( z6C?weSDfEH2!;B7w<bG8UvhMk*CyS2d1NhV)K-xH<P8Cfj>t!7@XIy<Dk4+6GjCd% zMh7E|Gam0KEuaLaAR;eNhSeq$RE=03B?l)(@$DPRQnaUB4fxoXi3#f+twfUT8jq_; zwv*1<z95e&K+f(C%}8Vhm0iIz#UdzT2IDK`099NsOadE?rQ-|$r{@pSe^`urmNgBF zL9$U<8N-oMksFY%#3j7U(gBQWTG|(NJtQ;?`8qIT!^8&EjCd}AEQrW==7_{mQ)5<; zS|jpUk;!#_0WKb5ozF@h$UQ&CVRQuR5Bj$+N7r5S_Sgu8(^rUFQ`#=XsXj0+;M=N$ z((W~g+xyh2RW_#1wa(2-OT9?ROFDVZ9F4Xp(_`Q`e#|kGB3&bof#uI6cY`yJxYBHW z!Oi5B#k3Ra4w0{Jxb^FC{sb_xW~4J%{%|CK`HQs`S5-}nbh}HRAZdVvmz-xNXGz6& zr2Xi#vbjJ_tPzG7_wQS)`Y*8BPn(_p;4~L>mX=AL7@#$G{Lm)}2aQ<eKMFS<@DayH ztOqD(YyLj_CHxo^*Zuk|z!4)_R@cVyoFG20UBu2On68eZ>VkaxsmQJ~iA(qJ9ih_F z)xm*gJ-_{(0pTMQNuDSGlpxudG`GHsTsz1@avg^~G!Zh=kt6G_>FD+j#cVI$Ci7_i z>k`R1VSUnXjaIhEX87uJTNP5DDjEs7#0#DV%2s)GN2~9TYU-=7@k>QaZZJU^Wh8}t z5aV8s{-<w!^<&NHaLW&tZ)Jw&($<r_RUmbh+h&bd%Eyj-9M=`;5Y^tNiv29@tAo#` zOz?sa`p3uUnapci@@)EIC&<904Zcz)RK@!n8*wqIpV=?bDvppe)IV%9Y&cY5+a!V1 z+!Q?rn}k2!mOiSou%CA8W&XI~ZXz^C7-g^Q>Tz#w5zIA@Gg>n0i>q=a$w{@b`2L3W zMjC$s(W!m41AJXGIMhnUykYrm>cnd-ga@SFut@7iT0-58zq(^ctX$%&)Kbru^dc`e zKur9g_{&3ZY=QG1TqJ1cDs%1oAaV*EW;|so?<3Ee4FN1z{j)|nvOr?9FlzuDQX<Mb zg*Bv*7>js^qZa_i-q)2_GWRKl^7j5}cf^Cq=jd^;TgSm+w)#sRrnsQlq6jVrA?`P3 zdytr3mEU7tHlyU*?vw7SfHez&+!!L)#LqK6V7PGpf%PgK1P;2jr{>3ek=-}{$J>@Y zKDaG43k?%xZb(Sl{VK!Dq8FEG%HC&kJEENn5st!DQl2YJ{^#M>nbN0{<ItbC`OTzO z2A*SwU_N$u|13fw<H}>*8Qr`umYLs{#}Zv@!L2ZRmtOaMD|w5^*bxk3{6Qm;CE4Xk zCPf2OI8<j`t6Rq?406)zJ1$p6EwZa=XFZihXwk(ej{f3k#(6DL;__M{X>N{7_%5Mx zmBUnsDQ<JwwH!<h<)U$Kzhvf>E8}ETLuMQK1!2r5vurX%h1KZ2<hkOrsl3PBT{;e2 z%(m?FN2)RP=4QB0B?cv@$mjT^2U1-`D(u!lS+Cln{4(WIns`|$M-(G;9`I574ALYd z{@+hP&a%b$-I2$J*5*adB^nEw_pPu|l!*tG8N807T5j4sZAUP~SzU8R3s5pfC#4mu zx?i|Ey<BWKSp+>givMfy>+jn8@3>WHSnoQUTU)HQt%f3#i*aPH^d#jdci)#6r2=2d zg4b;vG-a&KERQN_<qV?+2@{O9y+s~NgtqRt99~|VxW;SYpOyJQ;k2KZr{QZ(S$N@@ z@#6z1@qBTjRiz<LUB#aTiL}a>J}`UAB6(d=5Oc_q3bLOfyYudGc3W*p?ryTrE&)lR zb^D}}rqo^}kHYcm<%2>;-aS@(!j;bx_Y;xAnecaBY&{n!do|+uhNIDXkV3f}My&`A zX}Xm2(Q(nA2aQxobCtzas4XI&_V$^Vi7=g+AYePsoliM3KhL%ifBm%W(pzTc%j_O0 z#5}fODIwrzeFwu!(&2RLAdi*NMPJ<)$eN$ldJy9wzhS-Myq}?iNXVJ_h+s{(<VbEQ z)0*-|TUMKlf|dZBteqa%!)0V2xk=iB4JClc4)^P$JJ8zsG5FhJzw^y54A)9nCByGi zE`;&i%G`Ji(AD5R?|K_`c>n0kZ;y8kZjG@3^lG&le7iJDN*=h(&gsVbVC5(>>rdMl z&jG0crQ9qE!?)0RtmWQegw6sJmDIb4CQ*jcfH+x8*XiEscPSv5#4qT599^VVj&Jcs z#<_Y#?KHATwh?)@ltWDToU&M)XkO&In=}r!Pz?Ym@mO~(Ey4o|6&NP9Jw7VAA&far z7mRB&sSP4NZ@TlsOHws(K78dw2!|`eLMk`4gJ+KR>l&$gs(OWx_5kfn+LurO5o4T~ zwuo@=+lM74Xws5)c`8niI0`<0bA-Qa?6y$Fs^9GHXIoOpcLazo4QGv0i}bkJ%A;C# z4Wkd;pyuN6O>!b5{F+R-E>;e-1%Atl<BRB6^WH4(=@15uP4b;2qcPI3SXYsjn~wK3 z`!Vz3&1hqeuw7Vq1S^PwF*kLq76&jFs1{+#)L;G1ziImL=P%XX1G8-c5HH{TVfU(5 zwo%vgBr>6rei*1-z_|28nU8VYE~3B@3d#XZ=8xF^fT3ERoK~K#UD$@!wEcstd70|b zJISe0n<#PJXpaTLHJPM{jgoP?(zY4>PQSops6=)%Ds6VzLtCQC*J%Y~PBh^tT5jHQ zqUmdn#2JD~$i{iU(n1h42^U9>y66(JbT@l{XtH<ZBy{B~Ep<juC*&~G=~-?nZ3@)J z&39+P;y*)A@1r&zNaEfh6`;OApQRi8AnfMj*D3_;2z6v(1fc0c^3PJl`=ja}O*qkr z`ILoh1PNJ~3)Kxgo6QuFm-vm1`?KF?b=p6s<q%jO*mzipavz-S42$t#u>II%^Jn$B zzQJagecJ>PGfre|&Rb{4_}xs;$t3dZS<1^kiBmV4*W+N5cyRIJ;(q8mGMeD@1_yZ+ zRkwK*puJbgVdkR^V!{n8<xF+*oY-KZRE{03aku1!)<3u$gJZxc2N22_lYb@+uK`7g za&@9DVyV!fx#_~Z+amIE;|oZr1`R-C)!?hDeAvd8n0|a*9nyrdFJsB$6Ky9aDHCxv zvy!~L9&>byeLA?H>_50*UVHur=iebG;ONij4qJePn5uk6_b^&QHfZxi7qp9LM*Rdp zj>n!Az7W%u%L!`(leVjp5*lA<vn+1wu&|xd(z0OmvUXJmP&sYd$IhT31G<Ut=8(Sd zXK}`UdQQP-D?a<x#m4Sb^ZN#G4|N}CkTvmwNYSZLbd<A%R;^Ev@oTg0qX=#AU<=QZ zG_o6GbO+<)7ysm#?%-k=3NJ&uW8Cc69A;!c+Hh9@-V*bCEg{a>7jcGZ^Zr!uw?EYB zK2@!Qes8;Eu2(e&q`XsS@ZMDnBf<MFLlQ7t^}ELJI<)ty-$3b)Bf9xaLVGKiRxzKn zqLsw|!Hrq%l2^)Xnkm)rmXs#xRLKLTE_-=<rDc-gN;BC<$DKz@(X_wHxRYMIZ=;jM zaorXhVA8?hAAa7p=P{~Oi`pZ|ph_&%?wRY>vX+{<yWQW;8Jn9nE8MlNL>O_Q+_U_- zG$=23WgeFdN4Oxzd9mfI0CC>*tXp~ZPeD}h(C{<NVdGcQXNp&DoaFWKxKPHJzpxk$ zmLy)*X~mK~vhU&^{=+5shiDmysMj%q1zkdA4Fz)+(JE=H3SKHSpoJUYv};9#&YMgX z3`^g|_G{e8mXzdCsO?`?lQzE!B2H=f>9j`aUy+sImvxd=s~(PY5+WPTvl$)3H|S!X z+13M)dGL-%*<)Q$1QGfwNxor!2k@!fdD*oE`NNEgJUmM~*k(}FU19Ed8%E2+-!YI* z;^n4Z)vxtv5}_#fu9yr^BA>#Gcf;PpbE{?>bAV{+HaP))xW;!CC{=Lpjd_vvDP>{R zPDV(7O%BG9(cK6s$fUDkz?>9tLnc*(2Ol;aOZ~{DE;g^Ep2nhP2&+kKjqPwcF(o6D z`+O9}iEv<aIAglw$bVyUG$r*UiBbFxTo}AG<B+xq=U?gg3F0(q)(FLYusp^&UKgjv z-xeoAE+vuQfgOCh>guX<e~jSiN6i>ENpR~PbZ4x%Ad2%=EN)lOH&%P6MpmvSTCy&i zkqGbsGXKGO(c<qR)b7(P4%d~27RY@bT-E3&8>`3`%E#|NbJo9;n@3(^tg}y3aWo9E z+LKphB0S8MDHV!5%959V5pW}BFV`hR<!`jz++~*>EU!b@-1dil&ZRAP!^>mynem<I zkkZyz&$lm-n|K(--xv}gtC;A}^|QA0#I}5~(~_Lj3r}v8o2-&^G|{8W_ixQLv5T3d z9LnBxY}-vrq$H@ClSFJaCbRh2+pEyNVBzRr>_$#$C!EY$gT<nBb5>;;;~!;sa>Un9 zV8w~>^K<WGpdZ>i;)j;V-w_8P3S-rh-V9BxMDR#P9t>A<`lCa(Ge<-+tr8S-nqT0y z9A>SKdbnHetyr4r(vZzP_g97YGP8@HrHPYis*qiG2vlK%bzqaBm2)a(;{OYE0*d`B zfNs6Y8oxCjIG9;U6BGzc243QYEsv-!%MflIVT2So+PuapC^D-w0bej_71NOa0C61w zb6dXx^1p~?&OAT^9dRo5G?s%ohB_R8i1d-{kTVgBz){%1(FGd7K|8Qa@#5o{YCJOU zD_SKZAsUO8jiv9^*Ct5VL$w%I?^$Y~qGL^94HOlY?xK7W)($bq;C$3LOEC?~u_bd& zZH0nVCUaMWH_wd3NQA1bLxKkFzc2?+cztRQ0Bw8Bs!p~OE=9Ol;|^Gc!C@{%Issla zQmNg78sPx(l9b)YoJ0_dKq$hxi_&yb5z5>QJxfER!9uv^9#X0ixKI(h$xY`S#_2Fx znB8~roI)&;<wrijMu~a{-rfd_P{`)_#wE#{FMx+OvoAC^27nR^R{3mK7$`c5f=Dh4 zeH_)~>v3uO%Y~xgrT~;~*rZ-F6T8Lc679?8H5bD!3uZ%?bqI?EU%07m;Jfo_6EW&M zuu`e2Hx*DdC=IwLW;>1vjIKNa2?IwL9Ky3JIN1+arP?p}l*$Q$I^qDMaZ29qT@FiJ z*ad3Q`H0@dRHKmIAsJnxI9mOPb)^9i1Q&Mqo6JzAnzj~L&!}Pn3}96ccm2gp*#N3q z_yg2EN>x-701CReZ}Kf8l9d*YBhd#?mR7^pHxb$r&_}~MFYk;%o0hP5*sb81_@S*L zyZL_LnClIVt{Ww>NkMMFr$%KWtbsIA*Wy+R6F~wRQEKFfaG=}Bl~1gDVZyW!0iri{ z?jp5xhJbK}o7UoO%^(F^DcEPsy@@fBp_9&c;x~b{fm`t1+RFk$2VrGbH-2DSQA9Nb HDXIV2$;*b1 -- GitLab From 559e4369e251e4511c1f3a1aac77ee3694e723b8 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 29 Jul 2020 15:28:56 +0200 Subject: [PATCH 058/101] Fix jalhyd#248 - load predefined Espece criteria --- src/app/app.module.ts | 3 + ...alog-load-predefined-espece.component.html | 25 ++++++++ ...alog-load-predefined-espece.component.scss | 7 +++ ...dialog-load-predefined-espece.component.ts | 61 +++++++++++++++++++ .../calculator.component.html | 5 ++ .../calculator.component.scss | 4 ++ .../calculator.component.ts | 37 ++++++++++- .../formulaire/definition/form-fixedvar.ts | 2 +- src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 10 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html create mode 100644 src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss create mode 100644 src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 51dceda8d..b25a7887f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -102,6 +102,7 @@ import { DialogEditParamComputedComponent } from "./components/dialog-edit-param import { DialogEditParamValuesComponent } from "./components/dialog-edit-param-values/dialog-edit-param-values.component"; import { DialogGeneratePABComponent } from "./components/dialog-generate-pab/dialog-generate-pab.component"; import { DialogGeneratePARSimulationComponent } from "./components/dialog-generate-par-simulation/dialog-generate-par-simulation.component"; +import { DialogLoadPredefinedEspeceComponent } from "./components/dialog-load-predefined-espece/dialog-load-predefined-espece.component"; import { DialogLoadSessionComponent } from "./components/dialog-load-session/dialog-load-session.component"; import { DialogLogEntriesDetailsComponent } from "./components/dialog-log-entries-details/dialog-log-entries-details.component"; import { DialogSaveSessionComponent } from "./components/dialog-save-session/dialog-save-session.component"; @@ -192,6 +193,7 @@ const appRoutes: Routes = [ DialogEditParamValuesComponent, DialogGeneratePABComponent, DialogGeneratePARSimulationComponent, + DialogLoadPredefinedEspeceComponent, DialogLoadSessionComponent, DialogLogEntriesDetailsComponent, DialogSaveSessionComponent, @@ -245,6 +247,7 @@ const appRoutes: Routes = [ DialogEditParamValuesComponent, DialogGeneratePABComponent, DialogGeneratePARSimulationComponent, + DialogLoadPredefinedEspeceComponent, DialogSaveSessionComponent, DialogLoadSessionComponent, DialogLogEntriesDetailsComponent diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html new file mode 100644 index 000000000..13e394591 --- /dev/null +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html @@ -0,0 +1,25 @@ +<h1 mat-dialog-title [innerHTML]="uitextLoadPredefinedEspece"></h1> + +<form id="form-load-predefined-espece"> + + <div mat-dialog-content> + <mat-form-field> + <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> + <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> + {{ entryLabel(e) }} + </mat-option> + </mat-select> + </mat-form-field> + </div> + + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="loadPredefinedEspece()" id="do-load" + [disabled]=""> + {{ uitextLoad }} + </button> + </div> + +</form> diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss new file mode 100644 index 000000000..afeb091e7 --- /dev/null +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss @@ -0,0 +1,7 @@ +#form-load-predefined-espece { + max-width: 500px; +} + +mat-form-field { + width: 100%; +} diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts new file mode 100644 index 000000000..afebdcecb --- /dev/null +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts @@ -0,0 +1,61 @@ +import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; +import { Inject, Component } from "@angular/core"; + +import { I18nService } from "../../services/internationalisation.service"; + +import { FishSpecies } from "jalhyd"; + +@Component({ + selector: "dialog-load-predefined-espece", + templateUrl: "dialog-load-predefined-espece.component.html", + styleUrls: ["dialog-load-predefined-espece.component.scss"] +}) +export class DialogLoadPredefinedEspeceComponent { + + public selectedValue: number; + + constructor( + public dialogRef: MatDialogRef<DialogLoadPredefinedEspeceComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + this.selectedValue = 1; + } + + public loadPredefinedEspece() { + this.dialogRef.close({ + load: true, + selected: this.selectedValue + }); + } + + public get uitextLoadPredefinedEspece() { + return this.intlService.localizeText("INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE"); + } + + public get uitextLoad() { + return this.intlService.localizeText("INFO_OPTION_LOAD"); + } + + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } + + public get entries(): number[] { + const ret: number[] = []; + for (let j = 1; j < Object.keys(FishSpecies).length / 2; j++) { // exclude "0" (SPECIES_CUSTOM) + // const spgId = FishSpecies[j].substring(FishSpecies[j].lastIndexOf("_") + 1); + ret.push(j); + } + return ret; + } + + protected entryLabel(index: number): string { + return this.intlService.localizeText("INFO_ENUM_" + FishSpecies[index]); + } + + public get label() { + return this.intlService.localizeText("INFO_ESPECE_TITRE_COURT"); + } + +} diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html index 7b46d2c9e..ed13135ee 100644 --- a/src/app/components/generic-calculator/calculator.component.html +++ b/src/app/components/generic-calculator/calculator.component.html @@ -47,6 +47,11 @@ <!-- nom du module de calcul --> <calc-name id="calculator-name" [title]="uitextCalculatorName"></calc-name> + <button mat-raised-button type="button" color="accent" id="load-predefined-espece" *ngIf="isEspece" + (click)="loadPredefinedEspece()" [title]="uitextLoadPredefinedEspece"> + {{ uitextLoadPredefinedEspece }} + </button> + <div id="calc-cards-container" class="container" [fxLayout]="isWide ? 'column' : 'row wrap'" [fxLayoutAlign]="isWide ? 'space-around stretch' : 'space-around start'"> diff --git a/src/app/components/generic-calculator/calculator.component.scss b/src/app/components/generic-calculator/calculator.component.scss index 8507212be..1aa9e9e26 100644 --- a/src/app/components/generic-calculator/calculator.component.scss +++ b/src/app/components/generic-calculator/calculator.component.scss @@ -22,6 +22,10 @@ margin-top: -54px; } +#load-predefined-espece { + margin-bottom: 1em; +} + mat-card { margin-bottom: 2em; diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index d9d8f93ce..0e35ac269 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -18,7 +18,8 @@ import { RegimeUniforme, Par, ParSimulationParams, - ParSimulation + ParSimulation, + Espece } from "jalhyd"; import { generateValuesCombination } from "../../util"; @@ -41,9 +42,11 @@ import { MatDialog } from "@angular/material/dialog"; import { DialogConfirmCloseCalcComponent } from "../dialog-confirm-close-calc/dialog-confirm-close-calc.component"; import { DialogGeneratePABComponent } from "../dialog-generate-pab/dialog-generate-pab.component"; import { DialogGeneratePARSimulationComponent } from "../dialog-generate-par-simulation/dialog-generate-par-simulation.component"; +import { DialogLoadPredefinedEspeceComponent } from "../dialog-load-predefined-espece/dialog-load-predefined-espece.component"; import { PabTable } from "../../formulaire/elements/pab-table"; import { MultiDimensionResults } from "../../results/multidimension-results"; import { NgParameter } from "../../formulaire/elements/ngparam"; +import { FormulaireFixedVar } from "../../formulaire/definition/form-fixedvar"; import { HotkeysService, Hotkey } from "angular2-hotkeys"; @@ -128,6 +131,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe private confirmCloseCalcDialog: MatDialog, private generatePABDialog: MatDialog, private generatePARSimulationDialog: MatDialog, + private loadPredefinedEspeceDialog: MatDialog, private _elementRef: ElementRef, private hotkeysService: HotkeysService, private appSetupService: ApplicationSetupService, @@ -231,6 +235,10 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAR_SIMULATION"); } + public get uitextLoadPredefinedEspece(): string { + return this.intlService.localizeText("INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE"); + } + public get uitextOpenHelp() { return this.intlService.localizeText("INFO_CALCULATOR_OPEN_HELP"); } @@ -618,6 +626,11 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return this.is(CalculatorType.Par); } + // true if current Nub is Espece + public get isEspece() { + return this.is(CalculatorType.Espece); + } + /** * Returns true if no parameter is varying; ignores parameters having * one of the given {except} symbols, if any @@ -975,6 +988,28 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe ); } + /** + * Opens a modal that allows to choose a predefined Espece + * and load its values in current Espece module + */ + public loadPredefinedEspece() { + const dialogRef = this.loadPredefinedEspeceDialog.open( + DialogLoadPredefinedEspeceComponent, + { + data: { }, + disableClose: false + } + ); + dialogRef.afterClosed().subscribe(result => { + if (result && result.load) { + const form = this._formulaire as FormulaireFixedVar; + const nub = (form.currentNub as Espece); + nub.loadPredefinedSpecies(result.selected); + form.refreshFieldsets(); + } + }); + } + public saveCalculator() { this.formulaireService.saveForm(this._formulaire); } diff --git a/src/app/formulaire/definition/form-fixedvar.ts b/src/app/formulaire/definition/form-fixedvar.ts index ca74b364d..87b008f0c 100644 --- a/src/app/formulaire/definition/form-fixedvar.ts +++ b/src/app/formulaire/definition/form-fixedvar.ts @@ -144,7 +144,7 @@ export class FormulaireFixedVar extends FormulaireDefinition { /** * Forces all fieldsets to update all their fields */ - protected refreshFieldsets() { + public refreshFieldsets() { for (const fs of this.allFieldsets) { fs.updateFields(); } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index faaad8191..92186a745 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -70,6 +70,7 @@ "INFO_CALCULATOR_CALCULER": "Compute", "INFO_CALCULATOR_CLONE": "Duplicate", "INFO_CALCULATOR_CLOSE": "Close", + "INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE": "Load predefined species", "INFO_CALCULATOR_OPEN_HELP": "Help", "INFO_CALCULATOR_PARAMFIXES": "Fixed parameters", "INFO_CALCULATOR_RESULTS_GENERATE_PAB": "Generate a fish ladder", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index b1e5adfb3..5788a49dc 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -70,6 +70,7 @@ "INFO_CALCULATOR_CALCULER": "Calculer", "INFO_CALCULATOR_CLONE": "Dupliquer", "INFO_CALCULATOR_CLOSE": "Fermer", + "INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE": "Charger une espèce prédéfinie", "INFO_CALCULATOR_OPEN_HELP": "Aide", "INFO_CALCULATOR_PARAMFIXES": "Paramètres fixés", "INFO_CALCULATOR_RESULTS_GENERATE_PAB": "Générer une passe à bassins", -- GitLab From b18d047346be17d0970d8e532fec476f4689bfcd Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 30 Jul 2020 09:23:31 +0200 Subject: [PATCH 059/101] Translation for jalhyd#254 --- src/app/calculators/espece/config.json | 2 +- src/app/calculators/espece/en.json | 16 +--------------- src/app/calculators/espece/fr.json | 16 +--------------- src/locale/messages.en.json | 14 ++++++++++++++ src/locale/messages.fr.json | 14 ++++++++++++++ 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index e3718104c..6b0f67aac 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -62,7 +62,7 @@ "allowEmpty": true }, { - "id": "VMax", + "id": "VeMax", "allowEmpty": true } ] diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index cedf49fdf..4dfbd866c 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -5,20 +5,6 @@ "fs_param_pam": "Rock-ramp fishpasses", "fs_param_par": "Humpback fishways", - "DHMaxS": "Maximal fall", - "DHMaxP": "Maximal fall", - "BMin": "Minimal slot or weir width", - "PMinS": "Minimal basin width", - "PMinP": "Minimal basin width", - "LMinS": "Minimal basin length", - "LMinP": "Minimal basin length", - "HMin": "Minimal head on weir", - "YMin": "Minimal water level", - "VMax": "Maximal flow velocity", - "YMinSB": "Minimal water level on superactive baffles", - "YMinPB": "Minimal water level on plane baffles", - "PVMax": "Maximal dissipated power", - "UNIT_DHMaxS": "m", "UNIT_DHMaxP": "m", "UNIT_BMin": "m", @@ -28,7 +14,7 @@ "UNIT_LMinP": "m", "UNIT_HMin": "m", "UNIT_YMin": "m", - "UNIT_VMax": "m/s", + "UNIT_VeMax": "m/s", "UNIT_YMinSB": "m", "UNIT_YMinPB": "m", "UNIT_PVMax": "W/m³" diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index 7654d4ce9..55a20157d 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -5,20 +5,6 @@ "fs_param_pam": "Passes à macrorugosités", "fs_param_par": "Passes à ralentisseurs", - "DHMaxS": "Chute maximale", - "DHMaxP": "Chute maximale", - "BMin": "Largeur minimale de fente ou échancrure latérale", - "PMinS": "Profondeur minimale de bassin", - "PMinP": "Profondeur minimale de bassin", - "LMinS": "Longueur minimale de bassin", - "LMinP": "Longueur minimale de bassin", - "HMin": "Charge minimale sur l'échancrure", - "YMin": "Tirant d'eau minimal", - "VMax": "Vitesse d'écoulement maximale", - "YMinSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", - "YMinPB": "Tirant d'eau minimal sur les ralentisseurs plans", - "PVMax": "Puissance volumique dissipée maximale", - "UNIT_DHMaxS": "m", "UNIT_DHMaxP": "m", "UNIT_BMin": "m", @@ -28,7 +14,7 @@ "UNIT_LMinP": "m", "UNIT_HMin": "m", "UNIT_YMin": "m", - "UNIT_VMax": "m/s", + "UNIT_VeMax": "m/s", "UNIT_YMinSB": "m", "UNIT_YMinPB": "m", "UNIT_PVMax": "W/m³" diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 92186a745..c5095aacb 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -351,6 +351,19 @@ "INFO_LIB_ZRAM": "Upstream apron elevation", "INFO_LIB_ZRMB": "Downstream basin bottom elevation", "INFO_LIB_ZT": "Triangle top elevation", + "INFO_LIB_DHMAXS": "Maximal fall", + "INFO_LIB_DHMAXP": "Maximal fall", + "INFO_LIB_BMIN": "Minimal slot or weir width", + "INFO_LIB_PMINS": "Minimal basin width", + "INFO_LIB_PMINP": "Minimal basin width", + "INFO_LIB_LMINS": "Minimal basin length", + "INFO_LIB_LMINP": "Minimal basin length", + "INFO_LIB_HMIN": "Minimal head on weir", + "INFO_LIB_YMIN": "Minimal water level", + "INFO_LIB_VEMAX": "Maximal flow velocity", + "INFO_LIB_YMINSB": "Minimal water level on superactive baffles", + "INFO_LIB_YMINPB": "Minimal water level on plane baffles", + "INFO_LIB_PVMAX": "Maximal dissipated power", "INFO_LIB_PAB_CHART_SEUILS": "Weirs (%s)", "INFO_LINKED_VALUE_CHILD": "%s (%s, %s %s)", "INFO_LINKED_VALUE_EXTRA_RESULT_OF": "%s (%s)", @@ -610,6 +623,7 @@ "INFO_PARENT_PREFIX": "%name% #%position%: ", "INFO_PARENT_PREFIX_DOWNWALL": "downwall: ", "ERROR_VERIF_ERRORS_IN_PASS": "Pass to verify contains errors", + "ERROR_VERIF_MISSING_CRITERION": "Criterion %var_criterion% must be defined", "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", "ERROR_VERIF_MR_PVMAX": "Dissipated power %PV% too high (maximum: %maxPV%)", "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 5788a49dc..6714a5327 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -352,6 +352,19 @@ "INFO_LIB_ZRAM": "Cote du radier amont", "INFO_LIB_ZRMB": "Cote de radier mi-bassin", "INFO_LIB_ZT": "Cote haute du triangle", + "INFO_LIB_DHMAXS": "Chute maximale", + "INFO_LIB_DHMAXP": "Chute maximale", + "INFO_LIB_BMIN": "Largeur minimale de fente ou échancrure latérale", + "INFO_LIB_PMINS": "Profondeur minimale de bassin", + "INFO_LIB_PMINP": "Profondeur minimale de bassin", + "INFO_LIB_LMINS": "Longueur minimale de bassin", + "INFO_LIB_LMINP": "Longueur minimale de bassin", + "INFO_LIB_HMIN": "Charge minimale sur l'échancrure", + "INFO_LIB_YMIN": "Tirant d'eau minimal", + "INFO_LIB_VEMAX": "Vitesse d'écoulement maximale", + "INFO_LIB_YMINSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", + "INFO_LIB_YMINPB": "Tirant d'eau minimal sur les ralentisseurs plans", + "INFO_LIB_PVMAX": "Puissance volumique dissipée maximale", "INFO_LIB_PAB_CHART_SEUILS": "Seuils (%s)", "INFO_LINKED_VALUE_CHILD": "%s (%s, %s %s)", "INFO_LINKED_VALUE_EXTRA_RESULT_OF": "%s (%s)", @@ -613,6 +626,7 @@ "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : ", "ERROR_VERIF_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs", "ERROR_VERIF_VARYING_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs à l'itération %i%", + "ERROR_VERIF_MISSING_CRITERION": "Le critère %var_criterion% doit être défini", "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", "ERROR_VERIF_MR_PVMAX": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%)", "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", -- GitLab From d67e7759c597047514538e90005d12a80752cd61 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 30 Jul 2020 09:47:20 +0200 Subject: [PATCH 060/101] Update Espece config for jalhyd#235 --- src/app/calculators/espece/config.json | 2 +- src/app/calculators/espece/en.json | 2 +- src/app/calculators/espece/fr.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index 6b0f67aac..b5af5ca11 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -1,6 +1,6 @@ [ { - "id": "fs_param_common", + "id": "fs_param_pab", "type": "fieldset", "fields": [ { diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index 4dfbd866c..cd76f2b62 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -1,5 +1,5 @@ { - "fs_param_common": "Common parameters", + "fs_param_pab": "Fish ladders", "fs_param_pab_s": "Fish ladders, surface jets or orifices", "fs_param_pab_p": "Fish ladders, diving jets", "fs_param_pam": "Rock-ramp fishpasses", diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index 55a20157d..b451dd4fd 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -1,5 +1,5 @@ { - "fs_param_common": "Paramètres communs", + "fs_param_pab": "Passes à bassins", "fs_param_pab_s": "Passes à bassins, jets de surface et orifices", "fs_param_pab_p": "Passes à bassins, jets plongeants", "fs_param_pam": "Passes à macrorugosités", -- GitLab From f9d4de5c22cd4af38d5d02ef2ecb822a9dcfa184 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 30 Jul 2020 10:56:08 +0200 Subject: [PATCH 061/101] Update config and translation for jalhyd#239 --- src/app/calculators/espece/config.json | 6 +++++- src/locale/messages.en.json | 3 +++ src/locale/messages.fr.json | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index b5af5ca11..8764eee37 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -4,7 +4,11 @@ "type": "fieldset", "fields": [ { - "id": "PVMax", + "id": "PVMaxPrec", + "allowEmpty": true + }, + { + "id": "PVMaxLim", "allowEmpty": true } ] diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index c5095aacb..f50f324af 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -364,6 +364,8 @@ "INFO_LIB_YMINSB": "Minimal water level on superactive baffles", "INFO_LIB_YMINPB": "Minimal water level on plane baffles", "INFO_LIB_PVMAX": "Maximal dissipated power", + "INFO_LIB_PVMAXPREC": "Recommanded maximal dissipated power", + "INFO_LIB_PVMAXLIM": "Limit maximal dissipated power", "INFO_LIB_PAB_CHART_SEUILS": "Weirs (%s)", "INFO_LINKED_VALUE_CHILD": "%s (%s, %s %s)", "INFO_LINKED_VALUE_EXTRA_RESULT_OF": "%s (%s)", @@ -666,6 +668,7 @@ "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", + "WARNING_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% very high (recommanded: %maxPV%)", "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 6714a5327..ca2bce694 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -365,6 +365,8 @@ "INFO_LIB_YMINSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", "INFO_LIB_YMINPB": "Tirant d'eau minimal sur les ralentisseurs plans", "INFO_LIB_PVMAX": "Puissance volumique dissipée maximale", + "INFO_LIB_PVMAXPREC": "Puissance volumique dissipée maximale recommandée", + "INFO_LIB_PVMAXLIM": "Puissance volumique dissipée maximale limite", "INFO_LIB_PAB_CHART_SEUILS": "Seuils (%s)", "INFO_LINKED_VALUE_CHILD": "%s (%s, %s %s)", "INFO_LINKED_VALUE_EXTRA_RESULT_OF": "%s (%s)", @@ -670,6 +672,7 @@ "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", + "WARNING_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% très élevée (recommandée : %maxPV%)", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", "ERROR_VERIF_SPECIES_NUB_KO": "FORM_ID_%uid% : franchissement impossible", -- GitLab From 235432d2edb517df1c344d4ffa0cde461fad6001 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 30 Jul 2020 15:59:27 +0200 Subject: [PATCH 062/101] GUI for jalhyd#237 --- src/app/calculators/espece/config.json | 7 +++ src/app/calculators/espece/en.json | 5 ++ src/app/calculators/espece/fr.json | 5 ++ .../calculator.component.ts | 1 + .../generic-input/generic-input.component.ts | 25 ++++------ src/app/formulaire/definition/form-espece.ts | 46 +++++++++++++++++++ .../definition/form-macrorugo-compound.ts | 1 - .../definition/form-parallel-structures.ts | 1 - .../definition/form-verificateur.ts | 2 +- src/app/formulaire/elements/ngparam.ts | 4 ++ src/app/services/formulaire.service.ts | 5 ++ src/locale/messages.en.json | 4 ++ src/locale/messages.fr.json | 4 ++ 13 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 src/app/formulaire/definition/form-espece.ts diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index 8764eee37..33f7af908 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -10,6 +10,12 @@ { "id": "PVMaxLim", "allowEmpty": true + }, + { + "id": "select_divingjetsupported", + "type": "select", + "property": "divingJetSupported", + "default": "NOT_SUPPORTED" } ] }, @@ -88,6 +94,7 @@ { "type": "options", "help": "verification/espece.html", + "selectIds": [ "select_divingjetsupported" ], "calculateDisabled": true } ] diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index cd76f2b62..0934829af 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -5,6 +5,11 @@ "fs_param_pam": "Rock-ramp fishpasses", "fs_param_par": "Humpback fishways", + "select_divingjetsupported": "Diving jets support", + + "DIVINGJETSUPPORTED_0": "Not supported", + "DIVINGJETSUPPORTED_1": "Supported", + "UNIT_DHMaxS": "m", "UNIT_DHMaxP": "m", "UNIT_BMin": "m", diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index b451dd4fd..9f8fc5034 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -5,6 +5,11 @@ "fs_param_pam": "Passes à macrorugosités", "fs_param_par": "Passes à ralentisseurs", + "select_divingjetsupported": "Support des jets plongeants", + + "DIVINGJETSUPPORTED_0": "Non supportés", + "DIVINGJETSUPPORTED_1": "Supportés", + "UNIT_DHMaxS": "m", "UNIT_DHMaxP": "m", "UNIT_BMin": "m", diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 0e35ac269..8a328a71e 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -1005,6 +1005,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe const form = this._formulaire as FormulaireFixedVar; const nub = (form.currentNub as Espece); nub.loadPredefinedSpecies(result.selected); + console.log("================ espèce chargée, refresh tout"); form.refreshFieldsets(); } }); diff --git a/src/app/components/generic-input/generic-input.component.ts b/src/app/components/generic-input/generic-input.component.ts index 1af5e5859..3d9472e3b 100644 --- a/src/app/components/generic-input/generic-input.component.ts +++ b/src/app/components/generic-input/generic-input.component.ts @@ -18,25 +18,14 @@ import { ApplicationSetupService } from "../../services/app-setup.service"; */ @Directive() export abstract class GenericInputComponentDirective implements OnChanges { - /** - * entité mémoire gérée - */ - protected _model: NgParameter | FormulaireDefinition; // CalcName utilise un FormDefinition ici !? - /** - * flag de désactivation de l'input - */ - @Input() - private _inputDisabled = false; + /** entité mémoire gérée */ + protected _model: NgParameter | FormulaireDefinition; // CalcName utilise un FormDefinition ici !? - /** - * flag d'affichage du message d'erreur - */ + /** flag d'affichage du message d'erreur */ public showError = true; - /** - * id de l'input, utilisé notamment pour les tests - */ + /** id de l'input, utilisé notamment pour les tests */ public get inputId() { let id = "error-in-inputId"; if (this._model) { @@ -110,7 +99,11 @@ export abstract class GenericInputComponentDirective implements OnChanges { ) { } public get isDisabled(): boolean { - return this._inputDisabled; + if (this._model instanceof NgParameter) { + return this._model.disabled; + } else { + return false; + } } /** diff --git a/src/app/formulaire/definition/form-espece.ts b/src/app/formulaire/definition/form-espece.ts new file mode 100644 index 000000000..5c1893776 --- /dev/null +++ b/src/app/formulaire/definition/form-espece.ts @@ -0,0 +1,46 @@ +import { IObservable, DivingJetSupport } from "jalhyd"; + +import { FormulaireFixedVar } from "./form-fixedvar"; +import { NgParameter } from "../elements/ngparam"; + +/** + * Formulaire pour les espèces (critères de franchissement) + */ +export class FormulaireEspece extends FormulaireFixedVar { + + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + this.updateDivingJetCriteriaInputs(this.currentNub.properties.getPropValue("divingJetSupported")); + } + + /** + * Enable or disable inputs related to diving jet PAB criteria + */ + public updateDivingJetCriteriaInputs(supported: DivingJetSupport) { + const fsPABDivingJet = this.getFormulaireNodeById("fs_param_pab_p"); + if (fsPABDivingJet !== undefined) { + console.log("> got the fieldset"); + for (const e of fsPABDivingJet.allFormElements) { + if (e instanceof NgParameter) { + console.log(">> setting parameter disabled " + e.symbol + " to", supported === DivingJetSupport.NOT_SUPPORTED); + e.disabled = (supported === DivingJetSupport.NOT_SUPPORTED); + } + } + } + } + + // interface Observer + + public update(sender: IObservable, data: any) { + super.update(sender, data); + console.log("XXX property changed !!", sender.constructor.name, data); + if (data.action === "propertyChange") { + switch (data.name) { + case "divingJetSupported": + this.updateDivingJetCriteriaInputs(data.value); + this.reset(); + break; + } + } + } +} diff --git a/src/app/formulaire/definition/form-macrorugo-compound.ts b/src/app/formulaire/definition/form-macrorugo-compound.ts index 9ab7b18dd..f04e6ccfe 100644 --- a/src/app/formulaire/definition/form-macrorugo-compound.ts +++ b/src/app/formulaire/definition/form-macrorugo-compound.ts @@ -57,7 +57,6 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset { if (firstNotif) { this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron")); } - this.helpLinks = this._resultsHelpLinks; } protected get fieldsetContainer(): FieldsetContainer { diff --git a/src/app/formulaire/definition/form-parallel-structures.ts b/src/app/formulaire/definition/form-parallel-structures.ts index 87b347930..eaffb9f33 100644 --- a/src/app/formulaire/definition/form-parallel-structures.ts +++ b/src/app/formulaire/definition/form-parallel-structures.ts @@ -95,7 +95,6 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset { protected completeParse(firstNotif: boolean = true) { super.completeParse(firstNotif); this.fieldsetContainer.addObserver(this); - this.helpLinks = this._resultsHelpLinks; } protected get fieldsetContainer(): FieldsetContainer { diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index 217298e80..1f712ada6 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -37,7 +37,7 @@ export class FormulaireVerificateur extends FormulaireFixedVar { } protected findPassVariatedParameters(): NgParameter[] { - let pvp = [] + let pvp = []; const passUid = this.verificateurNub.nubToVerify.uid; const passForm = ServiceFactory.formulaireService.getFormulaireFromNubId(passUid); pvp = passForm.getVariatedParameters(); diff --git a/src/app/formulaire/elements/ngparam.ts b/src/app/formulaire/elements/ngparam.ts index 063bd5796..457e68976 100644 --- a/src/app/formulaire/elements/ngparam.ts +++ b/src/app/formulaire/elements/ngparam.ts @@ -31,11 +31,15 @@ export class NgParameter extends InputField implements Observer { private _allowEmpty = false; public unit: string; + public radioConfig: ParamRadioConfig; + public disabled: boolean; + constructor(private _paramDef: ParamDefinition, parent: FormulaireNode) { super(parent); this.radioConfig = this.radioState; + this.disabled = false; } /** diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index dac713d05..71b4dee0c 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -42,6 +42,7 @@ import { FormulaireFixedVar } from "../formulaire/definition/form-fixedvar"; import { FormulaireSection } from "../formulaire/definition/form-section"; import { FormulairePAR } from "../formulaire/definition/form-par"; import { FormulaireVerificateur } from "../formulaire/definition/form-verificateur"; +import { FormulaireEspece } from "../formulaire/definition/form-espece"; @Injectable() export class FormulaireService extends Observable { @@ -318,6 +319,10 @@ export class FormulaireService extends Observable { f = new FormulaireVerificateur(); break; + case CalculatorType.Espece: + f = new FormulaireEspece(); + break; + default: f = new FormulaireFixedVar(); } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index f50f324af..b91a4dcb7 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -636,6 +636,10 @@ "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", "INFO_VERIF_MRC_CROSSABLE_WIDTH": "Maximum crossable width is %width% m", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%N%: diving jet not supported", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall: diving jet not supported", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%NC%, structure %NS%: diving jet not supported", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall, structure %NS%: diving jet not supported", "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index ca2bce694..5d4a10cff 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -639,6 +639,10 @@ "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum : %minY%)", "INFO_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable maximale est %width% m", "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%N% : jet plongeant non supporté", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval : jet plongeant non supporté", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%NC%, ouvrage %NS% : jet plongeant non supporté", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval, ouvrage %NS% : jet plongeant non supporté", "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", -- GitLab From 0f02ce0f4d4e7f0777efb5bcd7cd330f0fe851a5 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 30 Jul 2020 16:23:35 +0200 Subject: [PATCH 063/101] Remove debug message --- src/app/formulaire/definition/form-espece.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/app/formulaire/definition/form-espece.ts b/src/app/formulaire/definition/form-espece.ts index 5c1893776..10ded3b83 100644 --- a/src/app/formulaire/definition/form-espece.ts +++ b/src/app/formulaire/definition/form-espece.ts @@ -19,10 +19,8 @@ export class FormulaireEspece extends FormulaireFixedVar { public updateDivingJetCriteriaInputs(supported: DivingJetSupport) { const fsPABDivingJet = this.getFormulaireNodeById("fs_param_pab_p"); if (fsPABDivingJet !== undefined) { - console.log("> got the fieldset"); for (const e of fsPABDivingJet.allFormElements) { if (e instanceof NgParameter) { - console.log(">> setting parameter disabled " + e.symbol + " to", supported === DivingJetSupport.NOT_SUPPORTED); e.disabled = (supported === DivingJetSupport.NOT_SUPPORTED); } } @@ -33,7 +31,6 @@ export class FormulaireEspece extends FormulaireFixedVar { public update(sender: IObservable, data: any) { super.update(sender, data); - console.log("XXX property changed !!", sender.constructor.name, data); if (data.action === "propertyChange") { switch (data.name) { case "divingJetSupported": -- GitLab From ca3ba2a571da73c5208ac485c86d02146a172d1e Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 31 Jul 2020 11:27:46 +0200 Subject: [PATCH 064/101] Translation for jalhyd#249 --- src/locale/messages.en.json | 2 ++ src/locale/messages.fr.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index b91a4dcb7..a26a0ba49 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -673,6 +673,8 @@ "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", "WARNING_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% very high (recommanded: %maxPV%)", + "WARNING_VERIF_PAB_ORIFICE": "Wall #%NC%, structure %NS%: uninsured passage over an orifice", + "WARNING_VERIF_PAB_ORIFICE_DW": "Downwall, structure %NS%: uninsured passage over an orifice", "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 5d4a10cff..b04310d27 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -677,6 +677,8 @@ "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", "WARNING_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% très élevée (recommandée : %maxPV%)", + "WARNING_VERIF_PAB_ORIFICE": "Cloison n°%NC%, ouvrage %NS% : franchissement non assuré sur un orifice", + "WARNING_VERIF_PAB_ORIFICE_DW": "Cloison aval, ouvrage %NS% : franchissement non assuré sur un orifice", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", "ERROR_VERIF_SPECIES_NUB_KO": "FORM_ID_%uid% : franchissement impossible", -- GitLab From 6a9f5a619811b3d09a1c7af8c4a823f937a0e9f0 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 11 Aug 2020 15:31:24 +0200 Subject: [PATCH 065/101] Remove obsolete translations --- src/locale/messages.en.json | 2 -- src/locale/messages.fr.json | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index a26a0ba49..dd8ed0e17 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -653,8 +653,6 @@ "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum for surface jet: %minLBS%, minimum for diving jet: %minLBS%)", "ERROR_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", "WARNING_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", - "ERROR_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", - "ERROR_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "WARNING_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "WARNING_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", "ERROR_VERIF_PAB_SMIN": "Wall #%NC%, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index b04310d27..5572d2603 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -656,8 +656,6 @@ "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum pour jet de surface : %minLBS%, minimum pour jet plongeant : %minLBP%)", "ERROR_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", "WARNING_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", - "ERROR_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", - "ERROR_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "WARNING_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", -- GitLab From 19f04a549c722552c557d5608b3892c5ede3bcae Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 11 Aug 2020 16:07:34 +0200 Subject: [PATCH 066/101] Espece: move Hmin to common PAB criteria --- src/app/calculators/espece/config.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json index 33f7af908..83e69323d 100644 --- a/src/app/calculators/espece/config.json +++ b/src/app/calculators/espece/config.json @@ -11,6 +11,10 @@ "id": "PVMaxLim", "allowEmpty": true }, + { + "id": "HMin", + "allowEmpty": true + }, { "id": "select_divingjetsupported", "type": "select", @@ -56,10 +60,6 @@ { "id": "LMinP", "allowEmpty": true - }, - { - "id": "HMin", - "allowEmpty": true } ] }, -- GitLab From ec18a0cbb1da7234eb8f81a168853a1aa787fdc6 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 11 Aug 2020 16:50:42 +0200 Subject: [PATCH 067/101] Fix #402 - cannot load Verificateur before Espece --- src/app/formulaire/elements/select-field-custom.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts index 7044c06d2..a9f28c9c6 100644 --- a/src/app/formulaire/elements/select-field-custom.ts +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -128,13 +128,14 @@ export class SelectFieldCustom extends SelectField { // add UIDs of all Espece type Nubs in the session const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); for (const en of especeNubs) { + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(en.uid); this.addEntry( new SelectEntry( this._entriesBaseId + en.uid, en.uid, sprintf( ServiceFactory.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), - ServiceFactory.formulaireService.getFormulaireFromNubId(en.uid).calculatorName + form ? form.calculatorName : "*** form not loaded yet ***" ) ) ); -- GitLab From 50f4a6be4c2e7c45795bc5bfaf042494651406b6 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 12 Aug 2020 09:29:47 +0200 Subject: [PATCH 068/101] Update translations for Verificateur --- src/locale/messages.en.json | 28 ++++++++++++++-------------- src/locale/messages.fr.json | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index dd8ed0e17..927f0081d 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -638,27 +638,27 @@ "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%N%: diving jet not supported", "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall: diving jet not supported", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%NC%, structure %NS%: diving jet not supported", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall, structure %NS%: diving jet not supported", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%NC%, structure #%NS%: diving jet not supported", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall, structure #%NS%: diving jet not supported", "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", "ERROR_VERIF_PAB_DHMAX_JET_DW":"Downwall: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", "WARNING_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", "WARNING_VERIF_PAB_DHMAX_JET_DW": "Downwall: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", - "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", - "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", - "WARNING_VERIF_PAB_BMIN": "Wall #%NC%, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", - "WARNING_VERIF_PAB_BMIN_DW": "Downwall, structure %NS%: slot/weir width %L% too low (minimum: %minB%)", + "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", + "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", + "WARNING_VERIF_PAB_BMIN": "Wall #%NC%, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", + "WARNING_VERIF_PAB_BMIN_DW": "Downwall, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum for surface jet: %minLBS%, minimum for diving jet: %minLBS%)", "ERROR_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", "WARNING_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", - "WARNING_VERIF_PAB_HMIN": "Wall #%NC%, structure %NS%: head on weir %h1% too low (minimum: %minH%)", - "WARNING_VERIF_PAB_HMIN_DW": "Downwall, structure %NS%: head on weir %h1% too low (minimum: %minH%)", - "ERROR_VERIF_PAB_SMIN": "Wall #%NC%, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", - "ERROR_VERIF_PAB_SMIN_DW": "Downwall, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", - "WARNING_VERIF_PAB_SMIN": "Wall #%NC%, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", - "WARNING_VERIF_PAB_SMIN_DW": "Downwall, structure %NS%: orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_HMIN": "Wall #%NC%, structure #%NS%: head on weir %h1% too low (minimum: %minH%)", + "WARNING_VERIF_PAB_HMIN_DW": "Downwall, structure #%NS%: head on weir %h1% too low (minimum: %minH%)", + "ERROR_VERIF_PAB_SMIN": "Wall #%NC%, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", + "ERROR_VERIF_PAB_SMIN_DW": "Downwall, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN": "Wall #%NC%, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN_DW": "Downwall, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", "ERROR_VERIF_PAB_YMOY": "Wall #%N%: basin depth %PB% too low (minimum for surface jet: %minPBS%, minimum for diving jet: %minPBP%)", "ERROR_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", "WARNING_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", @@ -671,8 +671,8 @@ "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", "WARNING_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% very high (recommanded: %maxPV%)", - "WARNING_VERIF_PAB_ORIFICE": "Wall #%NC%, structure %NS%: uninsured passage over an orifice", - "WARNING_VERIF_PAB_ORIFICE_DW": "Downwall, structure %NS%: uninsured passage over an orifice", + "WARNING_VERIF_PAB_ORIFICE": "Wall #%NC%, structure #%NS%: uninsured passage over an orifice", + "WARNING_VERIF_PAB_ORIFICE_DW": "Downwall, structure #%NS%: uninsured passage over an orifice", "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 5572d2603..d24d53920 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -641,27 +641,27 @@ "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%N% : jet plongeant non supporté", "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval : jet plongeant non supporté", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%NC%, ouvrage %NS% : jet plongeant non supporté", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval, ouvrage %NS% : jet plongeant non supporté", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%NC%, ouvrage n°%NS% : jet plongeant non supporté", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval, ouvrage n°%NS% : jet plongeant non supporté", "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", "ERROR_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", "ERROR_VERIF_PAB_DHMAX_JET_DW":"Cloison aval : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", "WARNING_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", "WARNING_VERIF_PAB_DHMAX_JET_DW": "Cloison aval : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", - "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "WARNING_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "WARNING_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage %NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "WARNING_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "WARNING_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum pour jet de surface : %minLBS%, minimum pour jet plongeant : %minLBP%)", "ERROR_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", "WARNING_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", - "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", - "WARNING_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage %NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", - "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage %NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage n°%NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "WARNING_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage n°%NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum pour jet de surface : %minPBS%, minimum pour jet plongeant : %minPBP%)", "ERROR_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", "WARNING_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", @@ -675,8 +675,8 @@ "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", "WARNING_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% très élevée (recommandée : %maxPV%)", - "WARNING_VERIF_PAB_ORIFICE": "Cloison n°%NC%, ouvrage %NS% : franchissement non assuré sur un orifice", - "WARNING_VERIF_PAB_ORIFICE_DW": "Cloison aval, ouvrage %NS% : franchissement non assuré sur un orifice", + "WARNING_VERIF_PAB_ORIFICE": "Cloison n°%NC%, ouvrage n°%NS% : franchissement non assuré sur un orifice", + "WARNING_VERIF_PAB_ORIFICE_DW": "Cloison aval, ouvrage n°%NS% : franchissement non assuré sur un orifice", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", "ERROR_VERIF_SPECIES_NUB_KO": "FORM_ID_%uid% : franchissement impossible", -- GitLab From 1362c5e8acdd407223f3328b81418570809e1480 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 12 Aug 2020 14:58:45 +0200 Subject: [PATCH 069/101] Fix #417 - read parameters and results units from model whenever possible --- src/app/calculators/cloisons/en.json | 3 -- src/app/calculators/cloisons/fr.json | 3 -- .../calculators/concentrationblocs/en.json | 7 +---- .../calculators/concentrationblocs/fr.json | 7 +---- .../calculators/conduitedistributrice/en.json | 1 - src/app/calculators/courberemous/en.json | 1 - src/app/calculators/dever/en.json | 4 +-- src/app/calculators/dever/fr.json | 4 +-- src/app/calculators/espece/en.json | 16 +--------- src/app/calculators/espece/fr.json | 16 +--------- src/app/calculators/grille/en.json | 27 +---------------- src/app/calculators/grille/fr.json | 27 +---------------- src/app/calculators/jet/en.json | 15 +--------- src/app/calculators/jet/fr.json | 15 +--------- src/app/calculators/macrorugo/en.json | 7 +---- src/app/calculators/macrorugo/fr.json | 7 +---- src/app/calculators/macrorugocompound/en.json | 8 +---- src/app/calculators/macrorugocompound/fr.json | 8 +---- src/app/calculators/pab/en.json | 1 + src/app/calculators/pab/fr.json | 1 + src/app/calculators/pabnombre/en.json | 6 +--- src/app/calculators/pabnombre/fr.json | 6 +--- src/app/calculators/par/en.json | 28 +----------------- src/app/calculators/par/fr.json | 28 +----------------- src/app/calculators/parsimulation/en.json | 29 +------------------ src/app/calculators/parsimulation/fr.json | 29 +------------------ src/app/calculators/regimeuniforme/en.json | 4 +-- src/app/calculators/regimeuniforme/fr.json | 4 +-- src/app/calculators/sectionparametree/en.json | 1 + src/app/calculators/sectionparametree/fr.json | 1 + src/app/services/formulaire.service.ts | 17 +++++++++-- 31 files changed, 40 insertions(+), 291 deletions(-) diff --git a/src/app/calculators/cloisons/en.json b/src/app/calculators/cloisons/en.json index 04c177e8d..22a43f9ac 100644 --- a/src/app/calculators/cloisons/en.json +++ b/src/app/calculators/cloisons/en.json @@ -6,11 +6,8 @@ "PB": "Pool mean depth", "h1": "Head", - "UNIT_PV": "W/m³", "UNIT_Q": "m³/s", "UNIT_YMOY": "m", - "UNIT_ZRAM": "m", - "UNIT_ZRMB": "m", "UNIT_ZDV": "m", "UNIT_P": "m" } \ No newline at end of file diff --git a/src/app/calculators/cloisons/fr.json b/src/app/calculators/cloisons/fr.json index ec7b04772..54fed4e39 100644 --- a/src/app/calculators/cloisons/fr.json +++ b/src/app/calculators/cloisons/fr.json @@ -3,11 +3,8 @@ "P": "Pelle", "W": "Ouverture de vanne", - "UNIT_PV": "W/m³", "UNIT_Q": "m³/s", "UNIT_YMOY": "m", - "UNIT_ZRAM": "m", - "UNIT_ZRMB": "m", "UNIT_ZDV": "m", "UNIT_P": "m" } \ No newline at end of file diff --git a/src/app/calculators/concentrationblocs/en.json b/src/app/calculators/concentrationblocs/en.json index 8c407122e..0fa3e17b5 100644 --- a/src/app/calculators/concentrationblocs/en.json +++ b/src/app/calculators/concentrationblocs/en.json @@ -13,10 +13,5 @@ "AXB": "Pattern width, downwards harmonization", "AXH": "Pattern width, upwards harmonization", "CB": "Concentration, downwards harmonization", - "CH": "Concentration, upwards harmonization", - - "UNIT_AX": "m", - "UNIT_R": "m", - "UNIT_AXB": "m", - "UNIT_AXH": "m" + "CH": "Concentration, upwards harmonization" } diff --git a/src/app/calculators/concentrationblocs/fr.json b/src/app/calculators/concentrationblocs/fr.json index 1d0a9f3a5..c8967f33e 100644 --- a/src/app/calculators/concentrationblocs/fr.json +++ b/src/app/calculators/concentrationblocs/fr.json @@ -13,10 +13,5 @@ "AXB": "Largeur d'un motif, harmonisation vers le bas", "AXH": "Largeur d'un motif, harmonisation vers le haut", "CB": "Concentration, harmonisation vers le bas", - "CH": "Concentration, harmonisation vers le haut", - - "UNIT_AX": "m", - "UNIT_R": "m", - "UNIT_AXB": "m", - "UNIT_AXH": "m" + "CH": "Concentration, harmonisation vers le haut" } diff --git a/src/app/calculators/conduitedistributrice/en.json b/src/app/calculators/conduitedistributrice/en.json index 04771763c..ab51a0562 100644 --- a/src/app/calculators/conduitedistributrice/en.json +++ b/src/app/calculators/conduitedistributrice/en.json @@ -1,6 +1,5 @@ { "fs_hydraulique": "Hydraulic features", - "Q": "Flow", "D": "Pipe diameter", "J": "Head drop", "Lg": "Pipe length", diff --git a/src/app/calculators/courberemous/en.json b/src/app/calculators/courberemous/en.json index f3d964669..f965d3e9f 100644 --- a/src/app/calculators/courberemous/en.json +++ b/src/app/calculators/courberemous/en.json @@ -20,7 +20,6 @@ "fs_condlim": "Boundary conditions", "Q": "Upstream flow", "S": "Wet surface", - "fs_param_calc": "Calculation parameters", "Dx": "Discretisation step", "select_resolution": "Resolution method", "Z1": "Upstream water elevation", diff --git a/src/app/calculators/dever/en.json b/src/app/calculators/dever/en.json index 4e82de4dd..2f43fbfd8 100644 --- a/src/app/calculators/dever/en.json +++ b/src/app/calculators/dever/en.json @@ -5,7 +5,5 @@ "L": "Width of the weir", "Cd": "Discharge coefficient", - "UNIT_Q": "m³/s", - "UNIT_EC": "m", - "UNIT_V": "m/s" + "UNIT_Q": "m³/s" } \ No newline at end of file diff --git a/src/app/calculators/dever/fr.json b/src/app/calculators/dever/fr.json index 78cdc5ad6..4a5f1a8d7 100644 --- a/src/app/calculators/dever/fr.json +++ b/src/app/calculators/dever/fr.json @@ -5,7 +5,5 @@ "L": "Largeur du déversoir", "Cd": "Coefficient de débit", - "UNIT_Q": "m³/s", - "UNIT_EC": "m", - "UNIT_V": "m/s" + "UNIT_Q": "m³/s" } \ No newline at end of file diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index 0934829af..ec2bfea67 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -8,19 +8,5 @@ "select_divingjetsupported": "Diving jets support", "DIVINGJETSUPPORTED_0": "Not supported", - "DIVINGJETSUPPORTED_1": "Supported", - - "UNIT_DHMaxS": "m", - "UNIT_DHMaxP": "m", - "UNIT_BMin": "m", - "UNIT_PMinS": "m", - "UNIT_PMinP": "m", - "UNIT_LMinS": "m", - "UNIT_LMinP": "m", - "UNIT_HMin": "m", - "UNIT_YMin": "m", - "UNIT_VeMax": "m/s", - "UNIT_YMinSB": "m", - "UNIT_YMinPB": "m", - "UNIT_PVMax": "W/m³" + "DIVINGJETSUPPORTED_1": "Supported" } diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json index 9f8fc5034..98bfd5344 100644 --- a/src/app/calculators/espece/fr.json +++ b/src/app/calculators/espece/fr.json @@ -8,19 +8,5 @@ "select_divingjetsupported": "Support des jets plongeants", "DIVINGJETSUPPORTED_0": "Non supportés", - "DIVINGJETSUPPORTED_1": "Supportés", - - "UNIT_DHMaxS": "m", - "UNIT_DHMaxP": "m", - "UNIT_BMin": "m", - "UNIT_PMinS": "m", - "UNIT_PMinP": "m", - "UNIT_LMinS": "m", - "UNIT_LMinP": "m", - "UNIT_HMin": "m", - "UNIT_YMin": "m", - "UNIT_VeMax": "m/s", - "UNIT_YMinSB": "m", - "UNIT_YMinPB": "m", - "UNIT_PVMax": "W/m³" + "DIVINGJETSUPPORTED_1": "Supportés" } diff --git a/src/app/calculators/grille/en.json b/src/app/calculators/grille/en.json index 5b57793c0..f372fc545 100644 --- a/src/app/calculators/grille/en.json +++ b/src/app/calculators/grille/en.json @@ -57,30 +57,5 @@ "DH45": "Loss of charge - clogging rate 45%", "DH50": "Loss of charge - clogging rate 50%", "DH55": "Loss of charge - clogging rate 55%", - "DH60": "Loss of charge - clogging rate 60%", - - "UNIT_H": "m", - "UNIT_HG": "m", - "UNIT_S": "m²", - "UNIT_SPDG": "m²", - "UNIT_VA": "m/s", - "UNIT_VAPDG": "m/s", - "UNIT_LG": "m", - "UNIT_D": "m", - "UNIT_DG": "m", - "UNIT_SG": "m²", - "UNIT_VN": "m/s", - "UNIT_DH00": "cm", - "UNIT_DH05": "cm", - "UNIT_DH10": "cm", - "UNIT_DH15": "cm", - "UNIT_DH20": "cm", - "UNIT_DH25": "cm", - "UNIT_DH30": "cm", - "UNIT_DH35": "cm", - "UNIT_DH40": "cm", - "UNIT_DH45": "cm", - "UNIT_DH50": "cm", - "UNIT_DH55": "cm", - "UNIT_DH60": "cm" + "DH60": "Loss of charge - clogging rate 60%" } \ No newline at end of file diff --git a/src/app/calculators/grille/fr.json b/src/app/calculators/grille/fr.json index f575fc88e..a3510f391 100644 --- a/src/app/calculators/grille/fr.json +++ b/src/app/calculators/grille/fr.json @@ -57,30 +57,5 @@ "DH45": "Perte de charge - taux de colmatage 45%", "DH50": "Perte de charge - taux de colmatage 50%", "DH55": "Perte de charge - taux de colmatage 55%", - "DH60": "Perte de charge - taux de colmatage 60%", - - "UNIT_H": "m", - "UNIT_HG": "m", - "UNIT_S": "m²", - "UNIT_SPDG": "m²", - "UNIT_VA": "m/s", - "UNIT_VAPDG": "m/s", - "UNIT_LG": "m", - "UNIT_D": "m", - "UNIT_DG": "m", - "UNIT_SG": "m²", - "UNIT_VN": "m/s", - "UNIT_DH00": "cm", - "UNIT_DH05": "cm", - "UNIT_DH10": "cm", - "UNIT_DH15": "cm", - "UNIT_DH20": "cm", - "UNIT_DH25": "cm", - "UNIT_DH30": "cm", - "UNIT_DH35": "cm", - "UNIT_DH40": "cm", - "UNIT_DH45": "cm", - "UNIT_DH50": "cm", - "UNIT_DH55": "cm", - "UNIT_DH60": "cm" + "DH60": "Perte de charge - taux de colmatage 60%" } \ No newline at end of file diff --git a/src/app/calculators/jet/en.json b/src/app/calculators/jet/en.json index beaa71924..c8342e323 100644 --- a/src/app/calculators/jet/en.json +++ b/src/app/calculators/jet/en.json @@ -13,18 +13,5 @@ "t": "Flight time", "Vx": "Horizontal speed at impact", "Vz": "Vertical speed at impact", - "Vt": "Speed at impact", - - "UNIT_V0": "m/s", - "UNIT_S": "m/m", - "UNIT_D": "m", - "UNIT_ZJ": "m", - "UNIT_ZW": "m", - "UNIT_ZF": "m", - "UNIT_H": "m", - "UNIT_Y": "m", - "UNIT_T": "s", - "UNIT_VX": "m/s", - "UNIT_VZ": "m/s", - "UNIT_VT": "m/s" + "Vt": "Speed at impact" } \ No newline at end of file diff --git a/src/app/calculators/jet/fr.json b/src/app/calculators/jet/fr.json index ba180820d..1cbe67acb 100644 --- a/src/app/calculators/jet/fr.json +++ b/src/app/calculators/jet/fr.json @@ -13,18 +13,5 @@ "t": "Temps de vol", "Vx": "Vitesse horizontale à l'impact", "Vz": "Vitesse verticale à l'impact", - "Vt": "Vitesse à l'impact", - - "UNIT_V0": "m/s", - "UNIT_S": "m/m", - "UNIT_D": "m", - "UNIT_ZJ": "m", - "UNIT_ZW": "m", - "UNIT_ZF": "m", - "UNIT_H": "m", - "UNIT_Y": "m", - "UNIT_T": "s", - "UNIT_VX": "m/s", - "UNIT_VZ": "m/s", - "UNIT_VT": "m/s" + "Vt": "Vitesse à l'impact" } \ No newline at end of file diff --git a/src/app/calculators/macrorugo/en.json b/src/app/calculators/macrorugo/en.json index 664b14ac8..a7193a6b5 100644 --- a/src/app/calculators/macrorugo/en.json +++ b/src/app/calculators/macrorugo/en.json @@ -12,10 +12,5 @@ "PBD": "Diameter", "PBH": "Height", "Cd0": "Shape (1 for round, 2 for square)", - "Strickler": "Equivalent strickler", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m", - "UNIT_STRICKLER": "SI" + "Strickler": "Equivalent strickler" } \ No newline at end of file diff --git a/src/app/calculators/macrorugo/fr.json b/src/app/calculators/macrorugo/fr.json index 1a1b35ef8..f1f5698c9 100644 --- a/src/app/calculators/macrorugo/fr.json +++ b/src/app/calculators/macrorugo/fr.json @@ -12,10 +12,5 @@ "PBD": "Diamètre", "PBH": "Hauteur", "Cd0": "Forme (1 pour rond, 2 pour carré)", - "Strickler": "Strickler équivalent", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m", - "UNIT_STRICKLER": "SI" + "Strickler": "Strickler équivalent" } \ No newline at end of file diff --git a/src/app/calculators/macrorugocompound/en.json b/src/app/calculators/macrorugocompound/en.json index 4c2a22213..9644c91aa 100644 --- a/src/app/calculators/macrorugocompound/en.json +++ b/src/app/calculators/macrorugocompound/en.json @@ -22,11 +22,5 @@ "xCenter": "Mid-apron abscissa", "PASSTYPE_0": "Multiple aprons", - "PASSTYPE_1": "Inclined apron", - - "UNIT_Q": "m³/s", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m" + "PASSTYPE_1": "Inclined apron" } \ No newline at end of file diff --git a/src/app/calculators/macrorugocompound/fr.json b/src/app/calculators/macrorugocompound/fr.json index d72e543e6..e33f5fa74 100644 --- a/src/app/calculators/macrorugocompound/fr.json +++ b/src/app/calculators/macrorugocompound/fr.json @@ -22,11 +22,5 @@ "xCenter": "Abscisse du milieu du radier", "PASSTYPE_0": "Radiers multiples", - "PASSTYPE_1": "Radier incliné", - - "UNIT_Q": "m³/s", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m" + "PASSTYPE_1": "Radier incliné" } \ No newline at end of file diff --git a/src/app/calculators/pab/en.json b/src/app/calculators/pab/en.json index dbd6d321e..db6cefb8a 100644 --- a/src/app/calculators/pab/en.json +++ b/src/app/calculators/pab/en.json @@ -14,6 +14,7 @@ "bassin_container": "Basins", "select_modele_cloisons": "Cross walls model", "select_modele_cloison_aval": "Downstream wall model", + "UNIT_LB": "m", "UNIT_BB": "m", "UNIT_DH": "m", diff --git a/src/app/calculators/pab/fr.json b/src/app/calculators/pab/fr.json index 481a202be..c08b87e1f 100644 --- a/src/app/calculators/pab/fr.json +++ b/src/app/calculators/pab/fr.json @@ -14,6 +14,7 @@ "bassin_container": "Bassins", "select_modele_cloisons": "Modèle de cloisons", "select_modele_cloison_aval": "Modèle de la cloison aval", + "UNIT_LB": "m", "UNIT_BB": "m", "UNIT_DH": "m", diff --git a/src/app/calculators/pabnombre/en.json b/src/app/calculators/pabnombre/en.json index 067c48901..148b87adc 100644 --- a/src/app/calculators/pabnombre/en.json +++ b/src/app/calculators/pabnombre/en.json @@ -6,9 +6,5 @@ "NB": "Number of falls, downwards harmonization", "NH": "Number of falls, upwards harmonization", "DHB": "Fall between basins, downwards harmonization", - "DHH": "Fall between basins, upwards harmonization", - - "UNIT_DHR": "m", - "UNIT_DHB": "m", - "UNIT_DHH": "m" + "DHH": "Fall between basins, upwards harmonization" } \ No newline at end of file diff --git a/src/app/calculators/pabnombre/fr.json b/src/app/calculators/pabnombre/fr.json index 1b2d01917..6a4baca55 100644 --- a/src/app/calculators/pabnombre/fr.json +++ b/src/app/calculators/pabnombre/fr.json @@ -6,9 +6,5 @@ "NB": "Nombre de chutes, harmonisation vers le bas", "NH": "Nombre de chutes, harmonisation vers le haut", "DHB": "Chute entre bassins, harmonisation vers le bas", - "DHH": "Chute entre bassins, harmonisation vers le haut", - - "UNIT_DHR": "m", - "UNIT_DHB": "m", - "UNIT_DHH": "m" + "DHH": "Chute entre bassins, harmonisation vers le haut" } \ No newline at end of file diff --git a/src/app/calculators/par/en.json b/src/app/calculators/par/en.json index c84e38dc5..fc7eddd2d 100644 --- a/src/app/calculators/par/en.json +++ b/src/app/calculators/par/en.json @@ -38,31 +38,5 @@ "PARTYPE_0": "Plane baffles", "PARTYPE_1": "Fatou", "PARTYPE_2": "Superactive", - "PARTYPE_3": "Mixed / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_NB": "", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m" + "PARTYPE_3": "Mixed / chevrons" } \ No newline at end of file diff --git a/src/app/calculators/par/fr.json b/src/app/calculators/par/fr.json index 992593b5c..4d38734ca 100644 --- a/src/app/calculators/par/fr.json +++ b/src/app/calculators/par/fr.json @@ -34,31 +34,5 @@ "PARTYPE_0": "Ralentisseurs plans", "PARTYPE_1": "Fatou", "PARTYPE_2": "Ralentisseurs suractifs", - "PARTYPE_3": "Mixte / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_NB": "", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m" + "PARTYPE_3": "Mixte / chevrons" } \ No newline at end of file diff --git a/src/app/calculators/parsimulation/en.json b/src/app/calculators/parsimulation/en.json index d7ff7f55e..a5b752e21 100644 --- a/src/app/calculators/parsimulation/en.json +++ b/src/app/calculators/parsimulation/en.json @@ -38,32 +38,5 @@ "PARTYPE_0": "Plane baffles", "PARTYPE_1": "Fatou", "PARTYPE_2": "Superactive", - "PARTYPE_3": "Mixed / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_NB": "", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m", - "UNIT_DH": "m" + "PARTYPE_3": "Mixed / chevrons" } diff --git a/src/app/calculators/parsimulation/fr.json b/src/app/calculators/parsimulation/fr.json index 0c37ad399..59cdeef4f 100644 --- a/src/app/calculators/parsimulation/fr.json +++ b/src/app/calculators/parsimulation/fr.json @@ -34,32 +34,5 @@ "PARTYPE_0": "Ralentisseurs plans", "PARTYPE_1": "Fatou", "PARTYPE_2": "Ralentisseurs suractifs", - "PARTYPE_3": "Mixte / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_NB": "", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m", - "UNIT_DH": "m" + "PARTYPE_3": "Mixte / chevrons" } diff --git a/src/app/calculators/regimeuniforme/en.json b/src/app/calculators/regimeuniforme/en.json index 88f2143d8..4a5a3327a 100644 --- a/src/app/calculators/regimeuniforme/en.json +++ b/src/app/calculators/regimeuniforme/en.json @@ -17,7 +17,5 @@ "If": "Bottom slope", "YB": "Embankment elevation", "fs_hydraulique": "Hydraulic features", - "Y": "Draft", - - "UNIT_V": "m/s" + "Y": "Draft" } \ No newline at end of file diff --git a/src/app/calculators/regimeuniforme/fr.json b/src/app/calculators/regimeuniforme/fr.json index 84787f04e..1363f6303 100644 --- a/src/app/calculators/regimeuniforme/fr.json +++ b/src/app/calculators/regimeuniforme/fr.json @@ -17,7 +17,5 @@ "If": "Pente du fond", "YB": "Hauteur de berge", "fs_hydraulique": "Caractéristiques hydrauliques", - "Y": "Tirant d'eau", - - "UNIT_V": "m/s" + "Y": "Tirant d'eau" } \ No newline at end of file diff --git a/src/app/calculators/sectionparametree/en.json b/src/app/calculators/sectionparametree/en.json index 8e5b6226c..943320f64 100644 --- a/src/app/calculators/sectionparametree/en.json +++ b/src/app/calculators/sectionparametree/en.json @@ -36,6 +36,7 @@ "I-J": "Linear variation of specific energy", "Imp": "Impulse", "Tau0": "Tractive force", + "UNIT_B": "m", "UNIT_HS": "m", "UNIT_HSC": "m", diff --git a/src/app/calculators/sectionparametree/fr.json b/src/app/calculators/sectionparametree/fr.json index 2615fd823..769792403 100644 --- a/src/app/calculators/sectionparametree/fr.json +++ b/src/app/calculators/sectionparametree/fr.json @@ -35,6 +35,7 @@ "I-J": "Variation linéaire de l'énergie spécifique", "Imp": "Impulsion", "Tau0": "Force tractrice", + "UNIT_B": "m", "UNIT_HS": "m", "UNIT_HSC": "m", diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 71b4dee0c..486a296de 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -216,9 +216,20 @@ export class FormulaireService extends Observable { if (forceUnit) { unit = forceUnit; } else { - const unitKey = "UNIT_" + symbolBase; - if (langCache && langCache[unitKey] !== undefined) { - unit = this.intlService.localizeText(unitKey, langCache); + // create dummy Nub from CalcType just to get results units + let dummyNub: Nub; + try { + dummyNub = Session.getInstance().createNub(new Props({ "calcType": calcType })); + } catch (e) { + // silent fail + } + if (dummyNub?.resultsUnits && dummyNub.resultsUnits[symbol]) { + unit = dummyNub.resultsUnits[symbol]; + } else { + const unitKey = "UNIT_" + symbolBase; + if (langCache && langCache[unitKey] !== undefined) { + unit = this.intlService.localizeText(unitKey, langCache); + } } } if (unit) { -- GitLab From b415be00e348cd28b719d33a8cd467486e47840a Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 13 Aug 2020 10:32:49 +0200 Subject: [PATCH 070/101] autoformat e2e - #409 --- e2e/app.e2e-spec.ts | 18 +- e2e/app.po.ts | 6 +- e2e/calc-all-examples.e2e-spec.ts | 88 +-- e2e/calculate-all-params.e2e-spec.ts | 138 ++--- e2e/calculate-linked-params.e2e-spec.ts | 564 +++++++++--------- e2e/calculator.e2e-spec.ts | 36 +- e2e/calculator.po.ts | 588 +++++++++---------- e2e/check-translations.e2e-spec.ts | 134 ++--- e2e/cloisons.e2e-spec.ts | 92 +-- e2e/clone-all-calc.e2e-spec.ts | 94 +-- e2e/clone-calc.e2e-spec.ts | 130 ++-- e2e/compute-reset-chained-links.e2e-spec.ts | 334 +++++------ e2e/link-parallel-devices.e2e-spec.ts | 72 +-- e2e/list.e2e-spec.ts | 18 +- e2e/list.po.ts | 102 ++-- e2e/load-linked-params.e2e-spec.ts | 154 ++--- e2e/load-malformed-files.e2e-spec.ts | 98 ++-- e2e/load-save-session.e2e-spec.ts | 164 +++--- e2e/monkey-test/monkey.e2e-spec.ts | 4 +- e2e/navbar.po.ts | 132 ++--- e2e/navigate-through-calculators.e2e-spec.ts | 60 +- e2e/pab.e2e-spec.ts | 562 +++++++++--------- e2e/preferences.e2e-spec.ts | 104 ++-- e2e/preferences.po.ts | 96 +-- e2e/remous.e2e-spec.ts | 78 +-- e2e/sidenav.po.ts | 86 +-- e2e/solveur.e2e-spec.ts | 276 ++++----- 27 files changed, 2114 insertions(+), 2114 deletions(-) diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts index 673034353..66fc56982 100644 --- a/e2e/app.e2e-spec.ts +++ b/e2e/app.e2e-spec.ts @@ -5,15 +5,15 @@ import { browser } from "protractor"; * Start app */ describe("ngHyd − start page", () => { - let page: AppPage; + let page: AppPage; - beforeEach(() => { - page = new AppPage(); - }); + beforeEach(() => { + page = new AppPage(); + }); - it("when app starts, user should be redirected to /list page", async () => { - await page.navigateTo(); - const url = await browser.driver.getCurrentUrl(); - expect(url).toContain("/list"); - }); + it("when app starts, user should be redirected to /list page", async () => { + await page.navigateTo(); + const url = await browser.driver.getCurrentUrl(); + expect(url).toContain("/list"); + }); }); diff --git a/e2e/app.po.ts b/e2e/app.po.ts index 8a58a9466..308423637 100644 --- a/e2e/app.po.ts +++ b/e2e/app.po.ts @@ -1,7 +1,7 @@ import { browser } from "protractor"; export class AppPage { - navigateTo() { - return browser.get("/"); - } + navigateTo() { + return browser.get("/"); + } } diff --git a/e2e/calc-all-examples.e2e-spec.ts b/e2e/calc-all-examples.e2e-spec.ts index 7f6fbc861..957364fc6 100644 --- a/e2e/calc-all-examples.e2e-spec.ts +++ b/e2e/calc-all-examples.e2e-spec.ts @@ -8,50 +8,50 @@ import { browser, by, element } from "protractor"; */ describe("ngHyd − example sessions −", async () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - - beforeAll(() => { - jasmine.DEFAULT_TIMEOUT_INTERVAL = 100 * 1000; - }); - - it("calcul de tous les modules de tous les exemples −", async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - listPage = new ListPage(); - - // for each calculator - let lastExampleFound = true; - let i = 0; - while (lastExampleFound) { - await listPage.navigateTo(); - - const examples = await element.all(by.css("#examples-list .load-example")); - if (examples.length > i) { - // click example #i - await examples[i].click(); - await browser.sleep(50); - - const nbModules = await navbar.getCalculatorEntriesCount(); - for (let j = 0; j < nbModules; j++) { - // select module - await navbar.openNthCalculator(j); - await browser.sleep(50); - // calculate module - await calcPage.getCalculateButton().click(); - // check results - const hasResults = await calcPage.hasValidResults(); - expect(hasResults).toBe(true, `example ${i + 1}, module ${j + 1} (starting at 1)`); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + + beforeAll(() => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 100 * 1000; + }); + + it("calcul de tous les modules de tous les exemples −", async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + listPage = new ListPage(); + + // for each calculator + let lastExampleFound = true; + let i = 0; + while (lastExampleFound) { + await listPage.navigateTo(); + + const examples = await element.all(by.css("#examples-list .load-example")); + if (examples.length > i) { + // click example #i + await examples[i].click(); + await browser.sleep(50); + + const nbModules = await navbar.getCalculatorEntriesCount(); + for (let j = 0; j < nbModules; j++) { + // select module + await navbar.openNthCalculator(j); + await browser.sleep(50); + // calculate module + await calcPage.getCalculateButton().click(); + // check results + const hasResults = await calcPage.hasValidResults(); + expect(hasResults).toBe(true, `example ${i + 1}, module ${j + 1} (starting at 1)`); + } + } else { + // no more examples + lastExampleFound = false; + } + i++; } - } else { - // no more examples - lastExampleFound = false; - } - i++; - } - - }); + + }); }); diff --git a/e2e/calculate-all-params.e2e-spec.ts b/e2e/calculate-all-params.e2e-spec.ts index e250d6aac..d8fafc252 100644 --- a/e2e/calculate-all-params.e2e-spec.ts +++ b/e2e/calculate-all-params.e2e-spec.ts @@ -10,80 +10,80 @@ import { testedCalcTypes } from "./tested_calctypes"; * is set to CAL mode, trigger the calculation, check that result is not empty */ describe("ngHyd − calculate all parameters of all calculators", async () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; - beforeEach(() => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - prefPage = new PreferencesPage(); - navBar = new Navbar(); - }); + beforeEach(() => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); + }); - // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ - const calcTypes = testedCalcTypes; + // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ + const calcTypes = testedCalcTypes; - beforeAll(async () => { - prefPage = new PreferencesPage(); - navBar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); + beforeAll(async () => { + prefPage = new PreferencesPage(); + navBar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); - // for each calculator - for (const ct of calcTypes) { - if (ct === 22) { - // omit 22 - Solveur is not calculated here because it is not independent - continue; - } - describe(" − calculate all parameters of calculator type [" + ct + "]", async () => { - it("", async () => { - // go to list page - await navBar.clickNewCalculatorButton(); + // for each calculator + for (const ct of calcTypes) { + if (ct === 22) { + // omit 22 - Solveur is not calculated here because it is not independent + continue; + } + describe(" − calculate all parameters of calculator type [" + ct + "]", async () => { + it("", async () => { + // go to list page + await navBar.clickNewCalculatorButton(); - // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); - // get all parameters IDs - const inputs = await calcPage.getParamInputsHavingCalcMode(); + // click calculator button (instanciate) + await listPage.clickMenuEntryForCalcType(ct); + // get all parameters IDs + const inputs = await calcPage.getParamInputsHavingCalcMode(); - if (inputs.length > 0) { - // for each param - for (let i = 0; i < inputs.length; i++) { - // grab input again because calculating the module just refreshed all the fieldsets - const input = (await calcPage.getParamInputsHavingCalcMode())[i]; - // click "calc" mode button for this parameter - await calcPage.setParamMode(input, "cal"); - // check that only 1 button is in "calc" state - const nbParamsCalc = await calcPage.getCheckedCalcModeButtons().count(); - expect(nbParamsCalc).toBe(1); - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - } else { - // module has no calculable params, just click the "compute" button - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - }); - }); - } + if (inputs.length > 0) { + // for each param + for (let i = 0; i < inputs.length; i++) { + // grab input again because calculating the module just refreshed all the fieldsets + const input = (await calcPage.getParamInputsHavingCalcMode())[i]; + // click "calc" mode button for this parameter + await calcPage.setParamMode(input, "cal"); + // check that only 1 button is in "calc" state + const nbParamsCalc = await calcPage.getCheckedCalcModeButtons().count(); + expect(nbParamsCalc).toBe(1); + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + } else { + // module has no calculable params, just click the "compute" button + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + }); + }); + } }); diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts index a10a97ebe..443e7939b 100644 --- a/e2e/calculate-linked-params.e2e-spec.ts +++ b/e2e/calculate-linked-params.e2e-spec.ts @@ -22,288 +22,288 @@ import { PreferencesPage } from "./preferences.po"; * is also a linked parameter) */ describe("ngHyd − calculate with linked parameters", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - prefPage = new PreferencesPage(); - sidenav = new SideNav(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - async function computeAndCheckPresenceOfResults() { - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - - it(" − direct links : parameter linked to a single parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y, "link"); - const sel = await calcPage.getLinkedValueSelect(Y); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single parameter, plus local variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y, "link"); - const sel = await calcPage.getLinkedValueSelect(Y); - await calcPage.changeSelectValue(sel, 0); - // vary W - const W = calcPage.getInputById("W"); - await calcPage.setParamMode(W, "var"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // vary Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "var"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // calculate Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "cal"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single result, plus local variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // calculate Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "cal"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - // vary W - const W = calcPage.getInputById("W"); - await calcPage.setParamMode(W, "var"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a variated result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // vary Q - const Q = calcPage.getInputById("Q"); - await calcPage.setParamMode(Q, "var"); - // calculate Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "cal"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single extra result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); - // link V0 to V (Régime uniforme) - const V0 = calcPage.getInputById("V0"); - await calcPage.setParamMode(V0, "link"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single extra result, plus local variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); - // link V0 to V (Régime uniforme) - const V0 = calcPage.getInputById("V0"); - await calcPage.setParamMode(V0, "link"); - // vary ZJ - const ZJ = calcPage.getInputById("ZJ"); - await calcPage.setParamMode(ZJ, "var"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a variated extra result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // vary LargeurBerge - const LargeurBerge = calcPage.getInputById("LargeurBerge"); - await calcPage.setParamMode(LargeurBerge, "var"); - - // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); - // link V0 to V (Régime uniforme) - const V0 = calcPage.getInputById("V0"); - await calcPage.setParamMode(V0, "link"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − multiple variated parameters, including a linked one (#253)", async () => { - // load session file - await navBar.clickNewCalculatorButton(); - await navBar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-multivar-link.json"); - await browser.sleep(500); - expect(await navBar.getAllCalculatorTabs().count()).toBe(2); - - // calculate - await navBar.clickCalculatorTab(0); - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check that there are 6 parameters columns in the variated results table : - // Q, Z2, Z1, + 4 for device #1 - expect(await calcPage.getAllVariatedResultsTableHeaders().count()).toBe(7); - - // check that number of rows in the variated results table equals number of variated values - const varRows = calcPage.getAllVariatedResultsRows(); - const nbRows = await varRows.count(); - expect(nbRows).toBe(191); // boundaries are included - - // check that all parameters have values for all iterations (Z2 might miss some if repeat strategy is not applied) - const lastRow = varRows.get(nbRows - 1); - const tds = await lastRow.all(by.css("td")); - tds.forEach((td) => { - expect(td.getText()).not.toBe(""); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + prefPage = new PreferencesPage(); + sidenav = new SideNav(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + async function computeAndCheckPresenceOfResults() { + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + it(" − direct links : parameter linked to a single parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single parameter, plus local variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 0); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // vary Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "var"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single result, plus local variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // vary Q + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "var"); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single extra result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a Jet + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(18); + // link V0 to V (Régime uniforme) + const V0 = calcPage.getInputById("V0"); + await calcPage.setParamMode(V0, "link"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single extra result, plus local variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a Jet + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(18); + // link V0 to V (Régime uniforme) + const V0 = calcPage.getInputById("V0"); + await calcPage.setParamMode(V0, "link"); + // vary ZJ + const ZJ = calcPage.getInputById("ZJ"); + await calcPage.setParamMode(ZJ, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated extra result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // vary LargeurBerge + const LargeurBerge = calcPage.getInputById("LargeurBerge"); + await calcPage.setParamMode(LargeurBerge, "var"); + + // create a Jet + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(18); + // link V0 to V (Régime uniforme) + const V0 = calcPage.getInputById("V0"); + await calcPage.setParamMode(V0, "link"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − multiple variated parameters, including a linked one (#253)", async () => { + // load session file + await navBar.clickNewCalculatorButton(); + await navBar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-multivar-link.json"); + await browser.sleep(500); + expect(await navBar.getAllCalculatorTabs().count()).toBe(2); + + // calculate + await navBar.clickCalculatorTab(0); + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check that there are 6 parameters columns in the variated results table : + // Q, Z2, Z1, + 4 for device #1 + expect(await calcPage.getAllVariatedResultsTableHeaders().count()).toBe(7); + + // check that number of rows in the variated results table equals number of variated values + const varRows = calcPage.getAllVariatedResultsRows(); + const nbRows = await varRows.count(); + expect(nbRows).toBe(191); // boundaries are included + + // check that all parameters have values for all iterations (Z2 might miss some if repeat strategy is not applied) + const lastRow = varRows.get(nbRows - 1); + const tds = await lastRow.all(by.css("td")); + tds.forEach((td) => { + expect(td.getText()).not.toBe(""); + }); + }); + + it(" − bug nghyd#329 : unexpected ERR in results table", async () => { + await navBar.clickNewCalculatorButton(); + // load session + await navBar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-pab-chain-nghyd-329.json"); + await browser.sleep(200); + expect(await navBar.getAllCalculatorTabs().count()).toBe(3); + + // calculate PAB-Dimensions + await navBar.clickCalculatorTab(2); + await browser.sleep(200); + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + expect(await calcPage.hasResults()).toBe(true); + + // check that ERR is not present in Volume line of results table + let frt = calcPage.getFixedResultsTable(); + let volumeRow = calcPage.getNthRow(frt, 3); + let volumeCol = calcPage.getNthColumn(volumeRow, 2); + let volume = await volumeCol.getText(); + expect(Number(volume)).toBeCloseTo(44.565, 3); + + // click PAB-Nombre tab + await navBar.clickCalculatorTab(0); + await browser.sleep(200); + + // go back to PAB-Dimensions + await navBar.clickCalculatorTab(2); + await browser.sleep(200); + + // check that ERR is not present in Volume line of results table + frt = calcPage.getFixedResultsTable(); + volumeRow = calcPage.getNthRow(frt, 3); + volumeCol = calcPage.getNthColumn(volumeRow, 2); + volume = await volumeCol.getText(); + expect(Number(volume)).toBeCloseTo(44.565, 3); }); - }); - - it(" − bug nghyd#329 : unexpected ERR in results table", async () => { - await navBar.clickNewCalculatorButton(); - // load session - await navBar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-pab-chain-nghyd-329.json"); - await browser.sleep(200); - expect(await navBar.getAllCalculatorTabs().count()).toBe(3); - - // calculate PAB-Dimensions - await navBar.clickCalculatorTab(2); - await browser.sleep(200); - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - expect(await calcPage.hasResults()).toBe(true); - - // check that ERR is not present in Volume line of results table - let frt = calcPage.getFixedResultsTable(); - let volumeRow = calcPage.getNthRow(frt, 3); - let volumeCol = calcPage.getNthColumn(volumeRow, 2); - let volume = await volumeCol.getText(); - expect(Number(volume)).toBeCloseTo(44.565, 3); - - // click PAB-Nombre tab - await navBar.clickCalculatorTab(0); - await browser.sleep(200); - - // go back to PAB-Dimensions - await navBar.clickCalculatorTab(2); - await browser.sleep(200); - - // check that ERR is not present in Volume line of results table - frt = calcPage.getFixedResultsTable(); - volumeRow = calcPage.getNthRow(frt, 3); - volumeCol = calcPage.getNthColumn(volumeRow, 2); - volume = await volumeCol.getText(); - expect(Number(volume)).toBeCloseTo(44.565, 3); - }); }); diff --git a/e2e/calculator.e2e-spec.ts b/e2e/calculator.e2e-spec.ts index 835e71536..3c42955ec 100644 --- a/e2e/calculator.e2e-spec.ts +++ b/e2e/calculator.e2e-spec.ts @@ -5,26 +5,26 @@ import { ListPage } from "./list.po"; * Create a random calculator */ describe("ngHyd − calculator page", () => { - let page: CalculatorPage; - let listPage: ListPage; + let page: CalculatorPage; + let listPage: ListPage; - beforeEach(() => { - page = new CalculatorPage(); - listPage = new ListPage(); - }); + beforeEach(() => { + page = new CalculatorPage(); + listPage = new ListPage(); + }); - it("when a calculator name is clicked on list page, a calculator should be opened", async () => { - await listPage.navigateTo(); - await listPage.clickRandomCalculatorMenuEntry(); - const text = await page.getHeader1().getText(); - expect(text.length).toBeGreaterThan(0); - }); + it("when a calculator name is clicked on list page, a calculator should be opened", async () => { + await listPage.navigateTo(); + await listPage.clickRandomCalculatorMenuEntry(); + const text = await page.getHeader1().getText(); + expect(text.length).toBeGreaterThan(0); + }); - it("when a calculator is open, no active label should be empty", async () => { - const labels = page.getInputLabels(); - await labels.each(async (l) => { - const label = await l.getText(); - expect(label.length).toBeGreaterThan(0); + it("when a calculator is open, no active label should be empty", async () => { + const labels = page.getInputLabels(); + await labels.each(async (l) => { + const label = await l.getText(); + expect(label.length).toBeGreaterThan(0); + }); }); - }); }); diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index fb065df26..7fe9dfb7a 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -2,299 +2,299 @@ import { by, element, ElementFinder, browser } from "protractor"; export class CalculatorPage { - getInputLabels() { - return element.all(by.css("ngparam-input input:not([disabled]) label")); - } - - getParamInputs() { - return element.all(by.css("ngparam-input input.form-control")); - } - - async getParamInputsHavingCalcMode() { - const ret = []; - const inputs = this.getParamInputs(); - await inputs.each(async (i) => { - if (await this.inputHasCalcModeButton(i)) { - ret.push(i); - } - }); - return ret; - } - - getHeader1() { - return element(by.css("h1")); - } - - getSelectById(id: string) { - return element(by.id(id)); - } - - async getSelectValueText(select: ElementFinder) { - return await select.element(by.css(".mat-select-value-text > span")).getText(); - } - - async isSelectEmpty(select: ElementFinder) { - try { - const text = select.element(by.css(".mat-select-value-text > span")); - await text.getAttribute("outerHTML"); // await anything trigger the error - return false; - } catch (e) { // should be NoSuchElementError - return true; - } - } - - getInputById(id: string) { - return element(by.id(id)); - } - - getSaveSessionButton() { - return element(by.css("dialog-save-session button[type=submit]")); - } - - getCalculateButton() { - return element(by.css("button#trigger-calculate")); - } - - getGeneratePabButton() { - return element(by.css("button#generate-pab")); - } - - getCheckedCalcModeButtons() { - return element.all(by.css(`mat-button-toggle.radio_cal[ng-reflect-checked="true"]`)); - } - - getAddStructureButton() { - return element(by.css("fieldset-container .hyd-window-btns button.add-structure")); - } - - getAllLinkButtons() { - return element.all(by.css("mat-button-toggle.radio_link")); - } - - getPabResultsTable() { - return element(by.css(".pab-results-table-inner-container table")); - } - - getVariatedResultsTable() { - return element(by.css(".var-results-inner-container table")); - } - - getAllVariatedResultsTableHeaders() { - return element.all(by.css("var-results table thead th")); - } - - getAllVariatedResultsRows() { - return element.all(by.css("var-results table tbody tr")); - } - - scrollTo(elt: ElementFinder) { - browser.controlFlow().execute(function() { - browser.executeScript("arguments[0].scrollIntoView(true)", elt.getWebElement()); - }); - } - - getFixedResultsTable() { - return element(by.css(".fixed-results-inner-container table")); - } - - getAllFixedResultsRows() { - return element.all(by.css("fixed-results table tbody tr")); - } - - /** return nth <tr> of given <table>, starting at 1 */ - getNthRow(table: ElementFinder, n: number) { - return table.element(by.css("tbody > tr:nth-of-type(" + n + ")")); - } - - /** return nth <td> of given <tr>, starting at 1 */ - getNthColumn(tr: ElementFinder, n: number) { - return tr.element(by.css("td:nth-of-type(" + n + ")")); - } - - async inputHasCalcModeButton(input: ElementFinder) { - // get parent (div.container) - const container = await this.findParentContainer(input); - // find radio buttons - const button: ElementFinder = container.element(by.css("mat-button-toggle.radio_cal > button")); - return await button.isPresent(); - } - - async hasResults() { - return ( - await this.presentAndVisible("fixedvar-results fixed-results > .fixed-results-container") - || - await this.presentAndVisible("fixedvar-results results-chart > chart-results-container") - || - await this.presentAndVisible("section-results fixed-results > .fixed-results-container") - || - await this.presentAndVisible("remous-results #main-chart") - || - await this.presentAndVisible("pab-results pab-results-table") - || - await this.presentAndVisible("macrorugo-compound-results macrorugo-compound-results-table") - || - await this.presentAndVisible("jet-results .fixed-results-container") - ); - } - - async presentAndVisible(selector: string): Promise<boolean> { - const elt = element(by.css(selector)); - return await elt.isPresent() && await elt.isDisplayed(); - } - - /** - * For a given <table> element, check that values of all cells of all rows in <tbody> are - * different from "NaN", "ERR" and optionally "" - * @param table a <table> ElementFinder - * @param allowEmpty if true, empty "" values will be considered valid - */ - async allRowsHaveValidResults(table: ElementFinder, allowEmpty: boolean = false): Promise<boolean> { - let n = 0; - let ok = true; - const invalidValues = [ "ERR", "NaN" ]; - if (! allowEmpty) { - invalidValues.push(""); - } - - const nbCols = await table.all(by.css("thead th")).count(); - const rows = await table.all(by.css("tbody tr")); - - for (const row of rows) { - for (let i = 0; i < nbCols; i++) { - // get i_th column of n_th row - const val = await row.element(by.css("td:nth-of-type(" + (i + 1) + ")")).getText(); - // console.log(`TABLE VAL ${n}/${i}=>`, val); - ok = ok && ! invalidValues.includes(val); - } - n++; - } - return ok; - } - - /** - * Returns true if this.hasResults() is true, and if results table are - * not empty and contain only valid values (no "NaN", no "", no "ERR") - */ - async hasValidResults(): Promise<boolean> { - let ok = false; - if (await this.hasResults()) { - ok = true; - // check fixed results - const frt = this.getFixedResultsTable(); - if (await frt.isPresent() && await frt.isDisplayed()) { - ok = ok && await this.allRowsHaveValidResults(frt); - } - // check variated results - const vrt = this.getVariatedResultsTable(); - if (await vrt.isPresent() && await vrt.isDisplayed()) { - ok = ok && await this.allRowsHaveValidResults(vrt); - } - // check PAB results - const prt = this.getPabResultsTable(); - if (await prt.isPresent() && await prt.isDisplayed()) { - ok = ok && await this.allRowsHaveValidResults(prt, true); - } - } - return ok; - } - - async hasLog() { - return await this.nbLogEntries() > 0; - } - - async nbLogEntries() { - return await element.all(by.css("log-entry")).count(); - } - - async clickSaveCalcButton() { - return await element(by.css("#save-calc")).click(); - } - - async clickCloneCalcButton() { - const cloneButton = element(by.css("#clone-calc")); - return await cloneButton.click(); - } - - async changeSelectValue(elt: ElementFinder, index: number) { - await elt.click(); - const options = (await elt.getAttribute("aria-owns")).split(" "); - const optId = options[index]; - const option = element(by.id(optId)); - await option.click(); - } - - // find parent element of elt having class "container" - async findParentContainer(elt: ElementFinder): Promise<ElementFinder> { - let i = 8; // garde fous - while ((await elt.getAttribute("class") !== "container") && (i >= 0)) { - elt = elt.element(by.xpath("..")); - i--; - } - return elt; - } - - /** - * @param elt an <input> element - * @param mode "fix", "var", "cal" or "link" - */ - async setParamMode(elt: ElementFinder, mode: string) { - // get parent (div.container) - const container = await this.findParentContainer(elt); - // find radio buttons - const button = container.element(by.css("mat-button-toggle.radio_" + mode + " > button")); - await browser.executeScript("window.scrollTo(0, 0);"); // sometimes button slides behind navbar and click() fails - await button.click(); - // for "var" mode, close the modal - if (mode === "var") { - await browser.sleep(500); // wait for the modal to appear - await element(by.css("dialog-edit-param-values .mat-dialog-actions button")).click(); - await browser.sleep(500); // wait for the navbar to reappear after modal dismissal - } - } - - /** - * @param elt an <input> element - */ - async getLinkedValueSelect(elt: ElementFinder): Promise<ElementFinder> { - // get parent (div.container) - const container = await this.findParentContainer(elt) as ElementFinder; - // find <select> - const select = container.element(by.css("param-link mat-select")); - return select; - } - - /** - * Returns an object containing all the calculator's inputs values, indexed - * by parameter ID - */ - async storeAllInputValues() { - const inputs = this.getParamInputs(); - const values = {}; - await inputs.each(async (i) => { - const inputId = await i.getAttribute("id"); - const inputValue = await i.getAttribute("value"); - values[inputId] = +inputValue; // cast to number to avoid false negative (integers starting with 0) - }); - return values; - } - - /** - * Modifies all the calculator's editable inputs values by adding a random digit other than 0 at the end - */ - async modifyAllInputValues() { - const inputs = this.getParamInputs(); - await inputs.each(async (i) => { - if (await i.isDisplayed()) { - // N in YAXN child of SPP module must not be float - const isN = (await i.getAttribute("id")).includes("_N"); // @TODO strengthen this clodo test - const hasDot = (await i.getAttribute("value")).includes("."); - const hasExponent = (await i.getAttribute("value")).includes("e"); - let keys = "" + Math.floor(Math.random() * 9) + 1; - if (! hasDot && ! hasExponent && ! isN) { - keys = "." + keys; + getInputLabels() { + return element.all(by.css("ngparam-input input:not([disabled]) label")); + } + + getParamInputs() { + return element.all(by.css("ngparam-input input.form-control")); + } + + async getParamInputsHavingCalcMode() { + const ret = []; + const inputs = this.getParamInputs(); + await inputs.each(async (i) => { + if (await this.inputHasCalcModeButton(i)) { + ret.push(i); + } + }); + return ret; + } + + getHeader1() { + return element(by.css("h1")); + } + + getSelectById(id: string) { + return element(by.id(id)); + } + + async getSelectValueText(select: ElementFinder) { + return await select.element(by.css(".mat-select-value-text > span")).getText(); + } + + async isSelectEmpty(select: ElementFinder) { + try { + const text = select.element(by.css(".mat-select-value-text > span")); + await text.getAttribute("outerHTML"); // await anything trigger the error + return false; + } catch (e) { // should be NoSuchElementError + return true; } - await i.sendKeys(keys); - } - }); - } + } + + getInputById(id: string) { + return element(by.id(id)); + } + + getSaveSessionButton() { + return element(by.css("dialog-save-session button[type=submit]")); + } + + getCalculateButton() { + return element(by.css("button#trigger-calculate")); + } + + getGeneratePabButton() { + return element(by.css("button#generate-pab")); + } + + getCheckedCalcModeButtons() { + return element.all(by.css(`mat-button-toggle.radio_cal[ng-reflect-checked="true"]`)); + } + + getAddStructureButton() { + return element(by.css("fieldset-container .hyd-window-btns button.add-structure")); + } + + getAllLinkButtons() { + return element.all(by.css("mat-button-toggle.radio_link")); + } + + getPabResultsTable() { + return element(by.css(".pab-results-table-inner-container table")); + } + + getVariatedResultsTable() { + return element(by.css(".var-results-inner-container table")); + } + + getAllVariatedResultsTableHeaders() { + return element.all(by.css("var-results table thead th")); + } + + getAllVariatedResultsRows() { + return element.all(by.css("var-results table tbody tr")); + } + + scrollTo(elt: ElementFinder) { + browser.controlFlow().execute(function () { + browser.executeScript("arguments[0].scrollIntoView(true)", elt.getWebElement()); + }); + } + + getFixedResultsTable() { + return element(by.css(".fixed-results-inner-container table")); + } + + getAllFixedResultsRows() { + return element.all(by.css("fixed-results table tbody tr")); + } + + /** return nth <tr> of given <table>, starting at 1 */ + getNthRow(table: ElementFinder, n: number) { + return table.element(by.css("tbody > tr:nth-of-type(" + n + ")")); + } + + /** return nth <td> of given <tr>, starting at 1 */ + getNthColumn(tr: ElementFinder, n: number) { + return tr.element(by.css("td:nth-of-type(" + n + ")")); + } + + async inputHasCalcModeButton(input: ElementFinder) { + // get parent (div.container) + const container = await this.findParentContainer(input); + // find radio buttons + const button: ElementFinder = container.element(by.css("mat-button-toggle.radio_cal > button")); + return await button.isPresent(); + } + + async hasResults() { + return ( + await this.presentAndVisible("fixedvar-results fixed-results > .fixed-results-container") + || + await this.presentAndVisible("fixedvar-results results-chart > chart-results-container") + || + await this.presentAndVisible("section-results fixed-results > .fixed-results-container") + || + await this.presentAndVisible("remous-results #main-chart") + || + await this.presentAndVisible("pab-results pab-results-table") + || + await this.presentAndVisible("macrorugo-compound-results macrorugo-compound-results-table") + || + await this.presentAndVisible("jet-results .fixed-results-container") + ); + } + + async presentAndVisible(selector: string): Promise<boolean> { + const elt = element(by.css(selector)); + return await elt.isPresent() && await elt.isDisplayed(); + } + + /** + * For a given <table> element, check that values of all cells of all rows in <tbody> are + * different from "NaN", "ERR" and optionally "" + * @param table a <table> ElementFinder + * @param allowEmpty if true, empty "" values will be considered valid + */ + async allRowsHaveValidResults(table: ElementFinder, allowEmpty: boolean = false): Promise<boolean> { + let n = 0; + let ok = true; + const invalidValues = ["ERR", "NaN"]; + if (!allowEmpty) { + invalidValues.push(""); + } + + const nbCols = await table.all(by.css("thead th")).count(); + const rows = await table.all(by.css("tbody tr")); + + for (const row of rows) { + for (let i = 0; i < nbCols; i++) { + // get i_th column of n_th row + const val = await row.element(by.css("td:nth-of-type(" + (i + 1) + ")")).getText(); + // console.log(`TABLE VAL ${n}/${i}=>`, val); + ok = ok && !invalidValues.includes(val); + } + n++; + } + return ok; + } + + /** + * Returns true if this.hasResults() is true, and if results table are + * not empty and contain only valid values (no "NaN", no "", no "ERR") + */ + async hasValidResults(): Promise<boolean> { + let ok = false; + if (await this.hasResults()) { + ok = true; + // check fixed results + const frt = this.getFixedResultsTable(); + if (await frt.isPresent() && await frt.isDisplayed()) { + ok = ok && await this.allRowsHaveValidResults(frt); + } + // check variated results + const vrt = this.getVariatedResultsTable(); + if (await vrt.isPresent() && await vrt.isDisplayed()) { + ok = ok && await this.allRowsHaveValidResults(vrt); + } + // check PAB results + const prt = this.getPabResultsTable(); + if (await prt.isPresent() && await prt.isDisplayed()) { + ok = ok && await this.allRowsHaveValidResults(prt, true); + } + } + return ok; + } + + async hasLog() { + return await this.nbLogEntries() > 0; + } + + async nbLogEntries() { + return await element.all(by.css("log-entry")).count(); + } + + async clickSaveCalcButton() { + return await element(by.css("#save-calc")).click(); + } + + async clickCloneCalcButton() { + const cloneButton = element(by.css("#clone-calc")); + return await cloneButton.click(); + } + + async changeSelectValue(elt: ElementFinder, index: number) { + await elt.click(); + const options = (await elt.getAttribute("aria-owns")).split(" "); + const optId = options[index]; + const option = element(by.id(optId)); + await option.click(); + } + + // find parent element of elt having class "container" + async findParentContainer(elt: ElementFinder): Promise<ElementFinder> { + let i = 8; // garde fous + while ((await elt.getAttribute("class") !== "container") && (i >= 0)) { + elt = elt.element(by.xpath("..")); + i--; + } + return elt; + } + + /** + * @param elt an <input> element + * @param mode "fix", "var", "cal" or "link" + */ + async setParamMode(elt: ElementFinder, mode: string) { + // get parent (div.container) + const container = await this.findParentContainer(elt); + // find radio buttons + const button = container.element(by.css("mat-button-toggle.radio_" + mode + " > button")); + await browser.executeScript("window.scrollTo(0, 0);"); // sometimes button slides behind navbar and click() fails + await button.click(); + // for "var" mode, close the modal + if (mode === "var") { + await browser.sleep(500); // wait for the modal to appear + await element(by.css("dialog-edit-param-values .mat-dialog-actions button")).click(); + await browser.sleep(500); // wait for the navbar to reappear after modal dismissal + } + } + + /** + * @param elt an <input> element + */ + async getLinkedValueSelect(elt: ElementFinder): Promise<ElementFinder> { + // get parent (div.container) + const container = await this.findParentContainer(elt) as ElementFinder; + // find <select> + const select = container.element(by.css("param-link mat-select")); + return select; + } + + /** + * Returns an object containing all the calculator's inputs values, indexed + * by parameter ID + */ + async storeAllInputValues() { + const inputs = this.getParamInputs(); + const values = {}; + await inputs.each(async (i) => { + const inputId = await i.getAttribute("id"); + const inputValue = await i.getAttribute("value"); + values[inputId] = +inputValue; // cast to number to avoid false negative (integers starting with 0) + }); + return values; + } + + /** + * Modifies all the calculator's editable inputs values by adding a random digit other than 0 at the end + */ + async modifyAllInputValues() { + const inputs = this.getParamInputs(); + await inputs.each(async (i) => { + if (await i.isDisplayed()) { + // N in YAXN child of SPP module must not be float + const isN = (await i.getAttribute("id")).includes("_N"); // @TODO strengthen this clodo test + const hasDot = (await i.getAttribute("value")).includes("."); + const hasExponent = (await i.getAttribute("value")).includes("e"); + let keys = "" + Math.floor(Math.random() * 9) + 1; + if (!hasDot && !hasExponent && !isN) { + keys = "." + keys; + } + await i.sendKeys(keys); + } + }); + } } diff --git a/e2e/check-translations.e2e-spec.ts b/e2e/check-translations.e2e-spec.ts index e74d7f210..ee07f746e 100644 --- a/e2e/check-translations.e2e-spec.ts +++ b/e2e/check-translations.e2e-spec.ts @@ -11,83 +11,83 @@ import { testedCalcTypes } from "./tested_calctypes"; * is set to CAL mode, trigger the calculation, check that result is not empty */ describe("ngHyd − check translation of all calculators", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; - let sideNav: SideNav; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; + let sideNav: SideNav; - beforeAll(() => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - prefPage = new PreferencesPage(); - sideNav = new SideNav(); - }); + beforeAll(() => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + prefPage = new PreferencesPage(); + sideNav = new SideNav(); + }); - // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ - const calcTypes = testedCalcTypes; + // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ + const calcTypes = testedCalcTypes; - // options of "Language" selector on preferences page - const langs = [ "English", "Français" ]; + // options of "Language" selector on preferences page + const langs = ["English", "Français"]; - // for each language - for (let i = 0; i < langs.length; i++) { - describe("language " + langs[i] + " − ", async () => { + // for each language + for (let i = 0; i < langs.length; i++) { + describe("language " + langs[i] + " − ", async () => { - beforeAll(async () => { - await prefPage.navigateTo(); - await prefPage.changeLanguage(i); - await browser.sleep(200); - await navBar.clickNewCalculatorButton(); - }); + beforeAll(async () => { + await prefPage.navigateTo(); + await prefPage.changeLanguage(i); + await browser.sleep(200); + await navBar.clickNewCalculatorButton(); + }); - beforeEach(function () { - jasmine.addMatchers({ - toContain: function () { - return { - compare: function (actual, expected) { - const result = { - pass: actual.includes(expected), - message: "error" // short message to avoid whole page source being dumped on expect() failure - }; - return result; - } - }; - } - }); - }); + beforeEach(function () { + jasmine.addMatchers({ + toContain: function () { + return { + compare: function (actual, expected) { + const result = { + pass: actual.includes(expected), + message: "error" // short message to avoid whole page source being dumped on expect() failure + }; + return result; + } + }; + } + }); + }); - // for each calculator - for (const ct of calcTypes) { - it(" − check translations of calculator type [" + ct + "]", async () => { - // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); + // for each calculator + for (const ct of calcTypes) { + it(" − check translations of calculator type [" + ct + "]", async () => { + // click calculator button (instanciate) + await listPage.clickMenuEntryForCalcType(ct); - // just click the "compute" button with default values - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - if (! disabledState) { - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } + // just click the "compute" button with default values + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + if (!disabledState) { + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } - // check absence of "*** message not found" in whole DOM - expect(await browser.getPageSource()).not.toContain("*** message not found", "missing translations found"); + // check absence of "*** message not found" in whole DOM + expect(await browser.getPageSource()).not.toContain("*** message not found", "missing translations found"); - // empty session - await navBar.clickMenuButton(); - await browser.sleep(200); - await sideNav.clickNewSessionButton(); - browser.sleep(200); - }); - } + // empty session + await navBar.clickMenuButton(); + await browser.sleep(200); + await sideNav.clickNewSessionButton(); + browser.sleep(200); + }); + } - }); - } + }); + } }); diff --git a/e2e/cloisons.e2e-spec.ts b/e2e/cloisons.e2e-spec.ts index eb6b07ff7..2febdc57e 100644 --- a/e2e/cloisons.e2e-spec.ts +++ b/e2e/cloisons.e2e-spec.ts @@ -8,50 +8,50 @@ import { PreferencesPage } from "./preferences.po"; * Cloisons - différents tests qui n'ont pas tant de rapport que ça avec les cloisons :) */ describe("ngHyd − cloisons", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; - - beforeEach(async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - prefPage = new PreferencesPage(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - it("when all parent Nub parameters are linked, Structure parameter modes should be alterable without problem", async () => { - await navBar.clickNewCalculatorButton(); - - // 1. create target module for linked parameters - await listPage.clickMenuEntryForCalcType(10); // Cloisons - await browser.sleep(300); - // 2. create module to test - await calcPage.clickCloneCalcButton(); - await browser.sleep(300); - - // 3. link every parameter except Structure ones - await calcPage.setParamMode(calcPage.getInputById("calc_Q"), "link"); - await calcPage.setParamMode(calcPage.getInputById("Z1"), "link"); - await calcPage.setParamMode(calcPage.getInputById("LB"), "link"); - await calcPage.setParamMode(calcPage.getInputById("BB"), "link"); - await calcPage.setParamMode(calcPage.getInputById("PB"), "link"); - await calcPage.setParamMode(calcPage.getInputById("DH"), "link"); - await browser.sleep(300); - - // 4. change LoiDebit - await calcPage.changeSelectValue(calcPage.getSelectById("select_loidebit"), 1); - await browser.sleep(300); - - // 5. check number of inputs in CALC mode - expect(await calcPage.getCheckedCalcModeButtons().count()).toBe(1); - - // 6. try calculating the module - await calcPage.getCalculateButton().click(); - expect(calcPage.hasResults()).toBe(true); - }); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; + + beforeEach(async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + prefPage = new PreferencesPage(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("when all parent Nub parameters are linked, Structure parameter modes should be alterable without problem", async () => { + await navBar.clickNewCalculatorButton(); + + // 1. create target module for linked parameters + await listPage.clickMenuEntryForCalcType(10); // Cloisons + await browser.sleep(300); + // 2. create module to test + await calcPage.clickCloneCalcButton(); + await browser.sleep(300); + + // 3. link every parameter except Structure ones + await calcPage.setParamMode(calcPage.getInputById("calc_Q"), "link"); + await calcPage.setParamMode(calcPage.getInputById("Z1"), "link"); + await calcPage.setParamMode(calcPage.getInputById("LB"), "link"); + await calcPage.setParamMode(calcPage.getInputById("BB"), "link"); + await calcPage.setParamMode(calcPage.getInputById("PB"), "link"); + await calcPage.setParamMode(calcPage.getInputById("DH"), "link"); + await browser.sleep(300); + + // 4. change LoiDebit + await calcPage.changeSelectValue(calcPage.getSelectById("select_loidebit"), 1); + await browser.sleep(300); + + // 5. check number of inputs in CALC mode + expect(await calcPage.getCheckedCalcModeButtons().count()).toBe(1); + + // 6. try calculating the module + await calcPage.getCalculateButton().click(); + expect(calcPage.hasResults()).toBe(true); + }); }); diff --git a/e2e/clone-all-calc.e2e-spec.ts b/e2e/clone-all-calc.e2e-spec.ts index 3373fe3a3..e55c8b3f4 100644 --- a/e2e/clone-all-calc.e2e-spec.ts +++ b/e2e/clone-all-calc.e2e-spec.ts @@ -9,61 +9,61 @@ import { testedCalcTypes } from "./tested_calctypes"; * Clone calculators */ describe("ngHyd − clone all calculators with all possible <select> values", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let prefPage: PreferencesPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let prefPage: PreferencesPage; - beforeEach(async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - prefPage = new PreferencesPage(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); + beforeEach(async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + prefPage = new PreferencesPage(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); - const calcTypes = testedCalcTypes; + const calcTypes = testedCalcTypes; - // for each calculator - for (const ct of calcTypes) { - if (ct === 22) { - // omit 22 - Solveur is not tested here because it is not independent - continue; - } - describe(" − clone all variations of calculator type [" + ct + "]", async () => { - it("", async () => { - await navbar.clickNewCalculatorButton(); - // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); + // for each calculator + for (const ct of calcTypes) { + if (ct === 22) { + // omit 22 - Solveur is not tested here because it is not independent + continue; + } + describe(" − clone all variations of calculator type [" + ct + "]", async () => { + it("", async () => { + await navbar.clickNewCalculatorButton(); + // click calculator button (instanciate) + await listPage.clickMenuEntryForCalcType(ct); - // get all select IDs outside Structures - // get select IDs inside Structures - // @TODO set configuration to every combination of <select> options + // get all select IDs outside Structures + // get select IDs inside Structures + // @TODO set configuration to every combination of <select> options - // modify all <input> values and store them - await calcPage.modifyAllInputValues(); - const sourceValues = await calcPage.storeAllInputValues(); + // modify all <input> values and store them + await calcPage.modifyAllInputValues(); + const sourceValues = await calcPage.storeAllInputValues(); - // clone calculator - await browser.executeScript("window.scrollTo(0, 0);"); - await calcPage.clickCloneCalcButton(); - await browser.sleep(300); + // clone calculator + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(300); - // check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().count()).toBe(2); + // check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(2); - // @TODO check <select> values + // @TODO check <select> values - // read all <input> values and compare them to stored ones - const cloneValues = await calcPage.storeAllInputValues(); - for (const k in cloneValues) { - expect(cloneValues[k]).toBeCloseTo(sourceValues[k]); - } - }); - }); - } + // read all <input> values and compare them to stored ones + const cloneValues = await calcPage.storeAllInputValues(); + for (const k in cloneValues) { + expect(cloneValues[k]).toBeCloseTo(sourceValues[k]); + } + }); + }); + } }); diff --git a/e2e/clone-calc.e2e-spec.ts b/e2e/clone-calc.e2e-spec.ts index 599d3cf9a..c09edd3c8 100644 --- a/e2e/clone-calc.e2e-spec.ts +++ b/e2e/clone-calc.e2e-spec.ts @@ -9,79 +9,79 @@ import { PreferencesPage } from "./preferences.po"; * Clone calculators */ describe("ngHyd − clone a calculator", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let prefPage: PreferencesPage; + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let prefPage: PreferencesPage; - beforeEach(() => { - startPage = new AppPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - }); + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + }); + + beforeAll(async () => { + prefPage = new PreferencesPage(); + navbar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); - beforeAll(async () => { - prefPage = new PreferencesPage(); - navbar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); + it("when cloning a calculator, the clone should have the same values for all parameters", async () => { + await navbar.clickNewCalculatorButton(); + // 1. create target modules for linked parameter + await listPage.clickMenuEntryForCalcType(3); // Régime uniforme + await browser.sleep(500); + const debitRU = calcPage.getInputById("calc_Q"); // "Débit" is calculated by default + await calcPage.setParamMode(debitRU, "fix"); + await browser.sleep(500); - it("when cloning a calculator, the clone should have the same values for all parameters", async () => { - await navbar.clickNewCalculatorButton(); - // 1. create target modules for linked parameter - await listPage.clickMenuEntryForCalcType(3); // Régime uniforme - await browser.sleep(500); - const debitRU = calcPage.getInputById("calc_Q"); // "Débit" is calculated by default - await calcPage.setParamMode(debitRU, "fix"); - await browser.sleep(500); + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(4); // Courbe de remous + await browser.sleep(500); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(4); // Courbe de remous - await browser.sleep(500); + // 2. create source module to clone + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); // Section paramétrée + await browser.sleep(500); - // 2. create source module to clone - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); // Section paramétrée - await browser.sleep(500); + // 3. change and store source parameter values + const sourceValues = { + k: 0.6, + Ks: 42 + }; + await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 3); // mode "parabolique" + await calcPage.getInputById("k").clear(); + await calcPage.getInputById("k").sendKeys(sourceValues["k"]); + await calcPage.getInputById("Ks").clear(); + await calcPage.getInputById("Ks").sendKeys(sourceValues["Ks"]); + // link "Débit" to "Courbe de remous" + const debitSP = calcPage.getInputById("Q"); + await calcPage.setParamMode(debitSP, "link"); + await browser.sleep(500); + await calcPage.changeSelectValue(calcPage.getSelectById("linked_Q"), 1); // "Courbe de remous" + await browser.sleep(500); - // 3. change and store source parameter values - const sourceValues = { - k: 0.6, - Ks: 42 - }; - await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 3); // mode "parabolique" - await calcPage.getInputById("k").clear(); - await calcPage.getInputById("k").sendKeys(sourceValues["k"]); - await calcPage.getInputById("Ks").clear(); - await calcPage.getInputById("Ks").sendKeys(sourceValues["Ks"]); - // link "Débit" to "Courbe de remous" - const debitSP = calcPage.getInputById("Q"); - await calcPage.setParamMode(debitSP, "link"); - await browser.sleep(500); - await calcPage.changeSelectValue(calcPage.getSelectById("linked_Q"), 1); // "Courbe de remous" - await browser.sleep(500); + // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(500); - // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" - await browser.executeScript("window.scrollTo(0, 0);"); - await calcPage.clickCloneCalcButton(); - await browser.sleep(500); + // 4. check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(4); + await navbar.clickCalculatorTab(3); // n°3 should be the latest + await browser.sleep(500); - // 4. check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().count()).toBe(4); - await navbar.clickCalculatorTab(3); // n°3 should be the latest - await browser.sleep(500); + // 5. compare values + Object.keys(sourceValues).forEach(async (k) => { + const v = sourceValues[k]; + const displayedVal = await calcPage.getInputById(k).getAttribute("value"); + expect(displayedVal).toBe("" + v); + }); - // 5. compare values - Object.keys(sourceValues).forEach(async (k) => { - const v = sourceValues[k]; - const displayedVal = await calcPage.getInputById(k).getAttribute("value"); - expect(displayedVal).toBe("" + v); + // @TODO check linked value (see above) }); - - // @TODO check linked value (see above) - }); }); diff --git a/e2e/compute-reset-chained-links.e2e-spec.ts b/e2e/compute-reset-chained-links.e2e-spec.ts index 75ac102b9..2767c9d96 100644 --- a/e2e/compute-reset-chained-links.e2e-spec.ts +++ b/e2e/compute-reset-chained-links.e2e-spec.ts @@ -12,173 +12,173 @@ import { browser } from "protractor"; * linked to results. */ describe("ngHyd − compute then reset chained results − ", () => { - let startPage: AppPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - - function init() { - startPage = new AppPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - } - beforeEach(init); - - it("when loading session-cascade-params.json, computation should not be chained, but results reset should be", async () => { - // load session file - await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-cascade-params.json"); - await browser.sleep(500); - expect(await navbar.getAllCalculatorTabs().count()).toBe(3); - - // 1. get down-most module - await navbar.clickCalculatorTabForUid("Y2l2Y3"); - - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - - // down-most module should have results - let hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - // up-most should not - await navbar.clickCalculatorTabForUid("ZTFxeW"); - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - await navbar.clickCalculatorTabForUid("Z3EwY2"); - // middle one should - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // 2. get up-most module - await navbar.clickCalculatorTabForUid("ZTFxeW"); - - // modify an input that is not linked - await calcPage.getInputById("Ks").clear(); - await calcPage.getInputById("Ks").sendKeys("42"); - - // other 2 modules should still have their results - for (let i = 1; i < 3; i++) { - await navbar.clickCalculatorTab(i); - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); + let startPage: AppPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + + function init() { + startPage = new AppPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); } - - // 3. get up-most module again - await navbar.clickCalculatorTabForUid("ZTFxeW"); - - // modify input that is linked - await calcPage.getInputById("LargeurBerge").clear(); - await calcPage.getInputById("LargeurBerge").sendKeys("2.6"); - - // check all 3 modules for absence of results - for (let i = 0; i < 3; i++) { - await navbar.clickCalculatorTab(i); - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - } - }); - - it("when loading session-cascade-results.json, computation and results reset should be chained", async () => { - // load session file - await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-cascade-results.json"); - await browser.sleep(500); - expect(await navbar.getAllCalculatorTabs().count()).toBe(3); - - // dirty hack : get unwanted module first to prevent Calc button - // of PAB Dimensions to be greyed-out @WTF - await navbar.clickCalculatorTabForUid("Y2s1cG"); - // 1. get down-most module (PAB Dimensions) - await navbar.clickCalculatorTabForUid("eHh5YX"); - - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - - // check all 3 modules for results - for (let i = 0; i < 3; i++) { - await navbar.clickCalculatorTab(i); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - - // 2. get up-most module (Macro-rugo) - await navbar.clickCalculatorTabForUid("MGg5OH"); - - // modify any input (for ex. "Ks") - await calcPage.getInputById("Ks").clear(); - await calcPage.getInputById("Ks").sendKeys("42"); - - // check all 3 modules for absence of results - for (let i = 0; i < 3; i++) { - await navbar.clickCalculatorTab(i); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - } - }); - - it("when loading session-results-invalidation.json, results reset should not be triggered on calculation", async () => { - // load session file - await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-results-invalidation.json"); - await browser.sleep(500); - expect(await navbar.getAllCalculatorTabs().count()).toBe(2); - - // get down-most module (Ouvrages) - await navbar.clickCalculatorTabForUid("amd2OG"); - - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // 2. get up-most module (Ouvrages 1) - await navbar.clickCalculatorTabForUid("aTgwMm"); - - // modify an input that is not linked - await calcPage.getInputById("Z2").clear(); - await calcPage.getInputById("Z2").sendKeys("101.8"); - - // the down-most module should still have its results - await navbar.clickCalculatorTabForUid("amd2OG"); - const hasResults2 = await calcPage.hasResults(); - expect(hasResults2).toBe(true); - - // calculate the upmost module - await navbar.clickCalculatorTabForUid("aTgwMm"); - const calcButton2 = calcPage.getCalculateButton(); - await calcButton2.click(); - - // the down-most module should still have its results - await navbar.clickCalculatorTabForUid("amd2OG"); - const hasResults3 = await calcPage.hasResults(); - expect(hasResults3).toBe(true); - - // modify an input that is linked - await navbar.clickCalculatorTabForUid("aTgwMm"); - await calcPage.getInputById("0_ZDV").clear(); - await calcPage.getInputById("0_ZDV").sendKeys("101"); - - // the down-most module should not have its results anymore - await navbar.clickCalculatorTabForUid("amd2OG"); - const hasResults4 = await calcPage.hasResults(); - expect(hasResults4).toBe(false); - - }); + beforeEach(init); + + it("when loading session-cascade-params.json, computation should not be chained, but results reset should be", async () => { + // load session file + await startPage.navigateTo(); + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-cascade-params.json"); + await browser.sleep(500); + expect(await navbar.getAllCalculatorTabs().count()).toBe(3); + + // 1. get down-most module + await navbar.clickCalculatorTabForUid("Y2l2Y3"); + + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + + // down-most module should have results + let hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + // up-most should not + await navbar.clickCalculatorTabForUid("ZTFxeW"); + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + await navbar.clickCalculatorTabForUid("Z3EwY2"); + // middle one should + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // 2. get up-most module + await navbar.clickCalculatorTabForUid("ZTFxeW"); + + // modify an input that is not linked + await calcPage.getInputById("Ks").clear(); + await calcPage.getInputById("Ks").sendKeys("42"); + + // other 2 modules should still have their results + for (let i = 1; i < 3; i++) { + await navbar.clickCalculatorTab(i); + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + // 3. get up-most module again + await navbar.clickCalculatorTabForUid("ZTFxeW"); + + // modify input that is linked + await calcPage.getInputById("LargeurBerge").clear(); + await calcPage.getInputById("LargeurBerge").sendKeys("2.6"); + + // check all 3 modules for absence of results + for (let i = 0; i < 3; i++) { + await navbar.clickCalculatorTab(i); + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + } + }); + + it("when loading session-cascade-results.json, computation and results reset should be chained", async () => { + // load session file + await startPage.navigateTo(); + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-cascade-results.json"); + await browser.sleep(500); + expect(await navbar.getAllCalculatorTabs().count()).toBe(3); + + // dirty hack : get unwanted module first to prevent Calc button + // of PAB Dimensions to be greyed-out @WTF + await navbar.clickCalculatorTabForUid("Y2s1cG"); + // 1. get down-most module (PAB Dimensions) + await navbar.clickCalculatorTabForUid("eHh5YX"); + + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + + // check all 3 modules for results + for (let i = 0; i < 3; i++) { + await navbar.clickCalculatorTab(i); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + // 2. get up-most module (Macro-rugo) + await navbar.clickCalculatorTabForUid("MGg5OH"); + + // modify any input (for ex. "Ks") + await calcPage.getInputById("Ks").clear(); + await calcPage.getInputById("Ks").sendKeys("42"); + + // check all 3 modules for absence of results + for (let i = 0; i < 3; i++) { + await navbar.clickCalculatorTab(i); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + } + }); + + it("when loading session-results-invalidation.json, results reset should not be triggered on calculation", async () => { + // load session file + await startPage.navigateTo(); + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-results-invalidation.json"); + await browser.sleep(500); + expect(await navbar.getAllCalculatorTabs().count()).toBe(2); + + // get down-most module (Ouvrages) + await navbar.clickCalculatorTabForUid("amd2OG"); + + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // 2. get up-most module (Ouvrages 1) + await navbar.clickCalculatorTabForUid("aTgwMm"); + + // modify an input that is not linked + await calcPage.getInputById("Z2").clear(); + await calcPage.getInputById("Z2").sendKeys("101.8"); + + // the down-most module should still have its results + await navbar.clickCalculatorTabForUid("amd2OG"); + const hasResults2 = await calcPage.hasResults(); + expect(hasResults2).toBe(true); + + // calculate the upmost module + await navbar.clickCalculatorTabForUid("aTgwMm"); + const calcButton2 = calcPage.getCalculateButton(); + await calcButton2.click(); + + // the down-most module should still have its results + await navbar.clickCalculatorTabForUid("amd2OG"); + const hasResults3 = await calcPage.hasResults(); + expect(hasResults3).toBe(true); + + // modify an input that is linked + await navbar.clickCalculatorTabForUid("aTgwMm"); + await calcPage.getInputById("0_ZDV").clear(); + await calcPage.getInputById("0_ZDV").sendKeys("101"); + + // the down-most module should not have its results anymore + await navbar.clickCalculatorTabForUid("amd2OG"); + const hasResults4 = await calcPage.hasResults(); + expect(hasResults4).toBe(false); + + }); }); diff --git a/e2e/link-parallel-devices.e2e-spec.ts b/e2e/link-parallel-devices.e2e-spec.ts index d4b190c7a..7d104289d 100644 --- a/e2e/link-parallel-devices.e2e-spec.ts +++ b/e2e/link-parallel-devices.e2e-spec.ts @@ -5,45 +5,45 @@ import { PreferencesPage } from "./preferences.po"; import { Navbar } from "./navbar.po"; describe("ngHyd − parallel structures with multiple linked parameters − ", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let prefPage: PreferencesPage; - let navBar: Navbar; + let listPage: ListPage; + let calcPage: CalculatorPage; + let prefPage: PreferencesPage; + let navBar: Navbar; - async function init() { - calcPage = new CalculatorPage(); - listPage = new ListPage(); - prefPage = new PreferencesPage(); - navBar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - } - beforeEach(init); + async function init() { + calcPage = new CalculatorPage(); + listPage = new ListPage(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + } + beforeEach(init); - it("when creating Parallel Structures, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(8); - await calcPage.getAddStructureButton().click(); - const nb1 = await calcPage.getAllLinkButtons().count(); - expect(nb1).toBe(8); // link buttons on children but not on parent - }); + it("when creating Parallel Structures, devices should be linkable to one another", async () => { + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(8); + await calcPage.getAddStructureButton().click(); + const nb1 = await calcPage.getAllLinkButtons().count(); + expect(nb1).toBe(8); // link buttons on children but not on parent + }); - it("when creating Cloisons, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await calcPage.getAddStructureButton().click(); - const nb2 = await calcPage.getAllLinkButtons().count(); - expect(nb2).toBe(6); // link buttons on children but not on parent - }); + it("when creating Cloisons, devices should be linkable to one another", async () => { + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + await calcPage.getAddStructureButton().click(); + const nb2 = await calcPage.getAllLinkButtons().count(); + expect(nb2).toBe(6); // link buttons on children but not on parent + }); - it("when creating Dever, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(9); - await calcPage.getAddStructureButton().click(); - const nb3 = await calcPage.getAllLinkButtons().count(); - expect(nb3).toBe(6); // link buttons on children but not on parent - }); + it("when creating Dever, devices should be linkable to one another", async () => { + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(9); + await calcPage.getAddStructureButton().click(); + const nb3 = await calcPage.getAllLinkButtons().count(); + expect(nb3).toBe(6); // link buttons on children but not on parent + }); }); diff --git a/e2e/list.e2e-spec.ts b/e2e/list.e2e-spec.ts index 3100e7274..d53a34e99 100644 --- a/e2e/list.e2e-spec.ts +++ b/e2e/list.e2e-spec.ts @@ -4,15 +4,15 @@ import { ListPage } from "./list.po"; * Show calculators list (home page) */ describe("ngHyd − list page", () => { - let page: ListPage; + let page: ListPage; - beforeEach(() => { - page = new ListPage(); - }); + beforeEach(() => { + page = new ListPage(); + }); - it("when list is open, user should see the list of available compute nodes", async () => { - await page.navigateTo(); - expect(page.getThemesCardsLength()).toBeGreaterThan(4); - expect(page.getCalculatorsMenuLength()).toBeGreaterThan(8); - }); + it("when list is open, user should see the list of available compute nodes", async () => { + await page.navigateTo(); + expect(page.getThemesCardsLength()).toBeGreaterThan(4); + expect(page.getCalculatorsMenuLength()).toBeGreaterThan(8); + }); }); diff --git a/e2e/list.po.ts b/e2e/list.po.ts index ce64e022e..52c574577 100644 --- a/e2e/list.po.ts +++ b/e2e/list.po.ts @@ -1,55 +1,55 @@ import { browser, by, element } from "protractor"; export class ListPage { - navigateTo() { - return browser.get("/#/list"); - } - - getThemesCards() { - return element.all(by.css("mat-card.compute-nodes-theme")); - } - - async getThemesCardsLength() { - return await this.getThemesCards().count(); - } - - getCalculatorsMenuEntries() { - return element.all(by.css("mat-card.compute-nodes-theme button.theme-calculator")); - } - - async getCalculatorsMenuLength() { - return await this.getCalculatorsMenuEntries().count(); - } - - async getAvailableCalcTypes() { - const ids = []; - const menuEntries = this.getCalculatorsMenuEntries(); - await menuEntries.each(async (elt, i) => { - const eltid = await elt.getAttribute("id"); - const ct = eltid.replace("create-calc-", ""); - const nct = Number(ct); - // remove duplicates - if (! ids.includes(nct)) { - ids.push(nct); - } - }); - return ids; - } - - async clickRandomCalculatorMenuEntry() { - const menuEntries = this.getCalculatorsMenuEntries(); - const l = await menuEntries.count(); - const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); - return menuEntries.get(r).click(); - } - - async clickMenuEntryForCalcType(type: number) { - const but = element(by.css("#create-calc-" + type)); - return but.click(); - } - - async getCalcMenuTextForCalcType(type: number): Promise<string> { - const but = element(by.css("#create-calc-" + type)); - return but.getText(); - } + navigateTo() { + return browser.get("/#/list"); + } + + getThemesCards() { + return element.all(by.css("mat-card.compute-nodes-theme")); + } + + async getThemesCardsLength() { + return await this.getThemesCards().count(); + } + + getCalculatorsMenuEntries() { + return element.all(by.css("mat-card.compute-nodes-theme button.theme-calculator")); + } + + async getCalculatorsMenuLength() { + return await this.getCalculatorsMenuEntries().count(); + } + + async getAvailableCalcTypes() { + const ids = []; + const menuEntries = this.getCalculatorsMenuEntries(); + await menuEntries.each(async (elt, i) => { + const eltid = await elt.getAttribute("id"); + const ct = eltid.replace("create-calc-", ""); + const nct = Number(ct); + // remove duplicates + if (!ids.includes(nct)) { + ids.push(nct); + } + }); + return ids; + } + + async clickRandomCalculatorMenuEntry() { + const menuEntries = this.getCalculatorsMenuEntries(); + const l = await menuEntries.count(); + const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); + return menuEntries.get(r).click(); + } + + async clickMenuEntryForCalcType(type: number) { + const but = element(by.css("#create-calc-" + type)); + return but.click(); + } + + async getCalcMenuTextForCalcType(type: number): Promise<string> { + const but = element(by.css("#create-calc-" + type)); + return but.getText(); + } } diff --git a/e2e/load-linked-params.e2e-spec.ts b/e2e/load-linked-params.e2e-spec.ts index 8df13e041..81a1651bd 100644 --- a/e2e/load-linked-params.e2e-spec.ts +++ b/e2e/load-linked-params.e2e-spec.ts @@ -11,82 +11,82 @@ import { browser } from "protractor"; * @TODO les valeurs des Select sont comparées au français, pas très générique :/ */ describe("ngHyd − load session with multiple linked parameters − ", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - - function init() { - startPage = new AppPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - listPage = new ListPage(); - } - beforeEach(init); - - it("when loading session-liens-spaghetti.json, all links should point to the right target", async () => { - await startPage.navigateTo(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-liens-spaghetti.json"); - await browser.sleep(500); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(5); - - // 1. check Section paramétrée - await navbar.clickCalculatorTab(0); - await browser.sleep(500); - - // check target params values - const sp_lb = calcPage.getSelectById("linked_LargeurBerge"); - const sp_lbv = await calcPage.getSelectValueText(sp_lb); - expect(sp_lbv).toContain("Largeur du déversoir (Ouvrages, ouvrage 3)"); - - // 2. check Passe à macro-rugosités - await navbar.clickCalculatorTab(1); - await browser.sleep(500); - - // check target params values - const mr_zf1 = calcPage.getSelectById("linked_ZF1"); - const mr_zf1v = await calcPage.getSelectValueText(mr_zf1); - expect(mr_zf1v).toContain("Cote de l'eau amont (Ouvrages)"); - - const mr_q = calcPage.getSelectById("linked_Q"); - const mr_qv = await calcPage.getSelectValueText(mr_q); - expect(mr_qv).toContain("Débit (Sec. param., section)"); - - // 3. check Lois d'ouvrages - await navbar.clickCalculatorTab(2); - await browser.sleep(500); - - // check target params values - const lo_z2 = calcPage.getSelectById("linked_Z2"); - const lo_z2v = await calcPage.getSelectValueText(lo_z2); - expect(lo_z2v).toContain("Cote de fond aval (Macro-rugo.)"); - - const lo_l = calcPage.getSelectById("1_linked_L"); - const lo_lv = await calcPage.getSelectValueText(lo_l); - expect(lo_lv).toContain("Largeur au miroir (Sec. param.)"); - - const lo_w = calcPage.getSelectById("2_linked_W"); - const lo_wv = await calcPage.getSelectValueText(lo_w); - expect(lo_wv).toContain("Ouverture de vanne (Ouvrages, ouvrage 2)"); - - // 5. check Déver. dénoyés - await navbar.clickCalculatorTab(4); - await browser.sleep(500); - - // check target params values - const lo_br = calcPage.getSelectById("linked_BR"); - const lo_brv = await calcPage.getSelectValueText(lo_br); - expect(lo_brv).toContain("Largeur au miroir (Sec. param.)"); - }); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + + function init() { + startPage = new AppPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + listPage = new ListPage(); + } + beforeEach(init); + + it("when loading session-liens-spaghetti.json, all links should point to the right target", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-liens-spaghetti.json"); + await browser.sleep(500); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(5); + + // 1. check Section paramétrée + await navbar.clickCalculatorTab(0); + await browser.sleep(500); + + // check target params values + const sp_lb = calcPage.getSelectById("linked_LargeurBerge"); + const sp_lbv = await calcPage.getSelectValueText(sp_lb); + expect(sp_lbv).toContain("Largeur du déversoir (Ouvrages, ouvrage 3)"); + + // 2. check Passe à macro-rugosités + await navbar.clickCalculatorTab(1); + await browser.sleep(500); + + // check target params values + const mr_zf1 = calcPage.getSelectById("linked_ZF1"); + const mr_zf1v = await calcPage.getSelectValueText(mr_zf1); + expect(mr_zf1v).toContain("Cote de l'eau amont (Ouvrages)"); + + const mr_q = calcPage.getSelectById("linked_Q"); + const mr_qv = await calcPage.getSelectValueText(mr_q); + expect(mr_qv).toContain("Débit (Sec. param., section)"); + + // 3. check Lois d'ouvrages + await navbar.clickCalculatorTab(2); + await browser.sleep(500); + + // check target params values + const lo_z2 = calcPage.getSelectById("linked_Z2"); + const lo_z2v = await calcPage.getSelectValueText(lo_z2); + expect(lo_z2v).toContain("Cote de fond aval (Macro-rugo.)"); + + const lo_l = calcPage.getSelectById("1_linked_L"); + const lo_lv = await calcPage.getSelectValueText(lo_l); + expect(lo_lv).toContain("Largeur au miroir (Sec. param.)"); + + const lo_w = calcPage.getSelectById("2_linked_W"); + const lo_wv = await calcPage.getSelectValueText(lo_w); + expect(lo_wv).toContain("Ouverture de vanne (Ouvrages, ouvrage 2)"); + + // 5. check Déver. dénoyés + await navbar.clickCalculatorTab(4); + await browser.sleep(500); + + // check target params values + const lo_br = calcPage.getSelectById("linked_BR"); + const lo_brv = await calcPage.getSelectValueText(lo_br); + expect(lo_brv).toContain("Largeur au miroir (Sec. param.)"); + }); }); diff --git a/e2e/load-malformed-files.e2e-spec.ts b/e2e/load-malformed-files.e2e-spec.ts index d561129dc..e022c9021 100644 --- a/e2e/load-malformed-files.e2e-spec.ts +++ b/e2e/load-malformed-files.e2e-spec.ts @@ -12,71 +12,71 @@ import { browser, element, by } from "protractor"; * @WARNING error messages are tested in french */ describe("ngHyd − load malformed session files − ", () => { - let startPage: AppPage; - let navbar: Navbar; - let sidenav: SideNav; + let startPage: AppPage; + let navbar: Navbar; + let sidenav: SideNav; - function init() { - startPage = new AppPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - } - beforeEach(init); + function init() { + startPage = new AppPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + } + beforeEach(init); - it("when loading session-bad-syntax.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-bad-syntax.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-bad-syntax.json"); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); - }); + await sidenav.loadSessionFile("./session/session-bad-syntax.json"); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); + }); - it("when loading session-missing-info.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-missing-info.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-missing-info.json"); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); - }); + await sidenav.loadSessionFile("./session/session-missing-info.json"); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); + }); - it("when loading session-empty-modules-list.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-empty-modules-list.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-empty-modules-list.json"); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("Le fichier ne contient aucun module"); -}); + await sidenav.loadSessionFile("./session/session-empty-modules-list.json"); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("Le fichier ne contient aucun module"); + }); -it("when loading session-format-too-old.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-format-too-old.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-format-too-old.json", false); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("Mauvaise version du format de fichier"); -}); + await sidenav.loadSessionFile("./session/session-format-too-old.json", false); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("Mauvaise version du format de fichier"); + }); }); diff --git a/e2e/load-save-session.e2e-spec.ts b/e2e/load-save-session.e2e-spec.ts index f8b6ef80c..6535d3265 100644 --- a/e2e/load-save-session.e2e-spec.ts +++ b/e2e/load-save-session.e2e-spec.ts @@ -10,87 +10,87 @@ import { PreferencesPage } from "./preferences.po"; * Save and load (serialise and unserialise) calculators to/from JSON files */ describe("ngHyd − save and load sessions", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(() => { - startPage = new AppPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - prefPage = new PreferencesPage(); - }); - - it("when loading session-6-calc.test.json file from home page, 6 calculators should be loaded", async () => { - await startPage.navigateTo(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-6-calc.test.json"); - await browser.sleep(200); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(6); - }); - - it("when loading session-optional-params.test.json file from home page, the calculator should be loaded", async () => { - await startPage.navigateTo(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-optional-params.test.json"); - await browser.sleep(200); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(1); - }); - - it("when saving a calculator, the current parameter values should be found in the file", async () => { - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - await navbar.clickNewCalculatorButton(); - - await listPage.clickMenuEntryForCalcType(2); // Section paramétrée - await browser.sleep(500); - - await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 2); // mode "trapezoidal" - - await calcPage.getInputById("Ks").clear(); // coefficient de Strickler - await browser.sleep(1000); - await calcPage.getInputById("Ks").sendKeys("42"); - await browser.sleep(1000); - - await calcPage.clickSaveCalcButton(); - - // see: https://stackoverflow.com/questions/21935696/protractor-e2e-test-case-for-downloading-pdf-file - const fs = require("fs"); - const path = require("path"); - const os = require("os"); - const filename = path.resolve(os.homedir(), "Téléchargements/session.json"); - if (fs.existsSync(filename)) { - // Make sure the browser doesn't have to rename the download. - fs.unlinkSync(filename); - } - - await calcPage.getSaveSessionButton().click(); - await browser.sleep(1000); - const fileContent = fs.readFileSync(filename, { encoding: "utf8" }); - - expect(fileContent).toContain(`"nodeType":"SectionTrapeze"`); - expect(fileContent).toContain(`{"symbol":"Ks","mode":"SINGLE","value":42}`); - }); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + prefPage = new PreferencesPage(); + }); + + it("when loading session-6-calc.test.json file from home page, 6 calculators should be loaded", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-6-calc.test.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(6); + }); + + it("when loading session-optional-params.test.json file from home page, the calculator should be loaded", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-optional-params.test.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(1); + }); + + it("when saving a calculator, the current parameter values should be found in the file", async () => { + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + await navbar.clickNewCalculatorButton(); + + await listPage.clickMenuEntryForCalcType(2); // Section paramétrée + await browser.sleep(500); + + await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 2); // mode "trapezoidal" + + await calcPage.getInputById("Ks").clear(); // coefficient de Strickler + await browser.sleep(1000); + await calcPage.getInputById("Ks").sendKeys("42"); + await browser.sleep(1000); + + await calcPage.clickSaveCalcButton(); + + // see: https://stackoverflow.com/questions/21935696/protractor-e2e-test-case-for-downloading-pdf-file + const fs = require("fs"); + const path = require("path"); + const os = require("os"); + const filename = path.resolve(os.homedir(), "Téléchargements/session.json"); + if (fs.existsSync(filename)) { + // Make sure the browser doesn't have to rename the download. + fs.unlinkSync(filename); + } + + await calcPage.getSaveSessionButton().click(); + await browser.sleep(1000); + const fileContent = fs.readFileSync(filename, { encoding: "utf8" }); + + expect(fileContent).toContain(`"nodeType":"SectionTrapeze"`); + expect(fileContent).toContain(`{"symbol":"Ks","mode":"SINGLE","value":42}`); + }); }); diff --git a/e2e/monkey-test/monkey.e2e-spec.ts b/e2e/monkey-test/monkey.e2e-spec.ts index dba016217..7166aca40 100644 --- a/e2e/monkey-test/monkey.e2e-spec.ts +++ b/e2e/monkey-test/monkey.e2e-spec.ts @@ -11,8 +11,8 @@ let navBar: Navbar; describe("Monkey test with Gremlins.js −", async () => { beforeEach(() => { - prefPage = new PreferencesPage(); - navBar = new Navbar(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); }); // keep greater than setTimeout() in GremlinHelper.ts (twice as much sounds good) diff --git a/e2e/navbar.po.ts b/e2e/navbar.po.ts index 05273efde..739d5bd0a 100644 --- a/e2e/navbar.po.ts +++ b/e2e/navbar.po.ts @@ -1,82 +1,82 @@ import { by, element, protractor } from "protractor"; export class Navbar { - getAllCalculatorTabs() { - return element.all(by.css("#tabs-container button.calculator-button")); - } + getAllCalculatorTabs() { + return element.all(by.css("#tabs-container button.calculator-button")); + } - /** - * Robust method that returns number of calculator entries, - * whether they are buttons or dropdown select options - */ - async getCalculatorEntriesCount() { - // if dropDown calculators select is visible - const dropDown = element(by.css("mat-select#selectCalculator")); - if (await dropDown.isPresent() && await dropDown.isDisplayed()) { - await dropDown.click(); - const options = (await dropDown.getAttribute("aria-owns")).split(" "); - await dropDown.sendKeys(protractor.Key.ESCAPE); // close dropdown - return options.length; - } else { - return (await element.all(by.css("#tabs-container button.calculator-button"))).length; + /** + * Robust method that returns number of calculator entries, + * whether they are buttons or dropdown select options + */ + async getCalculatorEntriesCount() { + // if dropDown calculators select is visible + const dropDown = element(by.css("mat-select#selectCalculator")); + if (await dropDown.isPresent() && await dropDown.isDisplayed()) { + await dropDown.click(); + const options = (await dropDown.getAttribute("aria-owns")).split(" "); + await dropDown.sendKeys(protractor.Key.ESCAPE); // close dropdown + return options.length; + } else { + return (await element.all(by.css("#tabs-container button.calculator-button"))).length; + } } - } - /** - * Robust method that opens the nth calculator, whether the - * calculator selector is a list of buttons or a dropdown select - */ - async openNthCalculator(n: number) { - // if dropDown calculators select is visible - const dropDown = element(by.css("mat-select#selectCalculator")); - if (await dropDown.isPresent() && await dropDown.isDisplayed()) { - await dropDown.click(); - const options = (await dropDown.getAttribute("aria-owns")).split(" "); - const optId = options[n]; - const option = element(by.id(optId)); - await option.click(); - } else { - const tabs = this.getAllCalculatorTabs(); - await tabs.get(n).click(); + /** + * Robust method that opens the nth calculator, whether the + * calculator selector is a list of buttons or a dropdown select + */ + async openNthCalculator(n: number) { + // if dropDown calculators select is visible + const dropDown = element(by.css("mat-select#selectCalculator")); + if (await dropDown.isPresent() && await dropDown.isDisplayed()) { + await dropDown.click(); + const options = (await dropDown.getAttribute("aria-owns")).split(" "); + const optId = options[n]; + const option = element(by.id(optId)); + await option.click(); + } else { + const tabs = this.getAllCalculatorTabs(); + await tabs.get(n).click(); + } } - } - getCalculatorTabForUid(uid: string) { - return element(by.css("#tabs-container button.calculator-button.calculator-uid-" + uid)); - } + getCalculatorTabForUid(uid: string) { + return element(by.css("#tabs-container button.calculator-button.calculator-uid-" + uid)); + } - getNewCalculatorButton() { - return element(by.css("#new-calculator")); - } + getNewCalculatorButton() { + return element(by.css("#new-calculator")); + } - getMenuButton() { - return element(by.css("#open-menu")); - } + getMenuButton() { + return element(by.css("#open-menu")); + } - async clickCalculatorTab(n: number) { - const tabs = this.getAllCalculatorTabs(); - await tabs.get(n).click(); - } + async clickCalculatorTab(n: number) { + const tabs = this.getAllCalculatorTabs(); + await tabs.get(n).click(); + } - async clickCalculatorTabForUid(uid: string) { - const tab = this.getCalculatorTabForUid(uid); - await tab.click(); - } + async clickCalculatorTabForUid(uid: string) { + const tab = this.getCalculatorTabForUid(uid); + await tab.click(); + } - async clickRandomCalculatorTab(n: number) { - const tabs = this.getAllCalculatorTabs(); - const l = await tabs.count(); - const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); - await tabs.get(r).click(); - } + async clickRandomCalculatorTab(n: number) { + const tabs = this.getAllCalculatorTabs(); + const l = await tabs.count(); + const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); + await tabs.get(r).click(); + } - async clickNewCalculatorButton() { - const ncb = this.getNewCalculatorButton(); - await ncb.click(); - } + async clickNewCalculatorButton() { + const ncb = this.getNewCalculatorButton(); + await ncb.click(); + } - async clickMenuButton() { - const ncb = this.getMenuButton(); - await ncb.click(); - } + async clickMenuButton() { + const ncb = this.getMenuButton(); + await ncb.click(); + } } diff --git a/e2e/navigate-through-calculators.e2e-spec.ts b/e2e/navigate-through-calculators.e2e-spec.ts index ae2dd503f..8383a7493 100644 --- a/e2e/navigate-through-calculators.e2e-spec.ts +++ b/e2e/navigate-through-calculators.e2e-spec.ts @@ -7,36 +7,36 @@ import { browser } from "protractor"; * Use navbar buttons to navigate from one open calculator to another */ describe("ngHyd − create calculators and navigate among them", () => { - let listPage: ListPage; - let calculatorPage: CalculatorPage; - let navbar: Navbar; + let listPage: ListPage; + let calculatorPage: CalculatorPage; + let navbar: Navbar; - beforeEach(() => { - listPage = new ListPage(); - calculatorPage = new CalculatorPage(); - navbar = new Navbar(); - }); + beforeEach(() => { + listPage = new ListPage(); + calculatorPage = new CalculatorPage(); + navbar = new Navbar(); + }); - it("when many calculators are open, navigating among them should not fail (all active labels should be visible)", async () => { - await listPage.navigateTo(); - // open 8 calculators - for (let i = 0; i < 6; i++) { - if (i > 0) { - await navbar.clickNewCalculatorButton(); - await browser.sleep(200); - } - await listPage.clickRandomCalculatorMenuEntry(); - } - // navigate among them - for (let i = 0; i < 10; i++) { - await navbar.clickRandomCalculatorTab(i); - // test all form labels - const labels = calculatorPage.getInputLabels(); - await labels.each(async (l) => { - const label = await l.getText(); - expect(label.length).toBeGreaterThan(0); - }); - } - // expect no error ? - }); + it("when many calculators are open, navigating among them should not fail (all active labels should be visible)", async () => { + await listPage.navigateTo(); + // open 8 calculators + for (let i = 0; i < 6; i++) { + if (i > 0) { + await navbar.clickNewCalculatorButton(); + await browser.sleep(200); + } + await listPage.clickRandomCalculatorMenuEntry(); + } + // navigate among them + for (let i = 0; i < 10; i++) { + await navbar.clickRandomCalculatorTab(i); + // test all form labels + const labels = calculatorPage.getInputLabels(); + await labels.each(async (l) => { + const label = await l.getText(); + expect(label.length).toBeGreaterThan(0); + }); + } + // expect no error ? + }); }); diff --git a/e2e/pab.e2e-spec.ts b/e2e/pab.e2e-spec.ts index 7d2e76faf..2f75f8df9 100644 --- a/e2e/pab.e2e-spec.ts +++ b/e2e/pab.e2e-spec.ts @@ -10,298 +10,298 @@ import { PreferencesPage } from "./preferences.po"; * Clone calculators */ describe("ngHyd − Passe à Bassins", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(() => { - startPage = new AppPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - prefPage = new PreferencesPage(); - }); - - describe("create PAB - ", async () => { - - beforeEach(async () => { - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + prefPage = new PreferencesPage(); }); - it("when PAB is created from scratch", async() => { - // create PAB - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(15); - // check that pab-table is present - const innerFieldsets = element.all(by.css(".pab-data-table")); - expect(await innerFieldsets.count()).toBe(1); - - // calculate PAB - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check absence of logs - expect(await calcPage.nbLogEntries()).toBe(0); - }); + describe("create PAB - ", async () => { + + beforeEach(async () => { + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("when PAB is created from scratch", async () => { + // create PAB + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(15); + // check that pab-table is present + const innerFieldsets = element.all(by.css(".pab-data-table")); + expect(await innerFieldsets.count()).toBe(1); + + // calculate PAB + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check absence of logs + expect(await calcPage.nbLogEntries()).toBe(0); + }); + + it("complete example of all PAB modules", async () => { + // PAB - chute + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(12); + const c_Z1 = calcPage.getInputById("Z1"); + await c_Z1.clear(); + await c_Z1.sendKeys("78.27"); + const c_Z2 = calcPage.getInputById("Z1"); + await c_Z2.clear(); + await c_Z2.sendKeys("74.86"); + + // PAB - nombre + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(13); + const n_DHT = calcPage.getInputById("DHT"); + await calcPage.setParamMode(n_DHT, "link"); + const n_DH = calcPage.getInputById("DH"); + await calcPage.setParamMode(n_DH, "cal"); + const n_N = calcPage.getInputById("N"); + await n_N.clear(); + await n_N.sendKeys("15"); + + // PAB - dimensions + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + const d_V = calcPage.getInputById("V"); + await calcPage.setParamMode(d_V, "cal"); + const d_Y = calcPage.getInputById("Y"); + await d_Y.clear(); + await d_Y.sendKeys("1.5"); + const d_L = calcPage.getInputById("L"); + await d_L.clear(); + await d_L.sendKeys("3.100"); + const d_W = calcPage.getInputById("W"); + await d_W.clear(); + await d_W.sendKeys("2.5"); + + // PAB - puissance dissipée (volume) + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(6); + const p_DH = calcPage.getInputById("DH"); + await calcPage.setParamMode(p_DH, "link"); + const p_Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(p_Q, "cal"); + const p_V = calcPage.getInputById("V"); + await calcPage.setParamMode(p_V, "link"); + const p_PV = calcPage.getInputById("PV"); + await p_PV.clear(); + await p_PV.sendKeys("150"); + + // PAB - cloisons + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + const cl_LB = calcPage.getInputById("LB"); + await calcPage.setParamMode(cl_LB, "link"); + const cl_BB = calcPage.getInputById("BB"); + await calcPage.setParamMode(cl_BB, "link"); + const cl_DH = calcPage.getInputById("DH"); + await calcPage.setParamMode(cl_DH, "link"); + const cl_Z1 = calcPage.getInputById("Z1"); + await calcPage.setParamMode(cl_Z1, "link"); + const cl_PB = calcPage.getInputById("PB"); + await cl_PB.clear(); + await cl_PB.sendKeys("1.5"); + + // calculate Cloisons + const calcButtonCl = calcPage.getCalculateButton(); + await calcButtonCl.click(); + + // make sure "Generate PAB" button is visible (it might be hidden behind navbar) + await browser.executeScript("window.scrollTo(0, 0);"); + // generate PAB + const genButton = calcPage.getGeneratePabButton(); + await genButton.isPresent(); + await genButton.isDisplayed(); + await genButton.click(); + const nbBassins = calcPage.getInputById("generatePabNbBassins"); + await nbBassins.clear(); + await nbBassins.sendKeys("9"); + + // click "Generate" + await element(by.css("dialog-generate-pab button#do-generate")).click(); + await browser.sleep(1000); + + // calculate PAB + const calcButtonPAB = calcPage.getCalculateButton(); + await calcButtonPAB.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + }); - it("complete example of all PAB modules", async() => { - // PAB - chute - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); - const c_Z1 = calcPage.getInputById("Z1"); - await c_Z1.clear(); - await c_Z1.sendKeys("78.27"); - const c_Z2 = calcPage.getInputById("Z1"); - await c_Z2.clear(); - await c_Z2.sendKeys("74.86"); - - // PAB - nombre - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(13); - const n_DHT = calcPage.getInputById("DHT"); - await calcPage.setParamMode(n_DHT, "link"); - const n_DH = calcPage.getInputById("DH"); - await calcPage.setParamMode(n_DH, "cal"); - const n_N = calcPage.getInputById("N"); - await n_N.clear(); - await n_N.sendKeys("15"); - - // PAB - dimensions - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - const d_V = calcPage.getInputById("V"); - await calcPage.setParamMode(d_V, "cal"); - const d_Y = calcPage.getInputById("Y"); - await d_Y.clear(); - await d_Y.sendKeys("1.5"); - const d_L = calcPage.getInputById("L"); - await d_L.clear(); - await d_L.sendKeys("3.100"); - const d_W = calcPage.getInputById("W"); - await d_W.clear(); - await d_W.sendKeys("2.5"); - - // PAB - puissance dissipée (volume) - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(6); - const p_DH = calcPage.getInputById("DH"); - await calcPage.setParamMode(p_DH, "link"); - const p_Q = calcPage.getInputById("Q"); - await calcPage.setParamMode(p_Q, "cal"); - const p_V = calcPage.getInputById("V"); - await calcPage.setParamMode(p_V, "link"); - const p_PV = calcPage.getInputById("PV"); - await p_PV.clear(); - await p_PV.sendKeys("150"); - - // PAB - cloisons - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - const cl_LB = calcPage.getInputById("LB"); - await calcPage.setParamMode(cl_LB, "link"); - const cl_BB = calcPage.getInputById("BB"); - await calcPage.setParamMode(cl_BB, "link"); - const cl_DH = calcPage.getInputById("DH"); - await calcPage.setParamMode(cl_DH, "link"); - const cl_Z1 = calcPage.getInputById("Z1"); - await calcPage.setParamMode(cl_Z1, "link"); - const cl_PB = calcPage.getInputById("PB"); - await cl_PB.clear(); - await cl_PB.sendKeys("1.5"); - - // calculate Cloisons - const calcButtonCl = calcPage.getCalculateButton(); - await calcButtonCl.click(); - - // make sure "Generate PAB" button is visible (it might be hidden behind navbar) - await browser.executeScript("window.scrollTo(0, 0);"); - // generate PAB - const genButton = calcPage.getGeneratePabButton(); - await genButton.isPresent(); - await genButton.isDisplayed(); - await genButton.click(); - const nbBassins = calcPage.getInputById("generatePabNbBassins"); - await nbBassins.clear(); - await nbBassins.sendKeys("9"); - - // click "Generate" - await element(by.css("dialog-generate-pab button#do-generate")).click(); - await browser.sleep(1000); - - // calculate PAB - const calcButtonPAB = calcPage.getCalculateButton(); - await calcButtonPAB.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); }); - }); - - describe("generate PAB - ", async () => { + describe("generate PAB - ", async () => { + + beforeEach(async () => { + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("from a Cloisons among many", async () => { + // create many Cloisons + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + // choose one of them and change its parameters + await navbar.clickCalculatorTab(1); + const Z1 = calcPage.getInputById("Z1"); + await Z1.clear(); + await Z1.sendKeys("114"); + const LB = calcPage.getInputById("LB"); + await LB.clear(); + await LB.sendKeys("11.5"); + const DH = calcPage.getInputById("DH"); + await DH.clear(); + await DH.sendKeys("0.72"); + + // calculate Cloisons + const calcButtonCl = calcPage.getCalculateButton(); + await calcButtonCl.click(); + + // make sure "Generate PAB" button is visible (it might be hidden behind navbar) + await browser.executeScript("window.scrollTo(0, 0);"); + // create PAB from it, changing modal parameters + const genButton = calcPage.getGeneratePabButton(); + await genButton.click(); + const debit = calcPage.getInputById("generatePabDebit"); + expect(await debit.getAttribute("value")).toBe("0.564"); + await debit.clear(); + await browser.sleep(300); + // send "1.6" in 3 movements, because "." triggers an error and Angular can't cope with the subsequent keys + await debit.sendKeys("1"); + await browser.sleep(300); + await debit.sendKeys("."); + await browser.sleep(300); + await debit.sendKeys("6"); + await browser.sleep(300); + const coteAmont = calcPage.getInputById("generatePabCoteAmont"); + expect(await coteAmont.getAttribute("value")).toBe("114"); + await coteAmont.clear(); + await coteAmont.sendKeys("115"); + const nbBassins = calcPage.getInputById("generatePabNbBassins"); + expect(await nbBassins.getAttribute("value")).toBe("6"); + await nbBassins.clear(); + await nbBassins.sendKeys("5"); + + // click "Generate" + await element(by.css("dialog-generate-pab button#do-generate")).click(); + await browser.sleep(1000); + + // check parameters values + const P_Q = calcPage.getInputById("Q"); + expect(await P_Q.getAttribute("value")).toBe("1.6"); + const P_Z2 = calcPage.getInputById("Z2"); + expect(await P_Z2.getAttribute("value")).toBe("111.4"); + + // check number of basins + const innerFieldsets = element.all(by.css("td.basin_number")); + expect(await innerFieldsets.count()).toBe(5); + + // calculate PAB + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + }); - beforeEach(async () => { - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); }); - it("from a Cloisons among many", async() => { - // create many Cloisons - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - // choose one of them and change its parameters - await navbar.clickCalculatorTab(1); - const Z1 = calcPage.getInputById("Z1"); - await Z1.clear(); - await Z1.sendKeys("114"); - const LB = calcPage.getInputById("LB"); - await LB.clear(); - await LB.sendKeys("11.5"); - const DH = calcPage.getInputById("DH"); - await DH.clear(); - await DH.sendKeys("0.72"); - - // calculate Cloisons - const calcButtonCl = calcPage.getCalculateButton(); - await calcButtonCl.click(); - - // make sure "Generate PAB" button is visible (it might be hidden behind navbar) - await browser.executeScript("window.scrollTo(0, 0);"); - // create PAB from it, changing modal parameters - const genButton = calcPage.getGeneratePabButton(); - await genButton.click(); - const debit = calcPage.getInputById("generatePabDebit"); - expect(await debit.getAttribute("value")).toBe("0.564"); - await debit.clear(); - await browser.sleep(300); - // send "1.6" in 3 movements, because "." triggers an error and Angular can't cope with the subsequent keys - await debit.sendKeys("1"); - await browser.sleep(300); - await debit.sendKeys("."); - await browser.sleep(300); - await debit.sendKeys("6"); - await browser.sleep(300); - const coteAmont = calcPage.getInputById("generatePabCoteAmont"); - expect(await coteAmont.getAttribute("value")).toBe("114"); - await coteAmont.clear(); - await coteAmont.sendKeys("115"); - const nbBassins = calcPage.getInputById("generatePabNbBassins"); - expect(await nbBassins.getAttribute("value")).toBe("6"); - await nbBassins.clear(); - await nbBassins.sendKeys("5"); - - // click "Generate" - await element(by.css("dialog-generate-pab button#do-generate")).click(); - await browser.sleep(1000); - - // check parameters values - const P_Q = calcPage.getInputById("Q"); - expect(await P_Q.getAttribute("value")).toBe("1.6"); - const P_Z2 = calcPage.getInputById("Z2"); - expect(await P_Z2.getAttribute("value")).toBe("111.4"); - - // check number of basins - const innerFieldsets = element.all(by.css("td.basin_number")); - expect(await innerFieldsets.count()).toBe(5); - - // calculate PAB - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - }); + describe("load session files - ", async () => { + + it("complete example of all PAB modules", async () => { + await startPage.navigateTo(); + // load + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-pab-complete.json"); + await browser.sleep(500); + // check existence of the loaded modules + expect(await navbar.getAllCalculatorTabs().count()).toBe(6); + + // check parameters values + await navbar.clickCalculatorTab(5); + await browser.sleep(700); + const P_Q = calcPage.getInputById("Q"); + expect(await P_Q.getAttribute("value")).toBe("0.275"); + const P_Z2 = calcPage.getInputById("Z2"); + expect(await P_Z2.getAttribute("value")).toBe("74.865"); + // check number of basins + const innerFieldsets = element.all(by.css("td.basin_number")); + expect(await innerFieldsets.count()).toBe(15); + + // calculate PAB + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check absence of logs + expect(await calcPage.nbLogEntries()).toBe(0); + }); - }); - - describe("load session files - ", async () => { - - it("complete example of all PAB modules", async() => { - await startPage.navigateTo(); - // load - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-pab-complete.json"); - await browser.sleep(500); - // check existence of the loaded modules - expect(await navbar.getAllCalculatorTabs().count()).toBe(6); - - // check parameters values - await navbar.clickCalculatorTab(5); - await browser.sleep(700); - const P_Q = calcPage.getInputById("Q"); - expect(await P_Q.getAttribute("value")).toBe("0.275"); - const P_Z2 = calcPage.getInputById("Z2"); - expect(await P_Z2.getAttribute("value")).toBe("74.865"); - // check number of basins - const innerFieldsets = element.all(by.css("td.basin_number")); - expect(await innerFieldsets.count()).toBe(15); - - // calculate PAB - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check absence of logs - expect(await calcPage.nbLogEntries()).toBe(0); }); - }); - - describe("load regulated variated PAB with calc errors - ", async () => { - - it("should display logs", async() => { - await startPage.navigateTo(); - // load - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-pab-regulee-variee.json"); - await browser.sleep(500); - // check existence of the loaded module - expect(await navbar.getAllCalculatorTabs().count()).toBe(1); - await navbar.clickCalculatorTab(0); - - // calculate - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check presence of logs - await browser.sleep(300); - expect(await calcPage.nbLogEntries()).toBe(2); - - // change iteration - const pve = calcPage.getSelectById("pab-variating-element"); - calcPage.changeSelectValue(pve, 3); - await browser.sleep(300); - // check absence of logs - expect(await calcPage.nbLogEntries()).toBe(2); - }); + describe("load regulated variated PAB with calc errors - ", async () => { + + it("should display logs", async () => { + await startPage.navigateTo(); + // load + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-pab-regulee-variee.json"); + await browser.sleep(500); + // check existence of the loaded module + expect(await navbar.getAllCalculatorTabs().count()).toBe(1); + await navbar.clickCalculatorTab(0); + + // calculate + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check presence of logs + await browser.sleep(300); + expect(await calcPage.nbLogEntries()).toBe(2); + + // change iteration + const pve = calcPage.getSelectById("pab-variating-element"); + calcPage.changeSelectValue(pve, 3); + await browser.sleep(300); + // check absence of logs + expect(await calcPage.nbLogEntries()).toBe(2); + }); - }); + }); }); diff --git a/e2e/preferences.e2e-spec.ts b/e2e/preferences.e2e-spec.ts index dcd4234ef..e2ac77205 100644 --- a/e2e/preferences.e2e-spec.ts +++ b/e2e/preferences.e2e-spec.ts @@ -5,67 +5,67 @@ import { browser } from "protractor"; * Open app preferences, check the default values, the validators, the language change */ describe("ngHyd − preferences page", () => { - let page: PreferencesPage; + let page: PreferencesPage; - beforeEach(() => { - page = new PreferencesPage(); - }); + beforeEach(() => { + page = new PreferencesPage(); + }); - it("when preferences are open, user should see a heading title", async () => { - await page.navigateTo(); - const text = await page.getHeader1().getText(); - expect(text.length).toBeGreaterThan(0); - }); + it("when preferences are open, user should see a heading title", async () => { + await page.navigateTo(); + const text = await page.getHeader1().getText(); + expect(text.length).toBeGreaterThan(0); + }); - it("when preferences are open, no label should be empty", async () => { - const labels = page.getInputLabels(); - await labels.each(async (l) => { - const label = await l.getText(); - expect(label.length).toBeGreaterThan(0); + it("when preferences are open, no label should be empty", async () => { + const labels = page.getInputLabels(); + await labels.each(async (l) => { + const label = await l.getText(); + expect(label.length).toBeGreaterThan(0); + }); }); - }); - it("when preferences are open, no input field should be empty", async () => { - const numericFields = page.getNumericFormFields(); - await numericFields.each(async (nf) => { - const input = page.getInputForField(nf); - const val = await input.getAttribute("value"); - expect(val).toBeTruthy(); + it("when preferences are open, no input field should be empty", async () => { + const numericFields = page.getNumericFormFields(); + await numericFields.each(async (nf) => { + const input = page.getInputForField(nf); + const val = await input.getAttribute("value"); + expect(val).toBeTruthy(); + }); }); - }); - it("when erroneous values are input, errors should appear", async () => { - const numericFields = page.getNumericFormFields(); - await numericFields.each(async (nf) => { - // add a letter after the numerical value - await page.getInputForField(nf).sendKeys("d"); - expect(page.getErrorsForField(nf).isPresent()).toBe(true); - // empty input - await page.getInputForField(nf).clear(); - expect(page.getErrorsForField(nf).isPresent()).toBe(true); - // send bad value - await page.getInputForField(nf).sendKeys("50000"); - expect(page.getErrorsForField(nf).isPresent()).toBe(true); + it("when erroneous values are input, errors should appear", async () => { + const numericFields = page.getNumericFormFields(); + await numericFields.each(async (nf) => { + // add a letter after the numerical value + await page.getInputForField(nf).sendKeys("d"); + expect(page.getErrorsForField(nf).isPresent()).toBe(true); + // empty input + await page.getInputForField(nf).clear(); + expect(page.getErrorsForField(nf).isPresent()).toBe(true); + // send bad value + await page.getInputForField(nf).sendKeys("50000"); + expect(page.getErrorsForField(nf).isPresent()).toBe(true); + }); }); - }); - it("when correct values are input, errors should disappear", async () => { - const numericFields = page.getNumericFormFields(); - await numericFields.each(async (nf) => { - // send correct value - await page.getInputForField(nf).clear(); - await page.getInputForField(nf).sendKeys("1"); - expect(page.getErrorsForField(nf).isPresent()).toBe(false); + it("when correct values are input, errors should disappear", async () => { + const numericFields = page.getNumericFormFields(); + await numericFields.each(async (nf) => { + // send correct value + await page.getInputForField(nf).clear(); + await page.getInputForField(nf).sendKeys("1"); + expect(page.getErrorsForField(nf).isPresent()).toBe(false); + }); }); - }); - it("when language is changed, language should change", async () => { - await page.changeLanguage(0); - await browser.sleep(200); - const val1 = await page.getHeader1().getText(); - await page.changeLanguage(1); - await browser.sleep(200); - const val2 = await page.getHeader1().getText(); - expect(val1).not.toEqual(val2); - }); + it("when language is changed, language should change", async () => { + await page.changeLanguage(0); + await browser.sleep(200); + const val1 = await page.getHeader1().getText(); + await page.changeLanguage(1); + await browser.sleep(200); + const val2 = await page.getHeader1().getText(); + expect(val1).not.toEqual(val2); + }); }); diff --git a/e2e/preferences.po.ts b/e2e/preferences.po.ts index f5fe84248..038b2d18d 100644 --- a/e2e/preferences.po.ts +++ b/e2e/preferences.po.ts @@ -1,52 +1,52 @@ import { browser, by, element, ElementFinder } from "protractor"; export class PreferencesPage { - navigateTo() { - return browser.get("/#/setup"); - } - - getHeader1() { - return element(by.css("h1")); - } - - getLanguageSelect() { - return element(by.css(`mat-select[data-testid="language-select"]`)); - } - - getEmptyFieldsCheckbox() { - return element(by.css(`mat-checkbox#cb_emptyFields`)); - } - - getInputLabels() { - return element.all(by.css("label.mat-form-field-label")); - } - - getNumericFormFields() { - return element.all(by.css(`mat-form-field[data-testclass="numeric-input"]`)); - } - - getInputForField(ff: ElementFinder) { - return ff.element(by.css("input")); - } - - getErrorsForField(ff: ElementFinder) { - return ff.element(by.css("mat-error")); - } - - async changeLanguage(index: number) { - const select = this.getLanguageSelect(); - await select.click(); - const options = (await select.getAttribute("aria-owns")).split(" "); - const optId = options[index]; - const option = element(by.id(optId)); - await option.click(); - } - - async disableEvilEmptyFields() { - const cb = this.getEmptyFieldsCheckbox(); - const underlyingCB = cb.element(by.css(`input.mat-checkbox-input`)); - if (underlyingCB.isSelected()) { - await cb.click(); - } - } + navigateTo() { + return browser.get("/#/setup"); + } + + getHeader1() { + return element(by.css("h1")); + } + + getLanguageSelect() { + return element(by.css(`mat-select[data-testid="language-select"]`)); + } + + getEmptyFieldsCheckbox() { + return element(by.css(`mat-checkbox#cb_emptyFields`)); + } + + getInputLabels() { + return element.all(by.css("label.mat-form-field-label")); + } + + getNumericFormFields() { + return element.all(by.css(`mat-form-field[data-testclass="numeric-input"]`)); + } + + getInputForField(ff: ElementFinder) { + return ff.element(by.css("input")); + } + + getErrorsForField(ff: ElementFinder) { + return ff.element(by.css("mat-error")); + } + + async changeLanguage(index: number) { + const select = this.getLanguageSelect(); + await select.click(); + const options = (await select.getAttribute("aria-owns")).split(" "); + const optId = options[index]; + const option = element(by.id(optId)); + await option.click(); + } + + async disableEvilEmptyFields() { + const cb = this.getEmptyFieldsCheckbox(); + const underlyingCB = cb.element(by.css(`input.mat-checkbox-input`)); + if (underlyingCB.isSelected()) { + await cb.click(); + } + } } diff --git a/e2e/remous.e2e-spec.ts b/e2e/remous.e2e-spec.ts index 2db4e234a..5c4603946 100644 --- a/e2e/remous.e2e-spec.ts +++ b/e2e/remous.e2e-spec.ts @@ -8,43 +8,43 @@ import { PreferencesPage } from "./preferences.po"; * Remous */ describe("ngHyd − remous", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; - - beforeEach(async () => { - listPage = new ListPage(); - prefPage = new PreferencesPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - it("when leaving calculated remous page then coming back to it, logs should not be duplicated", async () => { - await navBar.clickNewCalculatorButton(); - - // 1. create new Remous - await listPage.clickMenuEntryForCalcType(4); - await browser.sleep(300); - - // 2. calculate it, there should be 6 messages in the log - await calcPage.getCalculateButton().click(); - expect(await calcPage.nbLogEntries()).toBe(6); - await browser.sleep(300); - - // 3. go to home page (simplest example) - await navBar.clickNewCalculatorButton(); - await browser.sleep(300); - - // 4. go back to Remous - await navBar.clickCalculatorTab(0); - await browser.sleep(300); - - // 5. there should still be 6 messages in the log - expect(await calcPage.nbLogEntries()).toBe(6); - }); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; + + beforeEach(async () => { + listPage = new ListPage(); + prefPage = new PreferencesPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("when leaving calculated remous page then coming back to it, logs should not be duplicated", async () => { + await navBar.clickNewCalculatorButton(); + + // 1. create new Remous + await listPage.clickMenuEntryForCalcType(4); + await browser.sleep(300); + + // 2. calculate it, there should be 6 messages in the log + await calcPage.getCalculateButton().click(); + expect(await calcPage.nbLogEntries()).toBe(6); + await browser.sleep(300); + + // 3. go to home page (simplest example) + await navBar.clickNewCalculatorButton(); + await browser.sleep(300); + + // 4. go back to Remous + await navBar.clickCalculatorTab(0); + await browser.sleep(300); + + // 5. there should still be 6 messages in the log + expect(await calcPage.nbLogEntries()).toBe(6); + }); }); diff --git a/e2e/sidenav.po.ts b/e2e/sidenav.po.ts index 8dc79467f..970a1e5b6 100644 --- a/e2e/sidenav.po.ts +++ b/e2e/sidenav.po.ts @@ -3,47 +3,47 @@ import * as path from "path"; export class SideNav { - getLoadSessionButton() { - return element(by.css("#side-nav-load-session")); - } - - getNewSessionButton() { - return element(by.css("#side-nav-empty-session")); - } - - getFileInput() { - return element(by.css(`dialog-load-session input[type="file"]`)); - } - - getFileLoadButton() { - return element(by.css(`dialog-load-session button[type="submit"]`)); - } - - getConfirmNewSessionButton() { - return element(by.css(`button#confirm-new-session`)); - } - - async clickLoadSessionButton() { - const ncb = this.getLoadSessionButton(); - await browser.sleep(500); - await ncb.click(); - } - - async clickNewSessionButton() { - const ncb = this.getNewSessionButton(); - await browser.sleep(200); - await ncb.click(); - await browser.sleep(200); - await this.getConfirmNewSessionButton().click(); - } - - async loadSessionFile(file: string, click: boolean = true) { - const absolutePath = path.resolve(__dirname, file); - const input = this.getFileInput(); - await input.sendKeys(absolutePath); - await browser.sleep(500); - if (click) { - await this.getFileLoadButton().click(); - } - } + getLoadSessionButton() { + return element(by.css("#side-nav-load-session")); + } + + getNewSessionButton() { + return element(by.css("#side-nav-empty-session")); + } + + getFileInput() { + return element(by.css(`dialog-load-session input[type="file"]`)); + } + + getFileLoadButton() { + return element(by.css(`dialog-load-session button[type="submit"]`)); + } + + getConfirmNewSessionButton() { + return element(by.css(`button#confirm-new-session`)); + } + + async clickLoadSessionButton() { + const ncb = this.getLoadSessionButton(); + await browser.sleep(500); + await ncb.click(); + } + + async clickNewSessionButton() { + const ncb = this.getNewSessionButton(); + await browser.sleep(200); + await ncb.click(); + await browser.sleep(200); + await this.getConfirmNewSessionButton().click(); + } + + async loadSessionFile(file: string, click: boolean = true) { + const absolutePath = path.resolve(__dirname, file); + const input = this.getFileInput(); + await input.sendKeys(absolutePath); + await browser.sleep(500); + if (click) { + await this.getFileLoadButton().click(); + } + } } diff --git a/e2e/solveur.e2e-spec.ts b/e2e/solveur.e2e-spec.ts index 90d60c1d0..334625f50 100644 --- a/e2e/solveur.e2e-spec.ts +++ b/e2e/solveur.e2e-spec.ts @@ -10,142 +10,142 @@ import { PreferencesPage } from "./preferences.po"; * Clone calculators */ describe("Solveur - ", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(async () => { - startPage = new AppPage(); - prefPage = new PreferencesPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - it("load > calculate", async () => { - await navbar.clickNewCalculatorButton(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-solveur-chutes.json"); - await browser.sleep(200); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(4); - await navbar.clickCalculatorTab(3); // n°3 should be the latest - - // check input values - expect(await calcPage.getInputById("Xinit").getAttribute("value")).toBe("0.5"); - expect(await calcPage.getInputById("Ytarget").getAttribute("value")).toBe("252"); - // check Nub to calculate - const ntc = calcPage.getSelectById("select_target_nub"); - const ntcV = await calcPage.getSelectValueText(ntc); - expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); - // check targetted result - const ntt = calcPage.getSelectById("select_target_result"); - const nttV = await calcPage.getSelectValueText(ntt); - expect(nttV).toContain("Puissance dissipée (PV)"); - // check searched Parameter - const sp = calcPage.getSelectById("select_searched_param"); - const spV = await calcPage.getSelectValueText(sp); - expect(spV).toContain("Z2 - Cote aval (PAB : chute)"); - - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // change targetted Nub, check that targetted result changes too - await calcPage.changeSelectValue(ntc, 0); - const nttV2 = await calcPage.getSelectValueText(ntt); - expect(nttV2).not.toContain("Puissance dissipée (PV)"); - }); - - it("create > feed > calculate > clone > calculate clone", async () => { - await navbar.clickNewCalculatorButton(); - - // 1. create empty Solveur - await listPage.clickMenuEntryForCalcType(22); // Solveur - await browser.sleep(500); - - // 2. create PAB:Chute, PAB:Nombre and PAB:Puissance linked to one another - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); // PAB:Chute - await browser.sleep(500); - await navbar.clickNewCalculatorButton(); - - await listPage.clickMenuEntryForCalcType(13); // PAB:Nombre - await browser.sleep(500); - // link DHT to PAB:Chute.DH - const dht = calcPage.getInputById("DHT"); - await calcPage.setParamMode(dht, "link"); - // Calculate DH - const dh_nombre = calcPage.getInputById("DH"); - await calcPage.setParamMode(dh_nombre, "cal"); - - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(6); // PAB:Puissance - await browser.sleep(500); - // link DH to PAB:Nombre.DH - const dh_puiss = calcPage.getInputById("DH"); - await calcPage.setParamMode(dh_puiss, "link"); - - // Go back to Solveur - await navbar.clickCalculatorTab(0); - - await calcPage.changeSelectValue(calcPage.getSelectById("select_target_nub"), 1); // "Puissance / PV" - await browser.sleep(500); - await calcPage.changeSelectValue(calcPage.getSelectById("select_searched_param"), 2); // "Chute / Z2" - await browser.sleep(500); - await calcPage.getInputById("Ytarget").sendKeys("318"); - - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" - await browser.executeScript("window.scrollTo(0, 0);"); - await calcPage.clickCloneCalcButton(); - await browser.sleep(500); - - // 4. check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().count()).toBe(5); - await navbar.clickCalculatorTab(4); // n°4 should be the latest - - // check that result is empty - const hasResultsClone1 = await calcPage.hasResults(); - expect(hasResultsClone1).toBe(false); - - // check that "compute" button is active - const calcButtonClone = calcPage.getCalculateButton(); - const disabledStateClone = await calcButtonClone.getAttribute("disabled"); - expect(disabledStateClone).not.toBe("true"); - // click "compute" button - await calcButtonClone.click(); - // check that result is not empty - const hasResultsClone2 = await calcPage.hasResults(); - expect(hasResultsClone2).toBe(true); - }); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(async () => { + startPage = new AppPage(); + prefPage = new PreferencesPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("load > calculate", async () => { + await navbar.clickNewCalculatorButton(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-solveur-chutes.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(4); + await navbar.clickCalculatorTab(3); // n°3 should be the latest + + // check input values + expect(await calcPage.getInputById("Xinit").getAttribute("value")).toBe("0.5"); + expect(await calcPage.getInputById("Ytarget").getAttribute("value")).toBe("252"); + // check Nub to calculate + const ntc = calcPage.getSelectById("select_target_nub"); + const ntcV = await calcPage.getSelectValueText(ntc); + expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); + // check targetted result + const ntt = calcPage.getSelectById("select_target_result"); + const nttV = await calcPage.getSelectValueText(ntt); + expect(nttV).toContain("Puissance dissipée (PV)"); + // check searched Parameter + const sp = calcPage.getSelectById("select_searched_param"); + const spV = await calcPage.getSelectValueText(sp); + expect(spV).toContain("Z2 - Cote aval (PAB : chute)"); + + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // change targetted Nub, check that targetted result changes too + await calcPage.changeSelectValue(ntc, 0); + const nttV2 = await calcPage.getSelectValueText(ntt); + expect(nttV2).not.toContain("Puissance dissipée (PV)"); + }); + + it("create > feed > calculate > clone > calculate clone", async () => { + await navbar.clickNewCalculatorButton(); + + // 1. create empty Solveur + await listPage.clickMenuEntryForCalcType(22); // Solveur + await browser.sleep(500); + + // 2. create PAB:Chute, PAB:Nombre and PAB:Puissance linked to one another + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(12); // PAB:Chute + await browser.sleep(500); + await navbar.clickNewCalculatorButton(); + + await listPage.clickMenuEntryForCalcType(13); // PAB:Nombre + await browser.sleep(500); + // link DHT to PAB:Chute.DH + const dht = calcPage.getInputById("DHT"); + await calcPage.setParamMode(dht, "link"); + // Calculate DH + const dh_nombre = calcPage.getInputById("DH"); + await calcPage.setParamMode(dh_nombre, "cal"); + + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(6); // PAB:Puissance + await browser.sleep(500); + // link DH to PAB:Nombre.DH + const dh_puiss = calcPage.getInputById("DH"); + await calcPage.setParamMode(dh_puiss, "link"); + + // Go back to Solveur + await navbar.clickCalculatorTab(0); + + await calcPage.changeSelectValue(calcPage.getSelectById("select_target_nub"), 1); // "Puissance / PV" + await browser.sleep(500); + await calcPage.changeSelectValue(calcPage.getSelectById("select_searched_param"), 2); // "Chute / Z2" + await browser.sleep(500); + await calcPage.getInputById("Ytarget").sendKeys("318"); + + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(500); + + // 4. check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(5); + await navbar.clickCalculatorTab(4); // n°4 should be the latest + + // check that result is empty + const hasResultsClone1 = await calcPage.hasResults(); + expect(hasResultsClone1).toBe(false); + + // check that "compute" button is active + const calcButtonClone = calcPage.getCalculateButton(); + const disabledStateClone = await calcButtonClone.getAttribute("disabled"); + expect(disabledStateClone).not.toBe("true"); + // click "compute" button + await calcButtonClone.click(); + // check that result is not empty + const hasResultsClone2 = await calcPage.hasResults(); + expect(hasResultsClone2).toBe(true); + }); }); -- GitLab From 66f6cbc36f2026ef4841e22bd32db12da2125e6b Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 13 Aug 2020 10:49:01 +0200 Subject: [PATCH 071/101] Fix #409 - autoformat --- src/app/app.component.ts | 1622 ++++++++--------- src/app/app.module.ts | 306 ++-- .../app-setup/app-setup.component.html | 201 +- .../calculator-list.component.html | 14 +- .../dialog-confirm-close-calc.component.html | 32 +- .../dialog-confirm-close-calc.component.ts | 14 +- ...ialog-confirm-empty-session.component.html | 16 +- .../dialog-confirm-empty-session.component.ts | 8 +- .../dialog-edit-pab.component.html | 118 +- .../dialog-edit-pab.component.ts | 338 ++-- .../dialog-edit-param-computed.component.html | 24 +- .../dialog-edit-param-computed.component.ts | 30 +- .../dialog-edit-param-values.component.html | 81 +- .../dialog-generate-pab.component.html | 90 +- .../dialog-generate-pab.component.ts | 144 +- ...log-generate-par-simulation.component.html | 42 +- ...ialog-generate-par-simulation.component.ts | 184 +- ...alog-load-predefined-espece.component.html | 38 +- .../dialog-load-session.component.html | 115 +- .../dialog-load-session.component.ts | 270 +-- .../dialog-log-entries-details.component.html | 8 +- .../dialog-log-entries-details.component.ts | 4 +- .../dialog-save-session.component.html | 78 +- .../dialog-save-session.component.ts | 162 +- .../field-set/field-set.component.html | 20 +- .../fixed-results.component.html | 8 +- .../var-results.component.html | 8 +- .../calculator.component.html | 61 +- .../generic-input.component.html | 6 +- .../generic-select.component.html | 17 +- .../jet-trajectory-chart.component.html | 3 +- .../log-drawer/log-drawer.component.html | 4 +- ...rugo-compound-results-table.component.html | 8 +- .../macrorugo-compound-results.component.html | 12 +- .../pab-profile-chart.component.html | 3 +- .../pab-results-table.component.html | 5 +- .../pab-results/pab-results.component.html | 6 +- .../pab-table/pab-table.component.html | 62 +- .../param-computed.component.html | 8 +- .../param-field-line.component.html | 37 +- .../param-field-line.component.ts | 4 +- .../param-link/param-link.component.html | 5 +- .../param-link/param-link.component.ts | 82 +- .../param-values/param-values.component.html | 6 +- .../quicknav/quicknav.component.html | 6 +- .../remous-results.component.html | 21 +- .../results-chart.component.html | 5 +- .../section-results.component.html | 8 +- .../session-properties.component.html | 6 +- .../session-properties.component.ts | 6 +- src/app/services/error.service.ts | 2 +- src/app/services/formulaire.service.ts | 6 +- src/environments/environment.prod.ts | 2 +- 53 files changed, 2198 insertions(+), 2168 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index f308e323b..364b60d6b 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -44,839 +44,839 @@ declare let cordova: any; declare let device: any; @Component({ - selector: "nghyd-app", - templateUrl: "./app.component.html", - styleUrls: ["./app.component.scss"], - providers: [ErrorService] + selector: "nghyd-app", + templateUrl: "./app.component.html", + styleUrls: ["./app.component.scss"], + providers: [ErrorService] }) export class AppComponent implements OnInit, OnDestroy, Observer { - @ViewChild("sidenav") - public sidenav: MatSidenav; - - @ViewChild("navbar") - public navbar: MatToolbar; - - /** current calculator, inferred from _currentFormId by setActiveCalc() (used for navbar menu) */ - public currentCalc: any; - - /** shows or hides the progressbar under the navbar */ - public showProgressBar = false; - - /** liste des modules de calcul ouverts */ - private _calculators: Array<{ - title: string, - type: CalculatorType, - uid: string, - active?: boolean, - latestAnchor?: string - }> = []; - - /** - * id du formulaire courant - * on utilise pas directement FormulaireService.currentFormId pour éviter l'erreur - * ExpressionChangedAfterItHasBeenCheckedError - */ - private _currentFormId: string; - - private _innerWidth: number; - - constructor( - private intlService: I18nService, - private appSetupService: ApplicationSetupService, - private errorService: ErrorService, - private router: Router, - private formulaireService: FormulaireService, - private httpService: HttpService, - private notificationsService: NotificationsService, - private confirmEmptySessionDialog: MatDialog, - private saveSessionDialog: MatDialog, - private loadSessionDialog: MatDialog, - private confirmCloseCalcDialog: MatDialog, - private hotkeysService: HotkeysService, - private matomoInjector: MatomoInjector, - private matomoTracker: MatomoTracker - ) { - ServiceFactory.httpService = httpService; - ServiceFactory.applicationSetupService = appSetupService; - ServiceFactory.i18nService = intlService; - ServiceFactory.formulaireService = formulaireService; - ServiceFactory.notificationsService = notificationsService; - - if (! isDevMode()) { - // évite de mettre en place un bandeau RGPD - this.matomoTracker.disableCookies(); - // Set custom dimension for Electron / Cordova / pure Web browser - this.matomoTracker.setCustomDimension(1, this.getRunningPlatform()); - // Matomo open-source Web analytics - this.matomoInjector.init("https://stasi.g-eau.fr/", 1); - } - - this.router.events.subscribe((event: Event) => { - // close side navigation when clicking a calculator tab - if (event instanceof NavigationEnd) { - this.sidenav.close(); - window.scrollTo(0, 0); - } - // [de]activate calc tabs depending on loaded route - if (event instanceof ActivationEnd) { - const path = event.snapshot.url[0].path; - if (path === "calculator") { - const calcUid = event.snapshot.params.uid; - if (this.calculatorExists(calcUid)) { - this.setActiveCalc(calcUid); - } else { - // if required calculator does not exist, redirect to list page - this.toList(); - } - } else { - this.setActiveCalc(null); + @ViewChild("sidenav") + public sidenav: MatSidenav; + + @ViewChild("navbar") + public navbar: MatToolbar; + + /** current calculator, inferred from _currentFormId by setActiveCalc() (used for navbar menu) */ + public currentCalc: any; + + /** shows or hides the progressbar under the navbar */ + public showProgressBar = false; + + /** liste des modules de calcul ouverts */ + private _calculators: Array<{ + title: string, + type: CalculatorType, + uid: string, + active?: boolean, + latestAnchor?: string + }> = []; + + /** + * id du formulaire courant + * on utilise pas directement FormulaireService.currentFormId pour éviter l'erreur + * ExpressionChangedAfterItHasBeenCheckedError + */ + private _currentFormId: string; + + private _innerWidth: number; + + constructor( + private intlService: I18nService, + private appSetupService: ApplicationSetupService, + private errorService: ErrorService, + private router: Router, + private formulaireService: FormulaireService, + private httpService: HttpService, + private notificationsService: NotificationsService, + private confirmEmptySessionDialog: MatDialog, + private saveSessionDialog: MatDialog, + private loadSessionDialog: MatDialog, + private confirmCloseCalcDialog: MatDialog, + private hotkeysService: HotkeysService, + private matomoInjector: MatomoInjector, + private matomoTracker: MatomoTracker + ) { + ServiceFactory.httpService = httpService; + ServiceFactory.applicationSetupService = appSetupService; + ServiceFactory.i18nService = intlService; + ServiceFactory.formulaireService = formulaireService; + ServiceFactory.notificationsService = notificationsService; + + if (!isDevMode()) { + // évite de mettre en place un bandeau RGPD + this.matomoTracker.disableCookies(); + // Set custom dimension for Electron / Cordova / pure Web browser + this.matomoTracker.setCustomDimension(1, this.getRunningPlatform()); + // Matomo open-source Web analytics + this.matomoInjector.init("https://stasi.g-eau.fr/", 1); } - } - }); - - // hotkeys listeners - this.hotkeysService.add(new Hotkey("alt+s", AppComponent.onHotkey(this.saveForm, this))); - this.hotkeysService.add(new Hotkey("alt+o", AppComponent.onHotkey(this.loadSession, this))); - this.hotkeysService.add(new Hotkey("alt+q", AppComponent.onHotkey(this.emptySession, this))); - this.hotkeysService.add(new Hotkey("alt+n", AppComponent.onHotkey(this.toList, this))); - this.hotkeysService.add(new Hotkey("alt+g", AppComponent.onHotkey(this.toDiagram, this))); - } - - /** - * Wrapper for hotkeys triggers, that executes given function only if - * hotkeys are enabled in app preferences - * @param func function to execute when hotkey is entered - */ - public static onHotkey(func: any, that: any) { - return (event: KeyboardEvent): boolean => { - if (ServiceFactory.applicationSetupService.enableHotkeys) { - func.call(that); - return false; // Prevent bubbling - } else { - console.log("Hotkeys are disabled in app preferences"); - } - }; - } - - public static exportAsImage(canvas: HTMLCanvasElement) { - canvas.toBlob((blob) => { - AppComponent.download(blob, "chart.png", "image/png"); - }); // defaults to image/png - } - - /** - * Exports a results data table to XLSX format, and removes "help" mentions - * from the parameters names columns if needed - * @param table results data table - * @param namesInFirstCol if true, will look for parameters names in 1st column - * (for fixed results), else in 1st row (variable results, by default) - */ - public static exportAsSpreadsheet(table: ElementRef, namesInFirstCol: boolean = false) { - const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(table); - - let regExCellKey; - if (namesInFirstCol) { - regExCellKey = new RegExp("^A\\d$"); - } else { - regExCellKey = new RegExp("^\\w1$"); - } - // browse all cells - for (const key in ws) { - // look for 1st row or 1st col - if (regExCellKey.test(key) === true) { - const regExCellName = new RegExp("help$"); - const v: string = ws[key].v; - // remove "help" from cell name's ending - if (regExCellName.test(v) === true) { - const newV = v.substr(0, v.length - 4); - ws[key].v = newV; + + this.router.events.subscribe((event: Event) => { + // close side navigation when clicking a calculator tab + if (event instanceof NavigationEnd) { + this.sidenav.close(); + window.scrollTo(0, 0); + } + // [de]activate calc tabs depending on loaded route + if (event instanceof ActivationEnd) { + const path = event.snapshot.url[0].path; + if (path === "calculator") { + const calcUid = event.snapshot.params.uid; + if (this.calculatorExists(calcUid)) { + this.setActiveCalc(calcUid); + } else { + // if required calculator does not exist, redirect to list page + this.toList(); + } + } else { + this.setActiveCalc(null); + } + } + }); + + // hotkeys listeners + this.hotkeysService.add(new Hotkey("alt+s", AppComponent.onHotkey(this.saveForm, this))); + this.hotkeysService.add(new Hotkey("alt+o", AppComponent.onHotkey(this.loadSession, this))); + this.hotkeysService.add(new Hotkey("alt+q", AppComponent.onHotkey(this.emptySession, this))); + this.hotkeysService.add(new Hotkey("alt+n", AppComponent.onHotkey(this.toList, this))); + this.hotkeysService.add(new Hotkey("alt+g", AppComponent.onHotkey(this.toDiagram, this))); + } + + /** + * Wrapper for hotkeys triggers, that executes given function only if + * hotkeys are enabled in app preferences + * @param func function to execute when hotkey is entered + */ + public static onHotkey(func: any, that: any) { + return (event: KeyboardEvent): boolean => { + if (ServiceFactory.applicationSetupService.enableHotkeys) { + func.call(that); + return false; // Prevent bubbling + } else { + console.log("Hotkeys are disabled in app preferences"); + } + }; + } + + public static exportAsImage(canvas: HTMLCanvasElement) { + canvas.toBlob((blob) => { + AppComponent.download(blob, "chart.png", "image/png"); + }); // defaults to image/png + } + + /** + * Exports a results data table to XLSX format, and removes "help" mentions + * from the parameters names columns if needed + * @param table results data table + * @param namesInFirstCol if true, will look for parameters names in 1st column + * (for fixed results), else in 1st row (variable results, by default) + */ + public static exportAsSpreadsheet(table: ElementRef, namesInFirstCol: boolean = false) { + const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(table); + + let regExCellKey; + if (namesInFirstCol) { + regExCellKey = new RegExp("^A\\d$"); + } else { + regExCellKey = new RegExp("^\\w1$"); } - } - } - - const wb: XLSX.WorkBook = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(wb, ws, "default"); - const wopts: any = { bookType: "xlsx", bookSST: false, type: "array" }; - const wbout = XLSX.write(wb, wopts); - AppComponent.download( - new Blob([wbout], {type: "application/octet-stream"}), - "cassiopee-results.xlsx", - "application/vnd.ms-excel" - ); - } - - /** - * Cordova-compatible file download method - * @see https://esstudio.site/2019/02/16/downloading-saving-and-opening-files-with-cordova.html - * @param blob binary object to download - * @param filename - * @param mimeType - */ - public static download(blob: Blob, filename: string, mimeType: string) { - if (window.cordova && cordova.platformId !== "browser") { - document.addEventListener("deviceready", function () { - // save file using codova-plugin-file - let storageLocation = ""; - switch (device.platform) { - case "Android": - storageLocation = cordova.file.externalDataDirectory; - break; - case "iOS": - storageLocation = cordova.file.documentsDirectory; - break; + // browse all cells + for (const key in ws) { + // look for 1st row or 1st col + if (regExCellKey.test(key) === true) { + const regExCellName = new RegExp("help$"); + const v: string = ws[key].v; + // remove "help" from cell name's ending + if (regExCellName.test(v) === true) { + const newV = v.substr(0, v.length - 4); + ws[key].v = newV; + } + } } - const folderPath = storageLocation; - window.resolveLocalFileSystemURL(folderPath, (dir) => { - dir.getFile( - filename, - { create: true }, - (file) => { - file.createWriter( - function (fileWriter) { - fileWriter.write(blob); - fileWriter.onwriteend = () => { - const url = file.toURL(); - cordova.plugins.fileOpener2.open(url, mimeType, { - error: (err) => { - console.error(err); - alert(`No app found to handle type "${mimeType}"`); + + const wb: XLSX.WorkBook = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, "default"); + const wopts: any = { bookType: "xlsx", bookSST: false, type: "array" }; + const wbout = XLSX.write(wb, wopts); + AppComponent.download( + new Blob([wbout], { type: "application/octet-stream" }), + "cassiopee-results.xlsx", + "application/vnd.ms-excel" + ); + } + + /** + * Cordova-compatible file download method + * @see https://esstudio.site/2019/02/16/downloading-saving-and-opening-files-with-cordova.html + * @param blob binary object to download + * @param filename + * @param mimeType + */ + public static download(blob: Blob, filename: string, mimeType: string) { + if (window.cordova && cordova.platformId !== "browser") { + document.addEventListener("deviceready", function () { + // save file using codova-plugin-file + let storageLocation = ""; + switch (device.platform) { + case "Android": + storageLocation = cordova.file.externalDataDirectory; + break; + case "iOS": + storageLocation = cordova.file.documentsDirectory; + break; + } + const folderPath = storageLocation; + window.resolveLocalFileSystemURL(folderPath, (dir) => { + dir.getFile( + filename, + { create: true }, + (file) => { + file.createWriter( + function (fileWriter) { + fileWriter.write(blob); + fileWriter.onwriteend = () => { + const url = file.toURL(); + cordova.plugins.fileOpener2.open(url, mimeType, { + error: (err) => { + console.error(err); + alert(`No app found to handle type "${mimeType}"`); + }, + success: () => { + console.log("success with opening the file"); + } + }); + }; + fileWriter.onerror = function (err) { + console.error(err); + }; + }, + function (err) { + console.error(err); + } + ); }, - success: () => { - console.log("success with opening the file"); + (err) => { + console.error(err); } - }); - }; - fileWriter.onerror = function (err) { - console.error(err); - }; - }, - function (err) { + ); + }, (err) => { console.error(err); - } + } ); - }, - (err) => { - console.error(err); - } + }); + } else { + saveAs(blob, filename); + } + } + + /** + * Triggered at app startup. + * Preferences are loaded by app setup service + * @see ApplicationSetupService.construct() + */ + ngOnInit() { + this.formulaireService.addObserver(this); + this.subscribeErrorService(); + this._innerWidth = window.innerWidth; + } + + ngOnDestroy() { + this.unsubscribeErrorService(); + this.formulaireService.removeObserver(this); + } + + @HostListener("window:resize", ["$event"]) + onResize(event) { + // keep track of window size for navbar tabs arrangement + this._innerWidth = window.innerWidth; + } + + public get uitextSidenavNewCalc() { + return this.intlService.localizeText("INFO_MENU_NOUVELLE_CALC"); + } + + public get uitextSidenavParams() { + return this.intlService.localizeText("INFO_SETUP_TITLE"); + } + + public get uitextSidenavLoadSession() { + return this.intlService.localizeText("INFO_MENU_LOAD_SESSION_TITLE"); + } + + public get uitextSidenavSaveSession() { + return this.intlService.localizeText("INFO_MENU_SAVE_SESSION_TITLE"); + } + + public get uitextSidenavEmptySession() { + return this.intlService.localizeText("INFO_MENU_EMPTY_SESSION_TITLE"); + } + + public get uitextSidenavDiagram() { + return this.intlService.localizeText("INFO_MENU_DIAGRAM_TITLE"); + } + + public get uitextSidenavSessionProps() { + return this.intlService.localizeText("INFO_MENU_SESSION_PROPS"); + } + + public get uitextSidenavReportBug() { + return this.intlService.localizeText("INFO_MENU_REPORT_BUG"); + } + + public get uitextSidenavHelp() { + return this.intlService.localizeText("INFO_MENU_HELP_TITLE"); + } + + public get uitextSelectCalc() { + return this.intlService.localizeText("INFO_MENU_SELECT_CALC"); + } + + public getCalculatorLabel(t: CalculatorType) { + return decodeHtml(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); + } + + public getFullCalculatorTitle(calc: { title: string, type: CalculatorType, active?: boolean }): string { + return decodeHtml(calc.title + " (" + this.getCalculatorLabel(calc.type) + ")"); + } + + public get calculators() { + return this._calculators; + } + + public get currentFormId() { + return this._currentFormId; + } + + public get currentRoute(): string { + return this.router.url; + } + + public get currentCalcUid(): string { + return this.currentCalc ? this.currentCalc.uid : undefined; + } + + public setActiveCalc(uid: string) { + this._calculators.forEach((calc) => { + calc.active = (calc.uid === uid); + }); + // mark current calc for navbar menu + const index = this.getCalculatorIndexFromId(uid); + this.currentCalc = this._calculators[index]; + } + + /** + * Close calculator using middle click on tab + */ + public onMouseUp(event: any, uid: string) { + if (event.which === 2) { + const dialogRef = this.confirmCloseCalcDialog.open( + DialogConfirmCloseCalcComponent, + { + data: { + uid: uid + }, + disableClose: true + } ); - }, (err) => { - console.error(err); - } + dialogRef.afterClosed().subscribe(result => { + if (result) { + this.formulaireService.requestCloseForm(uid); + } + }); + } + } + + /** + * Returns true if sum of open calculator tabs witdh is lower than navbar + * available space (ie. if navbar is not overflowing), false otherwise + */ + public get tabsFitInNavbar() { + // manual breakpoints + // @WARNING keep in sync with .calculator-buttons sizes in app.component.scss + let tabsLimit = 0; + if (this._innerWidth > 480) { + tabsLimit = 3; + } + if (this._innerWidth > 640) { + tabsLimit = 4; + } + if (this._innerWidth > 800) { + tabsLimit = 6; + } + + const fits = this._calculators.length <= tabsLimit; + return fits; + } + + /** + * abonnement au service d'erreurs + */ + private subscribeErrorService() { + this.errorService.addObserver(this); + } + + private unsubscribeErrorService() { + this.errorService.removeObserver(this); + } + + public get enableHeaderDoc(): boolean { + return this.currentRoute === "/list" && this._calculators.length === 0; + } + + public get enableSaveSessionMenu(): boolean { + return this._calculators.length > 0; + } + + public get enableModulesDiagramMenu(): boolean { + return this._calculators.length > 0; + } + + public get enableSessionPropertiesMenu(): boolean { + return this._calculators.length > 0; + } + + public get enableEmptySessionMenu(): boolean { + return this._calculators.length > 0; + } + + // interface Observer + + public update(sender: any, data: any): void { + if (sender instanceof FormulaireService) { + switch (data["action"]) { + case "createForm": + // add newly created form to calculators list + const f: FormulaireDefinition = data["form"]; + this._calculators.push( + { + "title": f.calculatorName, + "type": f.calculatorType, + "uid": f.uid + } + ); + + // abonnement en tant qu'observateur du nouveau formulaire + f.addObserver(this); + break; + + case "invalidFormId": + this.toList(); + break; + + case "currentFormChanged": + this._currentFormId = data["formId"]; + break; + + case "saveForm": + this.saveForm(data["form"]); + break; + + case "closeForm": + const form: FormulaireDefinition = data["form"]; + this.closeCalculator(form); + break; + } + } else if (sender instanceof FormulaireDefinition) { + switch (data["action"]) { + case "nameChanged": + this.updateCalculatorTitle(sender, data["name"]); + break; + } + } + } + + /** + * Returns true if a form having "formUid" as UID exists + * @param formId UID to look for + */ + private calculatorExists(formId: string): boolean { + return (this.getCalculatorIndexFromId(formId) > -1); + } + + private getCalculatorIndexFromId(formId: string) { + const index = this._calculators.reduce((resultIndex, calc, currIndex) => { + if (resultIndex === -1 && calc["uid"] === formId) { + resultIndex = currIndex; + } + return resultIndex; + }, -1); + + return index; + } + + private updateCalculatorTitle(f: FormulaireDefinition, title: string) { + const formIndex = this.getCalculatorIndexFromId(f.uid); + this._calculators[formIndex]["title"] = title; + } + + /** + * Saves a JSON serialised session file, for one or more calc modules + * @param calcList modules to save + * @param filename + */ + private saveSession(calcList: any[], filename: string) { + const session: string = this.buildSessionFile(calcList); + if (!isDevMode()) { + this.matomoTracker.trackEvent("userAction", "saveSession"); + } + this.formulaireService.downloadTextFile(session, filename); + } + + /** + * Builds a session file including Nubs, GUI-specific Nubs metadata, + * model settings, GUI settings + * @param calcList Nubs to save + */ + private buildSessionFile(calcList: any[]): string { + const serialiseOptions: { [key: string]: {} } = {}; + for (const c of calcList) { + if (c.selected) { + serialiseOptions[c.uid] = { // GUI-dependent metadata to add to the session file + title: c.title + }; + } + } + const settings = { + precision: this.appSetupService.computePrecision, + maxIterations: this.appSetupService.maxIterations, + displayPrecision: this.appSetupService.displayPrecision, + }; + return Session.getInstance().serialise(serialiseOptions, settings); + } + + /** + * Supprime un module de calcul **de l'interface** + * ATTENTION, ne supprime pas le module de calcul en mémoire ! + * Pour cela, utiliser FormulaireService.requestCloseForm(form.uid); + * @param form module de calcul à fermer + */ + private closeCalculator(form: FormulaireDefinition) { + const formId: string = form.uid; + + // désabonnement en tant qu'observateur + form.removeObserver(this); + // recherche du module de calcul correspondant à formId + const closedIndex = this.getCalculatorIndexFromId(formId); + + /* + * détermination du nouveau module de calcul à afficher : + * - celui après celui supprimé + * - ou celui avant celui supprimé si on supprime le dernier + */ + let newId = null; + const l = this._calculators.length; + if (l > 1) { + if (closedIndex === l - 1) { + newId = this._calculators[closedIndex - 1]["uid"]; + } else { + newId = this._calculators[closedIndex + 1]["uid"]; + } + } + + // suppression + + this._calculators = this._calculators.filter(calc => { + return formId !== calc["uid"]; + }); + + // MAJ affichage + + if (newId === null) { + this.toList(); + this._currentFormId = null; + } else { + this.toCalc(newId); + } + } + + private toList() { + this.router.navigate(["/list"]); + } + + public toDiagram() { + this.router.navigate(["/diagram"]); + } + + public toCalc(id: string) { + this.router.navigate(["/calculator", id]); + this.setActiveCalc(id); + setTimeout(() => { // @WARNING clodo trick to wait for Angular refresh + this.scrollToLatestQuicknav(id); + }, 50); + } + + /** + * restarts a fresh session by closing all calculators + */ + public emptySession() { + const dialogRef = this.confirmEmptySessionDialog.open( + DialogConfirmEmptySessionComponent, + { disableClose: true } ); - }); - } else { - saveAs(blob, filename); - } - } - - /** - * Triggered at app startup. - * Preferences are loaded by app setup service - * @see ApplicationSetupService.construct() - */ - ngOnInit() { - this.formulaireService.addObserver(this); - this.subscribeErrorService(); - this._innerWidth = window.innerWidth; - } - - ngOnDestroy() { - this.unsubscribeErrorService(); - this.formulaireService.removeObserver(this); - } - - @HostListener("window:resize", ["$event"]) - onResize(event) { - // keep track of window size for navbar tabs arrangement - this._innerWidth = window.innerWidth; - } - - public get uitextSidenavNewCalc() { - return this.intlService.localizeText("INFO_MENU_NOUVELLE_CALC"); - } - - public get uitextSidenavParams() { - return this.intlService.localizeText("INFO_SETUP_TITLE"); - } - - public get uitextSidenavLoadSession() { - return this.intlService.localizeText("INFO_MENU_LOAD_SESSION_TITLE"); - } - - public get uitextSidenavSaveSession() { - return this.intlService.localizeText("INFO_MENU_SAVE_SESSION_TITLE"); - } - - public get uitextSidenavEmptySession() { - return this.intlService.localizeText("INFO_MENU_EMPTY_SESSION_TITLE"); - } - - public get uitextSidenavDiagram() { - return this.intlService.localizeText("INFO_MENU_DIAGRAM_TITLE"); - } - - public get uitextSidenavSessionProps() { - return this.intlService.localizeText("INFO_MENU_SESSION_PROPS"); - } - - public get uitextSidenavReportBug() { - return this.intlService.localizeText("INFO_MENU_REPORT_BUG"); - } - - public get uitextSidenavHelp() { - return this.intlService.localizeText("INFO_MENU_HELP_TITLE"); - } - - public get uitextSelectCalc() { - return this.intlService.localizeText("INFO_MENU_SELECT_CALC"); - } - - public getCalculatorLabel(t: CalculatorType) { - return decodeHtml(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); - } - - public getFullCalculatorTitle(calc: { title: string, type: CalculatorType, active?: boolean }): string { - return decodeHtml(calc.title + " (" + this.getCalculatorLabel(calc.type) + ")"); - } - - public get calculators() { - return this._calculators; - } - - public get currentFormId() { - return this._currentFormId; - } - - public get currentRoute(): string { - return this.router.url; - } - - public get currentCalcUid(): string { - return this.currentCalc ? this.currentCalc.uid : undefined; - } - - public setActiveCalc(uid: string) { - this._calculators.forEach((calc) => { - calc.active = (calc.uid === uid); - }); - // mark current calc for navbar menu - const index = this.getCalculatorIndexFromId(uid); - this.currentCalc = this._calculators[index]; - } - - /** - * Close calculator using middle click on tab - */ - public onMouseUp(event: any, uid: string) { - if (event.which === 2) { - const dialogRef = this.confirmCloseCalcDialog.open( - DialogConfirmCloseCalcComponent, - { - data: { - uid: uid + dialogRef.afterClosed().subscribe(result => { + if (result) { + this.doEmptySession(); + } + }); + } + + public doEmptySession() { + // temporarily disable notifications + const oldNotifState = this.appSetupService.enableNotifications; + this.appSetupService.enableNotifications = false; + // close all calculators + for (const c of this._calculators) { + const form = this.formulaireService.getFormulaireFromId(c.uid); + this.formulaireService.requestCloseForm(form.uid); + } + // just to be sure, get rid of any Nub possibly stuck in session without any form attached + Session.getInstance().clear(); + Session.getInstance().documentation = ""; + // restore notifications + this.appSetupService.enableNotifications = oldNotifState; + } + + public loadSession() { + // création du dialogue de sélection des formulaires à sauver + const dialogRef = this.loadSessionDialog.open( + DialogLoadSessionComponent, + { disableClose: false } + ); + dialogRef.afterClosed().subscribe(result => { + if (result) { + if (result.emptySession) { + this.doEmptySession(); + } + this.loadSessionFile(result.file, result.calculators); + } + }); + } + + public loadSessionFile(f: File, info?: any) { + // notes merge detection: was there already some notes ? + const existingNotes = Session.getInstance().documentation; + // load + this.formulaireService.loadSession(f, info) + .then((data) => { + if (data.hasErrors) { + this.notificationsService.notify(this.intlService.localizeText("ERROR_PROBLEM_LOADING_SESSION"), 3500); + } else { + if (data.loaded && data.loaded.length > 0) { + if (!isDevMode()) { + this.matomoTracker.trackEvent("userAction", "loadSession"); + } + // notes merge detection: was there already some notes ? + const currentNotes = Session.getInstance().documentation; + if (existingNotes !== "" && currentNotes !== existingNotes) { + this.notificationsService.notify(this.intlService.localizeText("WARNING_SESSION_LOAD_NOTES_MERGED"), 3500); + } + // go to calc or diagram depending on what was loaded + if (data.loaded.length > 1) { + this.toDiagram(); + } else { + this.toCalc(data.loaded[0]); + } + } + } + }) + .catch((err) => { + this.notificationsService.notify(this.intlService.localizeText("ERROR_LOADING_SESSION"), 3500); + console.error("error loading session - ", err); + // rollback to ensure session is clean + this.doEmptySession(); + }); + } + + /** + * Demande au client d'envoyer un email (génère un lien mailto:), pré-rempli + * avec un texte standard, et le contenu de la session au format JSON + */ + public reportBug() { + const recipient = "bug@cassiopee.g-eau.fr"; + const subject = "[ISSUE] " + this.intlService.localizeText("INFO_REPORT_BUG_SUBJECT"); + let body = this.intlService.localizeText("INFO_REPORT_BUG_BODY"); + + // add session description + + // get all forms + const list = []; + for (const c of this._calculators) { + list.push({ + title: c.title, + uid: c.uid, + selected: true + }); + } + let session = this.buildSessionFile(list); + + // compress + session = pako.deflate(session, { to: "string" }); // gzip (zlib) + session = btoa(session); // base64 + + body += session + "\n"; + body = encodeURIComponent(body); + + const mailtoURL = `mailto:${recipient}?subject=${subject}&body=${body}`; + + // temporarily disable tab closing alert, as tab won't be closed for real + this.appSetupService.warnBeforeTabClose = false; + window.location.href = mailtoURL; + this.appSetupService.warnBeforeTabClose = true; + } + + public get revisionInfo(): any { + return { + jalhyd: { + date: jalhydDateRev, + version: jalhydVersion, }, - disableClose: true + nghyd: { + date: nghydDateRev, + version: nghydVersion + } + }; + } + + /** + * sauvegarde du/des formulaires + * @param form formulaire à sélectionner par défaut dans la liste + */ + public saveForm(form?: FormulaireDefinition) { + // liste des formulaires + const list = []; + for (const c of this._calculators) { + const uid = c["uid"]; + const nub = Session.getInstance().findNubByUid(uid); + let required = nub.getTargettedNubs().map((req) => { + return req.uid; + }); + required = required.filter( + (item, index) => required.indexOf(item) === index // deduplicate + ); + list.push({ + "children": nub.getChildren().map((child) => { + return child.uid; + }), + "requires": required, + "selected": form ? (uid === form.uid) : true, + "title": c["title"], + "uid": uid + }); } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - this.formulaireService.requestCloseForm(uid); - } - }); - } - } - - /** - * Returns true if sum of open calculator tabs witdh is lower than navbar - * available space (ie. if navbar is not overflowing), false otherwise - */ - public get tabsFitInNavbar() { - // manual breakpoints - // @WARNING keep in sync with .calculator-buttons sizes in app.component.scss - let tabsLimit = 0; - if (this._innerWidth > 480) { - tabsLimit = 3; - } - if (this._innerWidth > 640) { - tabsLimit = 4; - } - if (this._innerWidth > 800) { - tabsLimit = 6; - } - - const fits = this._calculators.length <= tabsLimit; - return fits; - } - - /** - * abonnement au service d'erreurs - */ - private subscribeErrorService() { - this.errorService.addObserver(this); - } - - private unsubscribeErrorService() { - this.errorService.removeObserver(this); - } - - public get enableHeaderDoc(): boolean { - return this.currentRoute === "/list" && this._calculators.length === 0; - } - - public get enableSaveSessionMenu(): boolean { - return this._calculators.length > 0; - } - - public get enableModulesDiagramMenu(): boolean { - return this._calculators.length > 0; - } - - public get enableSessionPropertiesMenu(): boolean { - return this._calculators.length > 0; - } - - public get enableEmptySessionMenu(): boolean { - return this._calculators.length > 0; - } - - // interface Observer - - public update(sender: any, data: any): void { - if (sender instanceof FormulaireService) { - switch (data["action"]) { - case "createForm": - // add newly created form to calculators list - const f: FormulaireDefinition = data["form"]; - this._calculators.push( + // dialogue de sélection des formulaires à sauver + const dialogRef = this.saveSessionDialog.open( + DialogSaveSessionComponent, { - "title": f.calculatorName, - "type": f.calculatorType, - "uid": f.uid + data: { + calculators: list + }, + disableClose: false } - ); - - // abonnement en tant qu'observateur du nouveau formulaire - f.addObserver(this); - break; - - case "invalidFormId": - this.toList(); - break; - - case "currentFormChanged": - this._currentFormId = data["formId"]; - break; - - case "saveForm": - this.saveForm(data["form"]); - break; - - case "closeForm": - const form: FormulaireDefinition = data["form"]; - this.closeCalculator(form); - break; - } - } else if (sender instanceof FormulaireDefinition) { - switch (data["action"]) { - case "nameChanged": - this.updateCalculatorTitle(sender, data["name"]); - break; - } - } - } - - /** - * Returns true if a form having "formUid" as UID exists - * @param formId UID to look for - */ - private calculatorExists(formId: string): boolean { - return (this.getCalculatorIndexFromId(formId) > -1); - } - - private getCalculatorIndexFromId(formId: string) { - const index = this._calculators.reduce((resultIndex, calc, currIndex) => { - if (resultIndex === -1 && calc["uid"] === formId) { - resultIndex = currIndex; - } - return resultIndex; - }, -1); - - return index; - } - - private updateCalculatorTitle(f: FormulaireDefinition, title: string) { - const formIndex = this.getCalculatorIndexFromId(f.uid); - this._calculators[formIndex]["title"] = title; - } - - /** - * Saves a JSON serialised session file, for one or more calc modules - * @param calcList modules to save - * @param filename - */ - private saveSession(calcList: any[], filename: string) { - const session: string = this.buildSessionFile(calcList); - if (! isDevMode()) { - this.matomoTracker.trackEvent("userAction", "saveSession"); - } - this.formulaireService.downloadTextFile(session, filename); - } - - /** - * Builds a session file including Nubs, GUI-specific Nubs metadata, - * model settings, GUI settings - * @param calcList Nubs to save - */ - private buildSessionFile(calcList: any[]): string { - const serialiseOptions: { [key: string]: {} } = {}; - for (const c of calcList) { - if (c.selected) { - serialiseOptions[c.uid] = { // GUI-dependent metadata to add to the session file - title: c.title - }; - } - } - const settings = { - precision: this.appSetupService.computePrecision, - maxIterations: this.appSetupService.maxIterations, - displayPrecision: this.appSetupService.displayPrecision, - }; - return Session.getInstance().serialise(serialiseOptions, settings); - } - - /** - * Supprime un module de calcul **de l'interface** - * ATTENTION, ne supprime pas le module de calcul en mémoire ! - * Pour cela, utiliser FormulaireService.requestCloseForm(form.uid); - * @param form module de calcul à fermer - */ - private closeCalculator(form: FormulaireDefinition) { - const formId: string = form.uid; - - // désabonnement en tant qu'observateur - form.removeObserver(this); - // recherche du module de calcul correspondant à formId - const closedIndex = this.getCalculatorIndexFromId(formId); - - /* - * détermination du nouveau module de calcul à afficher : - * - celui après celui supprimé - * - ou celui avant celui supprimé si on supprime le dernier + ); + dialogRef.afterClosed().subscribe(result => { + if (result) { + let name = result.filename; + + // ajout extension ".json" + const re = /.+\.json/; + const match = re.exec(name.toLowerCase()); + if (match === null) { + name = name + ".json"; + } + + this.saveSession(result.calculators, name); + } + }); + } + + /** + * Moves the view to one of the Quicknav anchors in the page, and saves this anchor + * as the latest visited, in _calculators list + * @param itemId a Quicknav anchor id (ex: "input" or "results") */ - let newId = null; - const l = this._calculators.length; - if (l > 1) { - if (closedIndex === l - 1) { - newId = this._calculators[closedIndex - 1]["uid"]; - } else { - newId = this._calculators[closedIndex + 1]["uid"]; - } - } - - // suppression - - this._calculators = this._calculators.filter(calc => { - return formId !== calc["uid"]; - }); - - // MAJ affichage - - if (newId === null) { - this.toList(); - this._currentFormId = null; - } else { - this.toCalc(newId); - } - } - - private toList() { - this.router.navigate(["/list"]); - } - - public toDiagram() { - this.router.navigate(["/diagram"]); - } - - public toCalc(id: string) { - this.router.navigate(["/calculator", id]); - this.setActiveCalc(id); - setTimeout(() => { // @WARNING clodo trick to wait for Angular refresh - this.scrollToLatestQuicknav(id); - }, 50); - } - - /** - * restarts a fresh session by closing all calculators - */ - public emptySession() { - const dialogRef = this.confirmEmptySessionDialog.open( - DialogConfirmEmptySessionComponent, - { disableClose: true } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - this.doEmptySession(); - } - }); - } - - public doEmptySession() { - // temporarily disable notifications - const oldNotifState = this.appSetupService.enableNotifications; - this.appSetupService.enableNotifications = false; - // close all calculators - for (const c of this._calculators) { - const form = this.formulaireService.getFormulaireFromId(c.uid); - this.formulaireService.requestCloseForm(form.uid); - } - // just to be sure, get rid of any Nub possibly stuck in session without any form attached - Session.getInstance().clear(); - Session.getInstance().documentation = ""; - // restore notifications - this.appSetupService.enableNotifications = oldNotifState; - } - - public loadSession() { - // création du dialogue de sélection des formulaires à sauver - const dialogRef = this.loadSessionDialog.open( - DialogLoadSessionComponent, - { disableClose: false } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - if (result.emptySession) { - this.doEmptySession(); + public scrollToQuicknav(itemId: string, behavior: ScrollBehavior = "smooth") { + const idx = this.getCalculatorIndexFromId(this.currentFormId); + let succeeded = false; + if (idx > -1) { + const id = QuicknavComponent.prefix + itemId; + // Scroll https://stackoverflow.com/a/56391657/5986614 + const element = document.getElementById(id); + if (element && element.offsetParent !== null) { // offsetParent is null when element is not visible + const yCoordinate = element.getBoundingClientRect().top + window.pageYOffset; + window.scrollTo({ + top: yCoordinate - 60, // substract a little more than navbar height + behavior: behavior + }); + succeeded = true; + // Save position + this._calculators[idx].latestAnchor = itemId; + } } - this.loadSessionFile(result.file, result.calculators); - } - }); - } - - public loadSessionFile(f: File, info?: any) { - // notes merge detection: was there already some notes ? - const existingNotes = Session.getInstance().documentation; - // load - this.formulaireService.loadSession(f, info) - .then((data) => { - if (data.hasErrors) { - this.notificationsService.notify(this.intlService.localizeText("ERROR_PROBLEM_LOADING_SESSION"), 3500); - } else { - if (data.loaded && data.loaded.length > 0) { - if (! isDevMode()) { - this.matomoTracker.trackEvent("userAction", "loadSession"); - } - // notes merge detection: was there already some notes ? - const currentNotes = Session.getInstance().documentation; - if (existingNotes !== "" && currentNotes !== existingNotes) { - this.notificationsService.notify(this.intlService.localizeText("WARNING_SESSION_LOAD_NOTES_MERGED"), 3500); - } - // go to calc or diagram depending on what was loaded - if (data.loaded.length > 1) { - this.toDiagram(); - } else { - this.toCalc(data.loaded[0]); - } + if (!succeeded) { + // throw an error so that caller CalculatorComponent.scrollToResults() + // switches to plan B, in case we're trying to scroll to results pane + // after a module is calculated + throw Error("unable to scroll to quicknav anchor"); } - } - }) - .catch((err) => { - this.notificationsService.notify(this.intlService.localizeText("ERROR_LOADING_SESSION"), 3500); - console.error("error loading session - ", err); - // rollback to ensure session is clean - this.doEmptySession(); - }); - } - - /** - * Demande au client d'envoyer un email (génère un lien mailto:), pré-rempli - * avec un texte standard, et le contenu de la session au format JSON - */ - public reportBug() { - const recipient = "bug@cassiopee.g-eau.fr"; - const subject = "[ISSUE] " + this.intlService.localizeText("INFO_REPORT_BUG_SUBJECT"); - let body = this.intlService.localizeText("INFO_REPORT_BUG_BODY"); - - // add session description - - // get all forms - const list = []; - for (const c of this._calculators) { - list.push({ - title: c.title, - uid: c.uid, - selected: true - }); - } - let session = this.buildSessionFile(list); - - // compress - session = pako.deflate(session, { to: "string" }); // gzip (zlib) - session = btoa(session); // base64 - - body += session + "\n"; - body = encodeURIComponent(body); - - const mailtoURL = `mailto:${recipient}?subject=${subject}&body=${body}`; - - // temporarily disable tab closing alert, as tab won't be closed for real - this.appSetupService.warnBeforeTabClose = false; - window.location.href = mailtoURL; - this.appSetupService.warnBeforeTabClose = true; - } - - public get revisionInfo(): any { - return { - jalhyd: { - date: jalhydDateRev, - version: jalhydVersion, - }, - nghyd: { - date: nghydDateRev, - version: nghydVersion - } - }; - } - - /** - * sauvegarde du/des formulaires - * @param form formulaire à sélectionner par défaut dans la liste - */ - public saveForm(form?: FormulaireDefinition) { - // liste des formulaires - const list = []; - for (const c of this._calculators) { - const uid = c["uid"]; - const nub = Session.getInstance().findNubByUid(uid); - let required = nub.getTargettedNubs().map((req) => { - return req.uid; - }); - required = required.filter( - (item, index) => required.indexOf(item) === index // deduplicate - ); - list.push({ - "children": nub.getChildren().map((child) => { - return child.uid; - }), - "requires": required, - "selected": form ? (uid === form.uid) : true, - "title": c["title"], - "uid": uid - }); - } - // dialogue de sélection des formulaires à sauver - const dialogRef = this.saveSessionDialog.open( - DialogSaveSessionComponent, - { - data: { - calculators: list - }, - disableClose: false - } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - let name = result.filename; - - // ajout extension ".json" - const re = /.+\.json/; - const match = re.exec(name.toLowerCase()); - if (match === null) { - name = name + ".json"; + } + + /** + * Moves the view to the latest known Quicknav anchor of the current module + */ + public scrollToLatestQuicknav(formId: string) { + // Get position + const idx = this.getCalculatorIndexFromId(formId); + if (idx > -1) { + const itemId = this._calculators[idx].latestAnchor; + // Scroll + if (itemId) { + this.scrollToQuicknav(itemId, "auto"); + } } + } - this.saveSession(result.calculators, name); - } - }); - } - - /** - * Moves the view to one of the Quicknav anchors in the page, and saves this anchor - * as the latest visited, in _calculators list - * @param itemId a Quicknav anchor id (ex: "input" or "results") - */ - public scrollToQuicknav(itemId: string, behavior: ScrollBehavior = "smooth") { - const idx = this.getCalculatorIndexFromId(this.currentFormId); - let succeeded = false; - if (idx > -1) { - const id = QuicknavComponent.prefix + itemId; - // Scroll https://stackoverflow.com/a/56391657/5986614 - const element = document.getElementById(id); - if (element && element.offsetParent !== null) { // offsetParent is null when element is not visible - const yCoordinate = element.getBoundingClientRect().top + window.pageYOffset; - window.scrollTo({ - top: yCoordinate - 60, // substract a little more than navbar height - behavior: behavior - }); - succeeded = true; - // Save position - this._calculators[idx].latestAnchor = itemId; - } - } - if (! succeeded) { - // throw an error so that caller CalculatorComponent.scrollToResults() - // switches to plan B, in case we're trying to scroll to results pane - // after a module is calculated - throw Error("unable to scroll to quicknav anchor"); - } - } - - /** - * Moves the view to the latest known Quicknav anchor of the current module - */ - public scrollToLatestQuicknav(formId: string) { - // Get position - const idx = this.getCalculatorIndexFromId(formId); - if (idx > -1) { - const itemId = this._calculators[idx].latestAnchor; - // Scroll - if (itemId) { - this.scrollToQuicknav(itemId, "auto"); - } - } - } - - public dropCalcButton(event: CdkDragDrop<string[]>) { - moveItemInArray(this.calculators, event.previousIndex, event.currentIndex); - } - - public get docIndexPath(): string { - return "assets/docs/" + this.appSetupService.language + "/index.html"; - } - - /** - * Returns a string representing the running platform : - * "cordova", "electron", or "browser" - */ - public getRunningPlatform(): string { - let runningPlatform = "browser"; - if (navigator.userAgent.toLowerCase().indexOf("electron") > -1) { - runningPlatform = "electron"; - } else if (window.cordova) { - runningPlatform = "cordova"; - } - // console.log(">> running platform: ", runningPlatform); - return runningPlatform; - } - - /** - * détection de la fermeture de la page/navigateur et demande de confirmation - */ - @HostListener("window:beforeunload", [ "$event" ]) confirmExit($event) { - if ( - this.appSetupService.warnBeforeTabClose - && environment.production // otherwise prevents dev server to reload app after recompiling - ) { - // affecter une valeur différente de null provoque l'affichage d'un dialogue de confirmation, mais le texte n'est pas affiché - $event.returnValue = "Your data will be lost !"; + public dropCalcButton(event: CdkDragDrop<string[]>) { + moveItemInArray(this.calculators, event.previousIndex, event.currentIndex); } - } - @HostListener("keydown", [ "$event" ]) onKeydown(event: any) { - if (event.which === 38 || event.which === 40) { // up / down arrow - if (event.srcElement.type === "number") { - event.preventDefault(); - } + public get docIndexPath(): string { + return "assets/docs/" + this.appSetupService.language + "/index.html"; + } + + /** + * Returns a string representing the running platform : + * "cordova", "electron", or "browser" + */ + public getRunningPlatform(): string { + let runningPlatform = "browser"; + if (navigator.userAgent.toLowerCase().indexOf("electron") > -1) { + runningPlatform = "electron"; + } else if (window.cordova) { + runningPlatform = "cordova"; + } + // console.log(">> running platform: ", runningPlatform); + return runningPlatform; + } + + /** + * détection de la fermeture de la page/navigateur et demande de confirmation + */ + @HostListener("window:beforeunload", ["$event"]) confirmExit($event) { + if ( + this.appSetupService.warnBeforeTabClose + && environment.production // otherwise prevents dev server to reload app after recompiling + ) { + // affecter une valeur différente de null provoque l'affichage d'un dialogue de confirmation, mais le texte n'est pas affiché + $event.returnValue = "Your data will be lost !"; + } + } + + @HostListener("keydown", ["$event"]) onKeydown(event: any) { + if (event.which === 38 || event.which === 40) { // up / down arrow + if (event.srcElement.type === "number") { + event.preventDefault(); + } + } } - } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index b25a7887f..ca149bc7e 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -34,10 +34,10 @@ import { MarkdownModule, MarkedOptions } from "ngx-markdown"; import { FlexLayoutModule } from "@angular/flex-layout"; import { - CustomBreakPointsProvider, - FlexGtXxsShowHideDirective, - FlexXxsShowHideDirective, - FlexLtXsShowHideDirective + CustomBreakPointsProvider, + FlexGtXxsShowHideDirective, + FlexXxsShowHideDirective, + FlexLtXsShowHideDirective } from "./directives/flex-xxs.directive"; import { HttpClientModule } from "@angular/common/http"; @@ -109,163 +109,163 @@ import { DialogSaveSessionComponent } from "./components/dialog-save-session/dia import { JalhydAsyncModelValidationDirective } from "./directives/jalhyd-async-model-validation.directive"; import { - JalhydModelValidationDirective, - JalhydModelValidationMinDirective, - JalhydModelValidationMaxDirective, - JalhydModelValidationStepDirective + JalhydModelValidationDirective, + JalhydModelValidationMinDirective, + JalhydModelValidationMaxDirective, + JalhydModelValidationStepDirective } from "./directives/jalhyd-model-validation.directive"; import { ImmediateErrorStateMatcher } from "./formulaire/immediate-error-state-matcher"; const appRoutes: Routes = [ - { path: "list", component: CalculatorListComponent }, - { path: "calculator/:uid", component: GenericCalculatorComponent }, - { path: "setup", component: ApplicationSetupComponent }, - { path: "diagram", component: ModulesDiagramComponent }, - { path: "properties", component: SessionPropertiesComponent }, - { path: "**", redirectTo: "list", pathMatch: "full" } + { path: "list", component: CalculatorListComponent }, + { path: "calculator/:uid", component: GenericCalculatorComponent }, + { path: "setup", component: ApplicationSetupComponent }, + { path: "diagram", component: ModulesDiagramComponent }, + { path: "properties", component: SessionPropertiesComponent }, + { path: "**", redirectTo: "list", pathMatch: "full" } ]; @NgModule({ - imports: [ - FormsModule, // <-- import the FormsModule before binding with [(ngModel)] - ReactiveFormsModule, - BrowserAnimationsModule, - BrowserModule, - ChartModule, - DragDropModule, - FlexLayoutModule, - HotkeyModule.forRoot(), - HttpClientModule, - MarkdownModule.forRoot({ - markedOptions: { - provide: MarkedOptions, - useValue: { - gfm: true, - breaks: true + imports: [ + FormsModule, // <-- import the FormsModule before binding with [(ngModel)] + ReactiveFormsModule, + BrowserAnimationsModule, + BrowserModule, + ChartModule, + DragDropModule, + FlexLayoutModule, + HotkeyModule.forRoot(), + HttpClientModule, + MarkdownModule.forRoot({ + markedOptions: { + provide: MarkedOptions, + useValue: { + gfm: true, + breaks: true + } + } + }), + MatBadgeModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatDialogModule, + MaterialFileInputModule, + MatFormFieldModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatProgressBarModule, + MatRadioModule, + MatSelectModule, + MatSidenavModule, + MatSnackBarModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, + MatomoModule, + RouterModule.forRoot( + appRoutes, + { + useHash: true, // prevents reloading whole app when typing url in browser's navigation bar + enableTracing: false // debugging purposes only + } + ), + StorageServiceModule, + TableModule, + KonamiModule + ], + declarations: [ // composants, pipes et directives + AppComponent, + ApplicationSetupComponent, + BaseParamInputComponent, + CalcCanvasComponent, + CalculatorListComponent, + CalculatorNameComponent, + CalculatorResultsComponent, + DialogConfirmCloseCalcComponent, + DialogConfirmEmptySessionComponent, + DialogEditPabComponent, + DialogEditParamComputedComponent, + DialogEditParamValuesComponent, + DialogGeneratePABComponent, + DialogGeneratePARSimulationComponent, + DialogLoadPredefinedEspeceComponent, + DialogLoadSessionComponent, + DialogLogEntriesDetailsComponent, + DialogSaveSessionComponent, + FieldSetComponent, + FieldsetContainerComponent, + FixedResultsComponent, + FixedVarResultsComponent, + FlexGtXxsShowHideDirective, + FlexLtXsShowHideDirective, + FlexXxsShowHideDirective, + GenericCalculatorComponent, + ChartTypeSelectComponent, + JalhydAsyncModelValidationDirective, + JalhydModelValidationDirective, + JalhydModelValidationMinDirective, + JalhydModelValidationMaxDirective, + JalhydModelValidationStepDirective, + JetResultsComponent, + JetTrajectoryChartComponent, + LogComponent, + LogDrawerComponent, + LogEntryComponent, + ModulesDiagramComponent, + NgParamInputComponent, + PabProfileChartComponent, + PabResultsComponent, + VerificateurResultsComponent, + PabResultsTableComponent, + PabTableComponent, + VariableResultsSelectorComponent, + MacrorugoCompoundResultsComponent, + MacrorugoCompoundResultsTableComponent, + ParamComputedComponent, + ParamFieldLineComponent, + ParamLinkComponent, + ParamValuesComponent, + QuicknavComponent, + RemousResultsComponent, + ResultsChartComponent, + SectionCanvasComponent, + SectionResultsComponent, + SelectFieldLineComponent, + SessionPropertiesComponent, + VarResultsComponent + ], + entryComponents: [ + DialogConfirmCloseCalcComponent, + DialogConfirmEmptySessionComponent, + DialogEditPabComponent, + DialogEditParamComputedComponent, + DialogEditParamValuesComponent, + DialogGeneratePABComponent, + DialogGeneratePARSimulationComponent, + DialogLoadPredefinedEspeceComponent, + DialogSaveSessionComponent, + DialogLoadSessionComponent, + DialogLogEntriesDetailsComponent + ], + providers: [ // services + ApplicationSetupService, + CustomBreakPointsProvider, + FormulaireService, + HttpService, + I18nService, + NotificationsService, + { + provide: ErrorStateMatcher, + useClass: ImmediateErrorStateMatcher } - } - }), - MatBadgeModule, - MatButtonModule, - MatButtonToggleModule, - MatCardModule, - MatCheckboxModule, - MatDialogModule, - MaterialFileInputModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - MatListModule, - MatMenuModule, - MatProgressBarModule, - MatRadioModule, - MatSelectModule, - MatSidenavModule, - MatSnackBarModule, - MatTableModule, - MatTabsModule, - MatToolbarModule, - MatTooltipModule, - MatomoModule, - RouterModule.forRoot( - appRoutes, - { - useHash: true, // prevents reloading whole app when typing url in browser's navigation bar - enableTracing: false // debugging purposes only - } - ), - StorageServiceModule, - TableModule, - KonamiModule - ], - declarations: [ // composants, pipes et directives - AppComponent, - ApplicationSetupComponent, - BaseParamInputComponent, - CalcCanvasComponent, - CalculatorListComponent, - CalculatorNameComponent, - CalculatorResultsComponent, - DialogConfirmCloseCalcComponent, - DialogConfirmEmptySessionComponent, - DialogEditPabComponent, - DialogEditParamComputedComponent, - DialogEditParamValuesComponent, - DialogGeneratePABComponent, - DialogGeneratePARSimulationComponent, - DialogLoadPredefinedEspeceComponent, - DialogLoadSessionComponent, - DialogLogEntriesDetailsComponent, - DialogSaveSessionComponent, - FieldSetComponent, - FieldsetContainerComponent, - FixedResultsComponent, - FixedVarResultsComponent, - FlexGtXxsShowHideDirective, - FlexLtXsShowHideDirective, - FlexXxsShowHideDirective, - GenericCalculatorComponent, - ChartTypeSelectComponent, - JalhydAsyncModelValidationDirective, - JalhydModelValidationDirective, - JalhydModelValidationMinDirective, - JalhydModelValidationMaxDirective, - JalhydModelValidationStepDirective, - JetResultsComponent, - JetTrajectoryChartComponent, - LogComponent, - LogDrawerComponent, - LogEntryComponent, - ModulesDiagramComponent, - NgParamInputComponent, - PabProfileChartComponent, - PabResultsComponent, - VerificateurResultsComponent, - PabResultsTableComponent, - PabTableComponent, - VariableResultsSelectorComponent, - MacrorugoCompoundResultsComponent, - MacrorugoCompoundResultsTableComponent, - ParamComputedComponent, - ParamFieldLineComponent, - ParamLinkComponent, - ParamValuesComponent, - QuicknavComponent, - RemousResultsComponent, - ResultsChartComponent, - SectionCanvasComponent, - SectionResultsComponent, - SelectFieldLineComponent, - SessionPropertiesComponent, - VarResultsComponent - ], - entryComponents: [ - DialogConfirmCloseCalcComponent, - DialogConfirmEmptySessionComponent, - DialogEditPabComponent, - DialogEditParamComputedComponent, - DialogEditParamValuesComponent, - DialogGeneratePABComponent, - DialogGeneratePARSimulationComponent, - DialogLoadPredefinedEspeceComponent, - DialogSaveSessionComponent, - DialogLoadSessionComponent, - DialogLogEntriesDetailsComponent - ], - providers: [ // services - ApplicationSetupService, - CustomBreakPointsProvider, - FormulaireService, - HttpService, - I18nService, - NotificationsService, - { - provide: ErrorStateMatcher, - useClass: ImmediateErrorStateMatcher - } - ], - schemas: [ NO_ERRORS_SCHEMA ], - bootstrap: [ AppComponent ] + ], + schemas: [NO_ERRORS_SCHEMA], + bootstrap: [AppComponent] }) export class AppModule { } diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html index 6305c1bb9..87f52357a 100644 --- a/src/app/components/app-setup/app-setup.component.html +++ b/src/app/components/app-setup/app-setup.component.html @@ -1,98 +1,105 @@ - <div class="container" fxLayout="row" fxLayoutAlign="center space-evenly"> - <mat-card id="app-setup"> - - <mat-card-header class="mat-card-header-text-margin-0"> - <mat-card-title> - <h1>{{ uitextTitle }}</h1> - </mat-card-title> - - <button type="button" mat-icon-button (click)="storePreferences()" [title]="uitextStorePreferences"> - <mat-icon>file_download</mat-icon> - </button> - <button type="button" mat-icon-button (click)="restoreDefaultValues()" [title]="uitextRestoreDefaultValues"> - <mat-icon>settings_backup_restore</mat-icon> - </button> - </mat-card-header> - - <mat-card-content> - <!-- template-driven form --> - <form> - - <!-- précision d'affichage --> - <mat-form-field data-testclass="numeric-input"> - <input matInput [placeholder]="uitextDisplayAccuracy" #dp="ngModel" name="dp" inputmode="numeric" - [ngModel]="displayPrec.value" (ngModelChange)="!dp.invalid ? displayPrec.setValue($event): null" - pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required [appJalhydModelValidation]="displayPrec"> - - <mat-error *ngIf="dp.invalid && (dp.dirty || dp.touched)"> - <div *ngIf="dp.errors.required || dp.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! dp.errors.required && dp.errors.jalhydModel" [innerHTML]="dp.errors.jalhydModel.message"> - </div> - </mat-error> - </mat-form-field> - - <!-- précision de calcul --> - <mat-form-field data-testclass="numeric-input"> - <input matInput [placeholder]="uitextComputeAccuracy" #cp="ngModel" name="cp" inputmode="numeric" - [ngModel]="computePrec.value" (ngModelChange)="!cp.invalid ? computePrec.setValue($event): null" - pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required [appJalhydModelValidation]="computePrec"> - - <mat-error *ngIf="cp.invalid"> - <div *ngIf="cp.errors.required || cp.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! cp.errors.required && cp.errors.jalhydModel" [innerHTML]="cp.errors.jalhydModel.message"> - </div> - </mat-error> - </mat-form-field> - - <!-- nombre d'itérations max Newton --> - <mat-form-field data-testclass="numeric-input"> - <input matInput [placeholder]="uitextNewtonMaxIteration" #nmi="ngModel" name="nmi" inputmode="numeric" - [ngModel]="newtonMaxIter.value" (ngModelChange)="!nmi.invalid ? newtonMaxIter.setValue($event): null" - pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required [appJalhydModelValidation]="newtonMaxIter"> - - <mat-error *ngIf="nmi.invalid && (nmi.dirty || nmi.touched)"> - <div *ngIf="nmi.errors.required || nmi.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! nmi.errors.required && nmi.errors.jalhydModel" [innerHTML]="nmi.errors.jalhydModel.message"> - </div> - </mat-error> - </mat-form-field> - - <!-- notifications (snackbar) --> - <mat-checkbox id="cb_notifications" class="wrapped-checkbox" name="notifications" - [(ngModel)]="enableNotifications" [ngModelOptions]="{standalone: true}"> - {{ uitextEnableNotifications }} - </mat-checkbox> - - <!-- hotkeys --> - <mat-checkbox id="cb_hotkeys" class="wrapped-checkbox" name="hotkeys" - [(ngModel)]="enableHotkeys" [ngModelOptions]="{standalone: true}"> - {{ uitextEnableHotkeys }} - </mat-checkbox> - - <!-- empty all fields when creating a new form --> - <mat-checkbox id="cb_emptyFields" class="wrapped-checkbox" name="emptyFields" - [(ngModel)]="enableEmptyFieldsOnFormInit" [ngModelOptions]="{standalone: true}"> - {{ uitextEnableEmptyFieldsOnFormInit }} - </mat-checkbox> - - <!-- langue --> - <mat-form-field> - <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode" data-testid="language-select"> - <mat-option *ngFor="let l of availableLanguages | keyvalue" [value]="l.key" [title]="l.value"> - {{ l.value }} - </mat-option> - </mat-select> - </mat-form-field> - - </form> - </mat-card-content> - - </mat-card> -</div> + <mat-card id="app-setup"> + + <mat-card-header class="mat-card-header-text-margin-0"> + <mat-card-title> + <h1>{{ uitextTitle }}</h1> + </mat-card-title> + + <button type="button" mat-icon-button (click)="storePreferences()" [title]="uitextStorePreferences"> + <mat-icon>file_download</mat-icon> + </button> + <button type="button" mat-icon-button (click)="restoreDefaultValues()" [title]="uitextRestoreDefaultValues"> + <mat-icon>settings_backup_restore</mat-icon> + </button> + </mat-card-header> + + <mat-card-content> + <!-- template-driven form --> + <form> + + <!-- précision d'affichage --> + <mat-form-field data-testclass="numeric-input"> + <input matInput [placeholder]="uitextDisplayAccuracy" #dp="ngModel" name="dp" inputmode="numeric" + [ngModel]="displayPrec.value" (ngModelChange)="!dp.invalid ? displayPrec.setValue($event): null" + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required + [appJalhydModelValidation]="displayPrec"> + + <mat-error *ngIf="dp.invalid && (dp.dirty || dp.touched)"> + <div *ngIf="dp.errors.required || dp.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! dp.errors.required && dp.errors.jalhydModel" + [innerHTML]="dp.errors.jalhydModel.message"> + </div> + </mat-error> + </mat-form-field> + + <!-- précision de calcul --> + <mat-form-field data-testclass="numeric-input"> + <input matInput [placeholder]="uitextComputeAccuracy" #cp="ngModel" name="cp" inputmode="numeric" + [ngModel]="computePrec.value" (ngModelChange)="!cp.invalid ? computePrec.setValue($event): null" + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required + [appJalhydModelValidation]="computePrec"> + + <mat-error *ngIf="cp.invalid"> + <div *ngIf="cp.errors.required || cp.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! cp.errors.required && cp.errors.jalhydModel" + [innerHTML]="cp.errors.jalhydModel.message"> + </div> + </mat-error> + </mat-form-field> + + <!-- nombre d'itérations max Newton --> + <mat-form-field data-testclass="numeric-input"> + <input matInput [placeholder]="uitextNewtonMaxIteration" #nmi="ngModel" name="nmi" + inputmode="numeric" [ngModel]="newtonMaxIter.value" + (ngModelChange)="!nmi.invalid ? newtonMaxIter.setValue($event): null" + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required + [appJalhydModelValidation]="newtonMaxIter"> + + <mat-error *ngIf="nmi.invalid && (nmi.dirty || nmi.touched)"> + <div *ngIf="nmi.errors.required || nmi.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! nmi.errors.required && nmi.errors.jalhydModel" + [innerHTML]="nmi.errors.jalhydModel.message"> + </div> + </mat-error> + </mat-form-field> + + <!-- notifications (snackbar) --> + <mat-checkbox id="cb_notifications" class="wrapped-checkbox" name="notifications" + [(ngModel)]="enableNotifications" [ngModelOptions]="{standalone: true}"> + {{ uitextEnableNotifications }} + </mat-checkbox> + + <!-- hotkeys --> + <mat-checkbox id="cb_hotkeys" class="wrapped-checkbox" name="hotkeys" [(ngModel)]="enableHotkeys" + [ngModelOptions]="{standalone: true}"> + {{ uitextEnableHotkeys }} + </mat-checkbox> + + <!-- empty all fields when creating a new form --> + <mat-checkbox id="cb_emptyFields" class="wrapped-checkbox" name="emptyFields" + [(ngModel)]="enableEmptyFieldsOnFormInit" [ngModelOptions]="{standalone: true}"> + {{ uitextEnableEmptyFieldsOnFormInit }} + </mat-checkbox> + + <!-- langue --> + <mat-form-field> + <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode" + data-testid="language-select"> + <mat-option *ngFor="let l of availableLanguages | keyvalue" [value]="l.key" [title]="l.value"> + {{ l.value }} + </mat-option> + </mat-select> + </mat-form-field> + + </form> + </mat-card-content> + + </mat-card> +</div> \ No newline at end of file diff --git a/src/app/components/calculator-list/calculator-list.component.html b/src/app/components/calculator-list/calculator-list.component.html index 23db26dca..904c6d994 100644 --- a/src/app/components/calculator-list/calculator-list.component.html +++ b/src/app/components/calculator-list/calculator-list.component.html @@ -53,15 +53,15 @@ <mat-card-content> <mat-list id="examples-list" role="list"> - <mat-list-item role="listitem" *ngFor="let f of exampleFiles"> - <mat-icon color="primary">folder_open</mat-icon> - <a class="load-example" (click)="loadExample(f.path)"> - {{ f.label }} - </a> - </mat-list-item> + <mat-list-item role="listitem" *ngFor="let f of exampleFiles"> + <mat-icon color="primary">folder_open</mat-icon> + <a class="load-example" (click)="loadExample(f.path)"> + {{ f.label }} + </a> + </mat-list-item> </mat-list> </mat-card-content> </mat-card> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html index 6398d8424..c962d4288 100644 --- a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html +++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html @@ -1,26 +1,26 @@ <h1 mat-dialog-title [innerHTML]="uitextCloseCalcTitle"></h1> <div mat-dialog-content> - <div *ngIf="dependingNubs.length"> - {{ uitextDependingModules }} + <div *ngIf="dependingNubs.length"> + {{ uitextDependingModules }} - <div class="dependencies-problems"> - <mat-list role="list"> - <mat-list-item role="listitem" *ngFor="let dn of dependingNubs"> - <mat-icon color="warn">error_outline</mat-icon> {{ dn }} - </mat-list-item> - </mat-list> + <div class="dependencies-problems"> + <mat-list role="list"> + <mat-list-item role="listitem" *ngFor="let dn of dependingNubs"> + <mat-icon color="warn">error_outline</mat-icon> {{ dn }} + </mat-list-item> + </mat-list> + </div> </div> - </div> </div> <p [innerHTML]="uitextCloseCalcBody"></p> <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextNo }} - </button> - <button mat-raised-button color="warn" [mat-dialog-close]="true"> - {{ uitextYes }} - </button> -</div> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextNo }} + </button> + <button mat-raised-button color="warn" [mat-dialog-close]="true"> + {{ uitextYes }} + </button> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts index 3a4858eda..8be28ac26 100644 --- a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts +++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts @@ -8,7 +8,7 @@ import { Session } from "jalhyd"; selector: "dialog-confirm-close-calc", templateUrl: "dialog-confirm-close-calc.component.html", styleUrls: [ - "dialog-confirm-close-calc.component.scss" + "dialog-confirm-close-calc.component.scss" ] }) export class DialogConfirmCloseCalcComponent { @@ -27,27 +27,27 @@ export class DialogConfirmCloseCalcComponent { } public get uitextYes() { - return this.intlService.localizeText("INFO_OPTION_CLOSE"); + return this.intlService.localizeText("INFO_OPTION_CLOSE"); } public get uitextNo() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextCloseCalcTitle() { - return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TITRE"); + return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TITRE"); } public get uitextCloseCalcBody() { - return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TEXT"); + return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TEXT"); } public get uitextDependingModules() { - return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_DEPENDING_MODULES"); + return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_DEPENDING_MODULES"); } public get dependingNubs() { - return this._dependingNubs; + return this._dependingNubs; } } diff --git a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html index 565d03593..f9ea392d0 100644 --- a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html +++ b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html @@ -1,12 +1,12 @@ <h1 mat-dialog-title [innerHTML]="uitextEmptySessionTitle"></h1> <div mat-dialog-content> - <p [innerHTML]="uitextEmptySessionBody"></p> + <p [innerHTML]="uitextEmptySessionBody"></p> </div> <div mat-dialog-actions [attr.align]="'end'"> - <button id="cancel-new-session" mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextNo }} - </button> - <button id="confirm-new-session" mat-raised-button color="warn" [mat-dialog-close]="true"> - {{ uitextYes }} - </button> -</div> + <button id="cancel-new-session" mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextNo }} + </button> + <button id="confirm-new-session" mat-raised-button color="warn" [mat-dialog-close]="true"> + {{ uitextYes }} + </button> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts index ad892f6ea..38e2e6fc3 100644 --- a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts +++ b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts @@ -15,19 +15,19 @@ export class DialogConfirmEmptySessionComponent { ) { } public get uitextYes() { - return this.intlService.localizeText("INFO_OPTION_START_NEW"); + return this.intlService.localizeText("INFO_OPTION_START_NEW"); } public get uitextNo() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextEmptySessionTitle() { - return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TITRE"); + return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TITRE"); } public get uitextEmptySessionBody() { - return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TEXT"); + return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TEXT"); } } diff --git a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html index c5658d7f4..fd7170e38 100644 --- a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html +++ b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html @@ -2,73 +2,73 @@ <form> - <div mat-dialog-content> + <div mat-dialog-content> - <!-- récap selection --> - <div id="selection-abstract"> - {{ selectionAbstract }} - </div> + <!-- récap selection --> + <div id="selection-abstract"> + {{ selectionAbstract }} + </div> - <!-- champ à modifier --> - <mat-form-field class="select-form-field"> - <mat-select [placeholder]="uitextVariable" [(value)]="variable"> - <mat-option *ngFor="let v of availableVariables" [value]="v.value" [title]="v.label"> - {{ v.label }} - </mat-option> - </mat-select> - </mat-form-field> + <!-- champ à modifier --> + <mat-form-field class="select-form-field"> + <mat-select [placeholder]="uitextVariable" [(value)]="variable"> + <mat-option *ngFor="let v of availableVariables" [value]="v.value" [title]="v.label"> + {{ v.label }} + </mat-option> + </mat-select> + </mat-form-field> - <!-- ngDefaultControl : see https://github.com/angular/components/issues/8267 --> - <mat-radio-group ngDefaultControl [(ngModel)]="varAction" name="varAction"> + <!-- ngDefaultControl : see https://github.com/angular/components/issues/8267 --> + <mat-radio-group ngDefaultControl [(ngModel)]="varAction" name="varAction"> - <div class="radio-button-and-input-wrapper rbaiw-set-value"> - <mat-radio-button value="set-value"> - {{ uitextSetValue }} - </mat-radio-button> - <mat-form-field class="input-form-field"> - <input matInput [(ngModel)]="valueToSet" name="valueToSet" #valueToSetRef="ngModel" - required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - </mat-form-field> - <mat-error *ngIf="varAction === 'set-value' && valueToSetRef.invalid"> - {{ uitextMustBeANumber }} - </mat-error> - </div> + <div class="radio-button-and-input-wrapper rbaiw-set-value"> + <mat-radio-button value="set-value"> + {{ uitextSetValue }} + </mat-radio-button> + <mat-form-field class="input-form-field"> + <input matInput [(ngModel)]="valueToSet" name="valueToSet" #valueToSetRef="ngModel" required + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + </mat-form-field> + <mat-error *ngIf="varAction === 'set-value' && valueToSetRef.invalid"> + {{ uitextMustBeANumber }} + </mat-error> + </div> - <div class="radio-button-and-input-wrapper rbaiw-delta"> - <mat-radio-button value="delta"> - {{ uitextDelta }} - </mat-radio-button> - <mat-form-field class="input-form-field"> - <input matInput [(ngModel)]="delta" name="delta" #deltaRef="ngModel" - required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - </mat-form-field> - <mat-error *ngIf="varAction === 'delta' && deltaRef.invalid"> - {{ uitextMustBeANumber }} - </mat-error> - </div> + <div class="radio-button-and-input-wrapper rbaiw-delta"> + <mat-radio-button value="delta"> + {{ uitextDelta }} + </mat-radio-button> + <mat-form-field class="input-form-field"> + <input matInput [(ngModel)]="delta" name="delta" #deltaRef="ngModel" required + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + </mat-form-field> + <mat-error *ngIf="varAction === 'delta' && deltaRef.invalid"> + {{ uitextMustBeANumber }} + </mat-error> + </div> - <div class="radio-button-and-input-wrapper"> - <mat-radio-button value="interpolate" [disabled]="! interpolationEnabled"> - {{ uitextInterpolate }} - <span class="interpolation-bounds"> - {{ interpolationBounds }} - </span> - </mat-radio-button> - </div> + <div class="radio-button-and-input-wrapper"> + <mat-radio-button value="interpolate" [disabled]="! interpolationEnabled"> + {{ uitextInterpolate }} + <span class="interpolation-bounds"> + {{ interpolationBounds }} + </span> + </mat-radio-button> + </div> - </mat-radio-group> + </mat-radio-group> - </div> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="applyValues()" - [disabled]="buttonDisabled(valueToSetRef, deltaRef)"> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="applyValues()" + [disabled]="buttonDisabled(valueToSetRef, deltaRef)"> - {{ uitextValidate }} - </button> - </div> + {{ uitextValidate }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts index 3ae949d91..d12470e4b 100644 --- a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts +++ b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts @@ -8,190 +8,190 @@ import { sprintf } from "sprintf-js"; @Component({ selector: "dialog-edit-pab", templateUrl: "dialog-edit-pab.component.html", - styleUrls: [ "dialog-edit-pab.component.scss" ] + styleUrls: ["dialog-edit-pab.component.scss"] }) export class DialogEditPabComponent { - /** variables eligible to modification */ - public availableVariables: any[]; - - /** symbols of the variables eligible to modification */ - public availableVariableSymbols: string[]; - - /** action to apply to the variable */ - public varAction: string; - - /** value to set to all occurrences of the variable */ - public valueToSet: number; - - /** delta to apply (add) to all occurrences of the variable */ - public delta: number; - - /** true if selected devices are contained in one unique column */ - public vertical: boolean; - - /** variable to modify on every selected object */ - private _variable: string; - - /** number of selected walls and devices */ - private selectedItemsAbstract: { walls: number, wallsDevices: number, devices: number }; - - constructor( - public dialogRef: MatDialogRef<DialogEditPabComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - this.selectedItemsAbstract = this.data.selectedItemsAbstract; - this.vertical = this.data.vertical; - this.availableVariables = this.data.availableVariables; - // console.log("AV VAR", this.availableVariables); - this.availableVariableSymbols = this.availableVariables.map(av => av.value); - this.variable = this.availableVariableSymbols[0]; - // default action - this.varAction = "set-value"; - // example values for validation / avoiding using a placeholder - this.valueToSet = this.availableVariables[0].first; - this.delta = 0; - } - - public get variable(): string { - return this._variable; - } - - // find available variable details from key - private findVariableDetails(variable: string): any { - let details: any; - for (const av of this.availableVariables) { - if (av.value === variable) { - details = av; - } - } - return details; - } - - // preloads valueToSet depending on variable chosen - public set variable(v: string) { - this._variable = v; - const av = this.findVariableDetails(v); - this.valueToSet = av.first; - } - - /** closes dialog and tells parent to apply modifications */ - public applyValues() { - this.dialogRef.close({ - action: this.varAction, - variable: this.variable, - value: Number(this.valueToSet), - delta: Number(this.delta), - variableDetails: this.findVariableDetails(this.variable) - }); - } - - public buttonDisabled(value: any, delta: any) { - return ( - (this.varAction === "set-value" && ! value.valid) - || (this.varAction === "delta" && ! delta.valid) - ); - } - - /** returns a short text summing up what is selected */ - public get selectionAbstract() { - let abstract = ""; - if (this.selectedItemsAbstract.walls > 0) { - // devices outside of complete walls ? - if (this.selectedItemsAbstract.devices > 0) { - abstract = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES"), - this.selectedItemsAbstract.walls, - this.selectedItemsAbstract.devices, - this.selectedItemsAbstract.wallsDevices + this.selectedItemsAbstract.devices - ); - } else { - // only complete walls - abstract = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS"), - this.selectedItemsAbstract.walls, - this.selectedItemsAbstract.wallsDevices + /** variables eligible to modification */ + public availableVariables: any[]; + + /** symbols of the variables eligible to modification */ + public availableVariableSymbols: string[]; + + /** action to apply to the variable */ + public varAction: string; + + /** value to set to all occurrences of the variable */ + public valueToSet: number; + + /** delta to apply (add) to all occurrences of the variable */ + public delta: number; + + /** true if selected devices are contained in one unique column */ + public vertical: boolean; + + /** variable to modify on every selected object */ + private _variable: string; + + /** number of selected walls and devices */ + private selectedItemsAbstract: { walls: number, wallsDevices: number, devices: number }; + + constructor( + public dialogRef: MatDialogRef<DialogEditPabComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + this.selectedItemsAbstract = this.data.selectedItemsAbstract; + this.vertical = this.data.vertical; + this.availableVariables = this.data.availableVariables; + // console.log("AV VAR", this.availableVariables); + this.availableVariableSymbols = this.availableVariables.map(av => av.value); + this.variable = this.availableVariableSymbols[0]; + // default action + this.varAction = "set-value"; + // example values for validation / avoiding using a placeholder + this.valueToSet = this.availableVariables[0].first; + this.delta = 0; + } + + public get variable(): string { + return this._variable; + } + + // find available variable details from key + private findVariableDetails(variable: string): any { + let details: any; + for (const av of this.availableVariables) { + if (av.value === variable) { + details = av; + } + } + return details; + } + + // preloads valueToSet depending on variable chosen + public set variable(v: string) { + this._variable = v; + const av = this.findVariableDetails(v); + this.valueToSet = av.first; + } + + /** closes dialog and tells parent to apply modifications */ + public applyValues() { + this.dialogRef.close({ + action: this.varAction, + variable: this.variable, + value: Number(this.valueToSet), + delta: Number(this.delta), + variableDetails: this.findVariableDetails(this.variable) + }); + } + + public buttonDisabled(value: any, delta: any) { + return ( + (this.varAction === "set-value" && !value.valid) + || (this.varAction === "delta" && !delta.valid) ); - } - } else { - // no complete wall, devices only - abstract = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_DEVICES"), - this.selectedItemsAbstract.devices - ); - } - return abstract; - } - - public variableLabel(v: string) { - const av = this.findVariableDetails(v); - return av.label; - } - - public get interpolationEnabled() { - const varDetails = this.findVariableDetails(this.variable); - return ( - this.vertical - && (this.selectedItemsAbstract.devices + this.selectedItemsAbstract.wallsDevices) > 1 - && (varDetails.occurrences > 1) - && ([ "ZRAM", "ZRMB", "ZDV" ].includes(this.variable)) - ); - } - - public get interpolationBounds() { - let bounds = ""; - if (this.interpolationEnabled) { - const varDetails = this.findVariableDetails(this.variable); - if (varDetails) { - bounds = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS"), - varDetails.first, - varDetails.last + } + + /** returns a short text summing up what is selected */ + public get selectionAbstract() { + let abstract = ""; + if (this.selectedItemsAbstract.walls > 0) { + // devices outside of complete walls ? + if (this.selectedItemsAbstract.devices > 0) { + abstract = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES"), + this.selectedItemsAbstract.walls, + this.selectedItemsAbstract.devices, + this.selectedItemsAbstract.wallsDevices + this.selectedItemsAbstract.devices + ); + } else { + // only complete walls + abstract = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS"), + this.selectedItemsAbstract.walls, + this.selectedItemsAbstract.wallsDevices + ); + } + } else { + // no complete wall, devices only + abstract = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_DEVICES"), + this.selectedItemsAbstract.devices + ); + } + return abstract; + } + + public variableLabel(v: string) { + const av = this.findVariableDetails(v); + return av.label; + } + + public get interpolationEnabled() { + const varDetails = this.findVariableDetails(this.variable); + return ( + this.vertical + && (this.selectedItemsAbstract.devices + this.selectedItemsAbstract.wallsDevices) > 1 + && (varDetails.occurrences > 1) + && (["ZRAM", "ZRMB", "ZDV"].includes(this.variable)) ); - } } - return bounds; - } - public get uitextEditPabTitle() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_TITLE"); - } + public get interpolationBounds() { + let bounds = ""; + if (this.interpolationEnabled) { + const varDetails = this.findVariableDetails(this.variable); + if (varDetails) { + bounds = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS"), + varDetails.first, + varDetails.last + ); + } + } + return bounds; + } - public get uitextVariable() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE"); - } + public get uitextEditPabTitle() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_TITLE"); + } - public get uitextSetValue() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE"); - } + public get uitextVariable() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE"); + } + + public get uitextSetValue() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE"); + } - public get uitextDelta() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_DELTA"); - } + public get uitextDelta() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_DELTA"); + } - public get uitextInterpolate() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE"); - } + public get uitextInterpolate() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE"); + } - public get uitextSetValueInput() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_SET_VALUE_INPUT"); - } + public get uitextSetValueInput() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_SET_VALUE_INPUT"); + } - public get uitextDeltaInput() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_DELTA_INPUT"); - } + public get uitextDeltaInput() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_DELTA_INPUT"); + } - public get uitextMustBeANumber(): string { - return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); - } + public get uitextMustBeANumber(): string { + return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); + } - public get uitextValidate() { - return this.intlService.localizeText("INFO_OPTION_VALIDATE"); - } + public get uitextValidate() { + return this.intlService.localizeText("INFO_OPTION_VALIDATE"); + } - public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); - } + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } } diff --git a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html index e3a40065d..0ec1a116e 100644 --- a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html +++ b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html @@ -2,17 +2,17 @@ <form> - <div mat-dialog-content> - <ngparam-input [title]="param.title" ></ngparam-input> - </div> + <div mat-dialog-content> + <ngparam-input [title]="param.title"></ngparam-input> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="true" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button color="warn" (click)="onValidate()"> - {{ uitextValidate }} - </button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="true" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button color="warn" (click)="onValidate()"> + {{ uitextValidate }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts index d971e1ea6..4984494eb 100644 --- a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts +++ b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts @@ -20,17 +20,17 @@ export class DialogEditParamComputedComponent implements OnInit { private _ngParamInputComponent: NgParamInputComponent; constructor( - public dialogRef: MatDialogRef<DialogEditParamComputedComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any + public dialogRef: MatDialogRef<DialogEditParamComputedComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any ) { - // copy given parameter in a "fake" Ngparameter - const nP = data.param as NgParameter; - const p = nP.paramDefinition as ParamDefinition; - const pDef = new ParamDefinition(undefined, p.symbol, p.domain, p.unit, p.getValue(), p.family, p.visible); - this.param = new NgParameter(pDef, undefined); - this.param.setLabel(nP.label); - this.param.unit = nP.unit; + // copy given parameter in a "fake" Ngparameter + const nP = data.param as NgParameter; + const p = nP.paramDefinition as ParamDefinition; + const pDef = new ParamDefinition(undefined, p.symbol, p.domain, p.unit, p.getValue(), p.family, p.visible); + this.param = new NgParameter(pDef, undefined); + this.param.setLabel(nP.label); + this.param.unit = nP.unit; } public get uitextCancel(): string { @@ -42,16 +42,16 @@ export class DialogEditParamComputedComponent implements OnInit { } public get uitextEditParamComputedInitialValue() { - return this.intlService.localizeText("INFO_DIALOG_COMPUTED_VALUE_TITLE"); + return this.intlService.localizeText("INFO_DIALOG_COMPUTED_VALUE_TITLE"); } public ngOnInit() { - this._ngParamInputComponent.model = this.param; + this._ngParamInputComponent.model = this.param; } public onValidate() { - this.dialogRef.close({ - value: this.param.getValue() - }); + this.dialogRef.close({ + value: this.param.getValue() + }); } } diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html index 594a6de2c..8a454d5c1 100644 --- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html +++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html @@ -5,15 +5,15 @@ <h1 mat-dialog-title>{{ uitextEditParamVariableValues }} ({{ numberOfValues }})</h1> - <div mat-dialog-content *ngIf="! viewChart"> +<div mat-dialog-content *ngIf="! viewChart"> <mat-form-field> - <mat-select [placeholder]="uiTextModeSelection" [(value)]="selectedValueMode" (selectionChange)="onValueModeChange($event)" - data-testid="variable-value-mode-select"> - <mat-option *ngFor="let e of valueModes" [value]="e.value"> - {{ e.label }} - </mat-option> - </mat-select> + <mat-select [placeholder]="uiTextModeSelection" [(value)]="selectedValueMode" + (selectionChange)="onValueModeChange($event)" data-testid="variable-value-mode-select"> + <mat-option *ngFor="let e of valueModes" [value]="e.value"> + {{ e.label }} + </mat-option> + </mat-select> </mat-form-field> <div *ngIf="isMinMax" class="min-max-step-container"> @@ -21,8 +21,8 @@ <mat-form-field> <input matInput class="form-control" type="number" inputmode="numeric" name="min-value" step="0.01" [placeholder]="uitextValeurMini" [(ngModel)]="minValue" #min="ngModel" name="min" - (input)="minMaxForm.controls.max.updateValueAndValidity()" - [appJalhydModelValidationMin]="param" required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + (input)="minMaxForm.controls.max.updateValueAndValidity()" [appJalhydModelValidationMin]="param" + required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> <mat-error *ngIf="min.errors"> <div *ngIf="min.errors.required || min.errors.pattern"> @@ -37,28 +37,27 @@ <mat-form-field> <input matInput class="form-control" type="number" inputmode="numeric" name="max-value" step="0.01" [placeholder]="uitextValeurMaxi" [(ngModel)]="maxValue" #max="ngModel" name="max" - (input)="minMaxForm.controls.min.updateValueAndValidity()" - [appJalhydModelValidationMax]="param" required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - - <mat-error *ngIf="max.errors"> - <div *ngIf="max.errors.required || max.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! max.errors.required && max.errors.jalhydModelMax"> - {{ max.errors.jalhydModelMax.message }} - </div> - </mat-error> + (input)="minMaxForm.controls.min.updateValueAndValidity()" [appJalhydModelValidationMax]="param" + required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + + <mat-error *ngIf="max.errors"> + <div *ngIf="max.errors.required || max.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! max.errors.required && max.errors.jalhydModelMax"> + {{ max.errors.jalhydModelMax.message }} + </div> + </mat-error> </mat-form-field> <mat-form-field> <input matInput class="form-control" type="number" inputmode="numeric" name="step-value" step="0.01" [placeholder]="uitextPasVariation" [(ngModel)]="stepValue" #step="ngModel" name="step" - [appJalhydModelValidationStep]="param" - required pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + [appJalhydModelValidationStep]="param" required pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - <mat-error *ngIf="step.errors"> - {{ uitextMustBePositive }} - </mat-error> + <mat-error *ngIf="step.errors"> + {{ uitextMustBePositive }} + </mat-error> </mat-form-field> </form> </div> @@ -68,7 +67,7 @@ <mat-form-field> <textarea matInput matTextareaAutosize [placeholder]="uitextListeValeurs" formControlName="valuesList" [value]="valuesList"></textarea> - <!-- (input)="valuesList = $event.target.value" --> + <!-- (input)="valuesList = $event.target.value" --> <mat-error> <span *ngIf="valuesListForm.controls.valuesList.hasError('model')"> {{ valuesListForm.controls.valuesList.errors.model }} @@ -92,8 +91,8 @@ <div fxHide.xs fxFlex.gt-xs="0 0 16px"></div> <mat-form-field class="values-file file-input-field" fxFlex.gt-xs="1 0 auto" fxFlex.lt-sm="1 0 100%"> - <ngx-mat-file-input #valuesFile [placeholder]="uitextImportFile" - (change)="onFileSelected($event)" formControlName="file"> + <ngx-mat-file-input #valuesFile [placeholder]="uitextImportFile" (change)="onFileSelected($event)" + formControlName="file"> </ngx-mat-file-input> <button mat-icon-button matSuffix *ngIf="!valuesFile.empty" (click)="valuesFile.clear($event)"> <mat-icon>clear</mat-icon> @@ -104,22 +103,22 @@ </div> <mat-form-field> - <mat-select [placeholder]="uitextExtensionStrategy" [(value)]="selectedExtensionStrategy" - data-testid="variable-extension-strategy-select"> - <mat-option *ngFor="let e of extensionStrategies" [value]="e.value" [title]="e.label"> - {{ e.label }} - </mat-option> - </mat-select> + <mat-select [placeholder]="uitextExtensionStrategy" [(value)]="selectedExtensionStrategy" + data-testid="variable-extension-strategy-select"> + <mat-option *ngFor="let e of extensionStrategies" [value]="e.value" [title]="e.label"> + {{ e.label }} + </mat-option> + </mat-select> </mat-form-field> - </div> +</div> - <div mat-dialog-content *ngIf="viewChart"> - <chart id="values-chart" type="scatter" [data]="chartData" [options]="chartOptions"> - </chart> - </div> +<div mat-dialog-content *ngIf="viewChart"> + <chart id="values-chart" type="scatter" [data]="chartData" [options]="chartOptions"> + </chart> +</div> - <div mat-dialog-actions [attr.align]="'end'"> +<div mat-dialog-actions [attr.align]="'end'"> <div *ngIf="isMinMax || viewChart"> <button mat-raised-button [mat-dialog-close]="true" [disabled]="minMaxFormInvalid" cdkFocusInitial> {{ uitextClose }} @@ -133,4 +132,4 @@ {{ uitextValidate }} </button> </div> - </div> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html index c1161f20c..2f1ad4f3b 100644 --- a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html +++ b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html @@ -2,48 +2,48 @@ <form id="form-generate-pab"> - <div mat-dialog-content> - - <mat-form-field> - <input matInput required [placeholder]="uitextDebit" pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" - [(ngModel)]="debit" name="debit" #inputDebit="ngModel" id="generatePabDebit"> - </mat-form-field> - <mat-error *ngIf="inputDebit.invalid && (inputDebit.dirty || inputDebit.touched)"> - <div *ngIf="inputDebit.errors.required || inputDebit.errors.pattern"> - {{ uitextMustBePositive }} - </div> - </mat-error> - - <mat-form-field> - <input matInput required [placeholder]="uitextCoteAmont" pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" - [(ngModel)]="coteAmont" name="coteAmont" #inputCoteAmont="ngModel" id="generatePabCoteAmont"> - </mat-form-field> - <mat-error *ngIf="inputCoteAmont.invalid && (inputCoteAmont.dirty || inputCoteAmont.touched)"> - <div *ngIf="inputCoteAmont.errors.required || inputCoteAmont.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - </mat-error> - - <mat-form-field> - <input matInput required [placeholder]="uitextNBBassins" pattern="^([2-9]|[1-9][0-9]+)$" - [(ngModel)]="nbBassins" name="nbBassins" #inputNbBassins="ngModel" id="generatePabNbBassins"> - </mat-form-field> - <mat-error *ngIf="inputNbBassins.invalid && (inputNbBassins.dirty || inputNbBassins.touched)"> - <div *ngIf="inputNbBassins.errors.required || inputNbBassins.errors.pattern"> - {{ uitextMustBeAtLeastTwo }} - </div> - </mat-error> - - </div> - - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="generatePAB()" id="do-generate" - [disabled]="(inputDebit.invalid || inputCoteAmont.invalid || inputNbBassins.invalid)"> - {{ uitextGenerate }} - </button> - </div> - -</form> + <div mat-dialog-content> + + <mat-form-field> + <input matInput required [placeholder]="uitextDebit" pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" + [(ngModel)]="debit" name="debit" #inputDebit="ngModel" id="generatePabDebit"> + </mat-form-field> + <mat-error *ngIf="inputDebit.invalid && (inputDebit.dirty || inputDebit.touched)"> + <div *ngIf="inputDebit.errors.required || inputDebit.errors.pattern"> + {{ uitextMustBePositive }} + </div> + </mat-error> + + <mat-form-field> + <input matInput required [placeholder]="uitextCoteAmont" pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" + [(ngModel)]="coteAmont" name="coteAmont" #inputCoteAmont="ngModel" id="generatePabCoteAmont"> + </mat-form-field> + <mat-error *ngIf="inputCoteAmont.invalid && (inputCoteAmont.dirty || inputCoteAmont.touched)"> + <div *ngIf="inputCoteAmont.errors.required || inputCoteAmont.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + </mat-error> + + <mat-form-field> + <input matInput required [placeholder]="uitextNBBassins" pattern="^([2-9]|[1-9][0-9]+)$" + [(ngModel)]="nbBassins" name="nbBassins" #inputNbBassins="ngModel" id="generatePabNbBassins"> + </mat-form-field> + <mat-error *ngIf="inputNbBassins.invalid && (inputNbBassins.dirty || inputNbBassins.touched)"> + <div *ngIf="inputNbBassins.errors.required || inputNbBassins.errors.pattern"> + {{ uitextMustBeAtLeastTwo }} + </div> + </mat-error> + + </div> + + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="generatePAB()" id="do-generate" + [disabled]="(inputDebit.invalid || inputCoteAmont.invalid || inputNbBassins.invalid)"> + {{ uitextGenerate }} + </button> + </div> + +</form> \ No newline at end of file diff --git a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts index 062a4f237..9634a342b 100644 --- a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts +++ b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts @@ -14,76 +14,76 @@ import { round } from "jalhyd"; }) export class DialogGeneratePABComponent { - public debit = 1.5; - - public coteAmont = 102; - - public chute: number; - - public nbBassins = 6; - - constructor( - public dialogRef: MatDialogRef<DialogGeneratePABComponent>, - private intlService: I18nService, - private appSetupService: ApplicationSetupService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - const nDigits = this.appSetupService.displayPrecision; - this.coteAmont = round(data.coteAmont, nDigits); - this.debit = round(data.debit, nDigits); - this.chute = round(data.chute, nDigits); - } - - public generatePAB() { - // calculate downstream elevation - const coteAval = this.coteAmont - (this.chute * this.nbBassins); - // create PAB - this.dialogRef.close({ - generate: true, - debit: this.debit, - coteAmont: this.coteAmont, - coteAval: coteAval, - nbBassins: this.nbBassins - }); - } - - public get uitextDebit() { - return this.intlService.localizeText("INFO_DIALOG_PAB_Q"); - } - - public get uitextCoteAmont() { - return this.intlService.localizeText("INFO_DIALOG_PAB_Z1"); - } - - public get uitextCoteAval() { - return this.intlService.localizeText("INFO_DIALOG_PAB_Z2"); - } - - public get uitextNBBassins() { - return this.intlService.localizeText("INFO_DIALOG_PAB_NB"); - } - - public get uitextMustBeANumber() { - return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); - } - - public get uitextMustBePositive() { - return this.intlService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"); - } - - public get uitextMustBeAtLeastTwo() { - return sprintf(this.intlService.localizeText("ERROR_PARAM_MUST_BE_AT_LEAST"), 2); - } - - public get uitextGeneratePAB() { - return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAB"); - } - - public get uitextGenerate() { - return this.intlService.localizeText("INFO_OPTION_GENERATE"); - } - - public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); - } + public debit = 1.5; + + public coteAmont = 102; + + public chute: number; + + public nbBassins = 6; + + constructor( + public dialogRef: MatDialogRef<DialogGeneratePABComponent>, + private intlService: I18nService, + private appSetupService: ApplicationSetupService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + const nDigits = this.appSetupService.displayPrecision; + this.coteAmont = round(data.coteAmont, nDigits); + this.debit = round(data.debit, nDigits); + this.chute = round(data.chute, nDigits); + } + + public generatePAB() { + // calculate downstream elevation + const coteAval = this.coteAmont - (this.chute * this.nbBassins); + // create PAB + this.dialogRef.close({ + generate: true, + debit: this.debit, + coteAmont: this.coteAmont, + coteAval: coteAval, + nbBassins: this.nbBassins + }); + } + + public get uitextDebit() { + return this.intlService.localizeText("INFO_DIALOG_PAB_Q"); + } + + public get uitextCoteAmont() { + return this.intlService.localizeText("INFO_DIALOG_PAB_Z1"); + } + + public get uitextCoteAval() { + return this.intlService.localizeText("INFO_DIALOG_PAB_Z2"); + } + + public get uitextNBBassins() { + return this.intlService.localizeText("INFO_DIALOG_PAB_NB"); + } + + public get uitextMustBeANumber() { + return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); + } + + public get uitextMustBePositive() { + return this.intlService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"); + } + + public get uitextMustBeAtLeastTwo() { + return sprintf(this.intlService.localizeText("ERROR_PARAM_MUST_BE_AT_LEAST"), 2); + } + + public get uitextGeneratePAB() { + return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAB"); + } + + public get uitextGenerate() { + return this.intlService.localizeText("INFO_OPTION_GENERATE"); + } + + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } } diff --git a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html index 3f42734c8..dd11243cc 100644 --- a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html +++ b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html @@ -2,27 +2,27 @@ <form id="form-generate-par-simulation"> - <div mat-dialog-content> - <div id="generate-par-sim-desc"> - {{ uitextDescription }} + <div mat-dialog-content> + <div id="generate-par-sim-desc"> + {{ uitextDescription }} + </div> + <mat-form-field> + <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> + <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> + {{ entryLabel(e) }} + </mat-option> + </mat-select> + </mat-form-field> </div> - <mat-form-field> - <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> - <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> - {{ entryLabel(e) }} - </mat-option> - </mat-select> - </mat-form-field> - </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="generatePARSimulation()" id="do-generate" - [disabled]=""> - {{ uitextGenerate }} - </button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="generatePARSimulation()" id="do-generate" + [disabled]=""> + {{ uitextGenerate }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts index dcb956902..ff941247e 100644 --- a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts +++ b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts @@ -13,97 +13,97 @@ import { fv, longestVarNgParam } from "../../util"; }) export class DialogGeneratePARSimulationComponent { - public selectedValue: number; - - /** résultats de la ParCalage */ - private _results: MultiDimensionResults; - - /** size of the longest variable value */ - private size = 0; - - /** inferred extended values list for each variating parameter */ - private varValues = []; - - constructor( - public dialogRef: MatDialogRef<DialogGeneratePARSimulationComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - this._results = data.results; - this.selectedValue = 0; - - if (this._results) { - // pre-extract variable parameters values - this.varValues = []; - // find longest list - const lvp = longestVarNgParam(this._results.variatedParameters); - this.size = lvp.size; - // get extended values lists for each variable parameter - for (const v of this._results.variatedParameters) { - const vv = []; - const iter = v.getExtendedValuesIterator(this.size); - while (iter.hasNext) { - const nv = iter.next(); - vv.push(fv(nv.value)); - } - this.varValues.push(vv); - } - } - } - - public generatePARSimulation() { - this.dialogRef.close({ - generate: true, - selected: this.selectedValue, - size: this.size - }); - } - - public get uitextDescription() { - return this.intlService.localizeText("INFO_DIALOG_PARSIM_DESC"); - } - - public get uitextGeneratePARSimulation() { - return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAR_SIMULATION"); - } - - public get uitextGenerate() { - return this.intlService.localizeText("INFO_OPTION_GENERATE"); - } - - public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); - } - - public get entries(): number[] { - const ret: number[] = []; - for (let i = 0; i < this.size; i++) { - ret.push(i); - } - return ret; - } - - protected entryLabel(index: number): string { - const kv = []; - for (let i = 0; i < this.varValues.length; i++) { - const vv = this.varValues[i]; - const vp = this._results.variatedParameters[i]; - let symbol = vp.symbol; - // is vp a parameter of a child Nub ? - if ( - vp.paramDefinition.parentNub - && vp.paramDefinition.parentNub !== vp.paramDefinition.originNub - ) { - const pos = vp.paramDefinition.parentNub.findPositionInParent() + 1; - symbol = this.intlService.localizeText("INFO_LIB_RADIER_N_COURT") + pos + "_" + symbol; - } - kv.push(`${symbol} = ${vv[index]}`); - } - return kv.join(", "); - } - - public get label() { - return this.intlService.localizeText("INFO_PARAMFIELD_BOUNDARY_CONDITIONS"); - } + public selectedValue: number; + + /** résultats de la ParCalage */ + private _results: MultiDimensionResults; + + /** size of the longest variable value */ + private size = 0; + + /** inferred extended values list for each variating parameter */ + private varValues = []; + + constructor( + public dialogRef: MatDialogRef<DialogGeneratePARSimulationComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + this._results = data.results; + this.selectedValue = 0; + + if (this._results) { + // pre-extract variable parameters values + this.varValues = []; + // find longest list + const lvp = longestVarNgParam(this._results.variatedParameters); + this.size = lvp.size; + // get extended values lists for each variable parameter + for (const v of this._results.variatedParameters) { + const vv = []; + const iter = v.getExtendedValuesIterator(this.size); + while (iter.hasNext) { + const nv = iter.next(); + vv.push(fv(nv.value)); + } + this.varValues.push(vv); + } + } + } + + public generatePARSimulation() { + this.dialogRef.close({ + generate: true, + selected: this.selectedValue, + size: this.size + }); + } + + public get uitextDescription() { + return this.intlService.localizeText("INFO_DIALOG_PARSIM_DESC"); + } + + public get uitextGeneratePARSimulation() { + return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAR_SIMULATION"); + } + + public get uitextGenerate() { + return this.intlService.localizeText("INFO_OPTION_GENERATE"); + } + + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } + + public get entries(): number[] { + const ret: number[] = []; + for (let i = 0; i < this.size; i++) { + ret.push(i); + } + return ret; + } + + protected entryLabel(index: number): string { + const kv = []; + for (let i = 0; i < this.varValues.length; i++) { + const vv = this.varValues[i]; + const vp = this._results.variatedParameters[i]; + let symbol = vp.symbol; + // is vp a parameter of a child Nub ? + if ( + vp.paramDefinition.parentNub + && vp.paramDefinition.parentNub !== vp.paramDefinition.originNub + ) { + const pos = vp.paramDefinition.parentNub.findPositionInParent() + 1; + symbol = this.intlService.localizeText("INFO_LIB_RADIER_N_COURT") + pos + "_" + symbol; + } + kv.push(`${symbol} = ${vv[index]}`); + } + return kv.join(", "); + } + + public get label() { + return this.intlService.localizeText("INFO_PARAMFIELD_BOUNDARY_CONDITIONS"); + } } diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html index 13e394591..d82ff2f07 100644 --- a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html @@ -2,24 +2,24 @@ <form id="form-load-predefined-espece"> - <div mat-dialog-content> - <mat-form-field> - <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> - <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> - {{ entryLabel(e) }} - </mat-option> - </mat-select> - </mat-form-field> - </div> + <div mat-dialog-content> + <mat-form-field> + <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> + <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> + {{ entryLabel(e) }} + </mat-option> + </mat-select> + </mat-form-field> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="loadPredefinedEspece()" id="do-load" - [disabled]=""> - {{ uitextLoad }} - </button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="loadPredefinedEspece()" id="do-load" + [disabled]=""> + {{ uitextLoad }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-load-session/dialog-load-session.component.html b/src/app/components/dialog-load-session/dialog-load-session.component.html index ba088e2bf..bbb1ed6f6 100644 --- a/src/app/components/dialog-load-session/dialog-load-session.component.html +++ b/src/app/components/dialog-load-session/dialog-load-session.component.html @@ -2,70 +2,71 @@ <form [formGroup]="loadSessionForm"> - <div mat-dialog-content> + <div mat-dialog-content> - <mat-form-field class="file-input-field"> - <ngx-mat-file-input id="session-file-input" #sessionFile formControlName="file"[placeholder]="uitextLoadSessionFilename" - (change)="onFileSelected($event)"></ngx-mat-file-input> - <button mat-icon-button matSuffix *ngIf="!sessionFile.empty" (click)="sessionFile.clear($event)"> - <mat-icon>clear</mat-icon> - </button> - </mat-form-field> + <mat-form-field class="file-input-field"> + <ngx-mat-file-input id="session-file-input" #sessionFile formControlName="file" + [placeholder]="uitextLoadSessionFilename" (change)="onFileSelected($event)"></ngx-mat-file-input> + <button mat-icon-button matSuffix *ngIf="!sessionFile.empty" (click)="sessionFile.clear($event)"> + <mat-icon>clear</mat-icon> + </button> + </mat-form-field> - <div class="cb-container"> - <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" (change)="checkLinkedParamsAndModelsDependencies()" - [(ngModel)]="c.selected" [ngModelOptions]="{standalone: true}"> - {{ c.title }} - </mat-checkbox> - </div> + <div class="cb-container"> + <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" + (change)="checkLinkedParamsAndModelsDependencies()" [(ngModel)]="c.selected" + [ngModelOptions]="{standalone: true}"> + {{ c.title }} + </mat-checkbox> + </div> - <div class="btn-container"> - <button mat-raised-button (click)="selectAll()" [disabled]="calculators.length === 0"> - {{ uitextAll }} - </button> - <button mat-raised-button (click)="selectNone()" [disabled]="calculators.length === 0"> - {{ uitextNone }} - </button> - </div> + <div class="btn-container"> + <button mat-raised-button (click)="selectAll()" [disabled]="calculators.length === 0"> + {{ uitextAll }} + </button> + <button mat-raised-button (click)="selectNone()" [disabled]="calculators.length === 0"> + {{ uitextNone }} + </button> + </div> - <div class="file-problem" *ngIf="fileProblem"> - <mat-list role="list"> - <mat-list-item role="listitem"> - <mat-icon color="warn">error_outline</mat-icon> {{ uitextFileProblem }} - </mat-list-item> - </mat-list> - </div> + <div class="file-problem" *ngIf="fileProblem"> + <mat-list role="list"> + <mat-list-item role="listitem"> + <mat-icon color="warn">error_outline</mat-icon> {{ uitextFileProblem }} + </mat-list-item> + </mat-list> + </div> - <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> - <mat-list role="list"> - <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> - <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} - </mat-list-item> - </mat-list> - <p> - <button mat-raised-button (click)="fixDependencies()" - [matBadge]="dependenciesProblems.length" matBadgeColor="warn"> - {{ uitextFixMissingDependencies }} - </button> - </p> + <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> + <mat-list role="list"> + <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> + <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} + </mat-list-item> + </mat-list> + <p> + <button mat-raised-button (click)="fixDependencies()" [matBadge]="dependenciesProblems.length" + matBadgeColor="warn"> + {{ uitextFixMissingDependencies }} + </button> + </p> + </div> </div> - </div> - <div class="cb-container"> - <mat-checkbox [(ngModel)]="emptyCurrentSession" [ngModelOptions]="{standalone: true}"> - {{ uitextEmptyCurrentSession }} - </mat-checkbox> - </div> + <div class="cb-container"> + <mat-checkbox [(ngModel)]="emptyCurrentSession" [ngModelOptions]="{standalone: true}"> + {{ uitextEmptyCurrentSession }} + </mat-checkbox> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="loadSession()" - [disabled]="(loadSessionForm.invalid || ! atLeastOneCheckboxSelected)"> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="loadSession()" + [disabled]="(loadSessionForm.invalid || ! atLeastOneCheckboxSelected)"> - {{ uitextLoad }} - </button> - </div> + {{ uitextLoad }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-load-session/dialog-load-session.component.ts b/src/app/components/dialog-load-session/dialog-load-session.component.ts index 35db621eb..653cf5ff5 100644 --- a/src/app/components/dialog-load-session/dialog-load-session.component.ts +++ b/src/app/components/dialog-load-session/dialog-load-session.component.ts @@ -38,31 +38,31 @@ export class DialogLoadSessionComponent { private loadingComplete = false; constructor( - public dialogRef: MatDialogRef<DialogLoadSessionComponent>, - private intlService: I18nService, - private fb: FormBuilder, - @Inject(MAT_DIALOG_DATA) public data: any + public dialogRef: MatDialogRef<DialogLoadSessionComponent>, + private intlService: I18nService, + private fb: FormBuilder, + @Inject(MAT_DIALOG_DATA) public data: any ) { - this.loadSessionForm = this.fb.group({ - file: [null, Validators.required] - }); - this.libFormatVersion = config.serialisation.fileFormatVersion; + this.loadSessionForm = this.fb.group({ + file: [null, Validators.required] + }); + this.libFormatVersion = config.serialisation.fileFormatVersion; } public selectAll() { - for (const c of this.calculators) { - c.selected = true; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = true; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public selectNone() { - for (const c of this.calculators) { - c.selected = false; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = false; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } /** @@ -71,186 +71,186 @@ export class DialogLoadSessionComponent { * - PabCloisons depend on their models */ public checkLinkedParamsAndModelsDependencies() { - this.dependenciesProblems = []; - // for all checked Nubs - this.calculators.forEach((c) => { - if (c.selected) { - // do all required nubs are checked ? - c.requires.forEach((r) => { - if (! this.isCalculatorOrParentSelected(r)) { - const realUid = this.getUidOrParentUid(r); - const depTitle = this.getTitleFromUid(realUid); - this.dependenciesProblems.push({ - requiring: c.title, - required: depTitle, - requiredUid: realUid, - message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle - }); + this.dependenciesProblems = []; + // for all checked Nubs + this.calculators.forEach((c) => { + if (c.selected) { + // do all required nubs are checked ? + c.requires.forEach((r) => { + if (!this.isCalculatorOrParentSelected(r)) { + const realUid = this.getUidOrParentUid(r); + const depTitle = this.getTitleFromUid(realUid); + this.dependenciesProblems.push({ + requiring: c.title, + required: depTitle, + requiredUid: realUid, + message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle + }); + } + }); } - }); - } - }); + }); } public fixDependencies() { - for (const dp of this.dependenciesProblems) { - this.selectRequiredModule(dp.requiredUid); - } + for (const dp of this.dependenciesProblems) { + this.selectRequiredModule(dp.requiredUid); + } } private isCalculatorOrParentSelected(uid: string): boolean { - let isSelected = false; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - isSelected = c.selected; - } - }); - return isSelected; + let isSelected = false; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + isSelected = c.selected; + } + }); + return isSelected; } private getUidOrParentUid(uid: string): string { - let realUid: string; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - realUid = c.uid; - } - }); - return realUid; + let realUid: string; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + realUid = c.uid; + } + }); + return realUid; } private getTitleFromUid(uid: string): string { - let title: string; - this.calculators.forEach((c) => { - if (c.uid === uid) { - title = c.title; - } - }); - return title; + let title: string; + this.calculators.forEach((c) => { + if (c.uid === uid) { + title = c.title; + } + }); + return title; } private selectRequiredModule(uid: string) { - this.calculators.forEach((c) => { - if (c.uid === uid) { - c.selected = true; - } - }); - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + this.calculators.forEach((c) => { + if (c.uid === uid) { + c.selected = true; + } + }); + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public onFileSelected(event: any) { - if (event.target.files && event.target.files.length) { - this.file = event.target.files[0]; - // reinit file infos - this.calculators = []; - this.fileFormatVersion = ""; - // reinit flags - this.loadingError = false; - this.loadingComplete = false; - - const formService = ServiceFactory.formulaireService; - formService.calculatorInfosFromSessionFile(this.file).then( - calcInfos => { - this.fileFormatVersion = calcInfos.formatVersion; - this.calculators = calcInfos.nubs; - for (const n of this.calculators) { - n.selected = true; - // if no title was given, generate a default one - if (! n.title) { - n.title = decode(formService.getLocalisedShortTitleFromCalculatorType(n.type)); - } - } - this.loadingComplete = true; - } - ).catch((err) => { - console.error(err); - this.loadingError = true; - }); - } + if (event.target.files && event.target.files.length) { + this.file = event.target.files[0]; + // reinit file infos + this.calculators = []; + this.fileFormatVersion = ""; + // reinit flags + this.loadingError = false; + this.loadingComplete = false; + + const formService = ServiceFactory.formulaireService; + formService.calculatorInfosFromSessionFile(this.file).then( + calcInfos => { + this.fileFormatVersion = calcInfos.formatVersion; + this.calculators = calcInfos.nubs; + for (const n of this.calculators) { + n.selected = true; + // if no title was given, generate a default one + if (!n.title) { + n.title = decode(formService.getLocalisedShortTitleFromCalculatorType(n.type)); + } + } + this.loadingComplete = true; + } + ).catch((err) => { + console.error(err); + this.loadingError = true; + }); + } } public loadSession() { - this.dialogRef.close({ - calculators: this.calculators, - file: this.file, - emptySession: this.emptyCurrentSession - }); + this.dialogRef.close({ + calculators: this.calculators, + file: this.file, + emptySession: this.emptyCurrentSession + }); } public get atLeastOneCheckboxSelected() { - let ok = false; - for (const c of this.calculators) { - ok = (ok || c.selected); - } - return ok; + let ok = false; + for (const c of this.calculators) { + ok = (ok || c.selected); + } + return ok; } /** * @returns true if any problem occurred during file loading */ public get fileProblem(): boolean { - return ( - this.loadingError - || - this.fileFormatVersionProblem() - || - this.fileIsEmpty() - ); + return ( + this.loadingError + || + this.fileFormatVersionProblem() + || + this.fileIsEmpty() + ); } private fileFormatVersionProblem(): boolean { - return this.fileFormatVersion && (this.fileFormatVersion !== this.libFormatVersion); + return this.fileFormatVersion && (this.fileFormatVersion !== this.libFormatVersion); } private fileIsEmpty(): boolean { - return this.loadingComplete && this.calculators.length === 0; + return this.loadingComplete && this.calculators.length === 0; } public get uitextLoad() { - return this.intlService.localizeText("INFO_OPTION_LOAD"); + return this.intlService.localizeText("INFO_OPTION_LOAD"); } public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextAll() { - return this.intlService.localizeText("INFO_OPTION_ALL"); + return this.intlService.localizeText("INFO_OPTION_ALL"); } public get uitextNone() { - return this.intlService.localizeText("INFO_OPTION_NONE"); + return this.intlService.localizeText("INFO_OPTION_NONE"); } public get uitextLoadSessionFilename() { - return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_FILENAME"); + return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_FILENAME"); } public get uitextLoadSessionTitle() { - return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_TITLE"); + return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_TITLE"); } public get uitextFixMissingDependencies() { - return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); + return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); } public get uitextEmptyCurrentSession() { - return this.intlService.localizeText("INFO_DIALOG_EMPTY_CURRENT_SESSION"); + return this.intlService.localizeText("INFO_DIALOG_EMPTY_CURRENT_SESSION"); } public get uitextFileProblem() { - if (this.loadingError) { - return this.intlService.localizeText("INFO_DIALOG_ERROR_LOADING_FILE"); - } - if (this.fileFormatVersionProblem()) { - return sprintf( - this.intlService.localizeText("INFO_DIALOG_FORMAT_VERSIONS_MISMATCH"), - this.fileFormatVersion, - this.libFormatVersion - ); - } - if (this.fileIsEmpty()) { - return this.intlService.localizeText("INFO_DIALOG_FILE_IS_EMPTY"); - } + if (this.loadingError) { + return this.intlService.localizeText("INFO_DIALOG_ERROR_LOADING_FILE"); + } + if (this.fileFormatVersionProblem()) { + return sprintf( + this.intlService.localizeText("INFO_DIALOG_FORMAT_VERSIONS_MISMATCH"), + this.fileFormatVersion, + this.libFormatVersion + ); + } + if (this.fileIsEmpty()) { + return this.intlService.localizeText("INFO_DIALOG_FILE_IS_EMPTY"); + } } } diff --git a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html index a5dd7a17f..ad7493bec 100644 --- a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html +++ b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html @@ -4,7 +4,7 @@ <log-entry *ngFor="let m of data.messages" [_message]="m"></log-entry> </div> <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button [mat-dialog-close]="true"> - {{ uitextClose }} - </button> -</div> + <button mat-raised-button [mat-dialog-close]="true"> + {{ uitextClose }} + </button> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts index b9669a32f..08be1c712 100644 --- a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts +++ b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts @@ -15,10 +15,10 @@ export class DialogLogEntriesDetailsComponent { ) { } public get uitextLogEntriesDetailsTitle() { - return this.intlService.localizeText("INFO_TITREJOURNAL"); + return this.intlService.localizeText("INFO_TITREJOURNAL"); } public get uitextClose() { - return this.intlService.localizeText("INFO_OPTION_CLOSE"); + return this.intlService.localizeText("INFO_OPTION_CLOSE"); } } diff --git a/src/app/components/dialog-save-session/dialog-save-session.component.html b/src/app/components/dialog-save-session/dialog-save-session.component.html index 4e522ee37..4d15ec7f0 100644 --- a/src/app/components/dialog-save-session/dialog-save-session.component.html +++ b/src/app/components/dialog-save-session/dialog-save-session.component.html @@ -2,48 +2,48 @@ <form> - <div mat-dialog-content> - <div class="cb-container"> - <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" [(ngModel)]="c.selected" - (change)="checkLinkedParamsAndModelsDependencies()"> - {{ c.title }} - </mat-checkbox> + <div mat-dialog-content> + <div class="cb-container"> + <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" [(ngModel)]="c.selected" + (change)="checkLinkedParamsAndModelsDependencies()"> + {{ c.title }} + </mat-checkbox> + </div> + + <div class="btn-container"> + <button mat-raised-button (click)="selectAll()">{{ uitextAll }}</button> + <button mat-raised-button (click)="selectNone()">{{ uitextNone }}</button> + </div> + + <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> + <mat-list role="list"> + <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> + <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} + </mat-list-item> + </mat-list> + <p> + <button mat-raised-button (click)="fixDependencies()" [matBadge]="dependenciesProblems.length" + matBadgeColor="warn"> + {{ uitextFixMissingDependencies }} + </button> + </p> + </div> + + <mat-form-field> + <input matInput required [placeholder]="uitextFilenameInput" [(ngModel)]="fileName" name="filename" + #filename="ngModel" (keydown.enter)="onEnterPressed($event)"> + </mat-form-field> </div> - <div class="btn-container"> - <button mat-raised-button (click)="selectAll()">{{ uitextAll }}</button> - <button mat-raised-button (click)="selectNone()">{{ uitextNone }}</button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="saveSession()" + [disabled]="(! filename.valid) || (! atLeastOneCheckboxSelected)"> - <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> - <mat-list role="list"> - <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> - <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} - </mat-list-item> - </mat-list> - <p> - <button mat-raised-button (click)="fixDependencies()" - [matBadge]="dependenciesProblems.length" matBadgeColor="warn"> - {{ uitextFixMissingDependencies }} + {{ uitextSave }} </button> - </p> </div> - <mat-form-field> - <input matInput required [placeholder]="uitextFilenameInput" [(ngModel)]="fileName" - name="filename" #filename="ngModel" (keydown.enter)="onEnterPressed($event)"> - </mat-form-field> - </div> - - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="saveSession()" - [disabled]="(! filename.valid) || (! atLeastOneCheckboxSelected)"> - - {{ uitextSave }} - </button> - </div> - -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-save-session/dialog-save-session.component.ts b/src/app/components/dialog-save-session/dialog-save-session.component.ts index 092b245f2..b9b5eb10d 100644 --- a/src/app/components/dialog-save-session/dialog-save-session.component.ts +++ b/src/app/components/dialog-save-session/dialog-save-session.component.ts @@ -16,29 +16,29 @@ export class DialogSaveSessionComponent { public dependenciesProblems: any[] = []; constructor( - public dialogRef: MatDialogRef<DialogSaveSessionComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any + public dialogRef: MatDialogRef<DialogSaveSessionComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any ) { - this.calculators = data.calculators; - // run dependency checking at first - this.checkLinkedParamsAndModelsDependencies(); + this.calculators = data.calculators; + // run dependency checking at first + this.checkLinkedParamsAndModelsDependencies(); } public selectAll() { - for (const c of this.calculators) { - c.selected = true; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = true; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public selectNone() { - for (const c of this.calculators) { - c.selected = false; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = false; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } /** @@ -47,114 +47,114 @@ export class DialogSaveSessionComponent { * - PabCloisons depend on their models */ public checkLinkedParamsAndModelsDependencies() { - this.dependenciesProblems = []; - // for all checked Nubs - this.calculators.forEach((c) => { - if (c.selected) { - // do all required nubs are checked ? - c.requires.forEach((r) => { - if (! this.isCalculatorOrParentSelected(r)) { - const realUid = this.getUidOrParentUid(r); - const depTitle = this.getTitleFromUid(realUid); - this.dependenciesProblems.push({ - requiring: c.title, - required: depTitle, - requiredUid: realUid, - message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle - }); + this.dependenciesProblems = []; + // for all checked Nubs + this.calculators.forEach((c) => { + if (c.selected) { + // do all required nubs are checked ? + c.requires.forEach((r) => { + if (!this.isCalculatorOrParentSelected(r)) { + const realUid = this.getUidOrParentUid(r); + const depTitle = this.getTitleFromUid(realUid); + this.dependenciesProblems.push({ + requiring: c.title, + required: depTitle, + requiredUid: realUid, + message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle + }); + } + }); } - }); - } - }); + }); } public fixDependencies() { - for (const dp of this.dependenciesProblems) { - this.selectRequiredModule(dp.requiredUid); - } + for (const dp of this.dependenciesProblems) { + this.selectRequiredModule(dp.requiredUid); + } } private isCalculatorOrParentSelected(uid: string): boolean { - let isSelected = false; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - isSelected = c.selected; - } - }); - return isSelected; + let isSelected = false; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + isSelected = c.selected; + } + }); + return isSelected; } private getUidOrParentUid(uid: string): string { - let realUid: string; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - realUid = c.uid; - } - }); - return realUid; + let realUid: string; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + realUid = c.uid; + } + }); + return realUid; } private getTitleFromUid(uid: string): string { - let title: string; - this.calculators.forEach((c) => { - if (c.uid === uid) { - title = c.title; - } - }); - return title; + let title: string; + this.calculators.forEach((c) => { + if (c.uid === uid) { + title = c.title; + } + }); + return title; } private selectRequiredModule(uid: string) { - this.calculators.forEach((c) => { - if (c.uid === uid) { - c.selected = true; - } - }); - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + this.calculators.forEach((c) => { + if (c.uid === uid) { + c.selected = true; + } + }); + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public saveSession() { - this.dialogRef.close({ - calculators: this.calculators, - filename: this.fileName - }); + this.dialogRef.close({ + calculators: this.calculators, + filename: this.fileName + }); } public get atLeastOneCheckboxSelected() { - let ok = false; - for (const c of this.calculators) { - ok = (ok || c.selected); - } - return ok; + let ok = false; + for (const c of this.calculators) { + ok = (ok || c.selected); + } + return ok; } public get uitextSave() { - return this.intlService.localizeText("INFO_OPTION_SAVE"); + return this.intlService.localizeText("INFO_OPTION_SAVE"); } public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextAll() { - return this.intlService.localizeText("INFO_OPTION_ALL"); + return this.intlService.localizeText("INFO_OPTION_ALL"); } public get uitextNone() { - return this.intlService.localizeText("INFO_OPTION_NONE"); + return this.intlService.localizeText("INFO_OPTION_NONE"); } public get uitextSaveSessionTitle() { - return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_TITLE"); + return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_TITLE"); } public get uitextFilenameInput() { - return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_FILENAME"); + return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_FILENAME"); } public get uitextFixMissingDependencies() { - return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); + return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); } public onEnterPressed(event) { diff --git a/src/app/components/field-set/field-set.component.html b/src/app/components/field-set/field-set.component.html index 59f755bbc..808d883ec 100644 --- a/src/app/components/field-set/field-set.component.html +++ b/src/app/components/field-set/field-set.component.html @@ -9,25 +9,31 @@ {{ i }} </mat-option> </mat-select> - <button type="button" mat-icon-button (click)="onAddClick()" class="add-structure" [title]="uitextAddStructure"> + <button type="button" mat-icon-button (click)="onAddClick()" class="add-structure" + [title]="uitextAddStructure"> <mat-icon>add_box</mat-icon> </button> - <button type="button" mat-icon-button (click)="onCopyClick()" class="copy-structure" [title]="uitextCopyStructure"> + <button type="button" mat-icon-button (click)="onCopyClick()" class="copy-structure" + [title]="uitextCopyStructure"> <mat-icon>content_copy</mat-icon> </button> | - <button type="button" mat-icon-button [disabled]="! enableRemoveButton" (click)="onRemoveClick()" [title]="uitextRemoveStructure"> + <button type="button" mat-icon-button [disabled]="! enableRemoveButton" (click)="onRemoveClick()" + [title]="uitextRemoveStructure"> <mat-icon>delete</mat-icon> </button> - <button type="button" mat-icon-button [disabled]="! enableUpButton" (click)="onMoveUpClick()" [title]="uitextMoveStructureUp"> + <button type="button" mat-icon-button [disabled]="! enableUpButton" (click)="onMoveUpClick()" + [title]="uitextMoveStructureUp"> <mat-icon>arrow_upward</mat-icon> </button> - <button type="button" mat-icon-button [disabled]="! enableDownButton" (click)="onMoveDownClick()" [title]="uitextMoveStructureDown"> + <button type="button" mat-icon-button [disabled]="! enableDownButton" (click)="onMoveDownClick()" + [title]="uitextMoveStructureDown"> <mat-icon>arrow_downward</mat-icon> </button> <span *ngIf="enableHelpButton">|</span> </span> - <button *ngIf="enableHelpButton" class="help-button" type="button" mat-icon-button (click)="openHelp()" [title]="uitextOpenHelp"> + <button *ngIf="enableHelpButton" class="help-button" type="button" mat-icon-button (click)="openHelp()" + [title]="uitextOpenHelp"> <mat-icon id="help-fieldset">help</mat-icon> </button> </div> @@ -42,4 +48,4 @@ <select-field-line *ngIf="isSelectField(p)" [_select]=p> </select-field-line> </ng-template> -</mat-card-content> +</mat-card-content> \ No newline at end of file diff --git a/src/app/components/fixedvar-results/fixed-results.component.html b/src/app/components/fixedvar-results/fixed-results.component.html index 723677e79..d9bca9625 100644 --- a/src/app/components/fixedvar-results/fixed-results.component.html +++ b/src/app/components/fixedvar-results/fixed-results.component.html @@ -12,15 +12,17 @@ <ng-container matColumnDef="parametre"> <th mat-header-cell *matHeaderCellDef>{{ uitextParamFixes }}</th> - <td mat-cell *matCellDef="let element" [innerHTML]="element.label" [ngClass]="{'highlightedResult': element.isCalcResult}"></td> + <td mat-cell *matCellDef="let element" [innerHTML]="element.label" + [ngClass]="{'highlightedResult': element.isCalcResult}"></td> </ng-container> <ng-container matColumnDef="valeur"> <th mat-header-cell *matHeaderCellDef>{{ uitextValeurs }}</th> - <td mat-cell *matCellDef="let element" [ngClass]="{'highlightedResult': element.isCalcResult}">{{ element.value }}</td> + <td mat-cell *matCellDef="let element" [ngClass]="{'highlightedResult': element.isCalcResult}"> + {{ element.value }}</td> </ng-container> <tr mat-header-row *matHeaderRowDef="tableColumns"></tr> <tr mat-row *matRowDef="let row; columns: tableColumns;"></tr> </table> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/fixedvar-results/var-results.component.html b/src/app/components/fixedvar-results/var-results.component.html index d0b757304..f09451b74 100644 --- a/src/app/components/fixedvar-results/var-results.component.html +++ b/src/app/components/fixedvar-results/var-results.component.html @@ -1,10 +1,12 @@ -<div class="var-results-container" #variableResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="var-results-container" #variableResults *ngIf="hasResults" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="var-results-buttons"> <button mat-icon-button (click)="exportAsSpreadsheet()" [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(variableResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(variableResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -42,4 +44,4 @@ </div> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html index ed13135ee..f5ccefc0f 100644 --- a/src/app/components/generic-calculator/calculator.component.html +++ b/src/app/components/generic-calculator/calculator.component.html @@ -4,7 +4,8 @@ <div class="hyd-window-btns"> <!-- bouton d'aide --> - <mat-icon id="help-calc" *ngIf="enableHelpButton" (click)="openHelp()" color="accent" [title]="uitextOpenHelp"> + <mat-icon id="help-calc" *ngIf="enableHelpButton" (click)="openHelp()" color="accent" + [title]="uitextOpenHelp"> help </mat-icon> <!-- bouton de duplication --> @@ -27,7 +28,7 @@ <h1 [innerHTML]="uitextTitre"></h1> <div id="calculator-used-by" *ngIf="calculatorsUsingThisOne.length > 0"> {{ uitextUsedBy }} - <span *ngFor="let c of calculatorsUsingThisOne; let i = index; trackBy:tbIndex" > + <span *ngFor="let c of calculatorsUsingThisOne; let i = index; trackBy:tbIndex"> <a class="used-by-item" (click)="toCalc(c.uid)"> {{ c.label }} </a> @@ -48,29 +49,28 @@ <calc-name id="calculator-name" [title]="uitextCalculatorName"></calc-name> <button mat-raised-button type="button" color="accent" id="load-predefined-espece" *ngIf="isEspece" - (click)="loadPredefinedEspece()" [title]="uitextLoadPredefinedEspece"> + (click)="loadPredefinedEspece()" [title]="uitextLoadPredefinedEspece"> {{ uitextLoadPredefinedEspece }} </button> - <div id="calc-cards-container" class="container" - [fxLayout]="isWide ? 'column' : 'row wrap'" - [fxLayoutAlign]="isWide ? 'space-around stretch' : 'space-around start'"> + <div id="calc-cards-container" class="container" [fxLayout]="isWide ? 'column' : 'row wrap'" + [fxLayoutAlign]="isWide ? 'space-around stretch' : 'space-around start'"> <!-- chapitres --> - <mat-card id="calc-card-field-sets" - [class.pab-field-sets]="isWide" - [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" - [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" - [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> + <mat-card id="calc-card-field-sets" [class.pab-field-sets]="isWide" + [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" + [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" + [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> <ng-template ngFor let-fe [ngForOf]="formElements"> <field-set *ngIf="isFieldset(fe)" [style.display]="getElementStyleDisplay(fe.id)" [fieldSet]=fe - (radio)=onRadioClick($event) (validChange)=onElementValid() (inputChange)=onInputChange($event) - (tabPressed)="onTabPressed($event)"> + (radio)=onRadioClick($event) (validChange)=onElementValid() + (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)"> </field-set> - <fieldset-container *ngIf="isFieldsetContainer(fe)" [style.display]="getElementStyleDisplay(fe.id)" [_container]=fe - (radio)=onRadioClick($event) (validChange)=onElementValid() (inputChange)=onInputChange($event) + <fieldset-container *ngIf="isFieldsetContainer(fe)" + [style.display]="getElementStyleDisplay(fe.id)" [_container]=fe (radio)=onRadioClick($event) + (validChange)=onElementValid() (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)"> </fieldset-container> @@ -82,23 +82,23 @@ <mat-card-actions> <!-- bouton calculer --> <button type="submit" id="trigger-calculate" mat-raised-button color="accent" name="Calculer" - (click)="doCompute()" [disabled]="isCalculateDisabled" [hidden]="calculateDisabledPermanently"> + (click)="doCompute()" [disabled]="isCalculateDisabled" + [hidden]="calculateDisabledPermanently"> {{ uitextCalculer }} </button> </mat-card-actions> </mat-card> <!-- résultats --> - <mat-card id="calc-card-results" - [hidden]="calculateDisabledPermanently" - [class.pab-results]="isWide" - [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" - [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" - [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> + <mat-card id="calc-card-results" [hidden]="calculateDisabledPermanently" [class.pab-results]="isWide" + [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" + [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" + [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> <div id="fake-results-anchor"></div> - <quicknav [ngClass.lt-xs]="'extraSmall'" [fxHide.gt-sm]="! isWide" [items]="quicknavItems" [currentItem]="'results'" [align]="'left'"></quicknav> + <quicknav [ngClass.lt-xs]="'extraSmall'" [fxHide.gt-sm]="! isWide" [items]="quicknavItems" + [currentItem]="'results'" [align]="'left'"></quicknav> <mat-card-header *ngIf="! isWide" [fxHide.lt-md]="! isWide"> <mat-card-title> @@ -106,8 +106,8 @@ </mat-card-title> </mat-card-header> - <button mat-raised-button color="accent" id="generate-pab" *ngIf="isPABCloisons" (click)="generatePAB()" - [disabled]="! generatePABEnabled" [title]="uitextGeneratePabTitle"> + <button mat-raised-button color="accent" id="generate-pab" *ngIf="isPABCloisons" + (click)="generatePAB()" [disabled]="! generatePABEnabled" [title]="uitextGeneratePabTitle"> {{ uitextGeneratePAB }} </button> @@ -122,13 +122,14 @@ </button> </div> - <button mat-raised-button color="accent" id="generate-ru-sp" *ngIf="isRegimeUniforme" (click)="generateRuSp()" - [disabled]="! generateRuSpEnabled" [title]="uitextGenerateRuSpTitle"> + <button mat-raised-button color="accent" id="generate-ru-sp" *ngIf="isRegimeUniforme" + (click)="generateRuSp()" [disabled]="! generateRuSpEnabled" [title]="uitextGenerateRuSpTitle"> {{ uitextGenerateRuSp }} </button> - <button mat-raised-button color="accent" id="generate-par-simulation" *ngIf="isPAR" (click)="generatePARSimulation()" - [disabled]="! generatePARSimulationEnabled" [title]="uitextGenerateParSimulationTitle"> + <button mat-raised-button color="accent" id="generate-par-simulation" *ngIf="isPAR" + (click)="generatePARSimulation()" [disabled]="! generatePARSimulationEnabled" + [title]="uitextGenerateParSimulationTitle"> {{ uitextGeneratePARSimulation }} </button> @@ -142,4 +143,4 @@ </form> -</mat-card> +</mat-card> \ No newline at end of file diff --git a/src/app/components/generic-input/generic-input.component.html b/src/app/components/generic-input/generic-input.component.html index 99eea0a6e..3b240e96f 100644 --- a/src/app/components/generic-input/generic-input.component.html +++ b/src/app/components/generic-input/generic-input.component.html @@ -1,6 +1,6 @@ <mat-form-field> - <input matInput #inputControl="ngModel" class="form-control" type="text" inputmode="numeric" - [id]="inputId" [name]="inputId" [disabled]="isDisabled" [(ngModel)]="uiValue" [placeholder]="title" + <input matInput #inputControl="ngModel" class="form-control" type="text" inputmode="numeric" [id]="inputId" + [name]="inputId" [disabled]="isDisabled" [(ngModel)]="uiValue" [placeholder]="title" (keydown.Tab)="onTabPressed($event, false)" (keydown.shift.Tab)="onTabPressed($event, true)" pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" [required]="isRequired"> @@ -11,4 +11,4 @@ </div> <mat-error [innerHTML]="errorMessage"></mat-error> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index 7ce468d11..5dcaf95e7 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -1,17 +1,18 @@ <mat-form-field> - <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple" [disabled]="isDisabled"> + <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple" + [disabled]="isDisabled"> <mat-select-trigger *ngIf="isMultiple"> - {{ selectedValue && selectedValue[0] ? entryLabel(selectedValue[0]) : '' }} - <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> - (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) - </span> + {{ selectedValue && selectedValue[0] ? entryLabel(selectedValue[0]) : '' }} + <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> + (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) + </span> </mat-select-trigger> <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> {{ entryLabel(e) }} </mat-option> </mat-select> - <button mat-button *ngIf="showClearButton" matSuffix mat-icon-button - aria-label="Clear" (click)="selectedValue=[]; $event.stopPropagation()"> + <button mat-button *ngIf="showClearButton" matSuffix mat-icon-button aria-label="Clear" + (click)="selectedValue=[]; $event.stopPropagation()"> <mat-icon>close</mat-icon> </button> <div *ngIf="enableHelpButton" class="overlap-select"> @@ -19,4 +20,4 @@ help </mat-icon> </div> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html b/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html index a30d03c37..1087a424a 100644 --- a/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html +++ b/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html @@ -7,7 +7,8 @@ <button mat-icon-button (click)="exportAsImage(graphProfile)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> diff --git a/src/app/components/log-drawer/log-drawer.component.html b/src/app/components/log-drawer/log-drawer.component.html index 4b9bbd8ee..f2139f7c2 100644 --- a/src/app/components/log-drawer/log-drawer.component.html +++ b/src/app/components/log-drawer/log-drawer.component.html @@ -19,6 +19,6 @@ </div> </div> </div> - + </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html b/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html index d88bb1753..3883c6eb3 100644 --- a/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html +++ b/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html @@ -1,10 +1,12 @@ -<div class="macrorugo-compound-results-table-container" #mrcResultsTable fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="macrorugo-compound-results-table-container" #mrcResultsTable fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="macrorugo-compound-results-table-buttons"> <button mat-icon-button (click)="exportAsSpreadsheet()" [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(mrcResultsTable)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(mrcResultsTable)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -28,4 +30,4 @@ </div> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html b/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html index bfbf59270..85b150db8 100644 --- a/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html +++ b/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html @@ -9,21 +9,23 @@ <div> <!-- tableau de résultats --> - <macrorugo-compound-results-table *ngIf="hasDisplayableResults" [results]="mrcResults"></macrorugo-compound-results-table> + <macrorugo-compound-results-table *ngIf="hasDisplayableResults" [results]="mrcResults"> + </macrorugo-compound-results-table> </div> <div id="mrcLateralInclination" *ngIf="isInclined"> <strong [innerHTML]="uitextLateralInclination"></strong> {{ lateralInclination }} </div> - <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" - [currentItem]="'charts'" [align]="'left'"></quicknav> + <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" [currentItem]="'charts'" + [align]="'left'"></quicknav> - <div id="macrorugo-compound-graphs-container" class="container" fxLayout="row wrap" fxLayoutAlign="space-around start"> + <div id="macrorugo-compound-graphs-container" class="container" fxLayout="row wrap" + fxLayoutAlign="space-around start"> <!-- <pab-profile-chart *ngIf="hasDisplayableResults" fxFlex.gt-xs="1 0 400px" fxFlex.lt-sm="1 0 300px"> </pab-profile-chart> --> <results-chart *ngIf="hasDisplayableResults" fxFlex.gt-xs="1 0 400px" fxFlex.lt-sm="1 0 300px"> </results-chart> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/pab-profile-chart/pab-profile-chart.component.html b/src/app/components/pab-profile-chart/pab-profile-chart.component.html index ae6745863..35c9c9aec 100644 --- a/src/app/components/pab-profile-chart/pab-profile-chart.component.html +++ b/src/app/components/pab-profile-chart/pab-profile-chart.component.html @@ -7,7 +7,8 @@ <button mat-icon-button (click)="exportAsImage(graphProfile)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> diff --git a/src/app/components/pab-results/pab-results-table.component.html b/src/app/components/pab-results/pab-results-table.component.html index c7334ca62..c0e77a7b3 100644 --- a/src/app/components/pab-results/pab-results-table.component.html +++ b/src/app/components/pab-results/pab-results-table.component.html @@ -4,7 +4,8 @@ <button mat-icon-button (click)="exportAsSpreadsheet()" [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(pabResultsTable)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(pabResultsTable)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -28,4 +29,4 @@ </div> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/pab-results/pab-results.component.html b/src/app/components/pab-results/pab-results.component.html index 78f7d9845..9bb311053 100644 --- a/src/app/components/pab-results/pab-results.component.html +++ b/src/app/components/pab-results/pab-results.component.html @@ -12,8 +12,8 @@ <pab-results-table *ngIf="hasDisplayableResults" [results]="pabResults"></pab-results-table> </div> - <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" - [currentItem]="'charts'" [align]="'left'"></quicknav> + <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" [currentItem]="'charts'" + [align]="'left'"></quicknav> <div id="pab-graphs-container" class="container" fxLayout="row wrap" fxLayoutAlign="space-around start"> <pab-profile-chart *ngIf="hasDisplayableResults" fxFlex.gt-xs="1 0 400px" fxFlex.lt-sm="1 0 300px"> @@ -22,4 +22,4 @@ </results-chart> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/pab-table/pab-table.component.html b/src/app/components/pab-table/pab-table.component.html index 410b7120a..96efe09a1 100644 --- a/src/app/components/pab-table/pab-table.component.html +++ b/src/app/components/pab-table/pab-table.component.html @@ -7,8 +7,8 @@ <mat-card-content> <div id="pab-table-toolbar"> - <button type="button" id="edit-pab-table" mat-raised-button color="accent" - [disabled]="! enableEditPabButton" (click)="showEditPab()"> + <button type="button" id="edit-pab-table" mat-raised-button color="accent" [disabled]="! enableEditPabButton" + (click)="showEditPab()"> {{ uitextEditPabTable }} </button> @@ -22,31 +22,31 @@ </mat-option> </mat-select> <button type="button" mat-icon-button color="primary" [disabled]="! enableAddButton" (click)="onAddClick()" - [title]="uitextAdd"> + [title]="uitextAdd"> <mat-icon>add_box</mat-icon> </button> - <button type="button" mat-icon-button color="primary" [disabled]="! enableCopyButton" (click)="onCopyClick()" - [title]="uitextCopy"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableCopyButton" + (click)="onCopyClick()" [title]="uitextCopy"> <mat-icon>content_copy</mat-icon> </button> | - <button type="button" mat-icon-button color="primary" [disabled]="! enableRemoveButton" (click)="onRemoveClick()" - [title]="uitextRemove"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableRemoveButton" + (click)="onRemoveClick()" [title]="uitextRemove"> <mat-icon>delete</mat-icon> </button> - <button type="button" mat-icon-button color="primary" [disabled]="! enableUpButton" (click)="onMoveUpClick()" - [title]="uitextMoveUp"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableUpButton" + (click)="onMoveUpClick()" [title]="uitextMoveUp"> <mat-icon *ngIf="! selectionIsOneDevice">arrow_upward</mat-icon> <mat-icon *ngIf="selectionIsOneDevice">arrow_back</mat-icon> </button> - <button type="button" mat-icon-button color="primary" [disabled]="! enableDownButton" (click)="onMoveDownClick()" - [title]="uitextMoveDown"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableDownButton" + (click)="onMoveDownClick()" [title]="uitextMoveDown"> <mat-icon *ngIf="! selectionIsOneDevice">arrow_downward</mat-icon> <mat-icon *ngIf="selectionIsOneDevice">arrow_forward</mat-icon> </button> | <button type="button" mat-icon-button color="primary" (click)="exportAsSpreadsheet()" - [title]="uitextExportAsSpreadsheet"> + [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> </div> @@ -57,20 +57,18 @@ <ng-template pTemplate="header" let-columns> <tr> - <th *ngFor="let h of headers" - (click)="toggleSelection(h, $event)" - (mousedown)="preventCtrlClickBorder($event)" - [attr.rowspan]="h.rowspan ? h.rowspan : null" [attr.colspan]="h.colspan ? h.colspan : null" - [class.selectable-cell]="isSelectable(h)" [class.selected-cell]="isSelected(h)"> + <th *ngFor="let h of headers" (click)="toggleSelection(h, $event)" + (mousedown)="preventCtrlClickBorder($event)" [attr.rowspan]="h.rowspan ? h.rowspan : null" + [attr.colspan]="h.colspan ? h.colspan : null" [class.selectable-cell]="isSelectable(h)" + [class.selected-cell]="isSelected(h)"> {{ h.title }} </th> </tr> <tr> - <th *ngFor="let col of columns" - (click)="toggleSelection(col, $event)" - (mousedown)="preventCtrlClickBorder($event)" - [class.selectable-cell]="isSelectable(col)" [class.selected-cell]="isSelected(col)"> + <th *ngFor="let col of columns" (click)="toggleSelection(col, $event)" + (mousedown)="preventCtrlClickBorder($event)" [class.selectable-cell]="isSelectable(col)" + [class.selected-cell]="isSelected(col)"> {{ col.title }} </th> @@ -79,21 +77,19 @@ <ng-template pTemplate="body" let-row> <tr [class.selected-row]="isSelected(row)"> - <td *ngFor="let cell of row.cells" - (click)="toggleSelection(cell, $event)" - (mousedown)="preventCtrlClickBorder($event)" - [ngClass]="cell.class" - [class.editable-cell]="hasModel(cell)" [class.readonly-cell]="! hasModel(cell)" - [class.selectable-cell]="isSelectable(cell)" [class.selected-cell]="isSelected(cell) && ! isSelected(row)" - [class.invalid-cell]="isInvalid(cell)" [class.select]="isSelect(cell)" - [attr.rowspan]="rowSpan(cell)" [attr.colspan]="colSpan(cell)" - [title]="cellTitle(cell)"> + <td *ngFor="let cell of row.cells" (click)="toggleSelection(cell, $event)" + (mousedown)="preventCtrlClickBorder($event)" [ngClass]="cell.class" + [class.editable-cell]="hasModel(cell)" [class.readonly-cell]="! hasModel(cell)" + [class.selectable-cell]="isSelectable(cell)" + [class.selected-cell]="isSelected(cell) && ! isSelected(row)" [class.invalid-cell]="isInvalid(cell)" + [class.select]="isSelect(cell)" [attr.rowspan]="rowSpan(cell)" [attr.colspan]="colSpan(cell)" + [title]="cellTitle(cell)"> <input matInput *ngIf="isNumberInput(cell)" step="0.00000000000001" type="number" - [(ngModel)]="cell.model.singleValue" (input)="inputValueChanged($event, cell)"> + [(ngModel)]="cell.model.singleValue" (input)="inputValueChanged($event, cell)"> <mat-select #selectWidget *ngIf="isSelect(cell)" [value]="cell.modelValue" - (selectionChange)="loiDebitSelected($event, cell)"> + (selectionChange)="loiDebitSelected($event, cell)"> <mat-option *ngFor="let opt of cell.options" [value]="opt.value" [title]="opt.label"> {{ opt.label }} @@ -106,4 +102,4 @@ </ng-template> </p-table> -</mat-card-content> +</mat-card-content> \ No newline at end of file diff --git a/src/app/components/param-computed/param-computed.component.html b/src/app/components/param-computed/param-computed.component.html index d2d336cfc..40320f1dd 100644 --- a/src/app/components/param-computed/param-computed.component.html +++ b/src/app/components/param-computed/param-computed.component.html @@ -1,7 +1,9 @@ <!-- a fake input bound to nothing, for the sake of UI consistency --> <mat-form-field> - <input matInput disabled [id]="inputId" class="form-control" type="text" [ngModel]="infoText" [placeholder]="param.title"> - <button type="button" *ngIf="isDicho" mat-icon-button class="param-computed-more" (click)="openDialog()" [title]="uitextEditInitialValue"> + <input matInput disabled [id]="inputId" class="form-control" type="text" [ngModel]="infoText" + [placeholder]="param.title"> + <button type="button" *ngIf="isDicho" mat-icon-button class="param-computed-more" (click)="openDialog()" + [title]="uitextEditInitialValue"> <mat-icon>more_horiz</mat-icon> </button> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/param-field-line/param-field-line.component.html b/src/app/components/param-field-line/param-field-line.component.html index 35c1fd0c8..07d31672d 100644 --- a/src/app/components/param-field-line/param-field-line.component.html +++ b/src/app/components/param-field-line/param-field-line.component.html @@ -1,49 +1,48 @@ - <div class="container" fxLayout="row wrap" fxLayoutAlign="space-between start"> <!-- input de saisie de la valeur --> <div fxFlex="1 0 120px"> <!-- composant pour gérer le cas général (valeur numérique à saisir) --> - <ngparam-input [title]="param.title" [hidden]="! isRadioFixChecked" - (change)="onInputChange($event)" (tabPressed)="onTabPressed($event)"> + <ngparam-input [title]="param.title" [hidden]="! isRadioFixChecked" (change)="onInputChange($event)" + (tabPressed)="onTabPressed($event)"> </ngparam-input> - + <!-- composant pour gérer le cas "paramètre calculé" --> <param-computed *ngIf="isRadioCalChecked" [title]="title" [param]="param"> </param-computed> <!-- composant pour gérer le cas "paramètre à varier" (min-max/liste de valeurs) --> - <param-values *ngIf="isRadioVarChecked" [title]="title" [param]="param" - (change)="onInputChange($event)" (valid)=onParamValuesValid($event)> + <param-values *ngIf="isRadioVarChecked" [title]="title" [param]="param" (change)="onInputChange($event)" + (valid)=onParamValuesValid($event)> </param-values> - + <!-- composant pour gérer le cas "paramètre lié" --> - <param-link *ngIf="isRadioLinkChecked" [title]="title" [param]="param" - (change)="onInputChange($event)" (valid)=onParamValuesValid($event)> + <param-link *ngIf="isRadioLinkChecked" [title]="title" [param]="param" (change)="onInputChange($event)" + (valid)=onParamValuesValid($event)> </param-link> </div> <div class="toggle-group-container" fxFlex="0 0 auto"> <mat-button-toggle-group *ngIf="hasRadioFix() || hasRadioVar() || hasRadioCal() || hasRadioLink()"> - <mat-button-toggle class="radio_fix" value="radio_fix" - (click)="onRadioClick('fix')" [checked]="isRadioFixChecked" [disabled]="! canExitCalcMode()"> + <mat-button-toggle class="radio_fix" value="radio_fix" (click)="onRadioClick('fix')" + [checked]="isRadioFixChecked" [disabled]="! canExitCalcMode()"> <span fxHide.xxs>{{ uitextParamFixe }}</span> <span fxHide.gt-xxs>F</span> </mat-button-toggle> - - <mat-button-toggle class="radio_var" value="radio_var" *ngIf="hasRadioVar()" - (click)="onRadioClick('var')" [checked]="isRadioVarChecked" [disabled]="! canExitCalcMode()"> + + <mat-button-toggle class="radio_var" value="radio_var" *ngIf="hasRadioVar()" (click)="onRadioClick('var')" + [checked]="isRadioVarChecked" [disabled]="! canExitCalcMode()"> <span fxHide.xxs>{{ uitextParamVarier }}</span> <span fxHide.gt-xxs>V</span> </mat-button-toggle> - - <mat-button-toggle class="radio_cal" value="radio_cal" *ngIf="hasRadioCal()" - (click)="onRadioClick('cal')" [checked]="isRadioCalChecked"> + + <mat-button-toggle class="radio_cal" value="radio_cal" *ngIf="hasRadioCal()" (click)="onRadioClick('cal')" + [checked]="isRadioCalChecked"> <span fxHide.xxs>{{ uitextParamCalculer }}</span> <span fxHide.gt-xxs>C</span> </mat-button-toggle> - + <mat-button-toggle class="radio_link" value="radio_link" *ngIf="hasRadioLink()" (click)="onRadioClick('link')" [checked]="isRadioLinkChecked" [disabled]="! canExitCalcMode()"> <span fxHide.xxs>{{ uitextParamLie }}</span> @@ -53,4 +52,4 @@ </mat-button-toggle-group> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index f0601b32a..0fd0a4eb2 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -153,7 +153,7 @@ export class ParamFieldLineComponent implements OnChanges { /** * calcule la présence du radio "paramètre à calculer" */ - public hasRadioCal(): boolean { + public hasRadioCal(): boolean { switch (this.param.radioConfig) { case ParamRadioConfig.CAL: return true; @@ -166,7 +166,7 @@ export class ParamFieldLineComponent implements OnChanges { /** * calcule la présence du radio "paramètre lié" (importé d'un autre module de calcul) */ - public hasRadioLink(): boolean { + public hasRadioLink(): boolean { if (this._formService.formulaires.length > 0) { // au moins 2 modules de calcul ouverts if (this._formService.formulaires.length > 1) { diff --git a/src/app/components/param-link/param-link.component.html b/src/app/components/param-link/param-link.component.html index eadf8016d..d96d4f754 100644 --- a/src/app/components/param-link/param-link.component.html +++ b/src/app/components/param-link/param-link.component.html @@ -1,6 +1,5 @@ <mat-form-field> - <mat-select [id]="selectId" [name]="selectId" [placeholder]="param.title" - [(ngModel)]="currentLinkedParam" required> + <mat-select [id]="selectId" [name]="selectId" [placeholder]="param.title" [(ngModel)]="currentLinkedParam" required> <mat-option *ngFor="let e of linkableParams" [value]="e" [title]="selectItemLabel(e)"> {{ selectItemLabel(e) }} </mat-option> @@ -17,4 +16,4 @@ <mat-icon [title]="uitextAwaitingCalculation" class="status-info" *ngIf="isAwaitingCalculation"> timelapse </mat-icon> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/param-link/param-link.component.ts b/src/app/components/param-link/param-link.component.ts index 565638b45..fbe6f2226 100644 --- a/src/app/components/param-link/param-link.component.ts +++ b/src/app/components/param-link/param-link.component.ts @@ -179,47 +179,47 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy { , (pos + 1) ); } else - // 2. Paramètre / résultat d'une section dans un Nub de type SectionNub - if (i.nub instanceof acSection) { - if (i.isResult()) { - // résultat de section - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_SECTION_RESULT"), - s, c - ); - } else { - // paramètre de section - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_SECTION"), - s, c - ); - } - } else - // 3. Résultat - if (i.isResult()) { - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_RESULT"), - s, c - ); - } else - // 4. Résultat complémentaire - if (i.isExtraResult()) { - if (i.meta["result"]) { - // @TODO not used ? - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT_OF"), - s, c, i.meta["result"] - ); - } else { - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT"), - s, c - ); - } - } else { - // 5. Paramètre (cas général) - return `${preview} - ${s} (${c})`; - } + // 2. Paramètre / résultat d'une section dans un Nub de type SectionNub + if (i.nub instanceof acSection) { + if (i.isResult()) { + // résultat de section + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_SECTION_RESULT"), + s, c + ); + } else { + // paramètre de section + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_SECTION"), + s, c + ); + } + } else + // 3. Résultat + if (i.isResult()) { + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_RESULT"), + s, c + ); + } else + // 4. Résultat complémentaire + if (i.isExtraResult()) { + if (i.meta["result"]) { + // @TODO not used ? + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT_OF"), + s, c, i.meta["result"] + ); + } else { + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT"), + s, c + ); + } + } else { + // 5. Paramètre (cas général) + return `${preview} - ${s} (${c})`; + } } /** diff --git a/src/app/components/param-values/param-values.component.html b/src/app/components/param-values/param-values.component.html index 2561e9220..4ffc23cbf 100644 --- a/src/app/components/param-values/param-values.component.html +++ b/src/app/components/param-values/param-values.component.html @@ -1,8 +1,8 @@ <!-- a fake input bound to nothing, for the sake of UI consistency --> <mat-form-field> - <input matInput disabled class="form-control" type="text" - [id]="inputId" [name]="inputId" [ngModel]="infoText" [placeholder]="param.title"> + <input matInput disabled class="form-control" type="text" [id]="inputId" [name]="inputId" [ngModel]="infoText" + [placeholder]="param.title"> <button type="button" mat-icon-button class="param-values-more" (click)="openDialog()" [title]="uitextEditValues"> <mat-icon>more_horiz</mat-icon> </button> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/quicknav/quicknav.component.html b/src/app/components/quicknav/quicknav.component.html index 31f1db00b..b8d738fcd 100644 --- a/src/app/components/quicknav/quicknav.component.html +++ b/src/app/components/quicknav/quicknav.component.html @@ -1,7 +1,7 @@ -<div class="quicknav-row" [ngStyle]="alignStyle" *ngIf="hasItems" [id]="id" - [class.autoPadLeft]="align === 'left'" [class.autoPadRight]="align === 'right'"> +<div class="quicknav-row" [ngStyle]="alignStyle" *ngIf="hasItems" [id]="id" [class.autoPadLeft]="align === 'left'" + [class.autoPadRight]="align === 'right'"> <div class="quicknav-item" *ngFor="let i of items" [class.current]="isCurrent(i)" [ngStyle]="paddingStyle"> <a (click)="scrollTo(i)">{{ label(i) }}</a> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/remous-results/remous-results.component.html b/src/app/components/remous-results/remous-results.component.html index 8a51ef96d..ed96cbf12 100644 --- a/src/app/components/remous-results/remous-results.component.html +++ b/src/app/components/remous-results/remous-results.component.html @@ -1,10 +1,12 @@ -<div class="remous-results-container" #remousResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="remous-results-container" #remousResults *ngIf="hasResults" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="remous-results-buttons"> <button mat-icon-button (click)="exportAsImage(remousResults)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -12,19 +14,21 @@ </button> </div> - <chart id="main-chart" ngClass.lt-sm="height300" ngClass.sm="height400" ngClass.md="height400" ngClass.gt-md="height600" - [type]="graph1_type" [data]="graph1_data" [options]="graph1_options"> + <chart id="main-chart" ngClass.lt-sm="height300" ngClass.sm="height400" ngClass.md="height400" + ngClass.gt-md="height600" [type]="graph1_type" [data]="graph1_data" [options]="graph1_options"> </chart> </div> </div> -<div class="remous-results-extragraph-container" #remousResultsExtra *ngIf="extraChart" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="remous-results-extragraph-container" #remousResultsExtra *ngIf="extraChart" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="remous-results-buttons"> <button mat-icon-button (click)="exportAsImage(remousResultsExtra)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResultsExtra)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResultsExtra)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -40,7 +44,8 @@ <!-- journal --> <log></log> -<div [hidden]="! hasData"><!-- *ngIf breaks @ViewChild availability--> +<div [hidden]="! hasData"> + <!-- *ngIf breaks @ViewChild availability--> <!-- résultats numériques --> <var-results></var-results> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/results-chart/results-chart.component.html b/src/app/components/results-chart/results-chart.component.html index 7b95757ae..1cf1336d5 100644 --- a/src/app/components/results-chart/results-chart.component.html +++ b/src/app/components/results-chart/results-chart.component.html @@ -7,7 +7,8 @@ <button mat-icon-button (click)="exportAsImage(graphResults)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -41,4 +42,4 @@ </mat-option> </mat-select> </mat-form-field> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/section-results/section-results.component.html b/src/app/components/section-results/section-results.component.html index 7911644b1..ff26a315c 100644 --- a/src/app/components/section-results/section-results.component.html +++ b/src/app/components/section-results/section-results.component.html @@ -1,11 +1,13 @@ -<div class="section-results-container" #sectionResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="section-results-container" #sectionResults *ngIf="hasResults" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="section-results-buttons"> <button mat-icon-button (click)="exportAsImage(sectionResults)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(sectionResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(sectionResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -36,4 +38,4 @@ <var-results [results]=varResults></var-results> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/session-properties/session-properties.component.html b/src/app/components/session-properties/session-properties.component.html index 13211dc48..3ad9695b6 100644 --- a/src/app/components/session-properties/session-properties.component.html +++ b/src/app/components/session-properties/session-properties.component.html @@ -16,8 +16,8 @@ </mat-tab> <mat-tab [label]="uitextEdit"> <mat-form-field> - <textarea matInput id="md-editor" [(ngModel)]="content" - cdkTextareaAutosize cdkAutosizeMinRows="15" #autosize="cdkTextareaAutosize"></textarea> + <textarea matInput id="md-editor" [(ngModel)]="content" cdkTextareaAutosize + cdkAutosizeMinRows="15" #autosize="cdkTextareaAutosize"></textarea> </mat-form-field> </mat-tab> </mat-tab-group> @@ -26,4 +26,4 @@ </mat-card> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/session-properties/session-properties.component.ts b/src/app/components/session-properties/session-properties.component.ts index d9cbf6111..fe82be8a0 100644 --- a/src/app/components/session-properties/session-properties.component.ts +++ b/src/app/components/session-properties/session-properties.component.ts @@ -30,7 +30,7 @@ export class SessionPropertiesComponent implements OnInit { throwOnError: false, errorColor: "#cc0000" }; - if (! isDevMode()) { + if (!isDevMode()) { this.matomoTracker.trackPageView("notes"); } } @@ -57,8 +57,8 @@ export class SessionPropertiesComponent implements OnInit { public ngOnInit() { // if app is started on this page but session is empty, redirect to home page - if (! this.hasModules) { - this.router.navigate([ "/list" ]); + if (!this.hasModules) { + this.router.navigate(["/list"]); } // if notes content is empty, switch to editor if (this.content === undefined || this.content === "") { diff --git a/src/app/services/error.service.ts b/src/app/services/error.service.ts index 77620c3b7..25288f4fe 100644 --- a/src/app/services/error.service.ts +++ b/src/app/services/error.service.ts @@ -4,7 +4,7 @@ import { Observable } from "jalhyd"; @Injectable() export class ErrorService extends Observable { - // TODO: add explicit constructor + // TODO: add explicit constructor doAlert(m: string) { this.notifyObservers(m); diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 486a296de..89653c92f 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -114,7 +114,7 @@ export class FormulaireService extends Observable { }); } else { const f: string = this.getConfigPathPrefix(calc) + lang + ".json"; - return this._httpService.httpGetRequestPromise(f).then((localisation) => { + return this._httpService.httpGetRequestPromise(f).then((localisation) => { this._languageCache[ct] = this._languageCache[ct] || {}; this._languageCache[ct][lang] = localisation; return localisation as StringMap; @@ -182,8 +182,8 @@ export class FormulaireService extends Observable { if (match) { // Les libellés correspondants sont INFO OUVRAGE et INFO_LIB_OUVRAGE_XXX s = this.intlService.localizeText(`INFO_${match[1].toUpperCase()}`) - + " n°" + (+match[2] + 1) + ": " - + this.expandVariableName(calcType, `${match[1].toUpperCase()}_${match[3].toUpperCase()}`); + + " n°" + (+match[2] + 1) + ": " + + this.expandVariableName(calcType, `${match[1].toUpperCase()}_${match[3].toUpperCase()}`); } else { s = this.intlService.localizeText("INFO_LIB_" + symbol.toLocaleUpperCase()); } diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3612073bc..5d0833162 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,3 +1,3 @@ export const environment = { - production: true + production: true }; -- GitLab From 3edcb02a3767539eaa4f1790d302e013faecd8d2 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 13 Aug 2020 10:56:16 +0200 Subject: [PATCH 072/101] tslint --- .../verificateur-results.component.ts | 3 ++- src/app/services/service-factory.ts | 17 ++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts index 2222240c5..1d76c0420 100644 --- a/src/app/components/verificateur-results/verificateur-results.component.ts +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -125,7 +125,8 @@ export class VerificateurResultsComponent extends ResultsComponentDirective impl er && er.hasResultElements() && er.resultElements[vi] - && er.resultElements[vi].hasLog()) + && er.resultElements[vi].hasLog()) + // tslint:disable-next-line:one-line { l[i].subLog.addLog(er.resultElements[vi].log); } diff --git a/src/app/services/service-factory.ts b/src/app/services/service-factory.ts index 6d3c7b4ed..a566f3aab 100644 --- a/src/app/services/service-factory.ts +++ b/src/app/services/service-factory.ts @@ -4,22 +4,21 @@ import { I18nService } from "./internationalisation.service"; import { HttpService } from "./http.service"; import { NotificationsService } from "./notifications.service"; - /** - * A "Singleton" the TS way, that holds pointers to all services, to be accessed - * at any time by classes that do not support injection; fed by AppComponent at - * construction time - */ - export const ServiceFactory: { +/** + * A "Singleton" the TS way, that holds pointers to all services, to be accessed + * at any time by classes that do not support injection; fed by AppComponent at + * construction time + */ +export const ServiceFactory: { applicationSetupService: ApplicationSetupService; formulaireService: FormulaireService; i18nService: I18nService; httpService: HttpService; notificationsService: NotificationsService; - } = { +} = { applicationSetupService: undefined, formulaireService: undefined, i18nService: undefined, httpService: undefined, notificationsService: undefined - }; - \ No newline at end of file +}; -- GitLab From 2371de3023ad665e17b3a55227ff4c047b0831c0 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 13 Aug 2020 11:01:36 +0200 Subject: [PATCH 073/101] Get rid of unused ErrorService --- src/app/app.component.ts | 18 +----------------- src/app/services/error.service.ts | 12 ------------ 2 files changed, 1 insertion(+), 29 deletions(-) delete mode 100644 src/app/services/error.service.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 364b60d6b..01ddce6dd 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -9,7 +9,6 @@ import { Observer, jalhydDateRev, jalhydVersion, CalculatorType, Session } from import { environment } from "../environments/environment"; import { I18nService } from "./services/internationalisation.service"; -import { ErrorService } from "./services/error.service"; import { FormulaireService } from "./services/formulaire.service"; import { FormulaireDefinition } from "./formulaire/definition/form-definition"; import { ServiceFactory } from "./services/service-factory"; @@ -46,8 +45,7 @@ declare let device: any; @Component({ selector: "nghyd-app", templateUrl: "./app.component.html", - styleUrls: ["./app.component.scss"], - providers: [ErrorService] + styleUrls: ["./app.component.scss"] }) export class AppComponent implements OnInit, OnDestroy, Observer { @@ -84,7 +82,6 @@ export class AppComponent implements OnInit, OnDestroy, Observer { constructor( private intlService: I18nService, private appSetupService: ApplicationSetupService, - private errorService: ErrorService, private router: Router, private formulaireService: FormulaireService, private httpService: HttpService, @@ -277,12 +274,10 @@ export class AppComponent implements OnInit, OnDestroy, Observer { */ ngOnInit() { this.formulaireService.addObserver(this); - this.subscribeErrorService(); this._innerWidth = window.innerWidth; } ngOnDestroy() { - this.unsubscribeErrorService(); this.formulaireService.removeObserver(this); } @@ -409,17 +404,6 @@ export class AppComponent implements OnInit, OnDestroy, Observer { return fits; } - /** - * abonnement au service d'erreurs - */ - private subscribeErrorService() { - this.errorService.addObserver(this); - } - - private unsubscribeErrorService() { - this.errorService.removeObserver(this); - } - public get enableHeaderDoc(): boolean { return this.currentRoute === "/list" && this._calculators.length === 0; } diff --git a/src/app/services/error.service.ts b/src/app/services/error.service.ts deleted file mode 100644 index 25288f4fe..000000000 --- a/src/app/services/error.service.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Injectable } from "@angular/core"; - -import { Observable } from "jalhyd"; - -@Injectable() -export class ErrorService extends Observable { - // TODO: add explicit constructor - - doAlert(m: string) { - this.notifyObservers(m); - } -} -- GitLab From 12dbcfe6e24ed9905edfe22dfcd9a0888e0f34d7 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 14 Aug 2020 14:14:25 +0200 Subject: [PATCH 074/101] Fix #434 - doc for Verificateur --- .../calculators/verif/especes_predefinies.md | 26 +++++ docs/en/calculators/verif/macrorugo.md | 46 ++++++++ docs/en/calculators/verif/pab.md | 105 ++++++++++++++++++ docs/en/calculators/verif/par.md | 36 ++++++ docs/en/calculators/verif/principe.md | 29 +++++ .../calculators/verif/especes_predefinies.md | 26 +++++ docs/fr/calculators/verif/macrorugo.md | 46 ++++++++ docs/fr/calculators/verif/pab.md | 105 ++++++++++++++++++ docs/fr/calculators/verif/par.md | 36 ++++++ docs/fr/calculators/verif/principe.md | 29 +++++ mkdocs-en.yml | 14 +++ mkdocs-fr.yml | 6 + src/locale/messages.en.json | 24 ++-- 13 files changed, 516 insertions(+), 12 deletions(-) create mode 100644 docs/en/calculators/verif/especes_predefinies.md create mode 100644 docs/en/calculators/verif/macrorugo.md create mode 100644 docs/en/calculators/verif/pab.md create mode 100644 docs/en/calculators/verif/par.md create mode 100644 docs/en/calculators/verif/principe.md create mode 100644 docs/fr/calculators/verif/especes_predefinies.md create mode 100644 docs/fr/calculators/verif/macrorugo.md create mode 100644 docs/fr/calculators/verif/pab.md create mode 100644 docs/fr/calculators/verif/par.md create mode 100644 docs/fr/calculators/verif/principe.md diff --git a/docs/en/calculators/verif/especes_predefinies.md b/docs/en/calculators/verif/especes_predefinies.md new file mode 100644 index 000000000..a8c0bde15 --- /dev/null +++ b/docs/en/calculators/verif/especes_predefinies.md @@ -0,0 +1,26 @@ +# Crossability verification: Predefined species + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| ICE group | Species | +|-------------------------|----------------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | +| 2 | Mules (Chelon labrosus, Liza ramada) | +| 3a | Gread shad (Alosa alosa) | +| 3b | Shad (Alosa fallax fallax) | +| 3c | Sea lamprey (Petromyzon marinus) | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | +| 4b | River trout [15-30] (Salmo trutta) | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | +| 6 | Common grayling (Thymallus thymallus) | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | +| 7b | River lamprey (Lampetra fluviatilis) | +| 8a | Common carp (Cyprinus carpio) | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | +| 8d | Common dace (Leuciscus sp but Idus) | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | + +Table: List of predefined group species diff --git a/docs/en/calculators/verif/macrorugo.md b/docs/en/calculators/verif/macrorugo.md new file mode 100644 index 000000000..bb41fb93f --- /dev/null +++ b/docs/en/calculators/verif/macrorugo.md @@ -0,0 +1,46 @@ +# Crossability verification: Rock-ramp fishpasses + +## Compound rock-ramp fishpasses + +In the case of compound rock-ramp fishpasses, each apron (reminder: inclined apron are discretised) is verified like an independent rock-ramp fishpass. + +If at least one apron is crossable, the pass is considered crossable. + +Maximum crossable width, wich is the maximum of the sums of the widths of contiguous crossable aprons, is given at the end of the verification. + +## Criteria + +### Minimum water level \(YMin\), in m + +Water level \(Y\) in the pass should be greater than minimum water level. + +### Limit maximum flow velocity \(VeMax\), in m/s + +Maximum flow velocity \(VMax\) in the pass should be lower than limit maximum flow velocity. + +## Criteria values for predefined species groups + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| ICE group | Species | Minimum water level (m) | Limit maximum flow velocity (m/s) | +|-------------------------|----------------|----------------|----------------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.4 | 2.5 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.3 | 2.5 | +| 3a | Gread shad (Alosa alosa) | 0.4 | 2 | +| 3b | Shad (Alosa fallax fallax) | 0.4 | 2 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.15 | 2 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.3 | 2 | +| 4b | River trout [15-30] (Salmo trutta) | 0.2 | 2 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.3 | 2 | +| 6 | Common grayling (Thymallus thymallus) | 0.3 | 2 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.3 | 2 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.15 | 2 | +| 8a | Common carp (Cyprinus carpio) | 0.3 | 1.5 | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | 0.3 | 1.5 | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | 0.3 | 1.5 | +| 8d | Common dace (Leuciscus sp but Idus) | 0.3 | 1.5 | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | 0.2 | 1.5 | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | 0.2 | 1.5 | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | 0.2 | 1.5 | + +Table: List of predefined values for crossing criteria of a rock-ramp fishpass diff --git a/docs/en/calculators/verif/pab.md b/docs/en/calculators/verif/pab.md new file mode 100644 index 000000000..6d5a7e7ca --- /dev/null +++ b/docs/en/calculators/verif/pab.md @@ -0,0 +1,105 @@ +# Crossability verification: Fish ladders + +When verifying a fish ladder, basins and walls are sequentially tested, as well as every device of each wall. If at least one basin is not crossable, then the pass is not crossable. + +Criteria differ depending on the jet type generated by the device being verified. If a wall has several devices, it will be considered crossable if at least one device is crossable. + +Orifices are considered uncrossable. + +## Criteria + +### Diving jet support + +Some species do not support diving jets. For such species, each device leading to a diving jet is marked as not crossable. + +### Maximum fall \(DHMaxS\) and \(DHMaxP\), in m + +Basin fall \(DH\) must be lower than maximum fall. + +### Minimum slot width \(BMin\), in m (surface jet only) + +Slot width \(L\) must be greater than minimum width. For orifices, surface \(S\) must be greater than minimum width squared. + +### Minimum head on weir \(HMin\), in m + +Head \(h1\) on weir must be greater than minimum head. + +### Minimum basin depth \(PMinS\) and \(PMinP\), in m + +Basin depth \(YMOY\) must be greater than minimum depth. For diving jets, depth must be greater than twice the basin fall \(DH\). + +### Minimum basin length \(LMinS\) and \(LMinP\), in m + +Basin length \(LB\) must be greater than minimum length. + +### Recommanded maximum dissipated power \(PVMaxPrec\) and limit maximum dissipated power \(PVMaxLim\), in W/m³ + +Maximal dissipated power \(PVMax\) in the basin must be lower than limit maximum dissipated power. If it is greater than recommanded maximum dissipated power, a warning is thrown. + +**Important:** maximum dissipated power verification is **disabled** in the current Cassiopée version. + +## Criteria values for predefined species groups + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_, and D. Courret. + +### Common values for surface jet and diving jet + +| ICE group | Species | Minimum head on weir (m) | Recommanded maximum dissipated power (W/m³) | Limit maximum dissipated power (W/m³) | +|------------|---------|---------|---------|---------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.3 | 200 | 250 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.2 | 200 | 250 | +| 3a | Gread shad (Alosa alosa) | 0.4 | 150 | 200 | +| 3b | Shad (Alosa fallax fallax) | 0.4 | 150 | 200 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.15 | 200 | 250 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.2 | 200 | 250 | +| 4b | River trout [15-30] (Salmo trutta) |0.2 | 200 | 250 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.2 | 150 | 200 | +| 6 | Common grayling (Thymallus thymallus) | 0.2 | 200 | 250 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.2 | 150 | 200 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.15 | 130 | 150 | +| 8a | Common carp (Cyprinus carpio) | 0.2 | - | - | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | 0.2 | 150 | 200 | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | 0.2 | 130 | 150 | +| 8d | Common dace (Leuciscus sp but Idus) | 0.2 | 150 | 200 | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | 0.2 | 130 | 150 | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | 0.2 | 130 | 150 | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | 0.2 | 100 | 150 | + +Table: List of predefined values for crossing criteria of a fish ladder + +### Surface jet + +| ICE group | Species | Maximum fall (m) | Minimum slot width (m) | Minimum basin depth (m) | Minimum basin length (m) | +|------------|---------|---------|---------|--------------|----------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.35 | 0.3 | 1 | 2.5 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.35 | 0.2 | 1 | 1.75 | +| 3a | Gread shad (Alosa alosa) | 0.3 | 0.4 | 1 | 3.5 | +| 3b | Shad (Alosa fallax fallax) | 0.3 | 0.4 | 1 | 3.5 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.3 | 0.15 | 1 | 1.25 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.35 | 0.2 | 1 | 1.75 | +| 4b | River trout [15-30] (Salmo trutta) | 0.3 | 0.15 | 0.75 | 1.75 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.3 | 0.3 | 0.75 | 2.5 | +| 6 | Common grayling (Thymallus thymallus) | 0.3 | 0.2 | 0.75 | 1.75 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.3 | 0.25 | 0.75 | 2 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.3 | 0.15 | 0.75 | 1.25 | +| 8a | Common carp (Cyprinus carpio) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8d | Common dace (Leuciscus sp but Idus) | 0.25 | 0.3 | 0.75 | 2.5 | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | 0.25 | 0.25 | 0.75 | 2 | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | 0.2 | 0.15 | 0.5 | 1.25 | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | 0.2 | 0.15 | 0.5 | 1.25 | + +Table: List of predefined values for crossing criteria of a fish ladder, with surface jet + +### Diving jet + +| ICE Group | Species | Maximum fall (m) | Minimum basin depth (m) | Minimum basin length (m) | +|------------|---------|---------|-----------|--------------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.75 | 1 | 2 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.6 | 0.75 | 1.25 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.4 | 0.75 | 1.25 | +| 4b | River trout [15-30] (Salmo trutta) | 0.3 | 0.75 | 1 | +| 6 | Common grayling (Thymallus thymallus) | 0.3 | 0.75 | 1 | + +Table: List of predefined values for crossing criteria of a fish ladder, with diving jet diff --git a/docs/en/calculators/verif/par.md b/docs/en/calculators/verif/par.md new file mode 100644 index 000000000..7a2462687 --- /dev/null +++ b/docs/en/calculators/verif/par.md @@ -0,0 +1,36 @@ +# Crossability verification: Humpback fishways (simulation) + +## Criteria + +### Incompatible and discouraged species + +Species groups 3a, 3b and 7b are discouraged for crossing humpback fishways. This leads to a warning, but does not make the pass not crossable. + +Species groups 8a, 8b, 8c, 8d, 9a, 9b and 10 are unable to cross humpback fishways. + +### Minimum water level \(YMinPB\) and \(YMinSB\), in m + +Water level \(h\) in the pass must be greater than the minimum water level, depending on baffles type: + + * plane and Fatou baffles: \(YMinPB\) + * superactive and chevron baffles: \(YMinSB\) + +## Criteria values for predefined species groups + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| ICE group | Species | Minimum water level on plane baffles (m) | Minimum water level on superactive baffles (m) | +|------------|---------|---------|-----------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.3 | 0.2 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.25 | 0.15 | +| 3a | Gread shad (Alosa alosa) | 0.3 | 0.2 | +| 3b | Shad (Alosa fallax fallax) | 0.25 | 0.15 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.1 | 0.1 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.25 | 0.15 | +| 4b | River trout [15-30] (Salmo trutta) | 0.2 | 0.1 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.3 | 0.2 | +| 6 | Common grayling (Thymallus thymallus) | 0.25 | 0.15 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.25 | 0.15 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.1 | 0.1 | + +Table: List of predefined values for crossing criteria of a humpback fishway diff --git a/docs/en/calculators/verif/principe.md b/docs/en/calculators/verif/principe.md new file mode 100644 index 000000000..6313c5cce --- /dev/null +++ b/docs/en/calculators/verif/principe.md @@ -0,0 +1,29 @@ +# Crossability verification + +This module allows to verify the capacity of different fish species to cross the following types of fish passes: + +- [fish ladders](pab.md) +- [humpback fishways](par.md) +- [rock-ramp fishpasses](macrorugo.md) + +## Principle + +For each pass type, several crossability criteria are checked, expressed as threshold values (ex: minimal basin depth, for a fish ladder). + +Exceeding the threshold value of a criterion leads to an explicit error mentioning the quantity concerned and the threshold value, and results in the pass not being crossable. + +Some criteria such as maximal dissipated power have both an alert value (crossability is possible but not guaranteed) and a limit value (crossing the pass is impossible). + +For a given pass, one can check at once the crossing capabilities of several species, over multiple modalities (variation of one or more parameters in the pass). + +## Predefined species + +[Several common species groups](especes_predefinies.md) are predefined: default values are associated to crossability criteria. + +Default values for some of those criteria might be missing for a species group, when the latter is considered unabled to cross the pass type the criterion is related to. + +## Custom species + +The `Fish species characteristics` module allows to define custom values for all criteria, before running a pass verification. + +If a criterion is applicable to the pass that is being checked, but no value was given, an error will be triggered when running the verification, leading to the pass being not crossable. diff --git a/docs/fr/calculators/verif/especes_predefinies.md b/docs/fr/calculators/verif/especes_predefinies.md new file mode 100644 index 000000000..dbb388400 --- /dev/null +++ b/docs/fr/calculators/verif/especes_predefinies.md @@ -0,0 +1,26 @@ +# Vérification des critères de franchissement : Espèces prédéfinies + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| Groupe ICE | Espèces | +|-------------------------|----------------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | +| 2 | Mulets (Chelon labrosus, Liza ramada) | +| 3a | Grande alose (Alosa alosa) | +| 3b | Alose feinte (Alosa fallax fallax) | +| 3c | Lamproie marine (Petromyzon marinus) | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | +| 4b | Truite de rivière [15-30] (Salmo trutta) | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | +| 6 | Ombre commun (Thymallus thymallus) | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | +| 8a | Carpe commune (Cyprinus carpio) | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | +| 8d | Vandoises (Leuciscus sp hors Idus) | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | + +Table: Liste des groupe d'espèces prédéfinis diff --git a/docs/fr/calculators/verif/macrorugo.md b/docs/fr/calculators/verif/macrorugo.md new file mode 100644 index 000000000..4cab10c41 --- /dev/null +++ b/docs/fr/calculators/verif/macrorugo.md @@ -0,0 +1,46 @@ +# Vérification des critères de franchissement : Passes à macrorugosités + +## Passes à macrorugosités complexes + +Dans le cas des pases à macrorugosités complexes, chaque radier (rappel : les radiers inclinés sont discrétisés) est vérifié comme une passe à macrorugosités indépendante. + +Si au moins un radier est franchissable, la passe est considérée comme franchissable. + +La largeur maximale franchissable, maximum des sommes des largeurs des radiers franchissables contigus, est indiquée à l'issue de la vérification. + +## Critères + +### Tirant d'eau minimal \(YMin\), en m + +Le tirant d'eau \(Y\) dans la passe doit être supérieur au tirant d'eau minimal. + +### Vitesse d'écoulement maximale limite \(VeMax\), en m/s + +La vitesse d'écoulement maximale \(VMax\) dans la passe doit être inférieure à la vitesse d'écoulement maximale limite. + +## Valeurs des critères pour les groupes d'espèces prédéfinis + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| Groupe ICE | Espèces | Tirant d'eau minimal (m) | Vitesse d'écoulement maximale limite (m/s) | +|-------------------------|----------------|----------------|----------------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.4 | 2.5 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.3 | 2.5 | +| 3a | Grande alose (Alosa alosa) | 0.4 | 2 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.4 | 2 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.15 | 2 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.3 | 2 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.2 | 2 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.3 | 2 | +| 6 | Ombre commun (Thymallus thymallus) | 0.3 | 2 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.3 | 2 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.15 | 2 | +| 8a | Carpe commune (Cyprinus carpio) | 0.3 | 1.5 | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | 0.3 | 1.5 | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | 0.3 | 1.5 | +| 8d | Vandoises (Leuciscus sp hors Idus) | 0.3 | 1.5 | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | 0.2 | 1.5 | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | 0.2 | 1.5 | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | 0.2 | 1.5 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à macrorugosités diff --git a/docs/fr/calculators/verif/pab.md b/docs/fr/calculators/verif/pab.md new file mode 100644 index 000000000..b86c8b864 --- /dev/null +++ b/docs/fr/calculators/verif/pab.md @@ -0,0 +1,105 @@ +# Vérification des critères de franchissement : Passes à bassins + +Lors de la vérification d'une passe à bassins, les bassins et les cloisons sont testés séquentiellement, ainsi que tous les ouvrages de chaque cloison. Si au moins un bassin est infranchissable, alors la passe est infranchissable. + +Les critères diffèrent selon que l'ouvrage considéré donne lieu à un jet plongeant ou à un jet de surface. Si une cloison possède plusieurs ouvrages, elle sera considérée comme franchissable si au moins un ouvrage est franchissable. + +Les orifices sont considérés comme infranchissables. + +## Critères + +### Jet plongeant + +Certaines espèces ne supportent pas les jets plongeants. Pour ces espèces, chaque ouvrage donnant lieu à un jet plongeant est marqué comme infranchissable. + +### Chute maximale \(DHMaxS\) et \(DHMaxP\), en m + +La chute \(DH\) du bassin doit être inférieure à la chute maximale. + +### Largeur minimale de fente ou échancrure latérale \(BMin\), en m (jet de surface seulement) + +La largeur \(L\) de la fente ou échancrure doit être supérieure à la largeur minimale. Dans le cas d'un orifice, la surface \(S\) de l'orifice doit être supérieure à la largeur minimale au carré. + +### Charge minimale sur l'échancrure \(HMin\), en m + +La charge \(h1\) sur l'échancrure doit être supérieure à la charge minimale. + +### Profondeur minimale de bassin \(PMinS\) et \(PMinP\), en m + +La profondeur \(YMOY\) du bassin doit être supérieure à la profondeur minimale. Dans le cas d'un jet plongeant, la profondeur doit être supérieure au double de la chute \(DH\) du bassin. + +### Longueur minimale de bassin \(LMinS\) et \(LMinP\), en m + +La longueur \(LB\) du bassin doit être supérieure à la longueur minimale. + +### Puissance dissipée maximale préconisée \(PVMaxPrec\) et maximale limite \(PVMaxLim\), en W/m³ + +La puissance dissipée maximale \(PVMax\) dans le bassin doit être inférieure à la puissance dissipée maximale limite. Si elle est supérieure à la puissance dissipée maximale préconisée, un avertissement est émis. + +**Important :** la vérification de la puissance dissipée maximale est **désactivée** dans la version actuelle de Cassiopée + +## Valeurs des critères pour les groupes d'espèces prédéfinis + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_, et D. Courret. + +### Valeurs communes pour jet de surface et jet plongeant + +| Groupe ICE | Espèces | Charge minimale sur l'échancrure (m) | Puissance dissipée maximale préconisée (W/m³) | Puissance dissipée maximale limite (W/m³) | +|------------|---------|---------|---------|---------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.3 | 200 | 250 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.2 | 200 | 250 | +| 3a | Grande alose (Alosa alosa) | 0.4 | 150 | 200 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.4 | 150 | 200 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.15 | 200 | 250 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.2 | 200 | 250 | +| 4b | Truite de rivière [15-30] (Salmo trutta) |0.2 | 200 | 250 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.2 | 150 | 200 | +| 6 | Ombre commun (Thymallus thymallus) | 0.2 | 200 | 250 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.2 | 150 | 200 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.15 | 130 | 150 | +| 8a | Carpe commune (Cyprinus carpio) | 0.2 | - | - | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | 0.2 | 150 | 200 | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | 0.2 | 130 | 150 | +| 8d | Vandoises (Leuciscus sp hors Idus) | 0.2 | 150 | 200 | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | 0.2 | 130 | 150 | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | 0.2 | 130 | 150 | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | 0.2 | 100 | 150 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à bassins + +### Jet de surface + +| Groupe ICE | Espèces | Chute maximale (m) | Largeur minimale de fente ou échancrure latérale (m) | Profondeur minimale de bassin (m) | Longueur minimale de bassin (m) | +|------------|---------|---------|---------|--------------|----------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.35 | 0.3 | 1 | 2.5 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.35 | 0.2 | 1 | 1.75 | +| 3a | Grande alose (Alosa alosa) | 0.3 | 0.4 | 1 | 3.5 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.3 | 0.4 | 1 | 3.5 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.3 | 0.15 | 1 | 1.25 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.35 | 0.2 | 1 | 1.75 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.3 | 0.15 | 0.75 | 1.75 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.3 | 0.3 | 0.75 | 2.5 | +| 6 | Ombre commun (Thymallus thymallus) | 0.3 | 0.2 | 0.75 | 1.75 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.3 | 0.25 | 0.75 | 2 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.3 | 0.15 | 0.75 | 1.25 | +| 8a | Carpe commune (Cyprinus carpio) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8d | Vandoises (Leuciscus sp hors Idus) | 0.25 | 0.3 | 0.75 | 2.5 | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | 0.25 | 0.25 | 0.75 | 2 | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | 0.2 | 0.15 | 0.5 | 1.25 | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | 0.2 | 0.15 | 0.5 | 1.25 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à bassins, en jet de surface + +### Jet plongeant + +| Groupe ICE | Espèces | Chute maximale (m) | Profondeur minimale de bassin (m) | Longueur minimale de bassin (m) | +|------------|---------|---------|-----------|--------------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.75 | 1 | 2 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.6 | 0.75 | 1.25 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.4 | 0.75 | 1.25 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.3 | 0.75 | 1 | +| 6 | Ombre commun (Thymallus thymallus) | 0.3 | 0.75 | 1 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à bassins, en jet plongeant diff --git a/docs/fr/calculators/verif/par.md b/docs/fr/calculators/verif/par.md new file mode 100644 index 000000000..e053af8fa --- /dev/null +++ b/docs/fr/calculators/verif/par.md @@ -0,0 +1,36 @@ +# Vérification des critères de franchissement : Passes à ralentisseurs (simulation) + +## Critères + +### Espèces déconseillées et incompatibles + +Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour le franchissement d'une passe à ralentisseurs. Cela donne lieu à un avertissement, sans pour autant entraîner l'infranchissabilité de la passe. + +Les groupes d'espèces 8a, 8b, 8c, 8d, 9a, 9b et 10 sont incapables de franchir des passes à ralentisseurs. + +### Tirant d'eau minimal \(YMinPB\) et \(YMinSB\), en m + +Le tirant d'eau \(h\) dans la passe doit être supérieur au tirant d'eau minimal, selon le type de ralentisseurs : + + * ralentisseurs plans et Fatou : \(YMinPB\) + * ralentisseurs suractifs et chevrons : \(YMinSB\) + +## Valeurs des critères pour les groupes d'espèces prédéfinis + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| Groupe ICE | Espèces | Tirant d'eau minimal sur les ralentisseurs plans (m) | Tirant d'eau minimal sur les ralentisseurs suractifs (m) | +|------------|---------|---------|-----------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.3 | 0.2 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.25 | 0.15 | +| 3a | Grande alose (Alosa alosa) | 0.3 | 0.2 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.25 | 0.15 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.1 | 0.1 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.25 | 0.15 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.2 | 0.1 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.3 | 0.2 | +| 6 | Ombre commun (Thymallus thymallus) | 0.25 | 0.15 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.25 | 0.15 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.1 | 0.1 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à ralentisseurs diff --git a/docs/fr/calculators/verif/principe.md b/docs/fr/calculators/verif/principe.md new file mode 100644 index 000000000..bce6ec0e9 --- /dev/null +++ b/docs/fr/calculators/verif/principe.md @@ -0,0 +1,29 @@ +# Vérification des critères de franchissement + +Cet outil permet de vérifier la capacité des différentes espèces de poissons à franchir les types de passes suivants : + +- [passes à bassins](pab.md) +- [passes à ralentisseurs](par.md) +- [passes à macrorugosités](macrorugo.md) + +## Principe + +Pour chaque type de passe, on contrôle plusieurs critères de franchissabilité, exprimés sous forme de valeurs limites (ex: profondeur minimale de bassin, pour une passe à bassins). + +Tout dépassement de la valeur limite d'un critère donne lieu à une erreur explicite mentionnant la grandeur concernée et la valeur limite, et entraîne la non franchissabilité de la passe. + +Certains critères comme la puissance maximale dissipée possèdent à la fois une valeur d'alerte (la franchissabilité n'est pas garantie mais reste possible) et une valeur limite (le franchissement est impossible). + +Pour une même passe, on peut verifier simultanément la capacité de franchissement de plusieurs espèces, sur plusieurs modalités (variation d'un ou plusieurs paramètres de la passe). + +## Espèces prédéfinies + +[Plusieurs groupes d'espèces communes](especes_predefinies.md) sont prédéfinis : des valeurs par défaut sont associées aux critères de franchissement. + +Les valeurs par défaut de certains critères peuvent être absentes pour un groupe d'espèces, lorsque celui-ci est considéré comme incapable de franchir le type de passes auquel le critère est rattaché. + +## Espèces personnalisées + +Le module `Espèce` permet de définir des valeurs personnalisées pour tous les critères, avant de lancer la vérification d'une passe. + +Si un critère est applicable à la passe à vérifier mais aucune valeur n'a été saisie, une erreur sera affichée lors de la vérification, entraînant la non franchissabilité de la passe. diff --git a/mkdocs-en.yml b/mkdocs-en.yml index 5adfe779a..88e7fd794 100644 --- a/mkdocs-en.yml +++ b/mkdocs-en.yml @@ -64,6 +64,20 @@ nav: - calculators/pam/macrorugo_theorie.md - calculators/pam/macrorugo_complexe.md - calculators/pam/concentration.md + - Humpback fishways: + - calculators/par/calage.md + - calculators/par/simulation.md + - calculators/par/formules.md + - calculators/par/theorie_plans.md + - calculators/par/theorie_fatou.md + - calculators/par/theorie_suractif.md + - calculators/par/theorie_mixte.md + - Crossability verification: + - Principle: calculators/verif/principe.md + - Fish ladders: calculators/verif/pab.md + - Humpback fishways: calculators/verif/par.md + - Rock-ramp fishpasses: calculators/verif/macrorugo.md + - Predefined species: calculators/verif/especes_predefinies.md - Downstream migration: - Loss of charge, water grid: calculators/devalaison/grille.md - Jet impact: calculators/devalaison/jet.md diff --git a/mkdocs-fr.yml b/mkdocs-fr.yml index 20a6b9fa6..f7ac501cd 100644 --- a/mkdocs-fr.yml +++ b/mkdocs-fr.yml @@ -72,6 +72,12 @@ nav: - calculators/par/theorie_fatou.md - calculators/par/theorie_suractif.md - calculators/par/theorie_mixte.md + - Vérification des critères de franchissement: + - Principe: calculators/verif/principe.md + - Passes à bassins: calculators/verif/pab.md + - Passes à ralentisseurs: calculators/verif/par.md + - Passes à macrorugosités: calculators/verif/macrorugo.md + - Espèces prédéfinies: calculators/verif/especes_predefinies.md - Dévalaison: - Perte de charge sur grille de prise d'eau: calculators/devalaison/grille.md - Impact de jet: calculators/devalaison/jet.md diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 927f0081d..b4b6e6ca1 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -143,23 +143,23 @@ "INFO_ENUM_PARFLOWREGIME_0": "Free", "INFO_ENUM_PARFLOWREGIME_1": "Submerged", "INFO_ENUM_SPECIES_1": "Salmon, trout [50-100] (1)", - "INFO_ENUM_SPECIES_2": "Mules (2)", - "INFO_ENUM_SPECIES_3a": "Great Shad (3a)", - "INFO_ENUM_SPECIES_3b": "Shad shad (3b)", + "INFO_ENUM_SPECIES_2": "Mule (2)", + "INFO_ENUM_SPECIES_3a": "Great shad (3a)", + "INFO_ENUM_SPECIES_3b": "Shad (3b)", "INFO_ENUM_SPECIES_3c": "Sea lamprey (3c)", "INFO_ENUM_SPECIES_4a": "Trout [25-55] (4a)", "INFO_ENUM_SPECIES_4b": "River trout [15-30] (4b)", "INFO_ENUM_SPECIES_5": "Aspe, pike (5)", - "INFO_ENUM_SPECIES_6": "Common Shadow (6)", - "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu (7a)", - "INFO_ENUM_SPECIES_7b": "River Lamprey (7b)", - "INFO_ENUM_SPECIES_8a": "Common Carp (8a)", + "INFO_ENUM_SPECIES_6": "Common grayling (6)", + "INFO_ENUM_SPECIES_7a": "Barbel, chub, nase (7a)", + "INFO_ENUM_SPECIES_7b": "River lamprey (7b)", + "INFO_ENUM_SPECIES_8a": "Common carp (8a)", "INFO_ENUM_SPECIES_8b": "Common bream, pike-perch (8b)", - "INFO_ENUM_SPECIES_8c": "Brim bream, ide, monkfish, perch, tench (8c)", - "INFO_ENUM_SPECIES_8d": "Vandoises (8d)", - "INFO_ENUM_SPECIES_9a": "Ablette, cockle, carrassin, roach... (9a)", - "INFO_ENUM_SPECIES_9b": "Apron, sculpins, bolts, loche... (9b)", - "INFO_ENUM_SPECIES_10": "Able, cowherd, stickleback, minnows (10)", + "INFO_ENUM_SPECIES_8c": "White bream, ide, burbot, perch, tench (8c)", + "INFO_ENUM_SPECIES_8d": "Common dace (8d)", + "INFO_ENUM_SPECIES_9a": "Bleak, spirlin, barbel, souffia, crucian carp, roach... (9a)", + "INFO_ENUM_SPECIES_9b": "Apron, sculpins, ruffe, loach... (9b)", + "INFO_ENUM_SPECIES_10": "Sunbleak, bitterling, stickleback, minnow (10)", "INFO_ENUM_SPECIES_11a": "European eel [yellow] (11a)", "INFO_ENUM_SPECIES_11b": "European Eel [glass eel] (11b)", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Weir", -- GitLab From 0e4caedbf5170081881b2a9d184ac5682857ebca Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 14 Aug 2020 14:23:05 +0200 Subject: [PATCH 075/101] Copy french PAR documentation to english doc folder #443 --- .../par/baffle_fishway_Fatou_slope_10_.svg | 508 +++++++++++++++++ .../par/baffle_fishway_Fatou_slope_15_.svg | 511 +++++++++++++++++ .../par/baffle_fishway_Fatou_slope_20_.svg | 512 ++++++++++++++++++ .../par/baffle_fishway_mixte_slope_10_.svg | 459 ++++++++++++++++ .../par/baffle_fishway_mixte_slope_16_.svg | 445 +++++++++++++++ .../par/baffle_fishway_plans_slope_10_.svg | 459 ++++++++++++++++ .../par/baffle_fishway_plans_slope_15_.svg | 464 ++++++++++++++++ .../par/baffle_fishway_plans_slope_20_.svg | 495 +++++++++++++++++ .../par/baffle_fishway_suractif_slope_10_.svg | 451 +++++++++++++++ .../par/baffle_fishway_suractif_slope_15_.svg | 454 ++++++++++++++++ docs/en/calculators/par/calage.md | 38 ++ docs/en/calculators/par/formules.md | 57 ++ docs/en/calculators/par/simulation.md | 26 + docs/en/calculators/par/theorie_fatou.md | 91 ++++ .../calculators/par/theorie_fatou_schema.png | Bin 0 -> 138046 bytes docs/en/calculators/par/theorie_mixte.md | 78 +++ .../calculators/par/theorie_mixte_schema.png | Bin 0 -> 99570 bytes docs/en/calculators/par/theorie_plans.md | 91 ++++ .../calculators/par/theorie_plans_schema.png | Bin 0 -> 95961 bytes docs/en/calculators/par/theorie_suractif.md | 77 +++ .../par/theorie_suractif_schema.png | Bin 0 -> 75501 bytes 21 files changed, 5216 insertions(+) create mode 100644 docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg create mode 100644 docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg create mode 100644 docs/en/calculators/par/calage.md create mode 100644 docs/en/calculators/par/formules.md create mode 100644 docs/en/calculators/par/simulation.md create mode 100644 docs/en/calculators/par/theorie_fatou.md create mode 100644 docs/en/calculators/par/theorie_fatou_schema.png create mode 100644 docs/en/calculators/par/theorie_mixte.md create mode 100644 docs/en/calculators/par/theorie_mixte_schema.png create mode 100644 docs/en/calculators/par/theorie_plans.md create mode 100644 docs/en/calculators/par/theorie_plans_schema.png create mode 100644 docs/en/calculators/par/theorie_suractif.md create mode 100644 docs/en/calculators/par/theorie_suractif_schema.png diff --git a/docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg new file mode 100644 index 000000000..373eb4613 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg @@ -0,0 +1,508 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 1.0625 0 L 1.0625 -10.308594 L 8.128906 -10.308594 L 8.128906 -8.5625 L 3.144531 -8.5625 L 3.144531 -6.125 L 7.445313 -6.125 L 7.445313 -4.378906 L 3.144531 -4.378906 L 3.144531 0 Z M 1.0625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface16"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 406.925781 C 77.101563 410.523438 71.699219 410.523438 71.699219 406.925781 C 71.699219 403.324219 77.101563 403.324219 77.101563 406.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.859375 390.464844 C 87.859375 394.066406 82.460938 394.066406 82.460938 390.464844 C 82.460938 386.863281 87.859375 386.863281 87.859375 390.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.1875 375.652344 C 99.1875 379.25 93.789063 379.25 93.789063 375.652344 C 93.789063 372.050781 99.1875 372.050781 99.1875 375.652344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.816406 362.484375 C 108.816406 366.085938 103.417969 366.085938 103.417969 362.484375 C 103.417969 358.882813 108.816406 358.882813 108.816406 362.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.011719 349.316406 C 119.011719 352.917969 113.613281 352.917969 113.613281 349.316406 C 113.613281 345.714844 119.011719 345.714844 119.011719 349.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.402344 324.628906 C 139.402344 328.226563 134 328.226563 134 324.628906 C 134 321.027344 139.402344 321.027344 139.402344 324.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 148.460938 314.753906 C 148.460938 318.351563 143.0625 318.351563 143.0625 314.753906 C 143.0625 311.152344 148.460938 311.152344 148.460938 314.753906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.1875 295 C 163.1875 298.601563 157.789063 298.601563 157.789063 295 C 157.789063 291.402344 163.1875 291.402344 163.1875 295 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 177.914063 280.1875 C 177.914063 283.789063 172.515625 283.789063 172.515625 280.1875 C 172.515625 276.585938 177.914063 276.585938 177.914063 280.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.808594 265.375 C 189.808594 268.972656 184.40625 268.972656 184.40625 265.375 C 184.40625 261.773438 189.808594 261.773438 189.808594 265.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.800781 248.914063 C 206.800781 252.515625 201.398438 252.515625 201.398438 248.914063 C 201.398438 245.316406 206.800781 245.316406 206.800781 248.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.65625 232.457031 C 222.65625 236.054688 217.257813 236.054688 217.257813 232.457031 C 217.257813 228.855469 222.65625 228.855469 222.65625 232.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.550781 220.933594 C 234.550781 224.535156 229.152344 224.535156 229.152344 220.933594 C 229.152344 217.332031 234.550781 217.332031 234.550781 220.933594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.277344 206.121094 C 249.277344 209.71875 243.878906 209.71875 243.878906 206.121094 C 243.878906 202.519531 249.277344 202.519531 249.277344 206.121094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.570313 192.953125 C 264.570313 196.554688 259.167969 196.554688 259.167969 192.953125 C 259.167969 189.351563 264.570313 189.351563 264.570313 192.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 282.691406 178.960938 C 282.691406 182.5625 277.292969 182.5625 277.292969 178.960938 C 277.292969 175.363281 282.691406 175.363281 282.691406 178.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.683594 163.328125 C 299.683594 166.925781 294.285156 166.925781 294.285156 163.328125 C 294.285156 159.726563 299.683594 159.726563 299.683594 163.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.375 150.160156 C 318.375 153.757813 312.972656 153.757813 312.972656 150.160156 C 312.972656 146.558594 318.375 146.558594 318.375 150.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.800781 138.636719 C 334.800781 142.238281 329.398438 142.238281 329.398438 138.636719 C 329.398438 135.039063 334.800781 135.039063 334.800781 138.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 348.390625 129.585938 C 348.390625 133.183594 342.992188 133.183594 342.992188 129.585938 C 342.992188 125.984375 348.390625 125.984375 348.390625 129.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.515625 117.238281 C 366.515625 120.839844 361.117188 120.839844 361.117188 117.238281 C 361.117188 113.640625 366.515625 113.640625 366.515625 117.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 382.941406 105.71875 C 382.941406 109.320313 377.539063 109.320313 377.539063 105.71875 C 377.539063 102.117188 382.941406 102.117188 382.941406 105.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 408.992188 94.195313 C 408.992188 97.796875 403.59375 97.796875 403.59375 94.195313 C 403.59375 90.597656 408.992188 90.597656 408.992188 94.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 429.949219 82.675781 C 429.949219 86.277344 424.550781 86.277344 424.550781 82.675781 C 424.550781 79.074219 429.949219 79.074219 429.949219 82.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 445.242188 77.738281 C 445.242188 81.335938 439.839844 81.335938 439.839844 77.738281 C 439.839844 74.136719 445.242188 74.136719 445.242188 77.738281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.039063 430.558594 L 458.398438 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.039063 430.558594 L 67.039063 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.945313 430.558594 L 122.945313 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.855469 430.558594 L 178.855469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.765625 430.558594 L 234.765625 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.671875 430.558594 L 290.671875 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.582031 430.558594 L 346.582031 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.492188 430.558594 L 402.492188 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 430.558594 L 458.398438 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.359375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.033203" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.367188" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.041016" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.265625" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.939453" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.273438" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.947266" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.175781" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.849609" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.183594" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.857422" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.085938" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.759766" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.09375" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.767578" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.992188" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.666016" y="456.480469"/> + <use xlink:href="#glyph0-5" x="289" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.673828" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.902344" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.576172" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.910156" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.583984" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.8125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.486328" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.820313" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.494141" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.71875" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.392578" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.726563" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.400391" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 389.640625 L 59.039063 113.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 389.640625 L 51.839844 389.640625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 334.503906 L 51.839844 334.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 279.363281 L 51.839844 279.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 224.226563 L 51.839844 224.226563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 169.085938 L 51.839844 169.085938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 113.949219 L 51.839844 113.949219 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="397.980469"/> + <use xlink:href="#glyph1-2" x="41.761719" y="391.306641"/> + <use xlink:href="#glyph1-3" x="41.761719" y="387.972656"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="342.84375"/> + <use xlink:href="#glyph1-2" x="41.761719" y="336.169922"/> + <use xlink:href="#glyph1-4" x="41.761719" y="332.835938"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="287.703125"/> + <use xlink:href="#glyph1-2" x="41.761719" y="281.029297"/> + <use xlink:href="#glyph1-5" x="41.761719" y="277.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="232.566406"/> + <use xlink:href="#glyph1-2" x="41.761719" y="225.892578"/> + <use xlink:href="#glyph1-6" x="41.761719" y="222.558594"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="177.425781"/> + <use xlink:href="#glyph1-2" x="41.761719" y="170.751953"/> + <use xlink:href="#glyph1-1" x="41.761719" y="167.417969"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="122.289063"/> + <use xlink:href="#glyph1-2" x="41.761719" y="115.615234"/> + <use xlink:href="#glyph1-3" x="41.761719" y="112.28125"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.175781" y="34.675781"/> + <use xlink:href="#glyph2-2" x="198.971875" y="34.675781"/> + <use xlink:href="#glyph2-3" x="206.980469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.775781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.571875" y="34.675781"/> + <use xlink:href="#glyph2-6" x="229.367969" y="34.675781"/> + <use xlink:href="#glyph2-7" x="233.36875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="242.164844" y="34.675781"/> + <use xlink:href="#glyph2-8" x="250.173438" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.96875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="259.764063" y="34.675781"/> + <use xlink:href="#glyph2-10" x="263.764844" y="34.675781"/> + <use xlink:href="#glyph2-11" x="271.773438" y="34.675781"/> + <use xlink:href="#glyph2-6" x="279.782031" y="34.675781"/> + <use xlink:href="#glyph2-12" x="283.782812" y="34.675781"/> + <use xlink:href="#glyph2-6" x="293.3875" y="34.675781"/> + <use xlink:href="#glyph2-13" x="297.388281" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.797656" y="34.675781"/> + <use xlink:href="#glyph2-14" x="309.798437" y="34.675781"/> + <use xlink:href="#glyph2-15" x="317.807031" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.815625" y="34.675781"/> + <use xlink:href="#glyph2-16" x="329.816406" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 406.925781 C 77.101563 410.523438 71.699219 410.523438 71.699219 406.925781 C 71.699219 403.324219 77.101563 403.324219 77.101563 406.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.859375 390.464844 C 87.859375 394.066406 82.460938 394.066406 82.460938 390.464844 C 82.460938 386.863281 87.859375 386.863281 87.859375 390.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.1875 375.652344 C 99.1875 379.25 93.789063 379.25 93.789063 375.652344 C 93.789063 372.050781 99.1875 372.050781 99.1875 375.652344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.816406 362.484375 C 108.816406 366.085938 103.417969 366.085938 103.417969 362.484375 C 103.417969 358.882813 108.816406 358.882813 108.816406 362.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.011719 349.316406 C 119.011719 352.917969 113.613281 352.917969 113.613281 349.316406 C 113.613281 345.714844 119.011719 345.714844 119.011719 349.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.402344 324.628906 C 139.402344 328.226563 134 328.226563 134 324.628906 C 134 321.027344 139.402344 321.027344 139.402344 324.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 148.460938 314.753906 C 148.460938 318.351563 143.0625 318.351563 143.0625 314.753906 C 143.0625 311.152344 148.460938 311.152344 148.460938 314.753906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.1875 295 C 163.1875 298.601563 157.789063 298.601563 157.789063 295 C 157.789063 291.402344 163.1875 291.402344 163.1875 295 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 177.914063 280.1875 C 177.914063 283.789063 172.515625 283.789063 172.515625 280.1875 C 172.515625 276.585938 177.914063 276.585938 177.914063 280.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.808594 265.375 C 189.808594 268.972656 184.40625 268.972656 184.40625 265.375 C 184.40625 261.773438 189.808594 261.773438 189.808594 265.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.800781 248.914063 C 206.800781 252.515625 201.398438 252.515625 201.398438 248.914063 C 201.398438 245.316406 206.800781 245.316406 206.800781 248.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.65625 232.457031 C 222.65625 236.054688 217.257813 236.054688 217.257813 232.457031 C 217.257813 228.855469 222.65625 228.855469 222.65625 232.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.550781 220.933594 C 234.550781 224.535156 229.152344 224.535156 229.152344 220.933594 C 229.152344 217.332031 234.550781 217.332031 234.550781 220.933594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.277344 206.121094 C 249.277344 209.71875 243.878906 209.71875 243.878906 206.121094 C 243.878906 202.519531 249.277344 202.519531 249.277344 206.121094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.570313 192.953125 C 264.570313 196.554688 259.167969 196.554688 259.167969 192.953125 C 259.167969 189.351563 264.570313 189.351563 264.570313 192.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 282.691406 178.960938 C 282.691406 182.5625 277.292969 182.5625 277.292969 178.960938 C 277.292969 175.363281 282.691406 175.363281 282.691406 178.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.683594 163.328125 C 299.683594 166.925781 294.285156 166.925781 294.285156 163.328125 C 294.285156 159.726563 299.683594 159.726563 299.683594 163.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.375 150.160156 C 318.375 153.757813 312.972656 153.757813 312.972656 150.160156 C 312.972656 146.558594 318.375 146.558594 318.375 150.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.800781 138.636719 C 334.800781 142.238281 329.398438 142.238281 329.398438 138.636719 C 329.398438 135.039063 334.800781 135.039063 334.800781 138.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 348.390625 129.585938 C 348.390625 133.183594 342.992188 133.183594 342.992188 129.585938 C 342.992188 125.984375 348.390625 125.984375 348.390625 129.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.515625 117.238281 C 366.515625 120.839844 361.117188 120.839844 361.117188 117.238281 C 361.117188 113.640625 366.515625 113.640625 366.515625 117.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 382.941406 105.71875 C 382.941406 109.320313 377.539063 109.320313 377.539063 105.71875 C 377.539063 102.117188 382.941406 102.117188 382.941406 105.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 408.992188 94.195313 C 408.992188 97.796875 403.59375 97.796875 403.59375 94.195313 C 403.59375 90.597656 408.992188 90.597656 408.992188 94.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 429.949219 82.675781 C 429.949219 86.277344 424.550781 86.277344 424.550781 82.675781 C 424.550781 79.074219 429.949219 79.074219 429.949219 82.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 445.242188 77.738281 C 445.242188 81.335938 439.839844 81.335938 439.839844 77.738281 C 439.839844 74.136719 445.242188 74.136719 445.242188 77.738281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 405.65625 L 78.238281 400.351563 L 82.078125 395.089844 L 85.921875 389.867188 L 89.761719 384.683594 L 93.601563 379.539063 L 97.441406 374.4375 L 101.28125 369.371094 L 105.121094 364.347656 L 108.960938 359.363281 L 112.800781 354.417969 L 116.640625 349.511719 L 120.480469 344.644531 L 124.320313 339.820313 L 128.160156 335.03125 L 132 330.285156 L 135.839844 325.578125 L 139.679688 320.910156 L 143.519531 316.28125 L 147.359375 311.695313 L 151.199219 307.144531 L 155.039063 302.636719 L 158.878906 298.167969 L 162.71875 293.738281 L 166.558594 289.347656 L 170.398438 285 L 174.238281 280.6875 L 178.078125 276.417969 L 181.921875 272.1875 L 185.761719 267.996094 L 189.601563 263.84375 L 193.441406 259.730469 L 197.28125 255.660156 L 201.121094 251.625 L 204.960938 247.632813 L 208.800781 243.679688 L 212.640625 239.765625 L 216.480469 235.890625 L 220.320313 232.058594 L 224.160156 228.261719 L 228 224.507813 L 231.839844 220.792969 L 235.679688 217.117188 L 239.519531 213.480469 L 243.359375 209.882813 L 247.199219 206.328125 L 251.039063 202.808594 L 254.878906 199.332031 L 258.71875 195.894531 L 262.558594 192.496094 L 266.398438 189.136719 L 270.238281 185.820313 L 274.078125 182.539063 L 277.921875 179.300781 L 281.761719 176.101563 L 285.601563 172.941406 L 289.441406 169.820313 L 293.28125 166.738281 L 297.121094 163.699219 L 300.960938 160.695313 L 304.800781 157.734375 L 308.640625 154.8125 L 312.480469 151.929688 L 316.320313 149.089844 L 320.160156 146.285156 L 324 143.523438 L 327.839844 140.796875 L 331.679688 138.113281 L 335.519531 135.46875 L 339.359375 132.863281 L 343.199219 130.300781 L 347.039063 127.773438 L 350.878906 125.289063 L 354.71875 122.84375 L 358.558594 120.4375 L 362.398438 118.070313 L 366.238281 115.742188 L 370.078125 113.457031 L 373.921875 111.207031 L 377.761719 109 L 381.601563 106.832031 L 385.441406 104.703125 L 389.28125 102.613281 L 393.121094 100.566406 L 396.960938 98.554688 L 400.800781 96.585938 L 404.640625 94.65625 L 408.480469 92.765625 L 412.320313 90.914063 L 416.160156 89.101563 L 420 87.332031 L 423.839844 85.597656 L 427.679688 83.90625 L 431.519531 82.253906 L 435.359375 80.640625 L 439.199219 79.066406 L 443.039063 77.535156 L 446.878906 76.039063 L 450.71875 74.585938 L 454.558594 73.171875 L 458.398438 71.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.148438 416.800781 L 78.785156 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.964844 420.617188 L 74.964844 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 83.042969 398.695313 L 90.679688 398.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 86.859375 402.511719 L 86.859375 394.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.238281 382.234375 L 100.875 382.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.054688 386.054688 L 97.054688 378.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 102.296875 367.421875 L 109.933594 367.421875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.117188 371.242188 L 106.117188 363.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 111.925781 354.253906 L 119.5625 354.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 115.746094 358.074219 L 115.746094 350.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.6875 337.796875 L 130.324219 337.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 126.507813 341.613281 L 126.507813 333.976563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.28125 319.691406 L 143.917969 319.691406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 140.097656 323.507813 L 140.097656 315.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 152.140625 299.9375 L 159.777344 299.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 155.957031 303.757813 L 155.957031 296.121094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.332031 285.125 L 169.96875 285.125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.152344 288.945313 L 166.152344 281.308594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.191406 265.375 L 185.828125 265.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 182.011719 269.191406 L 182.011719 261.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 190.085938 250.5625 L 197.722656 250.5625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.90625 254.378906 L 193.90625 246.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 201.980469 237.394531 L 209.617188 237.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 205.796875 241.210938 L 205.796875 233.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.9375 215.996094 L 230.574219 215.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.753906 219.816406 L 226.753906 212.179688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 235.394531 202.828125 L 243.03125 202.828125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.214844 206.648438 L 239.214844 199.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.21875 183.078125 L 262.855469 183.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.039063 186.894531 L 259.039063 179.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 267.113281 173.203125 L 274.75 173.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.929688 177.019531 L 270.929688 169.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.441406 163.328125 L 286.078125 163.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 282.257813 167.144531 L 282.257813 159.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 292.03125 155.097656 L 299.667969 155.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.851563 158.914063 L 295.851563 151.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 305.625 143.574219 L 313.261719 143.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 309.445313 147.394531 L 309.445313 139.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.953125 136.992188 L 324.589844 136.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.773438 140.808594 L 320.773438 133.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.113281 128.761719 L 338.75 128.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.929688 132.582031 L 334.929688 124.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 347.539063 118.886719 L 355.175781 118.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 351.355469 122.703125 L 351.355469 115.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 358.296875 113.949219 L 365.933594 113.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.117188 117.765625 L 362.117188 110.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.359375 109.011719 L 374.996094 109.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 371.179688 112.828125 L 371.179688 105.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.917969 104.074219 L 392.554688 104.074219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.734375 107.890625 L 388.734375 100.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.945313 99.136719 L 405.582031 99.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 401.761719 102.953125 L 401.761719 95.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 419.464844 94.195313 L 427.101563 94.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.285156 98.015625 L 423.285156 90.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.6875 89.257813 L 450.324219 89.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.507813 93.078125 L 446.507813 85.441406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 88.4375 L 462.21875 88.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 92.253906 L 458.398438 84.617188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.964844 417.761719 L 78.800781 411.472656 L 82.636719 405.246094 L 86.46875 399.078125 L 90.304688 392.972656 L 94.136719 386.925781 L 97.972656 380.9375 L 101.808594 375.011719 L 105.640625 369.148438 L 109.476563 363.34375 L 113.308594 357.601563 L 117.144531 351.917969 L 120.976563 346.292969 L 124.8125 340.730469 L 128.648438 335.226563 L 132.480469 329.785156 L 136.316406 324.40625 L 140.148438 319.085938 L 143.984375 313.824219 L 147.820313 308.625 L 151.652344 303.484375 L 155.488281 298.40625 L 159.320313 293.390625 L 163.15625 288.429688 L 166.992188 283.535156 L 170.824219 278.695313 L 174.660156 273.921875 L 178.492188 269.203125 L 182.328125 264.550781 L 186.164063 259.953125 L 189.996094 255.421875 L 193.832031 250.945313 L 197.664063 246.535156 L 201.5 242.179688 L 205.332031 237.886719 L 209.167969 233.65625 L 213.003906 229.484375 L 216.835938 225.375 L 220.671875 221.324219 L 224.503906 217.332031 L 228.339844 213.402344 L 232.175781 209.535156 L 236.007813 205.726563 L 239.84375 201.980469 L 243.675781 198.292969 L 247.511719 194.664063 L 251.347656 191.097656 L 255.179688 187.59375 L 259.015625 184.144531 L 262.847656 180.761719 L 266.683594 177.4375 L 270.515625 174.171875 L 274.351563 170.96875 L 278.1875 167.828125 L 282.019531 164.742188 L 285.855469 161.722656 L 289.6875 158.761719 L 293.523438 155.859375 L 297.359375 153.019531 L 301.191406 150.238281 L 305.027344 147.519531 L 308.859375 144.859375 L 312.695313 142.261719 L 316.53125 139.722656 L 320.363281 137.246094 L 324.199219 134.828125 L 328.03125 132.472656 L 331.867188 130.175781 L 335.703125 127.9375 L 339.535156 125.765625 L 343.371094 123.648438 L 347.203125 121.59375 L 351.039063 119.601563 L 354.871094 117.667969 L 358.707031 115.796875 L 362.542969 113.984375 L 366.375 112.230469 L 370.210938 110.539063 L 374.042969 108.910156 L 377.878906 107.339844 L 381.714844 105.828125 L 385.546875 104.378906 L 389.382813 102.992188 L 393.214844 101.664063 L 397.050781 100.394531 L 400.886719 99.1875 L 404.71875 98.039063 L 408.554688 96.953125 L 412.386719 95.925781 L 416.222656 94.960938 L 420.054688 94.058594 L 423.890625 93.210938 L 427.726563 92.429688 L 431.558594 91.707031 L 435.394531 91.042969 L 439.226563 90.441406 L 443.0625 89.898438 L 446.898438 89.417969 L 450.730469 88.996094 L 454.566406 88.632813 L 458.398438 88.335938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-16" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-3" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-19" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-1" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-3" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-20" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-6" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-6" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-16" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-21" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-5" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-18" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-1" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-3" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-1" x="439.058594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="445.732422" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg b/docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg new file mode 100644 index 000000000..48a1d0ae6 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg @@ -0,0 +1,511 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 1.0625 0 L 1.0625 -10.308594 L 8.128906 -10.308594 L 8.128906 -8.5625 L 3.144531 -8.5625 L 3.144531 -6.125 L 7.445313 -6.125 L 7.445313 -4.378906 L 3.144531 -4.378906 L 3.144531 0 Z M 1.0625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 0.640625 -2.652344 L 2.609375 -2.855469 C 2.660156 -2.40625 2.828125 -2.054688 3.105469 -1.796875 C 3.382813 -1.535156 3.699219 -1.40625 4.0625 -1.40625 C 4.472656 -1.40625 4.824219 -1.570313 5.109375 -1.90625 C 5.394531 -2.238281 5.535156 -2.746094 5.539063 -3.425781 C 5.535156 -4.054688 5.394531 -4.527344 5.113281 -4.847656 C 4.828125 -5.160156 4.460938 -5.320313 4.007813 -5.324219 C 3.4375 -5.320313 2.925781 -5.070313 2.480469 -4.570313 L 0.878906 -4.800781 L 1.890625 -10.167969 L 7.117188 -10.167969 L 7.117188 -8.316406 L 3.390625 -8.316406 L 3.078125 -6.566406 C 3.515625 -6.785156 3.96875 -6.894531 4.429688 -6.898438 C 5.304688 -6.894531 6.046875 -6.578125 6.660156 -5.941406 C 7.265625 -5.300781 7.570313 -4.472656 7.574219 -3.460938 C 7.570313 -2.609375 7.324219 -1.851563 6.835938 -1.1875 C 6.160156 -0.277344 5.230469 0.175781 4.042969 0.175781 C 3.089844 0.175781 2.3125 -0.078125 1.714844 -0.589844 C 1.113281 -1.097656 0.753906 -1.785156 0.640625 -2.652344 Z M 0.640625 -2.652344 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface21"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.398438 404.699219 C 89.398438 408.300781 83.996094 408.300781 83.996094 404.699219 C 83.996094 401.097656 89.398438 401.097656 89.398438 404.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.695313 390.871094 C 101.695313 394.46875 96.292969 394.46875 96.292969 390.871094 C 96.292969 387.269531 101.695313 387.269531 101.695313 390.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.34375 374.449219 C 117.34375 378.046875 111.945313 378.046875 111.945313 374.449219 C 111.945313 370.847656 117.34375 370.847656 117.34375 374.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.082031 361.484375 C 129.082031 365.082031 123.683594 365.082031 123.683594 361.484375 C 123.683594 357.882813 129.082031 357.882813 129.082031 361.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.617188 345.925781 C 143.617188 349.527344 138.214844 349.527344 138.214844 345.925781 C 138.214844 342.324219 143.617188 342.324219 143.617188 345.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 158.148438 333.824219 C 158.148438 337.425781 152.746094 337.425781 152.746094 333.824219 C 152.746094 330.226563 158.148438 330.226563 158.148438 333.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 173.796875 316.539063 C 173.796875 320.140625 168.398438 320.140625 168.398438 316.539063 C 168.398438 312.9375 173.796875 312.9375 173.796875 316.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 188.890625 304.4375 C 188.890625 308.039063 183.492188 308.039063 183.492188 304.4375 C 183.492188 300.839844 188.890625 300.839844 188.890625 304.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.863281 288.878906 C 202.863281 292.480469 197.464844 292.480469 197.464844 288.878906 C 197.464844 285.28125 202.863281 285.28125 202.863281 288.878906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.515625 275.050781 C 218.515625 278.652344 213.113281 278.652344 213.113281 275.050781 C 213.113281 271.453125 218.515625 271.453125 218.515625 275.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.929688 262.949219 C 231.929688 266.550781 226.53125 266.550781 226.53125 262.949219 C 226.53125 259.351563 231.929688 259.351563 231.929688 262.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.992188 252.578125 C 241.992188 256.179688 236.589844 256.179688 236.589844 252.578125 C 236.589844 248.980469 241.992188 248.980469 241.992188 252.578125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.050781 243.9375 C 252.050781 247.535156 246.652344 247.535156 246.652344 243.9375 C 246.652344 240.335938 252.050781 240.335938 252.050781 243.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 263.789063 235.292969 C 263.789063 238.890625 258.390625 238.890625 258.390625 235.292969 C 258.390625 231.691406 263.789063 231.691406 263.789063 235.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.765625 222.328125 C 277.765625 225.925781 272.363281 225.925781 272.363281 222.328125 C 272.363281 218.726563 277.765625 218.726563 277.765625 222.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.089844 206.769531 C 295.089844 210.371094 289.691406 210.371094 289.691406 206.769531 C 289.691406 203.167969 295.089844 203.167969 295.089844 206.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.945313 197.261719 C 307.945313 200.863281 302.546875 200.863281 302.546875 197.261719 C 302.546875 193.664063 307.945313 193.664063 307.945313 197.261719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.242188 186.890625 C 320.242188 190.492188 314.84375 190.492188 314.84375 186.890625 C 314.84375 183.289063 320.242188 183.289063 320.242188 186.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.421875 176.519531 C 331.421875 180.117188 326.023438 180.117188 326.023438 176.519531 C 326.023438 172.917969 331.421875 172.917969 331.421875 176.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.484375 167.875 C 341.484375 171.476563 336.085938 171.476563 336.085938 167.875 C 336.085938 164.273438 341.484375 164.273438 341.484375 167.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.105469 160.960938 C 352.105469 164.5625 346.703125 164.5625 346.703125 160.960938 C 346.703125 157.359375 352.105469 157.359375 352.105469 160.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 364.402344 152.316406 C 364.402344 155.917969 359 155.917969 359 152.316406 C 359 148.71875 364.402344 148.71875 364.402344 152.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 380.050781 139.351563 C 380.050781 142.953125 374.652344 142.953125 374.652344 139.351563 C 374.652344 135.753906 380.050781 135.753906 380.050781 139.351563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.378906 126.386719 C 397.378906 129.988281 391.980469 129.988281 391.980469 126.386719 C 391.980469 122.789063 397.378906 122.789063 397.378906 126.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 417.5 112.558594 C 417.5 116.160156 412.101563 116.160156 412.101563 112.558594 C 412.101563 108.957031 417.5 108.957031 417.5 112.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 433.710938 100.457031 C 433.710938 104.058594 428.3125 104.058594 428.3125 100.457031 C 428.3125 96.859375 433.710938 96.859375 433.710938 100.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.890625 95.273438 C 444.890625 98.871094 439.492188 98.871094 439.492188 95.273438 C 439.492188 91.671875 444.890625 91.671875 444.890625 95.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 83.171875 C 461.101563 86.773438 455.699219 86.773438 455.699219 83.171875 C 455.699219 79.570313 461.101563 79.570313 461.101563 83.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.132813 430.558594 L 457.839844 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.132813 430.558594 L 67.132813 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.949219 430.558594 L 122.949219 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.765625 430.558594 L 178.765625 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.578125 430.558594 L 234.578125 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.394531 430.558594 L 290.394531 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.210938 430.558594 L 346.210938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.027344 430.558594 L 402.027344 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 457.839844 430.558594 L 457.839844 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.453125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.126953" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.460938" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.134766" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.269531" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.943359" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.277344" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.951172" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.085938" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.759766" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.09375" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.767578" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="222.898438" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.572266" y="456.480469"/> + <use xlink:href="#glyph0-4" x="232.90625" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.580078" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.714844" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.388672" y="456.480469"/> + <use xlink:href="#glyph0-5" x="288.722656" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.396484" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.53125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.205078" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.539063" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.212891" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.347656" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.021484" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.355469" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.029297" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.160156" y="456.480469"/> + <use xlink:href="#glyph0-2" x="452.833984" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.167969" y="456.480469"/> + <use xlink:href="#glyph0-3" x="462.841797" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 379.015625 L 59.039063 86.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 379.015625 L 51.839844 379.015625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 320.488281 L 51.839844 320.488281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 261.964844 L 51.839844 261.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 203.4375 L 51.839844 203.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 144.910156 L 51.839844 144.910156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 86.382813 L 51.839844 86.382813 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="387.355469"/> + <use xlink:href="#glyph1-2" x="41.761719" y="380.681641"/> + <use xlink:href="#glyph1-3" x="41.761719" y="377.347656"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="328.828125"/> + <use xlink:href="#glyph1-2" x="41.761719" y="322.154297"/> + <use xlink:href="#glyph1-4" x="41.761719" y="318.820313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="270.304688"/> + <use xlink:href="#glyph1-2" x="41.761719" y="263.630859"/> + <use xlink:href="#glyph1-5" x="41.761719" y="260.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="211.777344"/> + <use xlink:href="#glyph1-2" x="41.761719" y="205.103516"/> + <use xlink:href="#glyph1-6" x="41.761719" y="201.769531"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="153.25"/> + <use xlink:href="#glyph1-2" x="41.761719" y="146.576172"/> + <use xlink:href="#glyph1-1" x="41.761719" y="143.242188"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="94.722656"/> + <use xlink:href="#glyph1-2" x="41.761719" y="88.048828"/> + <use xlink:href="#glyph1-3" x="41.761719" y="84.714844"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.175781" y="34.675781"/> + <use xlink:href="#glyph2-2" x="198.971875" y="34.675781"/> + <use xlink:href="#glyph2-3" x="206.980469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.775781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.571875" y="34.675781"/> + <use xlink:href="#glyph2-6" x="229.367969" y="34.675781"/> + <use xlink:href="#glyph2-7" x="233.36875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="242.164844" y="34.675781"/> + <use xlink:href="#glyph2-8" x="250.173438" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.96875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="259.764063" y="34.675781"/> + <use xlink:href="#glyph2-10" x="263.764844" y="34.675781"/> + <use xlink:href="#glyph2-11" x="271.773438" y="34.675781"/> + <use xlink:href="#glyph2-6" x="279.782031" y="34.675781"/> + <use xlink:href="#glyph2-12" x="283.782812" y="34.675781"/> + <use xlink:href="#glyph2-6" x="293.3875" y="34.675781"/> + <use xlink:href="#glyph2-13" x="297.388281" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.797656" y="34.675781"/> + <use xlink:href="#glyph2-14" x="309.798437" y="34.675781"/> + <use xlink:href="#glyph2-15" x="317.807031" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.815625" y="34.675781"/> + <use xlink:href="#glyph2-16" x="329.816406" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.398438 404.699219 C 89.398438 408.300781 83.996094 408.300781 83.996094 404.699219 C 83.996094 401.097656 89.398438 401.097656 89.398438 404.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.695313 390.871094 C 101.695313 394.46875 96.292969 394.46875 96.292969 390.871094 C 96.292969 387.269531 101.695313 387.269531 101.695313 390.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.34375 374.449219 C 117.34375 378.046875 111.945313 378.046875 111.945313 374.449219 C 111.945313 370.847656 117.34375 370.847656 117.34375 374.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.082031 361.484375 C 129.082031 365.082031 123.683594 365.082031 123.683594 361.484375 C 123.683594 357.882813 129.082031 357.882813 129.082031 361.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.617188 345.925781 C 143.617188 349.527344 138.214844 349.527344 138.214844 345.925781 C 138.214844 342.324219 143.617188 342.324219 143.617188 345.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 158.148438 333.824219 C 158.148438 337.425781 152.746094 337.425781 152.746094 333.824219 C 152.746094 330.226563 158.148438 330.226563 158.148438 333.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 173.796875 316.539063 C 173.796875 320.140625 168.398438 320.140625 168.398438 316.539063 C 168.398438 312.9375 173.796875 312.9375 173.796875 316.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 188.890625 304.4375 C 188.890625 308.039063 183.492188 308.039063 183.492188 304.4375 C 183.492188 300.839844 188.890625 300.839844 188.890625 304.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.863281 288.878906 C 202.863281 292.480469 197.464844 292.480469 197.464844 288.878906 C 197.464844 285.28125 202.863281 285.28125 202.863281 288.878906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.515625 275.050781 C 218.515625 278.652344 213.113281 278.652344 213.113281 275.050781 C 213.113281 271.453125 218.515625 271.453125 218.515625 275.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.929688 262.949219 C 231.929688 266.550781 226.53125 266.550781 226.53125 262.949219 C 226.53125 259.351563 231.929688 259.351563 231.929688 262.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.992188 252.578125 C 241.992188 256.179688 236.589844 256.179688 236.589844 252.578125 C 236.589844 248.980469 241.992188 248.980469 241.992188 252.578125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.050781 243.9375 C 252.050781 247.535156 246.652344 247.535156 246.652344 243.9375 C 246.652344 240.335938 252.050781 240.335938 252.050781 243.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 263.789063 235.292969 C 263.789063 238.890625 258.390625 238.890625 258.390625 235.292969 C 258.390625 231.691406 263.789063 231.691406 263.789063 235.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.765625 222.328125 C 277.765625 225.925781 272.363281 225.925781 272.363281 222.328125 C 272.363281 218.726563 277.765625 218.726563 277.765625 222.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.089844 206.769531 C 295.089844 210.371094 289.691406 210.371094 289.691406 206.769531 C 289.691406 203.167969 295.089844 203.167969 295.089844 206.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.945313 197.261719 C 307.945313 200.863281 302.546875 200.863281 302.546875 197.261719 C 302.546875 193.664063 307.945313 193.664063 307.945313 197.261719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.242188 186.890625 C 320.242188 190.492188 314.84375 190.492188 314.84375 186.890625 C 314.84375 183.289063 320.242188 183.289063 320.242188 186.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.421875 176.519531 C 331.421875 180.117188 326.023438 180.117188 326.023438 176.519531 C 326.023438 172.917969 331.421875 172.917969 331.421875 176.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.484375 167.875 C 341.484375 171.476563 336.085938 171.476563 336.085938 167.875 C 336.085938 164.273438 341.484375 164.273438 341.484375 167.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.105469 160.960938 C 352.105469 164.5625 346.703125 164.5625 346.703125 160.960938 C 346.703125 157.359375 352.105469 157.359375 352.105469 160.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 364.402344 152.316406 C 364.402344 155.917969 359 155.917969 359 152.316406 C 359 148.71875 364.402344 148.71875 364.402344 152.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 380.050781 139.351563 C 380.050781 142.953125 374.652344 142.953125 374.652344 139.351563 C 374.652344 135.753906 380.050781 135.753906 380.050781 139.351563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.378906 126.386719 C 397.378906 129.988281 391.980469 129.988281 391.980469 126.386719 C 391.980469 122.789063 397.378906 122.789063 397.378906 126.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 417.5 112.558594 C 417.5 116.160156 412.101563 116.160156 412.101563 112.558594 C 412.101563 108.957031 417.5 108.957031 417.5 112.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 433.710938 100.457031 C 433.710938 104.058594 428.3125 104.058594 428.3125 100.457031 C 428.3125 96.859375 433.710938 96.859375 433.710938 100.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.890625 95.273438 C 444.890625 98.871094 439.492188 98.871094 439.492188 95.273438 C 439.492188 91.671875 444.890625 91.671875 444.890625 95.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 83.171875 C 461.101563 86.773438 455.699219 86.773438 455.699219 83.171875 C 455.699219 79.570313 461.101563 79.570313 461.101563 83.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 417.148438 L 78.238281 412.988281 L 82.078125 408.84375 L 85.921875 404.710938 L 89.761719 400.601563 L 93.601563 396.503906 L 97.441406 392.425781 L 101.28125 388.363281 L 105.121094 384.316406 L 108.960938 380.285156 L 112.800781 376.273438 L 116.640625 372.277344 L 120.480469 368.296875 L 124.320313 364.335938 L 128.160156 360.386719 L 132 356.457031 L 135.839844 352.542969 L 139.679688 348.648438 L 143.519531 344.765625 L 147.359375 340.902344 L 151.199219 337.054688 L 155.039063 333.226563 L 158.878906 329.414063 L 162.71875 325.613281 L 166.558594 321.835938 L 170.398438 318.070313 L 174.238281 314.324219 L 178.078125 310.59375 L 181.921875 306.878906 L 185.761719 303.179688 L 189.601563 299.5 L 193.441406 295.835938 L 197.28125 292.1875 L 201.121094 288.554688 L 204.960938 284.941406 L 208.800781 281.34375 L 212.640625 277.761719 L 216.480469 274.195313 L 220.320313 270.648438 L 224.160156 267.117188 L 228 263.601563 L 231.839844 260.101563 L 235.679688 256.621094 L 239.519531 253.15625 L 243.359375 249.707031 L 247.199219 246.273438 L 251.039063 242.859375 L 254.878906 239.460938 L 258.71875 236.078125 L 262.558594 232.710938 L 266.398438 229.363281 L 270.238281 226.027344 L 274.078125 222.710938 L 277.921875 219.414063 L 281.761719 216.128906 L 285.601563 212.863281 L 289.441406 209.613281 L 293.28125 206.382813 L 297.121094 203.164063 L 300.960938 199.964844 L 304.800781 196.78125 L 308.640625 193.613281 L 312.480469 190.464844 L 316.320313 187.332031 L 320.160156 184.214844 L 324 181.113281 L 327.839844 178.03125 L 331.679688 174.964844 L 335.519531 171.914063 L 339.359375 168.878906 L 343.199219 165.863281 L 347.039063 162.859375 L 350.878906 159.875 L 354.71875 156.910156 L 358.558594 153.957031 L 362.398438 151.023438 L 366.238281 148.105469 L 370.078125 145.203125 L 373.921875 142.320313 L 377.761719 139.453125 L 381.601563 136.601563 L 385.441406 133.765625 L 389.28125 130.949219 L 393.121094 128.144531 L 396.960938 125.359375 L 400.800781 122.59375 L 404.640625 119.839844 L 408.480469 117.105469 L 412.320313 114.386719 L 416.160156 111.683594 L 420 109 L 423.839844 106.328125 L 427.679688 103.675781 L 431.519531 101.042969 L 435.359375 98.421875 L 439.199219 95.820313 L 443.039063 93.234375 L 446.878906 90.664063 L 450.71875 88.113281 L 454.558594 85.574219 L 458.398438 83.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 80.644531 402.972656 L 88.28125 402.972656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.460938 406.789063 L 84.460938 399.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.617188 380.5 L 102.253906 380.5 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.433594 384.316406 L 98.433594 376.679688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.914063 363.210938 L 114.550781 363.210938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.730469 367.03125 L 110.730469 359.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.769531 344.195313 L 127.40625 344.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.585938 348.015625 L 123.585938 340.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 133.183594 326.910156 L 140.820313 326.910156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 137.003906 330.730469 L 137.003906 323.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 147.71875 304.4375 L 155.355469 304.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 151.535156 308.257813 L 151.535156 300.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.808594 287.152344 L 170.445313 287.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.628906 290.96875 L 166.628906 283.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.664063 271.59375 L 183.300781 271.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 179.484375 275.414063 L 179.484375 267.777344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 187.960938 256.035156 L 195.597656 256.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.78125 259.855469 L 191.78125 252.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 204.730469 238.75 L 212.367188 238.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.546875 242.566406 L 208.546875 234.929688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 225.96875 216.277344 L 233.605469 216.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 229.789063 220.097656 L 229.789063 212.460938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.0625 198.992188 L 248.699219 198.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.878906 202.808594 L 244.878906 195.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 256.710938 185.160156 L 264.347656 185.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 260.53125 188.980469 L 260.53125 181.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 272.363281 171.332031 L 280 171.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.183594 175.152344 L 276.183594 167.515625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.691406 155.773438 L 297.328125 155.773438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 293.507813 159.59375 L 293.507813 151.957031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.136719 143.675781 L 315.773438 143.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 311.953125 147.492188 L 311.953125 139.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 326.582031 129.84375 L 334.21875 129.84375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 330.398438 133.664063 L 330.398438 126.027344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 338.878906 121.203125 L 346.515625 121.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342.695313 125.019531 L 342.695313 117.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 353.96875 110.832031 L 361.605469 110.832031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.789063 114.648438 L 357.789063 107.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.265625 103.914063 L 373.902344 103.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.085938 107.734375 L 370.085938 100.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.5625 98.730469 L 386.199219 98.730469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 382.382813 102.546875 L 382.382813 94.910156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 390.859375 91.816406 L 398.496094 91.816406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 394.679688 95.632813 L 394.679688 87.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 409.304688 84.902344 L 416.941406 84.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 413.125 88.71875 L 413.125 81.082031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.28125 81.441406 L 430.917969 81.441406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.097656 85.261719 L 427.097656 77.625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 435.019531 76.257813 L 442.65625 76.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 438.835938 80.074219 L 438.835938 72.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.023438 72.800781 L 461.660156 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 457.839844 76.617188 L 457.839844 68.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 417.757813 L 78.234375 411.726563 L 82.070313 405.75 L 85.902344 399.824219 L 89.738281 393.953125 L 93.570313 388.132813 L 97.40625 382.363281 L 101.242188 376.644531 L 105.074219 370.976563 L 108.910156 365.363281 L 112.742188 359.800781 L 116.578125 354.292969 L 120.414063 348.835938 L 124.246094 343.429688 L 128.082031 338.074219 L 131.917969 332.769531 L 135.75 327.519531 L 139.585938 322.320313 L 143.417969 317.175781 L 147.253906 312.078125 L 151.089844 307.035156 L 154.921875 302.046875 L 158.757813 297.105469 L 162.589844 292.21875 L 166.425781 287.382813 L 170.261719 282.601563 L 174.09375 277.867188 L 177.929688 273.1875 L 181.761719 268.5625 L 185.597656 263.984375 L 189.433594 259.460938 L 193.265625 254.988281 L 197.101563 250.566406 L 200.933594 246.199219 L 204.769531 241.882813 L 208.605469 237.617188 L 212.4375 233.40625 L 216.273438 229.246094 L 220.109375 225.136719 L 223.941406 221.078125 L 227.777344 217.074219 L 231.609375 213.121094 L 235.445313 209.21875 L 239.28125 205.367188 L 243.113281 201.570313 L 246.949219 197.824219 L 250.78125 194.132813 L 254.617188 190.488281 L 258.453125 186.898438 L 262.285156 183.359375 L 266.121094 179.875 L 269.953125 176.441406 L 273.789063 173.058594 L 277.625 169.726563 L 281.457031 166.449219 L 285.292969 163.222656 L 289.128906 160.046875 L 292.960938 156.921875 L 296.796875 153.851563 L 300.628906 150.832031 L 304.464844 147.863281 L 308.300781 144.949219 L 312.132813 142.085938 L 315.96875 139.273438 L 319.800781 136.515625 L 323.636719 133.804688 L 327.472656 131.148438 L 331.304688 128.546875 L 335.140625 125.992188 L 338.972656 123.492188 L 342.808594 121.042969 L 346.644531 118.648438 L 350.476563 116.304688 L 354.3125 114.011719 L 358.144531 111.769531 L 361.980469 109.582031 L 365.816406 107.441406 L 369.648438 105.359375 L 373.484375 103.324219 L 377.320313 101.34375 L 381.152344 99.414063 L 384.988281 97.535156 L 388.820313 95.710938 L 392.65625 93.933594 L 396.492188 92.214844 L 400.324219 90.542969 L 404.160156 88.925781 L 407.992188 87.359375 L 411.828125 85.84375 L 415.664063 84.382813 L 419.496094 82.972656 L 423.332031 81.613281 L 427.164063 80.304688 L 431 79.050781 L 434.835938 77.847656 L 438.667969 76.695313 L 442.503906 75.597656 L 446.335938 74.546875 L 450.171875 73.554688 L 454.007813 72.609375 L 457.839844 71.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-5" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-16" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-16" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-4" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-19" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-1" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-16" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-5" x="445.732422" y="346.695313"/> + <use xlink:href="#glyph0-20" x="452.40625" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-19" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-3" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-4" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-20" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-4" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-5" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-18" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-1" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-21" x="439.058594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="445.732422" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg b/docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg new file mode 100644 index 000000000..f51e6fb7e --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg @@ -0,0 +1,512 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-22"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 1.0625 0 L 1.0625 -10.308594 L 8.128906 -10.308594 L 8.128906 -8.5625 L 3.144531 -8.5625 L 3.144531 -6.125 L 7.445313 -6.125 L 7.445313 -4.378906 L 3.144531 -4.378906 L 3.144531 0 Z M 1.0625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 7.285156 -1.835938 L 7.285156 0 L 0.359375 0 C 0.429688 -0.691406 0.65625 -1.347656 1.035156 -1.96875 C 1.40625 -2.589844 2.144531 -3.414063 3.253906 -4.445313 C 4.140625 -5.269531 4.6875 -5.832031 4.894531 -6.132813 C 5.160156 -6.535156 5.296875 -6.9375 5.300781 -7.339844 C 5.296875 -7.777344 5.179688 -8.117188 4.945313 -8.355469 C 4.707031 -8.589844 4.378906 -8.707031 3.964844 -8.710938 C 3.550781 -8.707031 3.222656 -8.582031 2.980469 -8.335938 C 2.734375 -8.085938 2.59375 -7.675781 2.558594 -7.101563 L 0.589844 -7.296875 C 0.703125 -8.382813 1.070313 -9.164063 1.691406 -9.640625 C 2.308594 -10.109375 3.082031 -10.347656 4.015625 -10.351563 C 5.027344 -10.347656 5.828125 -10.074219 6.410156 -9.527344 C 6.992188 -8.976563 7.28125 -8.292969 7.285156 -7.480469 C 7.28125 -7.015625 7.199219 -6.574219 7.035156 -6.15625 C 6.867188 -5.734375 6.601563 -5.292969 6.242188 -4.835938 C 6 -4.527344 5.570313 -4.089844 4.949219 -3.519531 C 4.324219 -2.945313 3.929688 -2.566406 3.765625 -2.382813 C 3.597656 -2.191406 3.460938 -2.007813 3.359375 -1.835938 Z M 7.285156 -1.835938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface26"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.660156 397.363281 C 77.660156 400.964844 72.257813 400.964844 72.257813 397.363281 C 72.257813 393.765625 77.660156 393.765625 77.660156 397.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.339844 377.929688 C 98.339844 381.53125 92.941406 381.53125 92.941406 377.929688 C 92.941406 374.328125 98.339844 374.328125 98.339844 377.929688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.433594 360.4375 C 113.433594 364.039063 108.03125 364.039063 108.03125 360.4375 C 108.03125 356.839844 113.433594 356.839844 113.433594 360.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.933594 350.722656 C 122.933594 354.320313 117.535156 354.320313 117.535156 350.722656 C 117.535156 347.121094 122.933594 347.121094 122.933594 350.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.671875 339.058594 C 134.671875 342.660156 129.273438 342.660156 129.273438 339.058594 C 129.273438 335.460938 134.671875 335.460938 134.671875 339.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.203125 323.511719 C 149.203125 327.113281 143.804688 327.113281 143.804688 323.511719 C 143.804688 319.910156 149.203125 319.910156 149.203125 323.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.359375 302.132813 C 174.359375 305.734375 168.957031 305.734375 168.957031 302.132813 C 168.957031 298.535156 174.359375 298.535156 174.359375 302.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.363281 282.699219 C 193.363281 286.296875 187.960938 286.296875 187.960938 282.699219 C 187.960938 279.097656 193.363281 279.097656 193.363281 282.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.453125 269.09375 C 208.453125 272.695313 203.054688 272.695313 203.054688 269.09375 C 203.054688 265.492188 208.453125 265.492188 208.453125 269.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.722656 247.714844 C 234.722656 251.316406 229.324219 251.316406 229.324219 247.714844 C 229.324219 244.117188 234.722656 244.117188 234.722656 247.714844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 250.375 230.222656 C 250.375 233.824219 244.976563 233.824219 244.976563 230.222656 C 244.976563 226.625 250.375 226.625 250.375 230.222656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 269.378906 216.621094 C 269.378906 220.21875 263.980469 220.21875 263.980469 216.621094 C 263.980469 213.019531 269.378906 213.019531 269.378906 216.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279.441406 206.902344 C 279.441406 210.5 274.039063 210.5 274.039063 206.902344 C 274.039063 203.300781 279.441406 203.300781 279.441406 206.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.210938 195.242188 C 296.210938 198.839844 290.808594 198.839844 290.808594 195.242188 C 290.808594 191.640625 296.210938 191.640625 296.210938 195.242188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.890625 177.75 C 316.890625 181.347656 311.492188 181.347656 311.492188 177.75 C 311.492188 174.148438 316.890625 174.148438 316.890625 177.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.777344 164.144531 C 334.777344 167.746094 329.375 167.746094 329.375 164.144531 C 329.375 160.542969 334.777344 160.542969 334.777344 164.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.664063 152.484375 C 352.664063 156.082031 347.261719 156.082031 347.261719 152.484375 C 347.261719 148.882813 352.664063 148.882813 352.664063 152.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.078125 142.765625 C 366.078125 146.367188 360.679688 146.367188 360.679688 142.765625 C 360.679688 139.167969 366.078125 139.167969 366.078125 142.765625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.933594 133.046875 C 378.933594 136.648438 373.535156 136.648438 373.535156 133.046875 C 373.535156 129.449219 378.933594 129.449219 378.933594 133.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.230469 125.273438 C 391.230469 128.875 385.832031 128.875 385.832031 125.273438 C 385.832031 121.675781 391.230469 121.675781 391.230469 125.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.765625 114.585938 C 405.765625 118.183594 400.363281 118.183594 400.363281 114.585938 C 400.363281 110.984375 405.765625 110.984375 405.765625 114.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 425.328125 101.953125 C 425.328125 105.550781 419.925781 105.550781 419.925781 101.953125 C 419.925781 98.351563 425.328125 98.351563 425.328125 101.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.332031 88.347656 C 444.332031 91.949219 438.929688 91.949219 438.929688 88.347656 C 438.929688 84.746094 444.332031 84.746094 444.332031 88.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 78.628906 C 461.101563 82.230469 455.699219 82.230469 455.699219 78.628906 C 455.699219 75.03125 461.101563 75.03125 461.101563 78.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.855469 430.558594 L 458.398438 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.855469 430.558594 L 66.855469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.789063 430.558594 L 122.789063 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.722656 430.558594 L 178.722656 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.660156 430.558594 L 234.660156 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.59375 430.558594 L 290.59375 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.53125 430.558594 L 346.53125 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.464844 430.558594 L 402.464844 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 430.558594 L 458.398438 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.175781" y="456.480469"/> + <use xlink:href="#glyph0-2" x="61.849609" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.183594" y="456.480469"/> + <use xlink:href="#glyph0-1" x="71.857422" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.109375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.783203" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.117188" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.791016" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.042969" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.716797" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.050781" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.724609" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="222.980469" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.654297" y="456.480469"/> + <use xlink:href="#glyph0-4" x="232.988281" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.662109" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.914063" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.587891" y="456.480469"/> + <use xlink:href="#glyph0-5" x="288.921875" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.595703" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.851563" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.525391" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.859375" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.533203" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.785156" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.458984" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.792969" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.466797" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.71875" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.392578" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.726563" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.400391" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 423.601563 L 59.039063 78.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 423.601563 L 51.839844 423.601563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 366.027344 L 51.839844 366.027344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 308.449219 L 51.839844 308.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 250.875 L 51.839844 250.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 193.296875 L 51.839844 193.296875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 135.722656 L 51.839844 135.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 78.144531 L 51.839844 78.144531 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="431.941406"/> + <use xlink:href="#glyph1-2" x="41.761719" y="425.267578"/> + <use xlink:href="#glyph1-1" x="41.761719" y="421.933594"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="374.367188"/> + <use xlink:href="#glyph1-2" x="41.761719" y="367.693359"/> + <use xlink:href="#glyph1-3" x="41.761719" y="364.359375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="316.789063"/> + <use xlink:href="#glyph1-2" x="41.761719" y="310.115234"/> + <use xlink:href="#glyph1-4" x="41.761719" y="306.78125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="259.214844"/> + <use xlink:href="#glyph1-2" x="41.761719" y="252.541016"/> + <use xlink:href="#glyph1-5" x="41.761719" y="249.207031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="201.636719"/> + <use xlink:href="#glyph1-2" x="41.761719" y="194.962891"/> + <use xlink:href="#glyph1-6" x="41.761719" y="191.628906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="144.0625"/> + <use xlink:href="#glyph1-2" x="41.761719" y="137.388672"/> + <use xlink:href="#glyph1-1" x="41.761719" y="134.054688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="86.484375"/> + <use xlink:href="#glyph1-2" x="41.761719" y="79.810547"/> + <use xlink:href="#glyph1-3" x="41.761719" y="76.476563"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.175781" y="34.675781"/> + <use xlink:href="#glyph2-2" x="198.971875" y="34.675781"/> + <use xlink:href="#glyph2-3" x="206.980469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.775781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.571875" y="34.675781"/> + <use xlink:href="#glyph2-6" x="229.367969" y="34.675781"/> + <use xlink:href="#glyph2-7" x="233.36875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="242.164844" y="34.675781"/> + <use xlink:href="#glyph2-8" x="250.173438" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.96875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="259.764063" y="34.675781"/> + <use xlink:href="#glyph2-10" x="263.764844" y="34.675781"/> + <use xlink:href="#glyph2-11" x="271.773438" y="34.675781"/> + <use xlink:href="#glyph2-6" x="279.782031" y="34.675781"/> + <use xlink:href="#glyph2-12" x="283.782812" y="34.675781"/> + <use xlink:href="#glyph2-6" x="293.3875" y="34.675781"/> + <use xlink:href="#glyph2-13" x="297.388281" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.797656" y="34.675781"/> + <use xlink:href="#glyph2-14" x="309.798437" y="34.675781"/> + <use xlink:href="#glyph2-15" x="317.807031" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.815625" y="34.675781"/> + <use xlink:href="#glyph2-16" x="329.816406" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.660156 397.363281 C 77.660156 400.964844 72.257813 400.964844 72.257813 397.363281 C 72.257813 393.765625 77.660156 393.765625 77.660156 397.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.339844 377.929688 C 98.339844 381.53125 92.941406 381.53125 92.941406 377.929688 C 92.941406 374.328125 98.339844 374.328125 98.339844 377.929688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.433594 360.4375 C 113.433594 364.039063 108.03125 364.039063 108.03125 360.4375 C 108.03125 356.839844 113.433594 356.839844 113.433594 360.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.933594 350.722656 C 122.933594 354.320313 117.535156 354.320313 117.535156 350.722656 C 117.535156 347.121094 122.933594 347.121094 122.933594 350.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.671875 339.058594 C 134.671875 342.660156 129.273438 342.660156 129.273438 339.058594 C 129.273438 335.460938 134.671875 335.460938 134.671875 339.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.203125 323.511719 C 149.203125 327.113281 143.804688 327.113281 143.804688 323.511719 C 143.804688 319.910156 149.203125 319.910156 149.203125 323.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.359375 302.132813 C 174.359375 305.734375 168.957031 305.734375 168.957031 302.132813 C 168.957031 298.535156 174.359375 298.535156 174.359375 302.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.363281 282.699219 C 193.363281 286.296875 187.960938 286.296875 187.960938 282.699219 C 187.960938 279.097656 193.363281 279.097656 193.363281 282.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.453125 269.09375 C 208.453125 272.695313 203.054688 272.695313 203.054688 269.09375 C 203.054688 265.492188 208.453125 265.492188 208.453125 269.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.722656 247.714844 C 234.722656 251.316406 229.324219 251.316406 229.324219 247.714844 C 229.324219 244.117188 234.722656 244.117188 234.722656 247.714844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 250.375 230.222656 C 250.375 233.824219 244.976563 233.824219 244.976563 230.222656 C 244.976563 226.625 250.375 226.625 250.375 230.222656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 269.378906 216.621094 C 269.378906 220.21875 263.980469 220.21875 263.980469 216.621094 C 263.980469 213.019531 269.378906 213.019531 269.378906 216.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279.441406 206.902344 C 279.441406 210.5 274.039063 210.5 274.039063 206.902344 C 274.039063 203.300781 279.441406 203.300781 279.441406 206.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.210938 195.242188 C 296.210938 198.839844 290.808594 198.839844 290.808594 195.242188 C 290.808594 191.640625 296.210938 191.640625 296.210938 195.242188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.890625 177.75 C 316.890625 181.347656 311.492188 181.347656 311.492188 177.75 C 311.492188 174.148438 316.890625 174.148438 316.890625 177.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.777344 164.144531 C 334.777344 167.746094 329.375 167.746094 329.375 164.144531 C 329.375 160.542969 334.777344 160.542969 334.777344 164.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.664063 152.484375 C 352.664063 156.082031 347.261719 156.082031 347.261719 152.484375 C 347.261719 148.882813 352.664063 148.882813 352.664063 152.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.078125 142.765625 C 366.078125 146.367188 360.679688 146.367188 360.679688 142.765625 C 360.679688 139.167969 366.078125 139.167969 366.078125 142.765625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.933594 133.046875 C 378.933594 136.648438 373.535156 136.648438 373.535156 133.046875 C 373.535156 129.449219 378.933594 129.449219 378.933594 133.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.230469 125.273438 C 391.230469 128.875 385.832031 128.875 385.832031 125.273438 C 385.832031 121.675781 391.230469 121.675781 391.230469 125.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.765625 114.585938 C 405.765625 118.183594 400.363281 118.183594 400.363281 114.585938 C 400.363281 110.984375 405.765625 110.984375 405.765625 114.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 425.328125 101.953125 C 425.328125 105.550781 419.925781 105.550781 419.925781 101.953125 C 419.925781 98.351563 425.328125 98.351563 425.328125 101.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.332031 88.347656 C 444.332031 91.949219 438.929688 91.949219 438.929688 88.347656 C 438.929688 84.746094 444.332031 84.746094 444.332031 88.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 78.628906 C 461.101563 82.230469 455.699219 82.230469 455.699219 78.628906 C 455.699219 75.03125 461.101563 75.03125 461.101563 78.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.957031 397.792969 L 78.792969 393.734375 L 82.628906 389.695313 L 86.460938 385.671875 L 90.296875 381.664063 L 94.132813 377.675781 L 97.964844 373.707031 L 101.800781 369.753906 L 105.632813 365.820313 L 109.46875 361.902344 L 113.304688 358 L 117.136719 354.117188 L 120.972656 350.253906 L 124.804688 346.40625 L 128.640625 342.578125 L 132.476563 338.765625 L 136.308594 334.972656 L 140.144531 331.195313 L 143.976563 327.4375 L 147.8125 323.695313 L 151.648438 319.972656 L 155.480469 316.265625 L 159.316406 312.578125 L 163.152344 308.910156 L 166.984375 305.257813 L 170.820313 301.621094 L 174.652344 298.003906 L 178.488281 294.402344 L 182.324219 290.820313 L 186.15625 287.257813 L 189.992188 283.710938 L 193.824219 280.179688 L 197.660156 276.667969 L 201.496094 273.175781 L 205.328125 269.699219 L 209.164063 266.242188 L 212.996094 262.800781 L 216.832031 259.375 L 220.667969 255.96875 L 224.5 252.582031 L 228.335938 249.210938 L 232.167969 245.859375 L 236.003906 242.523438 L 239.839844 239.207031 L 243.671875 235.90625 L 247.507813 232.625 L 251.34375 229.359375 L 255.175781 226.113281 L 259.011719 222.882813 L 262.84375 219.671875 L 266.679688 216.480469 L 270.515625 213.304688 L 274.347656 210.144531 L 278.183594 207.003906 L 282.015625 203.878906 L 285.851563 200.773438 L 289.6875 197.6875 L 293.519531 194.617188 L 297.355469 191.5625 L 301.1875 188.527344 L 305.023438 185.511719 L 308.859375 182.511719 L 312.691406 179.53125 L 316.527344 176.566406 L 320.359375 173.617188 L 324.195313 170.6875 L 328.03125 167.777344 L 331.863281 164.882813 L 335.699219 162.007813 L 339.535156 159.148438 L 343.367188 156.308594 L 347.203125 153.484375 L 351.035156 150.679688 L 354.871094 147.890625 L 358.707031 145.121094 L 362.539063 142.367188 L 366.375 139.632813 L 370.207031 136.917969 L 374.042969 134.214844 L 377.878906 131.535156 L 381.710938 128.871094 L 385.546875 126.222656 L 389.378906 123.59375 L 393.214844 120.984375 L 397.050781 118.390625 L 400.882813 115.8125 L 404.71875 113.253906 L 408.550781 110.714844 L 412.386719 108.191406 L 416.222656 105.683594 L 420.054688 103.195313 L 423.890625 100.726563 L 427.726563 98.273438 L 431.558594 95.839844 L 435.394531 93.421875 L 439.226563 91.023438 L 443.0625 88.640625 L 446.898438 86.277344 L 450.730469 83.929688 L 454.566406 81.601563 L 458.398438 79.289063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.203125 401.253906 L 88.839844 401.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.019531 405.070313 L 85.019531 397.433594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.058594 381.816406 L 101.695313 381.816406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.875 385.636719 L 97.875 378 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.824219 360.4375 L 118.464844 360.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.644531 364.257813 L 114.644531 356.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.804688 319.625 L 151.441406 319.625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 147.621094 323.441406 L 147.621094 315.804688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 158.894531 302.132813 L 166.53125 302.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.714844 305.953125 L 162.714844 298.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.546875 282.699219 L 182.183594 282.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.363281 286.515625 L 178.363281 278.878906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.078125 265.207031 L 196.714844 265.207031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 192.898438 269.023438 L 192.898438 261.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 204.171875 251.601563 L 211.808594 251.601563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 207.988281 255.421875 L 207.988281 247.785156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.144531 234.109375 L 225.78125 234.109375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 221.964844 237.929688 L 221.964844 230.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 230.441406 222.449219 L 238.078125 222.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.261719 226.269531 L 234.261719 218.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.976563 208.84375 L 252.613281 208.84375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.792969 212.664063 L 248.792969 205.027344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 257.273438 197.183594 L 264.910156 197.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.089844 201.003906 L 261.089844 193.367188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.214844 189.410156 L 273.851563 189.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.03125 193.230469 L 270.03125 185.589844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.953125 179.691406 L 285.589844 179.691406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.769531 183.511719 L 281.769531 175.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 293.042969 168.03125 L 300.679688 168.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.863281 171.851563 L 296.863281 164.214844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.136719 156.371094 L 315.773438 156.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 311.953125 160.1875 L 311.953125 152.550781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 327.140625 140.824219 L 334.777344 140.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 330.957031 144.640625 L 330.957031 137.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.671875 131.105469 L 349.308594 131.105469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.492188 134.921875 L 345.492188 127.285156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 353.96875 123.332031 L 361.605469 123.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.789063 127.148438 L 357.789063 119.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 368.503906 113.613281 L 376.140625 113.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 372.320313 117.433594 L 372.320313 109.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 381.917969 105.839844 L 389.554688 105.839844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 385.734375 109.65625 L 385.734375 102.019531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.007813 98.066406 L 404.644531 98.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 400.828125 101.882813 L 400.828125 94.246094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.660156 88.347656 L 420.296875 88.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 416.480469 92.167969 L 416.480469 84.53125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.28125 86.40625 L 430.917969 86.40625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.097656 90.222656 L 427.097656 82.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 435.019531 80.574219 L 442.65625 80.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 438.835938 84.390625 L 438.835938 76.753906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 449.550781 74.742188 L 457.1875 74.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.371094 78.5625 L 453.371094 70.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 72.800781 L 462.21875 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 76.617188 L 458.398438 68.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 416.125 L 78.238281 410.652344 L 82.078125 405.222656 L 85.921875 399.835938 L 89.761719 394.488281 L 93.601563 389.183594 L 97.441406 383.917969 L 101.28125 378.691406 L 105.121094 373.511719 L 108.960938 368.367188 L 112.800781 363.269531 L 116.640625 358.207031 L 120.480469 353.191406 L 124.320313 348.214844 L 128.160156 343.277344 L 132 338.382813 L 135.839844 333.53125 L 139.679688 328.71875 L 143.519531 323.945313 L 147.359375 319.214844 L 151.199219 314.527344 L 155.039063 309.878906 L 158.878906 305.273438 L 162.71875 300.707031 L 166.558594 296.183594 L 170.398438 291.699219 L 174.238281 287.257813 L 178.078125 282.855469 L 181.921875 278.496094 L 185.761719 274.179688 L 189.601563 269.902344 L 193.441406 265.664063 L 197.28125 261.46875 L 201.121094 257.316406 L 204.960938 253.203125 L 208.800781 249.132813 L 212.640625 245.101563 L 216.480469 241.113281 L 220.320313 237.164063 L 224.160156 233.257813 L 228 229.390625 L 231.839844 225.566406 L 235.679688 221.78125 L 239.519531 218.039063 L 243.359375 214.339844 L 247.199219 210.679688 L 251.039063 207.0625 L 254.878906 203.484375 L 258.71875 199.945313 L 262.558594 196.449219 L 266.398438 192.996094 L 270.238281 189.582031 L 274.078125 186.210938 L 277.921875 182.882813 L 281.761719 179.589844 L 285.601563 176.34375 L 289.441406 173.136719 L 293.28125 169.96875 L 297.121094 166.84375 L 300.960938 163.761719 L 304.800781 160.71875 L 308.640625 157.714844 L 312.480469 154.757813 L 316.320313 151.835938 L 320.160156 148.957031 L 324 146.121094 L 327.839844 143.328125 L 331.679688 140.570313 L 335.519531 137.859375 L 339.359375 135.1875 L 343.199219 132.554688 L 347.039063 129.964844 L 350.878906 127.417969 L 354.71875 124.910156 L 358.558594 122.441406 L 362.398438 120.015625 L 366.238281 117.632813 L 370.078125 115.289063 L 373.921875 112.988281 L 377.761719 110.726563 L 381.601563 108.507813 L 385.441406 106.328125 L 389.28125 104.191406 L 393.121094 102.09375 L 396.960938 100.039063 L 400.800781 98.027344 L 404.640625 96.054688 L 408.480469 94.121094 L 412.320313 92.234375 L 416.160156 90.382813 L 420 88.574219 L 423.839844 86.808594 L 427.679688 85.082031 L 431.519531 83.398438 L 435.359375 81.753906 L 439.199219 80.152344 L 443.039063 78.59375 L 446.878906 77.070313 L 450.71875 75.59375 L 454.558594 74.15625 L 458.398438 72.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-5" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-16" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-4" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-19" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-4" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-16" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-1" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-3" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-20" x="445.732422" y="346.695313"/> + <use xlink:href="#glyph0-16" x="452.40625" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-16" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-1" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-21" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-3" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-16" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-19" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-15" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="409.357422" y="375.496094"/> + <use xlink:href="#glyph0-1" x="412.691406" y="375.496094"/> + <use xlink:href="#glyph0-2" x="419.365234" y="375.496094"/> + <use xlink:href="#glyph0-1" x="422.699219" y="375.496094"/> + <use xlink:href="#glyph0-4" x="429.373047" y="375.496094"/> + <use xlink:href="#glyph0-4" x="436.046875" y="375.496094"/> + <use xlink:href="#glyph0-22" x="442.720703" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg new file mode 100644 index 000000000..75af2bf58 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -7.464844 -0.570313 L -8.476563 -0.570313 L -8.476563 -6.128906 L -7.65625 -6.128906 C -7.074219 -5.582031 -6.300781 -5.039063 -5.335938 -4.503906 C -4.371094 -3.964844 -3.378906 -3.550781 -2.359375 -3.257813 C -1.636719 -3.046875 -0.851563 -2.910156 0 -2.851563 L 0 -1.769531 C -0.675781 -1.78125 -1.492188 -1.914063 -2.449219 -2.167969 C -3.402344 -2.421875 -4.324219 -2.785156 -5.214844 -3.261719 C -6.105469 -3.734375 -6.855469 -4.238281 -7.464844 -4.777344 Z M -7.464844 -0.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 7.644531 -3.789063 L 9.660156 -3.148438 C 9.347656 -2.019531 8.832031 -1.183594 8.117188 -0.640625 C 7.394531 -0.09375 6.484375 0.175781 5.378906 0.175781 C 4.007813 0.175781 2.882813 -0.289063 2.003906 -1.226563 C 1.121094 -2.15625 0.679688 -3.4375 0.683594 -5.0625 C 0.679688 -6.777344 1.121094 -8.109375 2.011719 -9.058594 C 2.894531 -10.007813 4.058594 -10.480469 5.503906 -10.484375 C 6.761719 -10.480469 7.789063 -10.109375 8.578125 -9.367188 C 9.046875 -8.921875 9.398438 -8.289063 9.632813 -7.46875 L 7.574219 -6.976563 C 7.449219 -7.507813 7.195313 -7.929688 6.808594 -8.238281 C 6.421875 -8.546875 5.949219 -8.699219 5.398438 -8.703125 C 4.632813 -8.699219 4.015625 -8.425781 3.539063 -7.878906 C 3.0625 -7.328125 2.824219 -6.441406 2.828125 -5.21875 C 2.824219 -3.910156 3.058594 -2.980469 3.53125 -2.429688 C 3.996094 -1.875 4.605469 -1.597656 5.359375 -1.601563 C 5.910156 -1.597656 6.386719 -1.773438 6.785156 -2.128906 C 7.183594 -2.476563 7.46875 -3.03125 7.644531 -3.789063 Z M 7.644531 -3.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 3.003906 -10.308594 L 3.003906 -6.519531 C 3.636719 -7.261719 4.398438 -7.632813 5.289063 -7.636719 C 5.738281 -7.632813 6.148438 -7.550781 6.515625 -7.382813 C 6.882813 -7.210938 7.15625 -6.992188 7.34375 -6.734375 C 7.523438 -6.46875 7.652344 -6.179688 7.722656 -5.863281 C 7.789063 -5.542969 7.820313 -5.046875 7.824219 -4.378906 L 7.824219 0 L 5.851563 0 L 5.851563 -3.945313 C 5.847656 -4.722656 5.808594 -5.21875 5.738281 -5.433594 C 5.660156 -5.640625 5.527344 -5.808594 5.339844 -5.9375 C 5.144531 -6.058594 4.90625 -6.121094 4.625 -6.125 C 4.292969 -6.121094 4 -6.042969 3.746094 -5.882813 C 3.484375 -5.722656 3.296875 -5.480469 3.179688 -5.164063 C 3.058594 -4.839844 3 -4.367188 3.003906 -3.742188 L 3.003906 0 L 1.027344 0 L 1.027344 -10.308594 Z M 3.003906 -10.308594 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface41"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 383.480469 C 77.101563 387.082031 71.699219 387.082031 71.699219 383.480469 C 71.699219 379.878906 77.101563 379.878906 77.101563 383.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.566406 367.761719 C 93.566406 371.359375 88.167969 371.359375 88.167969 367.761719 C 88.167969 364.160156 93.566406 364.160156 93.566406 367.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.082031 355.535156 C 106.082031 359.132813 100.679688 359.132813 100.679688 355.535156 C 100.679688 351.933594 106.082031 351.933594 106.082031 355.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 127.816406 335.449219 C 127.816406 339.050781 122.417969 339.050781 122.417969 335.449219 C 122.417969 331.851563 127.816406 331.851563 127.816406 335.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.625 320.605469 C 143.625 324.203125 138.226563 324.203125 138.226563 320.605469 C 138.226563 317.003906 143.625 317.003906 143.625 320.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.089844 304.886719 C 160.089844 308.484375 154.691406 308.484375 154.691406 304.886719 C 154.691406 301.285156 160.089844 301.285156 160.089844 304.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.582031 292.664063 C 174.582031 296.265625 169.183594 296.265625 169.183594 292.664063 C 169.183594 289.066406 174.582031 289.066406 174.582031 292.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.121094 282.183594 C 185.121094 285.785156 179.71875 285.785156 179.71875 282.183594 C 179.71875 278.582031 185.121094 278.582031 185.121094 282.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 198.292969 269.957031 C 198.292969 273.558594 192.894531 273.558594 192.894531 269.957031 C 192.894531 266.359375 198.292969 266.359375 198.292969 269.957031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.148438 261.234375 C 210.148438 264.835938 204.75 264.835938 204.75 261.234375 C 204.75 257.636719 210.148438 257.636719 210.148438 261.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.003906 249.003906 C 222.003906 252.605469 216.605469 252.605469 216.605469 249.003906 C 216.605469 245.40625 222.003906 245.40625 222.003906 249.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.496094 238.539063 C 236.496094 242.140625 231.097656 242.140625 231.097656 238.539063 C 231.097656 234.9375 236.496094 234.9375 236.496094 238.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.304688 224.570313 C 252.304688 228.171875 246.902344 228.171875 246.902344 224.570313 C 246.902344 220.96875 252.304688 220.96875 252.304688 224.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 268.769531 212.359375 C 268.769531 215.957031 263.371094 215.957031 263.371094 212.359375 C 263.371094 208.757813 268.769531 208.757813 268.769531 212.359375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 283.917969 200.140625 C 283.917969 203.738281 278.519531 203.738281 278.519531 200.140625 C 278.519531 196.539063 283.917969 196.539063 283.917969 200.140625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 303.019531 184.429688 C 303.019531 188.03125 297.621094 188.03125 297.621094 184.429688 C 297.621094 180.832031 303.019531 180.832031 303.019531 184.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 317.511719 173.964844 C 317.511719 177.5625 312.113281 177.5625 312.113281 173.964844 C 312.113281 170.363281 317.511719 170.363281 317.511719 173.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342.539063 154.769531 C 342.539063 158.371094 337.140625 158.371094 337.140625 154.769531 C 337.140625 151.167969 342.539063 151.167969 342.539063 154.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.691406 143.429688 C 357.691406 147.027344 352.289063 147.027344 352.289063 143.429688 C 352.289063 139.828125 357.691406 139.828125 357.691406 143.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 375.472656 130.34375 C 375.472656 133.945313 370.074219 133.945313 370.074219 130.34375 C 370.074219 126.742188 375.472656 126.742188 375.472656 130.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.257813 118.136719 C 393.257813 121.734375 387.859375 121.734375 387.859375 118.136719 C 387.859375 114.535156 393.257813 114.535156 393.257813 118.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.992188 104.191406 C 414.992188 107.789063 409.59375 107.789063 409.59375 104.191406 C 409.59375 100.589844 414.992188 100.589844 414.992188 104.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.753906 90.234375 C 434.753906 93.835938 429.355469 93.835938 429.355469 90.234375 C 429.355469 86.636719 434.753906 86.636719 434.753906 90.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 447.269531 83.269531 C 447.269531 86.867188 441.867188 86.867188 441.867188 83.269531 C 441.867188 79.667969 447.269531 79.667969 447.269531 83.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.460938 430.558594 L 453.351563 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.460938 430.558594 L 142.460938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 246.089844 430.558594 L 246.089844 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 349.722656 430.558594 L 349.722656 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.351563 430.558594 L 453.351563 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="139.125" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="242.753906" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="346.386719" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="450.015625" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 378.035156 L 59.039063 62.402344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 378.035156 L 51.839844 378.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 325.429688 L 51.839844 325.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 272.824219 L 51.839844 272.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 220.21875 L 51.839844 220.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 167.613281 L 51.839844 167.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 115.007813 L 51.839844 115.007813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 62.402344 L 51.839844 62.402344 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="381.371094"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="328.765625"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="276.160156"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="223.554688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="170.949219"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="118.34375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="65.738281"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="176.5625" y="34.675781"/> + <use xlink:href="#glyph2-2" x="186.961719" y="34.675781"/> + <use xlink:href="#glyph2-3" x="195.757813" y="34.675781"/> + <use xlink:href="#glyph2-4" x="203.766406" y="34.675781"/> + <use xlink:href="#glyph2-5" x="211.775" y="34.675781"/> + <use xlink:href="#glyph2-6" x="217.378906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="226.175" y="34.675781"/> + <use xlink:href="#glyph2-8" x="234.971094" y="34.675781"/> + <use xlink:href="#glyph2-9" x="242.979687" y="34.675781"/> + <use xlink:href="#glyph2-10" x="246.980469" y="34.675781"/> + <use xlink:href="#glyph2-11" x="255.776562" y="34.675781"/> + <use xlink:href="#glyph2-12" x="263.785156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="268.580469" y="34.675781"/> + <use xlink:href="#glyph2-13" x="273.375781" y="34.675781"/> + <use xlink:href="#glyph2-3" x="277.376563" y="34.675781"/> + <use xlink:href="#glyph2-8" x="285.385156" y="34.675781"/> + <use xlink:href="#glyph2-9" x="293.39375" y="34.675781"/> + <use xlink:href="#glyph2-14" x="297.394531" y="34.675781"/> + <use xlink:href="#glyph2-9" x="306.999219" y="34.675781"/> + <use xlink:href="#glyph2-15" x="311" y="34.675781"/> + <use xlink:href="#glyph2-9" x="319.409375" y="34.675781"/> + <use xlink:href="#glyph2-16" x="323.410156" y="34.675781"/> + <use xlink:href="#glyph2-17" x="331.41875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="339.427344" y="34.675781"/> + <use xlink:href="#glyph2-18" x="343.428125" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-6" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-9" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-11" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-12" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-13" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-11" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-9" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 383.480469 C 77.101563 387.082031 71.699219 387.082031 71.699219 383.480469 C 71.699219 379.878906 77.101563 379.878906 77.101563 383.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.566406 367.761719 C 93.566406 371.359375 88.167969 371.359375 88.167969 367.761719 C 88.167969 364.160156 93.566406 364.160156 93.566406 367.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.082031 355.535156 C 106.082031 359.132813 100.679688 359.132813 100.679688 355.535156 C 100.679688 351.933594 106.082031 351.933594 106.082031 355.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 127.816406 335.449219 C 127.816406 339.050781 122.417969 339.050781 122.417969 335.449219 C 122.417969 331.851563 127.816406 331.851563 127.816406 335.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.625 320.605469 C 143.625 324.203125 138.226563 324.203125 138.226563 320.605469 C 138.226563 317.003906 143.625 317.003906 143.625 320.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.089844 304.886719 C 160.089844 308.484375 154.691406 308.484375 154.691406 304.886719 C 154.691406 301.285156 160.089844 301.285156 160.089844 304.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.582031 292.664063 C 174.582031 296.265625 169.183594 296.265625 169.183594 292.664063 C 169.183594 289.066406 174.582031 289.066406 174.582031 292.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.121094 282.183594 C 185.121094 285.785156 179.71875 285.785156 179.71875 282.183594 C 179.71875 278.582031 185.121094 278.582031 185.121094 282.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 198.292969 269.957031 C 198.292969 273.558594 192.894531 273.558594 192.894531 269.957031 C 192.894531 266.359375 198.292969 266.359375 198.292969 269.957031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.148438 261.234375 C 210.148438 264.835938 204.75 264.835938 204.75 261.234375 C 204.75 257.636719 210.148438 257.636719 210.148438 261.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.003906 249.003906 C 222.003906 252.605469 216.605469 252.605469 216.605469 249.003906 C 216.605469 245.40625 222.003906 245.40625 222.003906 249.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.496094 238.539063 C 236.496094 242.140625 231.097656 242.140625 231.097656 238.539063 C 231.097656 234.9375 236.496094 234.9375 236.496094 238.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.304688 224.570313 C 252.304688 228.171875 246.902344 228.171875 246.902344 224.570313 C 246.902344 220.96875 252.304688 220.96875 252.304688 224.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 268.769531 212.359375 C 268.769531 215.957031 263.371094 215.957031 263.371094 212.359375 C 263.371094 208.757813 268.769531 208.757813 268.769531 212.359375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 283.917969 200.140625 C 283.917969 203.738281 278.519531 203.738281 278.519531 200.140625 C 278.519531 196.539063 283.917969 196.539063 283.917969 200.140625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 303.019531 184.429688 C 303.019531 188.03125 297.621094 188.03125 297.621094 184.429688 C 297.621094 180.832031 303.019531 180.832031 303.019531 184.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 317.511719 173.964844 C 317.511719 177.5625 312.113281 177.5625 312.113281 173.964844 C 312.113281 170.363281 317.511719 170.363281 317.511719 173.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342.539063 154.769531 C 342.539063 158.371094 337.140625 158.371094 337.140625 154.769531 C 337.140625 151.167969 342.539063 151.167969 342.539063 154.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.691406 143.429688 C 357.691406 147.027344 352.289063 147.027344 352.289063 143.429688 C 352.289063 139.828125 357.691406 139.828125 357.691406 143.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 375.472656 130.34375 C 375.472656 133.945313 370.074219 133.945313 370.074219 130.34375 C 370.074219 126.742188 375.472656 126.742188 375.472656 130.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.257813 118.136719 C 393.257813 121.734375 387.859375 121.734375 387.859375 118.136719 C 387.859375 114.535156 393.257813 114.535156 393.257813 118.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.992188 104.191406 C 414.992188 107.789063 409.59375 107.789063 409.59375 104.191406 C 409.59375 100.589844 414.992188 100.589844 414.992188 104.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.753906 90.234375 C 434.753906 93.835938 429.355469 93.835938 429.355469 90.234375 C 429.355469 86.636719 434.753906 86.636719 434.753906 90.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 447.269531 83.269531 C 447.269531 86.867188 441.867188 86.867188 441.867188 83.269531 C 441.867188 79.667969 447.269531 79.667969 447.269531 83.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 383.789063 L 78.238281 380.003906 L 82.078125 376.230469 L 85.921875 372.472656 L 89.761719 368.730469 L 93.601563 365 L 97.441406 361.28125 L 101.28125 357.578125 L 105.121094 353.890625 L 108.960938 350.214844 L 112.800781 346.554688 L 116.640625 342.90625 L 120.480469 339.273438 L 124.320313 335.652344 L 128.160156 332.046875 L 132 328.453125 L 135.839844 324.875 L 139.679688 321.3125 L 143.519531 317.761719 L 147.359375 314.222656 L 151.199219 310.699219 L 155.039063 307.191406 L 158.878906 303.695313 L 162.71875 300.214844 L 166.558594 296.746094 L 170.398438 293.292969 L 174.238281 289.851563 L 178.078125 286.425781 L 181.921875 283.015625 L 185.761719 279.613281 L 189.601563 276.230469 L 193.441406 272.859375 L 197.28125 269.5 L 201.121094 266.15625 L 204.960938 262.828125 L 208.800781 259.511719 L 212.640625 256.210938 L 216.480469 252.921875 L 220.320313 249.648438 L 224.160156 246.386719 L 228 243.140625 L 231.839844 239.90625 L 235.679688 236.6875 L 239.519531 233.484375 L 243.359375 230.292969 L 247.199219 227.113281 L 251.039063 223.949219 L 254.878906 220.800781 L 258.71875 217.664063 L 262.558594 214.542969 L 266.398438 211.433594 L 270.238281 208.339844 L 274.078125 205.257813 L 277.921875 202.191406 L 281.761719 199.136719 L 285.601563 196.097656 L 289.441406 193.074219 L 293.28125 190.058594 L 297.121094 187.0625 L 300.960938 184.078125 L 304.800781 181.109375 L 308.640625 178.152344 L 312.480469 175.207031 L 316.320313 172.28125 L 320.160156 169.363281 L 324 166.464844 L 327.839844 163.574219 L 331.679688 160.703125 L 335.519531 157.84375 L 339.359375 154.996094 L 343.199219 152.164063 L 347.039063 149.347656 L 350.878906 146.542969 L 354.71875 143.75 L 358.558594 140.972656 L 362.398438 138.210938 L 366.238281 135.460938 L 370.078125 132.726563 L 373.921875 130.003906 L 377.761719 127.296875 L 381.601563 124.601563 L 385.441406 121.921875 L 389.28125 119.257813 L 393.121094 116.601563 L 396.960938 113.964844 L 400.800781 111.339844 L 404.640625 108.730469 L 408.480469 106.132813 L 412.320313 103.546875 L 416.160156 100.976563 L 420 98.421875 L 423.839844 95.878906 L 427.679688 93.351563 L 431.519531 90.839844 L 435.359375 88.335938 L 439.199219 85.851563 L 443.039063 83.378906 L 446.878906 80.917969 L 450.71875 78.472656 L 454.558594 76.042969 L 458.398438 73.625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.242188 416.800781 L 78.878906 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.058594 420.617188 L 75.058594 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 91.660156 402.847656 L 99.296875 402.847656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 95.476563 406.667969 L 95.476563 399.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.761719 388.890625 L 118.398438 388.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.578125 392.710938 L 114.578125 385.074219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.957031 383.675781 L 129.59375 383.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 125.777344 387.492188 L 125.777344 379.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.742188 371.464844 L 147.378906 371.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.558594 375.285156 L 143.558594 367.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.574219 362.75 L 161.210938 362.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 157.390625 366.570313 L 157.390625 358.933594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 167.40625 355.789063 L 175.042969 355.789063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.222656 359.605469 L 171.222656 351.96875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.800781 340.089844 L 197.4375 340.089844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.617188 343.910156 L 193.617188 336.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.21875 329.648438 L 217.855469 329.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 214.035156 333.464844 L 214.035156 325.828125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 229.976563 319.199219 L 237.613281 319.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 233.796875 323.019531 L 233.796875 315.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 243.152344 310.480469 L 250.789063 310.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 246.96875 314.300781 L 246.96875 306.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 260.277344 301.777344 L 267.914063 301.777344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.09375 305.597656 L 264.09375 297.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.964844 287.847656 L 293.601563 287.847656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.78125 291.667969 L 289.78125 284.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.453125 279.132813 L 308.089844 279.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 304.273438 282.953125 L 304.273438 275.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 314.945313 272.175781 L 322.582031 272.175781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.761719 275.992188 L 318.761719 268.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 330.09375 263.464844 L 337.730469 263.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 333.914063 267.28125 L 333.914063 259.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.902344 254.757813 L 353.539063 254.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 349.722656 258.574219 L 349.722656 250.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.757813 251.292969 L 365.394531 251.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 361.578125 255.113281 L 361.578125 247.476563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.929688 244.328125 L 378.566406 244.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.75 248.148438 L 374.75 240.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.761719 235.613281 L 392.398438 235.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.582031 239.433594 L 388.582031 231.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 400.570313 230.414063 L 408.207031 230.414063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 404.390625 234.230469 L 404.390625 226.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 410.453125 225.1875 L 418.089844 225.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.269531 229.007813 L 414.269531 221.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 424.28125 218.226563 L 431.917969 218.226563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 428.101563 222.046875 L 428.101563 214.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 439.433594 213.023438 L 447.070313 213.023438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.25 216.84375 L 443.25 209.207031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 206.066406 L 462.21875 206.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 209.886719 L 458.398438 202.25 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.058594 416.171875 L 78.890625 413.621094 L 82.726563 411.074219 L 86.558594 408.539063 L 90.390625 406.011719 L 94.226563 403.496094 L 98.058594 400.988281 L 101.890625 398.488281 L 105.726563 396 L 109.558594 393.519531 L 113.394531 391.046875 L 117.226563 388.582031 L 121.058594 386.128906 L 124.894531 383.683594 L 128.726563 381.25 L 132.558594 378.820313 L 136.394531 376.40625 L 140.226563 373.996094 L 144.058594 371.597656 L 147.894531 369.207031 L 151.726563 366.824219 L 155.558594 364.453125 L 159.394531 362.089844 L 163.226563 359.734375 L 167.0625 357.390625 L 170.894531 355.054688 L 174.726563 352.726563 L 178.5625 350.410156 L 182.394531 348.101563 L 186.226563 345.800781 L 190.0625 343.507813 L 193.894531 341.226563 L 197.726563 338.957031 L 201.5625 336.691406 L 205.394531 334.4375 L 209.226563 332.191406 L 213.0625 329.957031 L 216.894531 327.726563 L 220.726563 325.511719 L 224.5625 323.300781 L 228.394531 321.101563 L 232.230469 318.910156 L 236.0625 316.726563 L 239.894531 314.554688 L 243.730469 312.390625 L 247.5625 310.238281 L 251.394531 308.089844 L 255.230469 305.953125 L 259.0625 303.828125 L 262.894531 301.707031 L 266.730469 299.597656 L 270.5625 297.5 L 274.394531 295.40625 L 278.230469 293.324219 L 282.0625 291.25 L 285.894531 289.1875 L 289.730469 287.132813 L 293.5625 285.085938 L 297.398438 283.050781 L 301.230469 281.019531 L 305.0625 279.003906 L 308.898438 276.992188 L 312.730469 274.992188 L 316.5625 273 L 320.398438 271.019531 L 324.230469 269.042969 L 328.0625 267.078125 L 331.898438 265.125 L 335.730469 263.179688 L 339.5625 261.242188 L 343.398438 259.3125 L 347.230469 257.394531 L 351.0625 255.484375 L 354.898438 253.582031 L 358.730469 251.691406 L 362.566406 249.808594 L 366.398438 247.933594 L 370.230469 246.070313 L 374.066406 244.214844 L 377.898438 242.367188 L 381.730469 240.527344 L 385.566406 238.699219 L 389.398438 236.878906 L 393.230469 235.070313 L 397.066406 233.269531 L 400.898438 231.476563 L 404.730469 229.695313 L 408.566406 227.917969 L 412.398438 226.152344 L 416.234375 224.398438 L 420.066406 222.652344 L 423.898438 220.914063 L 427.734375 219.183594 L 431.566406 217.464844 L 435.398438 215.753906 L 439.234375 214.050781 L 443.066406 212.359375 L 446.898438 210.675781 L 450.734375 209 L 454.566406 207.335938 L 458.398438 205.679688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-8" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-9" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-8" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-8" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-9" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-8" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-10" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-11" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-10" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-12" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-13" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-14" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-13" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-15" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-16" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-5" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-6" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-17" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-1" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-10" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-19" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-14" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-19" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-5" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-6" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-10" x="416.728516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="420.0625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="427.070313" y="346.695313"/> + <use xlink:href="#glyph0-19" x="430.404297" y="346.695313"/> + <use xlink:href="#glyph0-14" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-1" x="440.412109" y="346.695313"/> + <use xlink:href="#glyph0-19" x="447.085938" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-9" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-8" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-9" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-8" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-10" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-11" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-12" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-10" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-13" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-14" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-13" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-19" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-20" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-21" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-5" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-6" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-17" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-1" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-10" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-18" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-10" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-13" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-14" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-3" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-21" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-16" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-6" x="412.058594" y="375.496094"/> + <use xlink:href="#glyph0-10" x="416.728516" y="375.496094"/> + <use xlink:href="#glyph0-18" x="420.0625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="427.070313" y="375.496094"/> + <use xlink:href="#glyph0-13" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-14" x="437.078125" y="375.496094"/> + <use xlink:href="#glyph0-4" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-13" x="447.085938" y="375.496094"/> + <use xlink:href="#glyph0-4" x="453.759766" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg b/docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg new file mode 100644 index 000000000..f4a0453f4 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg @@ -0,0 +1,445 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -7.464844 -0.570313 L -8.476563 -0.570313 L -8.476563 -6.128906 L -7.65625 -6.128906 C -7.074219 -5.582031 -6.300781 -5.039063 -5.335938 -4.503906 C -4.371094 -3.964844 -3.378906 -3.550781 -2.359375 -3.257813 C -1.636719 -3.046875 -0.851563 -2.910156 0 -2.851563 L 0 -1.769531 C -0.675781 -1.78125 -1.492188 -1.914063 -2.449219 -2.167969 C -3.402344 -2.421875 -4.324219 -2.785156 -5.214844 -3.261719 C -6.105469 -3.734375 -6.855469 -4.238281 -7.464844 -4.777344 Z M -7.464844 -0.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 7.644531 -3.789063 L 9.660156 -3.148438 C 9.347656 -2.019531 8.832031 -1.183594 8.117188 -0.640625 C 7.394531 -0.09375 6.484375 0.175781 5.378906 0.175781 C 4.007813 0.175781 2.882813 -0.289063 2.003906 -1.226563 C 1.121094 -2.15625 0.679688 -3.4375 0.683594 -5.0625 C 0.679688 -6.777344 1.121094 -8.109375 2.011719 -9.058594 C 2.894531 -10.007813 4.058594 -10.480469 5.503906 -10.484375 C 6.761719 -10.480469 7.789063 -10.109375 8.578125 -9.367188 C 9.046875 -8.921875 9.398438 -8.289063 9.632813 -7.46875 L 7.574219 -6.976563 C 7.449219 -7.507813 7.195313 -7.929688 6.808594 -8.238281 C 6.421875 -8.546875 5.949219 -8.699219 5.398438 -8.703125 C 4.632813 -8.699219 4.015625 -8.425781 3.539063 -7.878906 C 3.0625 -7.328125 2.824219 -6.441406 2.828125 -5.21875 C 2.824219 -3.910156 3.058594 -2.980469 3.53125 -2.429688 C 3.996094 -1.875 4.605469 -1.597656 5.359375 -1.601563 C 5.910156 -1.597656 6.386719 -1.773438 6.785156 -2.128906 C 7.183594 -2.476563 7.46875 -3.03125 7.644531 -3.789063 Z M 7.644531 -3.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 3.003906 -10.308594 L 3.003906 -6.519531 C 3.636719 -7.261719 4.398438 -7.632813 5.289063 -7.636719 C 5.738281 -7.632813 6.148438 -7.550781 6.515625 -7.382813 C 6.882813 -7.210938 7.15625 -6.992188 7.34375 -6.734375 C 7.523438 -6.46875 7.652344 -6.179688 7.722656 -5.863281 C 7.789063 -5.542969 7.820313 -5.046875 7.824219 -4.378906 L 7.824219 0 L 5.851563 0 L 5.851563 -3.945313 C 5.847656 -4.722656 5.808594 -5.21875 5.738281 -5.433594 C 5.660156 -5.640625 5.527344 -5.808594 5.339844 -5.9375 C 5.144531 -6.058594 4.90625 -6.121094 4.625 -6.125 C 4.292969 -6.121094 4 -6.042969 3.746094 -5.882813 C 3.484375 -5.722656 3.296875 -5.480469 3.179688 -5.164063 C 3.058594 -4.839844 3 -4.367188 3.003906 -3.742188 L 3.003906 0 L 1.027344 0 L 1.027344 -10.308594 Z M 3.003906 -10.308594 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 7.304688 -7.785156 L 5.394531 -7.574219 C 5.34375 -7.964844 5.222656 -8.253906 5.027344 -8.445313 C 4.828125 -8.628906 4.570313 -8.722656 4.261719 -8.726563 C 3.839844 -8.722656 3.488281 -8.535156 3.203125 -8.164063 C 2.910156 -7.785156 2.726563 -7.003906 2.65625 -5.820313 C 3.144531 -6.398438 3.757813 -6.691406 4.492188 -6.695313 C 5.316406 -6.691406 6.023438 -6.375 6.613281 -5.75 C 7.199219 -5.117188 7.492188 -4.308594 7.496094 -3.320313 C 7.492188 -2.261719 7.183594 -1.414063 6.566406 -0.78125 C 5.945313 -0.140625 5.152344 0.175781 4.183594 0.175781 C 3.140625 0.175781 2.285156 -0.226563 1.617188 -1.035156 C 0.945313 -1.84375 0.609375 -3.167969 0.613281 -5.011719 C 0.609375 -6.898438 0.957031 -8.261719 1.660156 -9.097656 C 2.355469 -9.929688 3.261719 -10.347656 4.378906 -10.351563 C 5.160156 -10.347656 5.808594 -10.128906 6.324219 -9.691406 C 6.832031 -9.253906 7.160156 -8.617188 7.304688 -7.785156 Z M 2.828125 -3.472656 C 2.824219 -2.828125 2.972656 -2.332031 3.269531 -1.984375 C 3.5625 -1.632813 3.898438 -1.457031 4.28125 -1.460938 C 4.644531 -1.457031 4.949219 -1.601563 5.195313 -1.890625 C 5.4375 -2.175781 5.558594 -2.644531 5.5625 -3.296875 C 5.558594 -3.964844 5.429688 -4.457031 5.167969 -4.769531 C 4.902344 -5.082031 4.574219 -5.238281 4.183594 -5.238281 C 3.800781 -5.238281 3.476563 -5.085938 3.21875 -4.789063 C 2.953125 -4.488281 2.824219 -4.050781 2.828125 -3.472656 Z M 2.828125 -3.472656 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface46"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 356.820313 C 77.101563 360.421875 71.699219 360.421875 71.699219 356.820313 C 71.699219 353.21875 77.101563 353.21875 77.101563 356.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.605469 328.59375 C 113.605469 332.195313 108.207031 332.195313 108.207031 328.59375 C 108.207031 324.996094 113.605469 324.996094 113.605469 328.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.566406 310.953125 C 134.566406 314.554688 129.164063 314.554688 129.164063 310.953125 C 129.164063 307.355469 134.566406 307.355469 134.566406 310.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.875 293.3125 C 156.875 296.914063 151.476563 296.914063 151.476563 293.3125 C 151.476563 289.710938 156.875 289.710938 156.875 293.3125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.761719 261.558594 C 196.761719 265.160156 191.363281 265.160156 191.363281 261.558594 C 191.363281 257.957031 196.761719 257.957031 196.761719 261.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.070313 243.917969 C 219.070313 247.519531 213.671875 247.519531 213.671875 243.917969 C 213.671875 240.316406 219.070313 240.316406 219.070313 243.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 243.410156 224.511719 C 243.410156 228.113281 238.011719 228.113281 238.011719 224.511719 C 238.011719 220.914063 243.410156 220.914063 243.410156 224.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.394531 208.636719 C 266.394531 212.234375 260.996094 212.234375 260.996094 208.636719 C 260.996094 205.035156 266.394531 205.035156 266.394531 208.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.269531 198.050781 C 281.269531 201.652344 275.867188 201.652344 275.867188 198.050781 C 275.867188 194.453125 281.269531 194.453125 281.269531 198.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.636719 178.644531 C 307.636719 182.246094 302.234375 182.246094 302.234375 178.644531 C 302.234375 175.046875 307.636719 175.046875 307.636719 178.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 329.269531 162.769531 C 329.269531 166.371094 323.867188 166.371094 323.867188 162.769531 C 323.867188 159.167969 329.269531 159.167969 329.269531 162.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 350.226563 146.890625 C 350.226563 150.492188 344.828125 150.492188 344.828125 146.890625 C 344.828125 143.292969 350.226563 143.292969 350.226563 146.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.101563 136.308594 C 365.101563 139.90625 359.699219 139.90625 359.699219 136.308594 C 359.699219 132.707031 365.101563 132.707031 365.101563 136.308594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 389.4375 120.429688 C 389.4375 124.03125 384.039063 124.03125 384.039063 120.429688 C 384.039063 116.832031 389.4375 116.832031 389.4375 120.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.425781 104.554688 C 412.425781 108.152344 407.023438 108.152344 407.023438 104.554688 C 407.023438 100.953125 412.425781 100.953125 412.425781 104.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 440.816406 86.914063 C 440.816406 90.511719 435.417969 90.511719 435.417969 86.914063 C 435.417969 83.3125 440.816406 83.3125 440.816406 86.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.230469 430.558594 L 453.21875 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.230469 430.558594 L 142.230469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 245.894531 430.558594 L 245.894531 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 349.554688 430.558594 L 349.554688 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.21875 430.558594 L 453.21875 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="138.894531" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="242.558594" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="346.21875" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="449.882813" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 414.59375 L 59.039063 104.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 414.59375 L 51.839844 414.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 362.996094 L 51.839844 362.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 311.394531 L 51.839844 311.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 259.792969 L 51.839844 259.792969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 208.195313 L 51.839844 208.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 156.59375 L 51.839844 156.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 104.996094 L 51.839844 104.996094 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="417.929688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="366.332031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="314.730469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="263.128906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="211.53125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="159.929688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="108.332031"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="176.5625" y="34.675781"/> + <use xlink:href="#glyph2-2" x="186.961719" y="34.675781"/> + <use xlink:href="#glyph2-3" x="195.757813" y="34.675781"/> + <use xlink:href="#glyph2-4" x="203.766406" y="34.675781"/> + <use xlink:href="#glyph2-5" x="211.775" y="34.675781"/> + <use xlink:href="#glyph2-6" x="217.378906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="226.175" y="34.675781"/> + <use xlink:href="#glyph2-8" x="234.971094" y="34.675781"/> + <use xlink:href="#glyph2-9" x="242.979687" y="34.675781"/> + <use xlink:href="#glyph2-10" x="246.980469" y="34.675781"/> + <use xlink:href="#glyph2-11" x="255.776562" y="34.675781"/> + <use xlink:href="#glyph2-12" x="263.785156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="268.580469" y="34.675781"/> + <use xlink:href="#glyph2-13" x="273.375781" y="34.675781"/> + <use xlink:href="#glyph2-3" x="277.376563" y="34.675781"/> + <use xlink:href="#glyph2-8" x="285.385156" y="34.675781"/> + <use xlink:href="#glyph2-9" x="293.39375" y="34.675781"/> + <use xlink:href="#glyph2-14" x="297.394531" y="34.675781"/> + <use xlink:href="#glyph2-9" x="306.999219" y="34.675781"/> + <use xlink:href="#glyph2-15" x="311" y="34.675781"/> + <use xlink:href="#glyph2-9" x="319.409375" y="34.675781"/> + <use xlink:href="#glyph2-16" x="323.410156" y="34.675781"/> + <use xlink:href="#glyph2-17" x="331.41875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="339.427344" y="34.675781"/> + <use xlink:href="#glyph2-18" x="343.428125" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-6" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-9" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-11" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-12" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-13" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-11" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-9" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 356.820313 C 77.101563 360.421875 71.699219 360.421875 71.699219 356.820313 C 71.699219 353.21875 77.101563 353.21875 77.101563 356.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.605469 328.59375 C 113.605469 332.195313 108.207031 332.195313 108.207031 328.59375 C 108.207031 324.996094 113.605469 324.996094 113.605469 328.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.566406 310.953125 C 134.566406 314.554688 129.164063 314.554688 129.164063 310.953125 C 129.164063 307.355469 134.566406 307.355469 134.566406 310.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.875 293.3125 C 156.875 296.914063 151.476563 296.914063 151.476563 293.3125 C 151.476563 289.710938 156.875 289.710938 156.875 293.3125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.761719 261.558594 C 196.761719 265.160156 191.363281 265.160156 191.363281 261.558594 C 191.363281 257.957031 196.761719 257.957031 196.761719 261.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.070313 243.917969 C 219.070313 247.519531 213.671875 247.519531 213.671875 243.917969 C 213.671875 240.316406 219.070313 240.316406 219.070313 243.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 243.410156 224.511719 C 243.410156 228.113281 238.011719 228.113281 238.011719 224.511719 C 238.011719 220.914063 243.410156 220.914063 243.410156 224.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.394531 208.636719 C 266.394531 212.234375 260.996094 212.234375 260.996094 208.636719 C 260.996094 205.035156 266.394531 205.035156 266.394531 208.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.269531 198.050781 C 281.269531 201.652344 275.867188 201.652344 275.867188 198.050781 C 275.867188 194.453125 281.269531 194.453125 281.269531 198.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.636719 178.644531 C 307.636719 182.246094 302.234375 182.246094 302.234375 178.644531 C 302.234375 175.046875 307.636719 175.046875 307.636719 178.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 329.269531 162.769531 C 329.269531 166.371094 323.867188 166.371094 323.867188 162.769531 C 323.867188 159.167969 329.269531 159.167969 329.269531 162.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 350.226563 146.890625 C 350.226563 150.492188 344.828125 150.492188 344.828125 146.890625 C 344.828125 143.292969 350.226563 143.292969 350.226563 146.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.101563 136.308594 C 365.101563 139.90625 359.699219 139.90625 359.699219 136.308594 C 359.699219 132.707031 365.101563 132.707031 365.101563 136.308594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 389.4375 120.429688 C 389.4375 124.03125 384.039063 124.03125 384.039063 120.429688 C 384.039063 116.832031 389.4375 116.832031 389.4375 120.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.425781 104.554688 C 412.425781 108.152344 407.023438 108.152344 407.023438 104.554688 C 407.023438 100.953125 412.425781 100.953125 412.425781 104.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 440.816406 86.914063 C 440.816406 90.511719 435.417969 90.511719 435.417969 86.914063 C 435.417969 83.3125 440.816406 83.3125 440.816406 86.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 357.878906 L 78.238281 354.671875 L 82.078125 351.472656 L 85.921875 348.285156 L 89.761719 345.097656 L 93.601563 341.921875 L 97.441406 338.753906 L 101.28125 335.589844 L 105.121094 332.433594 L 112.800781 326.144531 L 116.640625 323.011719 L 120.480469 319.886719 L 124.320313 316.765625 L 128.160156 313.652344 L 132 310.546875 L 135.839844 307.449219 L 139.679688 304.359375 L 143.519531 301.273438 L 147.359375 298.199219 L 151.199219 295.128906 L 155.039063 292.066406 L 158.878906 289.011719 L 162.71875 285.960938 L 166.558594 282.921875 L 170.398438 279.886719 L 174.238281 276.859375 L 178.078125 273.839844 L 181.921875 270.828125 L 185.761719 267.824219 L 189.601563 264.824219 L 193.441406 261.835938 L 197.28125 258.851563 L 201.121094 255.875 L 204.960938 252.90625 L 208.800781 249.941406 L 212.640625 246.988281 L 216.480469 244.039063 L 220.320313 241.097656 L 224.160156 238.164063 L 228 235.238281 L 231.839844 232.316406 L 235.679688 229.40625 L 239.519531 226.5 L 243.359375 223.601563 L 247.199219 220.710938 L 251.039063 217.828125 L 254.878906 214.949219 L 258.71875 212.082031 L 262.558594 209.21875 L 266.398438 206.363281 L 270.238281 203.515625 L 274.078125 200.675781 L 277.921875 197.839844 L 281.761719 195.015625 L 285.601563 192.195313 L 289.441406 189.382813 L 293.28125 186.578125 L 297.121094 183.777344 L 300.960938 180.988281 L 304.800781 178.203125 L 308.640625 175.429688 L 312.480469 172.660156 L 316.320313 169.894531 L 320.160156 167.140625 L 324 164.394531 L 327.839844 161.652344 L 331.679688 158.917969 L 335.519531 156.191406 L 339.359375 153.472656 L 343.199219 150.757813 L 347.039063 148.054688 L 350.878906 145.355469 L 354.71875 142.664063 L 358.558594 139.980469 L 362.398438 137.304688 L 366.238281 134.636719 L 370.078125 131.972656 L 373.921875 129.316406 L 377.761719 126.671875 L 381.601563 124.03125 L 385.441406 121.394531 L 389.28125 118.769531 L 393.121094 116.148438 L 396.960938 113.539063 L 400.800781 110.933594 L 404.640625 108.335938 L 408.480469 105.742188 L 412.320313 103.160156 L 416.160156 100.582031 L 420 98.015625 L 423.839844 95.453125 L 427.679688 92.894531 L 431.519531 90.347656 L 435.359375 87.808594 L 439.199219 85.273438 L 443.039063 82.746094 L 446.878906 80.226563 L 450.71875 77.714844 L 454.558594 75.210938 L 458.398438 72.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.511719 402.6875 L 97.148438 402.6875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.328125 406.503906 L 93.328125 398.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 102.355469 395.628906 L 109.992188 395.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.175781 399.449219 L 106.175781 391.8125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.90625 385.046875 L 125.542969 385.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.722656 388.863281 L 121.722656 381.226563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.484375 374.460938 L 143.121094 374.460938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.300781 378.28125 L 139.300781 370.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.679688 365.640625 L 157.316406 365.640625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.5 369.460938 L 153.5 361.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.878906 356.820313 L 171.515625 356.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 167.695313 360.640625 L 167.695313 353.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 177.398438 349.765625 L 185.035156 349.765625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.21875 353.582031 L 181.21875 345.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.597656 342.707031 L 199.234375 342.707031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.414063 346.527344 L 195.414063 338.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.46875 333.886719 L 214.105469 333.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.289063 337.707031 L 210.289063 330.070313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 228.777344 321.539063 L 236.414063 321.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 232.597656 325.355469 L 232.597656 317.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.382813 310.953125 L 256.019531 310.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.203125 314.773438 L 252.203125 307.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 262.582031 303.898438 L 270.21875 303.898438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.398438 307.714844 L 266.398438 300.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.511719 293.3125 L 289.148438 293.3125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.328125 297.132813 L 285.328125 289.496094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 301.792969 284.492188 L 309.429688 284.492188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 305.609375 288.3125 L 305.609375 280.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 323.425781 272.144531 L 331.0625 272.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 327.246094 275.960938 L 327.246094 268.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.003906 266.851563 L 348.640625 266.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.824219 270.667969 L 344.824219 263.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 358.582031 258.03125 L 366.21875 258.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.398438 261.847656 L 362.398438 254.210938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 375.484375 250.972656 L 383.121094 250.972656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 379.300781 254.792969 L 379.300781 247.15625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.792969 242.152344 L 405.429688 242.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 401.609375 245.972656 L 401.609375 238.335938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 422.808594 231.570313 L 430.445313 231.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 426.625 235.386719 L 426.625 227.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.414063 224.511719 L 450.050781 224.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.230469 228.332031 L 446.230469 220.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 219.21875 L 462.21875 219.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 223.039063 L 458.398438 215.402344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.8125 L 78.238281 413.285156 L 82.078125 410.773438 L 85.921875 408.269531 L 89.761719 405.777344 L 93.601563 403.300781 L 97.441406 400.832031 L 101.28125 398.375 L 105.121094 395.929688 L 108.960938 393.496094 L 112.800781 391.074219 L 116.640625 388.664063 L 120.480469 386.261719 L 124.320313 383.875 L 128.160156 381.496094 L 132 379.132813 L 135.839844 376.777344 L 139.679688 374.4375 L 143.519531 372.105469 L 147.359375 369.785156 L 151.199219 367.476563 L 155.039063 365.179688 L 158.878906 362.894531 L 162.71875 360.621094 L 166.558594 358.355469 L 170.398438 356.105469 L 174.238281 353.867188 L 178.078125 351.636719 L 181.921875 349.421875 L 185.761719 347.214844 L 189.601563 345.019531 L 193.441406 342.835938 L 197.28125 340.667969 L 201.121094 338.507813 L 204.960938 336.359375 L 208.800781 334.21875 L 212.640625 332.09375 L 216.480469 329.980469 L 220.320313 327.878906 L 224.160156 325.785156 L 228 323.707031 L 231.839844 321.636719 L 235.679688 319.578125 L 239.519531 317.535156 L 243.359375 315.5 L 247.199219 313.476563 L 251.039063 311.464844 L 254.878906 309.464844 L 258.71875 307.476563 L 262.558594 305.496094 L 266.398438 303.53125 L 270.238281 301.578125 L 274.078125 299.632813 L 277.921875 297.703125 L 281.761719 295.78125 L 285.601563 293.871094 L 289.441406 291.972656 L 293.28125 290.089844 L 297.121094 288.214844 L 300.960938 286.351563 L 304.800781 284.496094 L 308.640625 282.65625 L 312.480469 280.828125 L 316.320313 279.011719 L 320.160156 277.203125 L 324 275.410156 L 327.839844 273.625 L 331.679688 271.851563 L 335.519531 270.09375 L 339.359375 268.34375 L 343.199219 266.605469 L 347.039063 264.878906 L 350.878906 263.164063 L 354.71875 261.460938 L 358.558594 259.769531 L 362.398438 258.085938 L 366.238281 256.417969 L 370.078125 254.757813 L 373.921875 253.113281 L 377.761719 251.476563 L 381.601563 249.855469 L 385.441406 248.242188 L 389.28125 246.640625 L 393.121094 245.050781 L 396.960938 243.472656 L 400.800781 241.90625 L 404.640625 240.351563 L 408.480469 238.804688 L 412.320313 237.273438 L 416.160156 235.753906 L 420 234.242188 L 423.839844 232.746094 L 427.679688 231.257813 L 431.519531 229.78125 L 435.359375 228.316406 L 439.199219 226.863281 L 443.039063 225.425781 L 446.878906 223.992188 L 450.71875 222.574219 L 454.558594 221.167969 L 458.398438 219.773438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-8" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-9" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-8" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-8" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-9" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-8" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-10" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-11" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-10" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-12" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-13" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-14" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-13" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-15" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-1" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-3" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-5" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-6" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-16" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-1" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-10" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-17" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-13" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-14" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-4" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-18" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-19" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-5" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-6" x="418.732422" y="346.695313"/> + <use xlink:href="#glyph0-10" x="423.402344" y="346.695313"/> + <use xlink:href="#glyph0-17" x="426.736328" y="346.695313"/> + <use xlink:href="#glyph0-10" x="433.744141" y="346.695313"/> + <use xlink:href="#glyph0-15" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-14" x="443.751953" y="346.695313"/> + <use xlink:href="#glyph0-18" x="447.085938" y="346.695313"/> + <use xlink:href="#glyph0-15" x="453.759766" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-9" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-8" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-9" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-8" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-10" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-11" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-12" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-10" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-13" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-14" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-13" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-1" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-13" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-15" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-5" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-6" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-16" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-1" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-10" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-17" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-10" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-13" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-14" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-3" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-20" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-13" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-6" x="412.058594" y="375.496094"/> + <use xlink:href="#glyph0-10" x="416.728516" y="375.496094"/> + <use xlink:href="#glyph0-17" x="420.0625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="427.070313" y="375.496094"/> + <use xlink:href="#glyph0-13" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-14" x="437.078125" y="375.496094"/> + <use xlink:href="#glyph0-18" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-13" x="447.085938" y="375.496094"/> + <use xlink:href="#glyph0-20" x="453.759766" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg new file mode 100644 index 000000000..7138f949a --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.644531 402.128906 C 89.644531 405.730469 84.242188 405.730469 84.242188 402.128906 C 84.242188 398.53125 89.644531 398.53125 89.644531 402.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.539063 388.683594 C 104.539063 392.285156 99.140625 392.285156 99.140625 388.683594 C 99.140625 385.082031 104.539063 385.082031 104.539063 388.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.042969 375.238281 C 119.042969 378.835938 113.644531 378.835938 113.644531 375.238281 C 113.644531 371.636719 119.042969 371.636719 119.042969 375.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.347656 352.007813 C 143.347656 355.609375 137.949219 355.609375 137.949219 352.007813 C 137.949219 348.410156 143.347656 348.410156 143.347656 352.007813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.59375 336.117188 C 160.59375 339.71875 155.195313 339.71875 155.195313 336.117188 C 155.195313 332.519531 160.59375 332.519531 160.59375 336.117188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.492188 321.449219 C 175.492188 325.046875 170.089844 325.046875 170.089844 321.449219 C 170.089844 317.847656 175.492188 317.847656 175.492188 321.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.601563 308 C 189.601563 311.601563 184.203125 311.601563 184.203125 308 C 184.203125 304.402344 189.601563 304.402344 189.601563 308 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.457031 292.109375 C 206.457031 295.710938 201.058594 295.710938 201.058594 292.109375 C 201.058594 288.507813 206.457031 288.507813 206.457031 292.109375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.609375 282.328125 C 218.609375 285.929688 213.210938 285.929688 213.210938 282.328125 C 213.210938 278.730469 218.609375 278.730469 218.609375 282.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 233.507813 268.882813 C 233.507813 272.484375 228.105469 272.484375 228.105469 268.882813 C 228.105469 265.28125 233.507813 265.28125 233.507813 268.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.875 259.101563 C 244.875 262.703125 239.472656 262.703125 239.472656 259.101563 C 239.472656 255.503906 244.875 255.503906 244.875 259.101563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.675781 249.324219 C 254.675781 252.921875 249.273438 252.921875 249.273438 249.324219 C 249.273438 245.722656 254.675781 245.722656 254.675781 249.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.347656 219.984375 C 290.347656 223.585938 284.945313 223.585938 284.945313 219.984375 C 284.945313 216.382813 290.347656 216.382813 290.347656 219.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 312.296875 204.09375 C 312.296875 207.691406 306.898438 207.691406 306.898438 204.09375 C 306.898438 200.492188 312.296875 200.492188 312.296875 204.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.378906 166.195313 C 357.378906 169.796875 351.976563 169.796875 351.976563 166.195313 C 351.976563 162.597656 357.378906 162.597656 357.378906 166.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.203125 130.746094 C 405.203125 134.34375 399.800781 134.34375 399.800781 130.746094 C 399.800781 127.144531 405.203125 127.144531 405.203125 130.746094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.164063 100.671875 C 444.164063 104.273438 438.765625 104.273438 438.765625 100.671875 C 438.765625 97.070313 444.164063 97.070313 444.164063 100.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 87.46875 C 461.101563 91.070313 455.699219 91.070313 455.699219 87.46875 C 455.699219 83.871094 461.101563 83.871094 461.101563 87.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.410156 430.558594 L 457.96875 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.410156 430.558594 L 67.410156 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.203125 430.558594 L 123.203125 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.996094 430.558594 L 178.996094 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.792969 430.558594 L 234.792969 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.585938 430.558594 L 290.585938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.378906 430.558594 L 346.378906 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.175781 430.558594 L 402.175781 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 457.96875 430.558594 L 457.96875 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.730469" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.404297" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.738281" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.412109" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.523438" y="456.480469"/> + <use xlink:href="#glyph0-2" x="118.197266" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.53125" y="456.480469"/> + <use xlink:href="#glyph0-3" x="128.205078" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.316406" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.990234" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.324219" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.998047" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.113281" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.787109" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.121094" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.794922" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.90625" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.580078" y="456.480469"/> + <use xlink:href="#glyph0-5" x="288.914063" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.587891" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.699219" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.373047" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.707031" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.380859" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.496094" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.169922" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.503906" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.177734" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.289063" y="456.480469"/> + <use xlink:href="#glyph0-2" x="452.962891" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.296875" y="456.480469"/> + <use xlink:href="#glyph0-3" x="462.970703" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 380.328125 L 59.039063 69.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 380.328125 L 51.839844 380.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 318.1875 L 51.839844 318.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 256.046875 L 51.839844 256.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 193.90625 L 51.839844 193.90625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 131.761719 L 51.839844 131.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 69.621094 L 51.839844 69.621094 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="388.667969"/> + <use xlink:href="#glyph1-2" x="41.761719" y="381.994141"/> + <use xlink:href="#glyph1-3" x="41.761719" y="378.660156"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="326.527344"/> + <use xlink:href="#glyph1-2" x="41.761719" y="319.853516"/> + <use xlink:href="#glyph1-4" x="41.761719" y="316.519531"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="264.386719"/> + <use xlink:href="#glyph1-2" x="41.761719" y="257.712891"/> + <use xlink:href="#glyph1-5" x="41.761719" y="254.378906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="202.246094"/> + <use xlink:href="#glyph1-2" x="41.761719" y="195.572266"/> + <use xlink:href="#glyph1-1" x="41.761719" y="192.238281"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="140.101563"/> + <use xlink:href="#glyph1-2" x="41.761719" y="133.427734"/> + <use xlink:href="#glyph1-7" x="41.761719" y="130.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="77.960938"/> + <use xlink:href="#glyph1-2" x="41.761719" y="71.287109"/> + <use xlink:href="#glyph1-3" x="41.761719" y="67.953125"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.96875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="199.764844" y="34.675781"/> + <use xlink:href="#glyph2-3" x="203.765625" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.774219" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.570313" y="34.675781"/> + <use xlink:href="#glyph2-6" x="228.578906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="232.579687" y="34.675781"/> + <use xlink:href="#glyph2-3" x="241.375781" y="34.675781"/> + <use xlink:href="#glyph2-8" x="249.384375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.179687" y="34.675781"/> + <use xlink:href="#glyph2-2" x="258.975" y="34.675781"/> + <use xlink:href="#glyph2-9" x="262.975781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="270.984375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="278.992969" y="34.675781"/> + <use xlink:href="#glyph2-10" x="282.99375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="292.598437" y="34.675781"/> + <use xlink:href="#glyph2-11" x="296.599219" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.008594" y="34.675781"/> + <use xlink:href="#glyph2-12" x="309.009375" y="34.675781"/> + <use xlink:href="#glyph2-13" x="317.017969" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.026562" y="34.675781"/> + <use xlink:href="#glyph2-14" x="329.027344" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.644531 402.128906 C 89.644531 405.730469 84.242188 405.730469 84.242188 402.128906 C 84.242188 398.53125 89.644531 398.53125 89.644531 402.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.539063 388.683594 C 104.539063 392.285156 99.140625 392.285156 99.140625 388.683594 C 99.140625 385.082031 104.539063 385.082031 104.539063 388.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.042969 375.238281 C 119.042969 378.835938 113.644531 378.835938 113.644531 375.238281 C 113.644531 371.636719 119.042969 371.636719 119.042969 375.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.347656 352.007813 C 143.347656 355.609375 137.949219 355.609375 137.949219 352.007813 C 137.949219 348.410156 143.347656 348.410156 143.347656 352.007813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.59375 336.117188 C 160.59375 339.71875 155.195313 339.71875 155.195313 336.117188 C 155.195313 332.519531 160.59375 332.519531 160.59375 336.117188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.492188 321.449219 C 175.492188 325.046875 170.089844 325.046875 170.089844 321.449219 C 170.089844 317.847656 175.492188 317.847656 175.492188 321.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.601563 308 C 189.601563 311.601563 184.203125 311.601563 184.203125 308 C 184.203125 304.402344 189.601563 304.402344 189.601563 308 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.457031 292.109375 C 206.457031 295.710938 201.058594 295.710938 201.058594 292.109375 C 201.058594 288.507813 206.457031 288.507813 206.457031 292.109375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.609375 282.328125 C 218.609375 285.929688 213.210938 285.929688 213.210938 282.328125 C 213.210938 278.730469 218.609375 278.730469 218.609375 282.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 233.507813 268.882813 C 233.507813 272.484375 228.105469 272.484375 228.105469 268.882813 C 228.105469 265.28125 233.507813 265.28125 233.507813 268.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.875 259.101563 C 244.875 262.703125 239.472656 262.703125 239.472656 259.101563 C 239.472656 255.503906 244.875 255.503906 244.875 259.101563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.675781 249.324219 C 254.675781 252.921875 249.273438 252.921875 249.273438 249.324219 C 249.273438 245.722656 254.675781 245.722656 254.675781 249.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.347656 219.984375 C 290.347656 223.585938 284.945313 223.585938 284.945313 219.984375 C 284.945313 216.382813 290.347656 216.382813 290.347656 219.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 312.296875 204.09375 C 312.296875 207.691406 306.898438 207.691406 306.898438 204.09375 C 306.898438 200.492188 312.296875 200.492188 312.296875 204.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.378906 166.195313 C 357.378906 169.796875 351.976563 169.796875 351.976563 166.195313 C 351.976563 162.597656 357.378906 162.597656 357.378906 166.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.203125 130.746094 C 405.203125 134.34375 399.800781 134.34375 399.800781 130.746094 C 399.800781 127.144531 405.203125 127.144531 405.203125 130.746094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.164063 100.671875 C 444.164063 104.273438 438.765625 104.273438 438.765625 100.671875 C 438.765625 97.070313 444.164063 97.070313 444.164063 100.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 87.46875 C 461.101563 91.070313 455.699219 91.070313 455.699219 87.46875 C 455.699219 83.871094 461.101563 83.871094 461.101563 87.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.859375 L 78.238281 412.035156 L 82.078125 408.222656 L 85.921875 404.421875 L 89.761719 400.632813 L 93.601563 396.855469 L 97.441406 393.089844 L 101.28125 389.332031 L 105.121094 385.585938 L 108.960938 381.851563 L 112.800781 378.128906 L 116.640625 374.417969 L 120.480469 370.71875 L 124.320313 367.027344 L 128.160156 363.351563 L 132 359.683594 L 135.839844 356.027344 L 139.679688 352.382813 L 143.519531 348.75 L 147.359375 345.125 L 151.199219 341.515625 L 155.039063 337.914063 L 158.878906 334.324219 L 162.71875 330.746094 L 166.558594 327.179688 L 170.398438 323.625 L 174.238281 320.078125 L 178.078125 316.542969 L 181.921875 313.023438 L 185.761719 309.511719 L 189.601563 306.011719 L 193.441406 302.519531 L 197.28125 299.042969 L 201.121094 295.578125 L 204.960938 292.121094 L 208.800781 288.675781 L 212.640625 285.242188 L 216.480469 281.820313 L 220.320313 278.410156 L 224.160156 275.007813 L 228 271.621094 L 231.839844 268.242188 L 235.679688 264.875 L 239.519531 261.519531 L 243.359375 258.175781 L 247.199219 254.839844 L 251.039063 251.519531 L 254.878906 248.207031 L 258.71875 244.90625 L 262.558594 241.617188 L 266.398438 238.339844 L 270.238281 235.074219 L 274.078125 231.816406 L 277.921875 228.574219 L 281.761719 225.339844 L 285.601563 222.117188 L 289.441406 218.90625 L 293.28125 215.707031 L 297.121094 212.519531 L 300.960938 209.339844 L 304.800781 206.171875 L 308.640625 203.019531 L 312.480469 199.875 L 316.320313 196.742188 L 320.160156 193.617188 L 324 190.507813 L 327.839844 187.40625 L 331.679688 184.320313 L 335.519531 181.242188 L 339.359375 178.175781 L 343.199219 175.121094 L 347.039063 172.074219 L 350.878906 169.042969 L 354.71875 166.019531 L 358.558594 163.007813 L 362.398438 160.007813 L 366.238281 157.019531 L 370.078125 154.042969 L 373.921875 151.078125 L 377.761719 148.121094 L 381.601563 145.179688 L 385.441406 142.246094 L 389.28125 139.324219 L 393.121094 136.414063 L 396.960938 133.511719 L 400.800781 130.625 L 404.640625 127.746094 L 408.480469 124.878906 L 412.320313 122.023438 L 416.160156 119.179688 L 420 116.347656 L 423.839844 113.527344 L 427.679688 110.714844 L 431.519531 107.917969 L 435.359375 105.128906 L 439.199219 102.351563 L 443.039063 99.585938 L 446.878906 96.828125 L 450.71875 94.085938 L 454.558594 91.351563 L 458.398438 88.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.207031 374.992188 L 78.84375 374.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.027344 378.808594 L 75.027344 371.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.082031 358.855469 L 96.71875 358.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.902344 362.671875 L 92.902344 355.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.820313 342.230469 L 115.457031 342.230469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 111.640625 346.046875 L 111.640625 338.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.261719 317.78125 L 142.898438 317.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.078125 321.597656 L 139.078125 313.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.683594 300.667969 L 161.320313 300.667969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 157.503906 304.484375 L 157.503906 296.847656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.957031 252.992188 L 216.59375 252.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 212.773438 256.808594 L 212.773438 249.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 227.378906 238.320313 L 235.015625 238.320313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.199219 242.140625 L 231.199219 234.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.820313 215.09375 L 262.457031 215.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 258.636719 218.914063 L 258.636719 211.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 273.242188 200.425781 L 280.878906 200.425781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.0625 204.242188 L 277.0625 196.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 319.890625 166.195313 L 327.527344 166.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 323.710938 170.015625 L 323.710938 162.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 347.722656 144.191406 L 355.359375 144.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 351.542969 148.011719 L 351.542969 140.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.570313 117.296875 L 392.207031 117.296875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.390625 121.117188 L 388.390625 113.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.714844 99.207031 L 420.351563 99.207031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 416.535156 103.023438 L 416.535156 95.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 431.0625 84.535156 L 438.699219 84.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.878906 88.355469 L 434.878906 80.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 449.878906 72.800781 L 457.515625 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.695313 76.617188 L 453.695313 68.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.027344 375.523438 L 78.8125 371.980469 L 82.601563 368.453125 L 86.386719 364.933594 L 90.175781 361.421875 L 93.960938 357.921875 L 97.746094 354.433594 L 101.535156 350.957031 L 105.320313 347.488281 L 109.105469 344.03125 L 112.894531 340.582031 L 116.679688 337.148438 L 120.46875 333.71875 L 124.253906 330.304688 L 128.039063 326.898438 L 131.828125 323.503906 L 135.613281 320.117188 L 139.402344 316.742188 L 143.1875 313.378906 L 146.972656 310.027344 L 150.761719 306.683594 L 154.546875 303.347656 L 158.335938 300.027344 L 162.121094 296.714844 L 165.90625 293.414063 L 169.695313 290.121094 L 173.480469 286.839844 L 177.269531 283.570313 L 181.054688 280.308594 L 184.839844 277.058594 L 188.628906 273.820313 L 192.414063 270.589844 L 196.203125 267.371094 L 199.988281 264.164063 L 203.773438 260.964844 L 207.5625 257.777344 L 211.347656 254.601563 L 215.132813 251.433594 L 218.921875 248.277344 L 222.707031 245.132813 L 226.496094 241.996094 L 230.28125 238.871094 L 234.066406 235.753906 L 237.855469 232.648438 L 241.640625 229.554688 L 245.429688 226.472656 L 249.214844 223.398438 L 253 220.335938 L 256.789063 217.28125 L 260.574219 214.242188 L 264.363281 211.207031 L 268.148438 208.1875 L 271.933594 205.175781 L 275.722656 202.175781 L 279.507813 199.183594 L 283.296875 196.203125 L 287.082031 193.234375 L 290.867188 190.277344 L 294.65625 187.328125 L 298.441406 184.390625 L 302.226563 181.460938 L 306.015625 178.542969 L 309.800781 175.636719 L 313.589844 172.738281 L 317.375 169.851563 L 321.160156 166.976563 L 324.949219 164.109375 L 328.734375 161.253906 L 332.523438 158.410156 L 336.308594 155.574219 L 340.09375 152.75 L 343.882813 149.9375 L 347.667969 147.132813 L 351.457031 144.339844 L 355.242188 141.558594 L 359.027344 138.785156 L 362.816406 136.023438 L 366.601563 133.273438 L 370.390625 130.53125 L 374.175781 127.800781 L 377.960938 125.078125 L 381.75 122.371094 L 385.535156 119.667969 L 389.324219 116.980469 L 393.109375 114.300781 L 396.894531 111.632813 L 400.683594 108.976563 L 404.46875 106.328125 L 408.253906 103.691406 L 412.042969 101.0625 L 415.828125 98.445313 L 419.617188 95.839844 L 423.402344 93.246094 L 427.1875 90.660156 L 430.976563 88.082031 L 434.761719 85.519531 L 438.550781 82.964844 L 442.335938 80.421875 L 446.121094 77.886719 L 449.910156 75.363281 L 453.695313 72.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-4" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-3" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-4" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-16" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-17" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-6" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-18" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-1" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-17" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-5" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-18" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-6" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-4" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-19" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-3" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-16" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-17" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-6" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-6" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-20" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-17" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-6" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-21" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-5" x="439.058594" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg b/docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg new file mode 100644 index 000000000..9b3ea6ead --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg @@ -0,0 +1,464 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-22"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.640625 -2.652344 L 2.609375 -2.855469 C 2.660156 -2.40625 2.828125 -2.054688 3.105469 -1.796875 C 3.382813 -1.535156 3.699219 -1.40625 4.0625 -1.40625 C 4.472656 -1.40625 4.824219 -1.570313 5.109375 -1.90625 C 5.394531 -2.238281 5.535156 -2.746094 5.539063 -3.425781 C 5.535156 -4.054688 5.394531 -4.527344 5.113281 -4.847656 C 4.828125 -5.160156 4.460938 -5.320313 4.007813 -5.324219 C 3.4375 -5.320313 2.925781 -5.070313 2.480469 -4.570313 L 0.878906 -4.800781 L 1.890625 -10.167969 L 7.117188 -10.167969 L 7.117188 -8.316406 L 3.390625 -8.316406 L 3.078125 -6.566406 C 3.515625 -6.785156 3.96875 -6.894531 4.429688 -6.898438 C 5.304688 -6.894531 6.046875 -6.578125 6.660156 -5.941406 C 7.265625 -5.300781 7.570313 -4.472656 7.574219 -3.460938 C 7.570313 -2.609375 7.324219 -1.851563 6.835938 -1.1875 C 6.160156 -0.277344 5.230469 0.175781 4.042969 0.175781 C 3.089844 0.175781 2.3125 -0.078125 1.714844 -0.589844 C 1.113281 -1.097656 0.753906 -1.785156 0.640625 -2.652344 Z M 0.640625 -2.652344 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface6"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 112.714844 373.152344 C 112.714844 376.75 107.316406 376.75 107.316406 373.152344 C 107.316406 369.550781 112.714844 369.550781 112.714844 373.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 146.710938 334.699219 C 146.710938 338.296875 141.3125 338.296875 141.3125 334.699219 C 141.3125 331.097656 146.710938 331.097656 146.710938 334.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 176.175781 303.519531 C 176.175781 307.117188 170.777344 307.117188 170.777344 303.519531 C 170.777344 299.917969 176.175781 299.917969 176.175781 303.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 197.546875 281.695313 C 197.546875 285.292969 192.144531 285.292969 192.144531 281.695313 C 192.144531 278.09375 197.546875 278.09375 197.546875 281.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.039063 253.632813 C 226.039063 257.234375 220.636719 257.234375 220.636719 253.632813 C 220.636719 250.035156 226.039063 250.035156 226.039063 253.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.710938 221.417969 C 259.710938 225.015625 254.308594 225.015625 254.308594 221.417969 C 254.308594 217.816406 259.710938 217.816406 259.710938 221.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.648438 190.238281 C 295.648438 193.839844 290.25 193.839844 290.25 190.238281 C 290.25 186.636719 295.648438 186.636719 295.648438 190.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.585938 136.195313 C 365.585938 139.796875 360.1875 139.796875 360.1875 136.195313 C 360.1875 132.597656 365.585938 132.597656 365.585938 136.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.496094 110.214844 C 402.496094 113.8125 397.097656 113.8125 397.097656 110.214844 C 397.097656 106.613281 402.496094 106.613281 402.496094 110.214844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 432.929688 91.507813 C 432.929688 95.105469 427.53125 95.105469 427.53125 91.507813 C 427.53125 87.90625 432.929688 87.90625 432.929688 91.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.277344 430.558594 L 458.722656 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.277344 430.558594 L 67.277344 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.199219 430.558594 L 123.199219 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 179.117188 430.558594 L 179.117188 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 235.039063 430.558594 L 235.039063 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.960938 430.558594 L 290.960938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.882813 430.558594 L 346.882813 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.804688 430.558594 L 402.804688 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.722656 430.558594 L 458.722656 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.597656" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.271484" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.605469" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.279297" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.519531" y="456.480469"/> + <use xlink:href="#glyph0-2" x="118.193359" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.527344" y="456.480469"/> + <use xlink:href="#glyph0-3" x="128.201172" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.4375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="174.111328" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.445313" y="456.480469"/> + <use xlink:href="#glyph0-1" x="184.119141" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.359375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="230.033203" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.367188" y="456.480469"/> + <use xlink:href="#glyph0-3" x="240.041016" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="279.28125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.955078" y="456.480469"/> + <use xlink:href="#glyph0-5" x="289.289063" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.962891" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="335.203125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.876953" y="456.480469"/> + <use xlink:href="#glyph0-5" x="345.210938" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.884766" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="391.125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.798828" y="456.480469"/> + <use xlink:href="#glyph0-6" x="401.132813" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.806641" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="447.042969" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.716797" y="456.480469"/> + <use xlink:href="#glyph0-6" x="457.050781" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.724609" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 422.144531 L 59.039063 100.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 422.144531 L 51.839844 422.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 357.859375 L 51.839844 357.859375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 293.570313 L 51.839844 293.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 229.285156 L 51.839844 229.285156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 165 L 51.839844 165 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 100.710938 L 51.839844 100.710938 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="430.484375"/> + <use xlink:href="#glyph1-2" x="41.761719" y="423.810547"/> + <use xlink:href="#glyph1-3" x="41.761719" y="420.476563"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="366.199219"/> + <use xlink:href="#glyph1-2" x="41.761719" y="359.525391"/> + <use xlink:href="#glyph1-4" x="41.761719" y="356.191406"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="301.910156"/> + <use xlink:href="#glyph1-2" x="41.761719" y="295.236328"/> + <use xlink:href="#glyph1-5" x="41.761719" y="291.902344"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="237.625"/> + <use xlink:href="#glyph1-2" x="41.761719" y="230.951172"/> + <use xlink:href="#glyph1-6" x="41.761719" y="227.617188"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="173.339844"/> + <use xlink:href="#glyph1-2" x="41.761719" y="166.666016"/> + <use xlink:href="#glyph1-1" x="41.761719" y="163.332031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="109.050781"/> + <use xlink:href="#glyph1-2" x="41.761719" y="102.376953"/> + <use xlink:href="#glyph1-3" x="41.761719" y="99.042969"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.96875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="199.764844" y="34.675781"/> + <use xlink:href="#glyph2-3" x="203.765625" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.774219" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.570313" y="34.675781"/> + <use xlink:href="#glyph2-6" x="228.578906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="232.579687" y="34.675781"/> + <use xlink:href="#glyph2-3" x="241.375781" y="34.675781"/> + <use xlink:href="#glyph2-8" x="249.384375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.179687" y="34.675781"/> + <use xlink:href="#glyph2-2" x="258.975" y="34.675781"/> + <use xlink:href="#glyph2-9" x="262.975781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="270.984375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="278.992969" y="34.675781"/> + <use xlink:href="#glyph2-10" x="282.99375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="292.598437" y="34.675781"/> + <use xlink:href="#glyph2-11" x="296.599219" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.008594" y="34.675781"/> + <use xlink:href="#glyph2-12" x="309.009375" y="34.675781"/> + <use xlink:href="#glyph2-13" x="317.017969" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.026562" y="34.675781"/> + <use xlink:href="#glyph2-14" x="329.027344" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 112.714844 373.152344 C 112.714844 376.75 107.316406 376.75 107.316406 373.152344 C 107.316406 369.550781 112.714844 369.550781 112.714844 373.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 146.710938 334.699219 C 146.710938 338.296875 141.3125 338.296875 141.3125 334.699219 C 141.3125 331.097656 146.710938 331.097656 146.710938 334.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 176.175781 303.519531 C 176.175781 307.117188 170.777344 307.117188 170.777344 303.519531 C 170.777344 299.917969 176.175781 299.917969 176.175781 303.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 197.546875 281.695313 C 197.546875 285.292969 192.144531 285.292969 192.144531 281.695313 C 192.144531 278.09375 197.546875 278.09375 197.546875 281.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.039063 253.632813 C 226.039063 257.234375 220.636719 257.234375 220.636719 253.632813 C 220.636719 250.035156 226.039063 250.035156 226.039063 253.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.710938 221.417969 C 259.710938 225.015625 254.308594 225.015625 254.308594 221.417969 C 254.308594 217.816406 259.710938 217.816406 259.710938 221.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.648438 190.238281 C 295.648438 193.839844 290.25 193.839844 290.25 190.238281 C 290.25 186.636719 295.648438 186.636719 295.648438 190.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.585938 136.195313 C 365.585938 139.796875 360.1875 139.796875 360.1875 136.195313 C 360.1875 132.597656 365.585938 132.597656 365.585938 136.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.496094 110.214844 C 402.496094 113.8125 397.097656 113.8125 397.097656 110.214844 C 397.097656 106.613281 402.496094 106.613281 402.496094 110.214844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 432.929688 91.507813 C 432.929688 95.105469 427.53125 95.105469 427.53125 91.507813 C 427.53125 87.90625 432.929688 87.90625 432.929688 91.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.988281 L 78.238281 411.320313 L 82.078125 406.675781 L 85.921875 402.058594 L 89.761719 397.464844 L 93.601563 392.894531 L 97.441406 388.351563 L 101.28125 383.835938 L 105.121094 379.34375 L 108.960938 374.878906 L 112.800781 370.433594 L 116.640625 366.019531 L 120.480469 361.628906 L 124.320313 357.261719 L 128.160156 352.921875 L 132 348.605469 L 135.839844 344.316406 L 139.679688 340.050781 L 143.519531 335.8125 L 147.359375 331.597656 L 151.199219 327.40625 L 155.039063 323.242188 L 158.878906 319.105469 L 162.71875 314.992188 L 166.558594 310.902344 L 170.398438 306.839844 L 174.238281 302.800781 L 178.078125 298.789063 L 181.921875 294.800781 L 185.761719 290.839844 L 189.601563 286.902344 L 193.441406 282.992188 L 197.28125 279.105469 L 201.121094 275.242188 L 204.960938 271.410156 L 208.800781 267.597656 L 212.640625 263.8125 L 216.480469 260.050781 L 220.320313 256.316406 L 224.160156 252.609375 L 228 248.921875 L 231.839844 245.265625 L 235.679688 241.628906 L 239.519531 238.023438 L 243.359375 234.4375 L 247.199219 230.878906 L 251.039063 227.347656 L 254.878906 223.839844 L 258.71875 220.355469 L 262.558594 216.898438 L 266.398438 213.46875 L 270.238281 210.0625 L 274.078125 206.679688 L 277.921875 203.324219 L 281.761719 199.992188 L 285.601563 196.6875 L 289.441406 193.40625 L 293.28125 190.152344 L 297.121094 186.921875 L 300.960938 183.714844 L 304.800781 180.535156 L 308.640625 177.382813 L 312.480469 174.253906 L 316.320313 171.148438 L 320.160156 168.070313 L 324 165.019531 L 327.839844 161.988281 L 331.679688 158.988281 L 335.519531 156.007813 L 339.359375 153.058594 L 343.199219 150.128906 L 347.039063 147.226563 L 350.878906 144.351563 L 354.71875 141.5 L 358.558594 138.675781 L 362.398438 135.875 L 366.238281 133.097656 L 370.078125 130.347656 L 373.921875 127.621094 L 377.761719 124.921875 L 381.601563 122.246094 L 385.441406 119.597656 L 389.28125 116.972656 L 393.121094 114.375 L 396.960938 111.800781 L 400.800781 109.253906 L 404.640625 106.730469 L 408.480469 104.230469 L 412.320313 101.757813 L 416.160156 99.3125 L 420 96.890625 L 423.839844 94.492188 L 427.679688 92.121094 L 431.519531 89.773438 L 435.359375 87.453125 L 439.199219 85.15625 L 443.039063 82.886719 L 446.878906 80.640625 L 450.71875 78.421875 L 454.558594 76.226563 L 458.398438 74.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.886719 382.074219 L 78.523438 382.074219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.707031 385.890625 L 74.707031 378.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.171875 371.050781 L 88.808594 371.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.992188 374.867188 L 84.992188 367.230469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.890625 352.675781 L 106.527344 352.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 102.707031 356.492188 L 102.707031 348.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 116.605469 332.46875 L 124.242188 332.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 120.421875 336.289063 L 120.421875 328.652344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.320313 312.265625 L 141.957031 312.265625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 138.136719 316.082031 L 138.136719 308.445313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.175781 295.710938 L 160.8125 295.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.996094 299.53125 L 156.996094 291.894531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.890625 279.164063 L 178.527344 279.164063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.710938 282.984375 L 174.710938 275.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.179688 262.617188 L 196.816406 262.617188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 192.996094 266.433594 L 192.996094 258.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 207.464844 246.066406 L 215.101563 246.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 211.285156 249.886719 L 211.285156 242.25 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.324219 227.6875 L 233.960938 227.6875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 230.140625 231.503906 L 230.140625 223.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.039063 212.96875 L 251.675781 212.96875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 247.855469 216.789063 L 247.855469 209.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 262.894531 198.246094 L 270.53125 198.246094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.714844 202.066406 L 266.714844 194.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.753906 185.355469 L 289.390625 185.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.574219 189.171875 L 285.574219 181.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.898438 176.164063 L 298.535156 176.164063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 294.714844 179.984375 L 294.714844 172.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.039063 172.464844 L 307.679688 172.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 303.859375 176.28125 L 303.859375 168.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.042969 152.210938 L 335.679688 152.210938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.859375 156.027344 L 331.859375 148.390625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 337.1875 146.679688 L 344.824219 146.679688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.003906 150.496094 L 341.003906 142.859375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.042969 135.617188 L 363.679688 135.617188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 359.863281 139.433594 L 359.863281 131.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.902344 122.722656 L 382.539063 122.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.71875 126.539063 L 378.71875 118.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.757813 113.488281 L 401.394531 113.488281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.578125 117.304688 L 397.578125 109.667969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.617188 104.253906 L 420.253906 104.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 416.4375 108.070313 L 416.4375 100.433594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 431.476563 95.019531 L 439.113281 95.019531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 435.292969 98.835938 L 435.292969 91.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 450.332031 85.785156 L 457.96875 85.785156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.152344 89.601563 L 454.152344 81.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.707031 382.585938 L 78.5 378.289063 L 82.292969 374.015625 L 86.089844 369.773438 L 89.882813 365.558594 L 93.679688 361.367188 L 97.472656 357.203125 L 101.265625 353.070313 L 105.0625 348.960938 L 108.855469 344.878906 L 112.652344 340.824219 L 116.445313 336.796875 L 120.238281 332.796875 L 124.035156 328.820313 L 127.828125 324.875 L 131.621094 320.953125 L 135.417969 317.0625 L 139.210938 313.195313 L 143.007813 309.355469 L 146.800781 305.542969 L 150.59375 301.757813 L 154.390625 298 L 158.183594 294.269531 L 161.976563 290.566406 L 165.773438 286.886719 L 169.566406 283.238281 L 173.363281 279.613281 L 177.15625 276.019531 L 180.949219 272.449219 L 184.746094 268.90625 L 188.539063 265.390625 L 192.335938 261.902344 L 196.128906 258.441406 L 199.921875 255.003906 L 203.71875 251.597656 L 207.511719 248.21875 L 211.304688 244.863281 L 215.101563 241.535156 L 218.894531 238.238281 L 222.691406 234.964844 L 226.484375 231.71875 L 230.277344 228.5 L 234.074219 225.308594 L 237.867188 222.140625 L 241.664063 219.003906 L 245.457031 215.894531 L 249.25 212.808594 L 253.046875 209.75 L 256.839844 206.722656 L 260.632813 203.71875 L 264.429688 200.742188 L 268.222656 197.792969 L 272.019531 194.871094 L 275.8125 191.972656 L 279.605469 189.105469 L 283.402344 186.265625 L 287.195313 183.449219 L 290.988281 180.664063 L 294.785156 177.902344 L 298.578125 175.167969 L 302.375 172.460938 L 306.167969 169.78125 L 309.960938 167.128906 L 313.757813 164.503906 L 317.550781 161.90625 L 321.347656 159.332031 L 325.140625 156.789063 L 328.933594 154.269531 L 332.730469 151.777344 L 336.523438 149.316406 L 340.316406 146.878906 L 344.113281 144.46875 L 347.90625 142.085938 L 351.703125 139.730469 L 355.496094 137.398438 L 359.289063 135.097656 L 363.085938 132.820313 L 366.878906 130.574219 L 370.675781 128.351563 L 374.46875 126.15625 L 378.261719 123.992188 L 382.058594 121.851563 L 385.851563 119.738281 L 389.644531 117.648438 L 393.441406 115.589844 L 397.234375 113.558594 L 401.03125 111.550781 L 404.824219 109.574219 L 408.617188 107.621094 L 412.414063 105.695313 L 416.207031 103.800781 L 420.003906 101.929688 L 423.796875 100.085938 L 427.589844 98.269531 L 431.386719 96.476563 L 435.179688 94.714844 L 438.972656 92.980469 L 442.769531 91.269531 L 446.5625 89.585938 L 450.359375 87.933594 L 454.152344 86.304688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-6" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-6" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-6" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-16" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-17" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-18" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-5" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-19" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-17" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-20" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-5" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-6" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-21" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-18" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-16" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-17" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-18" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-1" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-1" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-17" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-5" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-20" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-22" x="439.058594" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg b/docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg new file mode 100644 index 000000000..0ae4eea08 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg @@ -0,0 +1,495 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 7.285156 -1.835938 L 7.285156 0 L 0.359375 0 C 0.429688 -0.691406 0.65625 -1.347656 1.035156 -1.96875 C 1.40625 -2.589844 2.144531 -3.414063 3.253906 -4.445313 C 4.140625 -5.269531 4.6875 -5.832031 4.894531 -6.132813 C 5.160156 -6.535156 5.296875 -6.9375 5.300781 -7.339844 C 5.296875 -7.777344 5.179688 -8.117188 4.945313 -8.355469 C 4.707031 -8.589844 4.378906 -8.707031 3.964844 -8.710938 C 3.550781 -8.707031 3.222656 -8.582031 2.980469 -8.335938 C 2.734375 -8.085938 2.59375 -7.675781 2.558594 -7.101563 L 0.589844 -7.296875 C 0.703125 -8.382813 1.070313 -9.164063 1.691406 -9.640625 C 2.308594 -10.109375 3.082031 -10.347656 4.015625 -10.351563 C 5.027344 -10.347656 5.828125 -10.074219 6.410156 -9.527344 C 6.992188 -8.976563 7.28125 -8.292969 7.285156 -7.480469 C 7.28125 -7.015625 7.199219 -6.574219 7.035156 -6.15625 C 6.867188 -5.734375 6.601563 -5.292969 6.242188 -4.835938 C 6 -4.527344 5.570313 -4.089844 4.949219 -3.519531 C 4.324219 -2.945313 3.929688 -2.566406 3.765625 -2.382813 C 3.597656 -2.191406 3.460938 -2.007813 3.359375 -1.835938 Z M 7.285156 -1.835938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface11"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.890625 404.871094 C 84.890625 408.46875 79.492188 408.46875 79.492188 404.871094 C 79.492188 401.269531 84.890625 401.269531 84.890625 404.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.683594 396.914063 C 92.683594 400.515625 87.28125 400.515625 87.28125 396.914063 C 87.28125 393.316406 92.683594 393.316406 92.683594 396.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.03125 384.984375 C 101.03125 388.585938 95.628906 388.585938 95.628906 384.984375 C 95.628906 381.386719 101.03125 381.386719 101.03125 384.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.273438 371.066406 C 113.273438 374.664063 107.875 374.664063 107.875 371.066406 C 107.875 367.464844 113.273438 367.464844 113.273438 371.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.847656 357.148438 C 123.847656 360.746094 118.449219 360.746094 118.449219 357.148438 C 118.449219 353.546875 123.847656 353.546875 123.847656 357.148438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.753906 347.203125 C 132.753906 350.804688 127.351563 350.804688 127.351563 347.203125 C 127.351563 343.605469 132.753906 343.605469 132.753906 347.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.324219 335.273438 C 143.324219 338.875 137.925781 338.875 137.925781 335.273438 C 137.925781 331.675781 143.324219 331.675781 143.324219 335.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 155.011719 321.355469 C 155.011719 324.953125 149.613281 324.953125 149.613281 321.355469 C 149.613281 317.753906 155.011719 317.753906 155.011719 321.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.699219 307.4375 C 166.699219 311.035156 161.300781 311.035156 161.300781 307.4375 C 161.300781 303.835938 166.699219 303.835938 166.699219 307.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.167969 291.527344 C 181.167969 295.128906 175.769531 295.128906 175.769531 291.527344 C 175.769531 287.929688 181.167969 287.929688 181.167969 291.527344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.742188 283.574219 C 191.742188 287.175781 186.34375 287.175781 186.34375 283.574219 C 186.34375 279.972656 191.742188 279.972656 191.742188 283.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.875 269.65625 C 202.875 273.253906 197.472656 273.253906 197.472656 269.65625 C 197.472656 266.054688 202.875 266.054688 202.875 269.65625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 217.34375 257.726563 C 217.34375 261.324219 211.945313 261.324219 211.945313 257.726563 C 211.945313 254.125 217.34375 254.125 217.34375 257.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.246094 247.78125 C 226.246094 251.382813 220.847656 251.382813 220.847656 247.78125 C 220.847656 244.183594 226.246094 244.183594 226.246094 247.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.820313 235.851563 C 236.820313 239.453125 231.421875 239.453125 231.421875 235.851563 C 231.421875 232.253906 236.820313 232.253906 236.820313 235.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 251.292969 223.921875 C 251.292969 227.519531 245.890625 227.519531 245.890625 223.921875 C 245.890625 220.320313 251.292969 220.320313 251.292969 223.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.863281 211.992188 C 261.863281 215.589844 256.464844 215.589844 256.464844 211.992188 C 256.464844 208.390625 261.863281 208.390625 261.863281 211.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.890625 200.058594 C 276.890625 203.660156 271.492188 203.660156 271.492188 200.058594 C 271.492188 196.460938 276.890625 196.460938 276.890625 200.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.691406 188.128906 C 289.691406 191.730469 284.292969 191.730469 284.292969 188.128906 C 284.292969 184.53125 289.691406 184.53125 289.691406 188.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 301.933594 180.175781 C 301.933594 183.777344 296.535156 183.777344 296.535156 180.175781 C 296.535156 176.574219 301.933594 176.574219 301.933594 180.175781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.074219 166.257813 C 318.074219 169.855469 312.675781 169.855469 312.675781 166.257813 C 312.675781 162.65625 318.074219 162.65625 318.074219 166.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.429688 154.324219 C 331.429688 157.925781 326.03125 157.925781 326.03125 154.324219 C 326.03125 150.726563 331.429688 150.726563 331.429688 154.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.785156 146.371094 C 344.785156 149.972656 339.386719 149.972656 339.386719 146.371094 C 339.386719 142.773438 344.785156 142.773438 344.785156 146.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 354.804688 138.417969 C 354.804688 142.019531 349.40625 142.019531 349.40625 138.417969 C 349.40625 134.820313 354.804688 134.820313 354.804688 138.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.046875 130.464844 C 367.046875 134.066406 361.648438 134.066406 361.648438 130.464844 C 361.648438 126.863281 367.046875 126.863281 367.046875 130.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.855469 118.535156 C 384.855469 122.132813 379.457031 122.132813 379.457031 118.535156 C 379.457031 114.933594 384.855469 114.933594 384.855469 118.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.324219 110.582031 C 399.324219 114.179688 393.925781 114.179688 393.925781 110.582031 C 393.925781 106.980469 399.324219 106.980469 399.324219 110.582031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.683594 100.636719 C 412.683594 104.238281 407.28125 104.238281 407.28125 100.636719 C 407.28125 97.039063 412.683594 97.039063 412.683594 100.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.492188 88.707031 C 430.492188 92.308594 425.089844 92.308594 425.089844 88.707031 C 425.089844 85.109375 430.492188 85.109375 430.492188 88.707031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.40625 82.742188 C 444.40625 86.34375 439.003906 86.34375 439.003906 82.742188 C 439.003906 79.140625 444.40625 79.140625 444.40625 82.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.609375 430.558594 L 458.957031 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.609375 430.558594 L 66.609375 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.660156 430.558594 L 122.660156 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.707031 430.558594 L 178.707031 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.757813 430.558594 L 234.757813 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.808594 430.558594 L 290.808594 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.855469 430.558594 L 346.855469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.90625 430.558594 L 402.90625 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.957031 430.558594 L 458.957031 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="54.929688" y="456.480469"/> + <use xlink:href="#glyph0-2" x="61.603516" y="456.480469"/> + <use xlink:href="#glyph0-1" x="64.9375" y="456.480469"/> + <use xlink:href="#glyph0-1" x="71.611328" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="110.980469" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.654297" y="456.480469"/> + <use xlink:href="#glyph0-1" x="120.988281" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.662109" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.027344" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.701172" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.035156" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.708984" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.078125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.751953" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.085938" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.759766" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="279.128906" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.802734" y="456.480469"/> + <use xlink:href="#glyph0-5" x="289.136719" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.810547" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="335.175781" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.849609" y="456.480469"/> + <use xlink:href="#glyph0-5" x="345.183594" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.857422" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="391.226563" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.900391" y="456.480469"/> + <use xlink:href="#glyph0-6" x="401.234375" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.908203" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="447.277344" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.951172" y="456.480469"/> + <use xlink:href="#glyph0-6" x="457.285156" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.958984" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 424.46875 L 59.039063 65.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 424.46875 L 51.839844 424.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 352.601563 L 51.839844 352.601563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 280.734375 L 51.839844 280.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 208.867188 L 51.839844 208.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 137 L 51.839844 137 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 65.128906 L 51.839844 65.128906 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="432.808594"/> + <use xlink:href="#glyph1-2" x="41.761719" y="426.134766"/> + <use xlink:href="#glyph1-3" x="41.761719" y="422.800781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="360.941406"/> + <use xlink:href="#glyph1-2" x="41.761719" y="354.267578"/> + <use xlink:href="#glyph1-4" x="41.761719" y="350.933594"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="289.074219"/> + <use xlink:href="#glyph1-2" x="41.761719" y="282.400391"/> + <use xlink:href="#glyph1-5" x="41.761719" y="279.066406"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="217.207031"/> + <use xlink:href="#glyph1-2" x="41.761719" y="210.533203"/> + <use xlink:href="#glyph1-6" x="41.761719" y="207.199219"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="145.339844"/> + <use xlink:href="#glyph1-2" x="41.761719" y="138.666016"/> + <use xlink:href="#glyph1-1" x="41.761719" y="135.332031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="73.46875"/> + <use xlink:href="#glyph1-2" x="41.761719" y="66.794922"/> + <use xlink:href="#glyph1-3" x="41.761719" y="63.460938"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.96875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="199.764844" y="34.675781"/> + <use xlink:href="#glyph2-3" x="203.765625" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.774219" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.570313" y="34.675781"/> + <use xlink:href="#glyph2-6" x="228.578906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="232.579687" y="34.675781"/> + <use xlink:href="#glyph2-3" x="241.375781" y="34.675781"/> + <use xlink:href="#glyph2-8" x="249.384375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.179687" y="34.675781"/> + <use xlink:href="#glyph2-2" x="258.975" y="34.675781"/> + <use xlink:href="#glyph2-9" x="262.975781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="270.984375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="278.992969" y="34.675781"/> + <use xlink:href="#glyph2-10" x="282.99375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="292.598437" y="34.675781"/> + <use xlink:href="#glyph2-11" x="296.599219" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.008594" y="34.675781"/> + <use xlink:href="#glyph2-12" x="309.009375" y="34.675781"/> + <use xlink:href="#glyph2-13" x="317.017969" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.026562" y="34.675781"/> + <use xlink:href="#glyph2-14" x="329.027344" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.890625 404.871094 C 84.890625 408.46875 79.492188 408.46875 79.492188 404.871094 C 79.492188 401.269531 84.890625 401.269531 84.890625 404.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.683594 396.914063 C 92.683594 400.515625 87.28125 400.515625 87.28125 396.914063 C 87.28125 393.316406 92.683594 393.316406 92.683594 396.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.03125 384.984375 C 101.03125 388.585938 95.628906 388.585938 95.628906 384.984375 C 95.628906 381.386719 101.03125 381.386719 101.03125 384.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.273438 371.066406 C 113.273438 374.664063 107.875 374.664063 107.875 371.066406 C 107.875 367.464844 113.273438 367.464844 113.273438 371.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.847656 357.148438 C 123.847656 360.746094 118.449219 360.746094 118.449219 357.148438 C 118.449219 353.546875 123.847656 353.546875 123.847656 357.148438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.753906 347.203125 C 132.753906 350.804688 127.351563 350.804688 127.351563 347.203125 C 127.351563 343.605469 132.753906 343.605469 132.753906 347.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.324219 335.273438 C 143.324219 338.875 137.925781 338.875 137.925781 335.273438 C 137.925781 331.675781 143.324219 331.675781 143.324219 335.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 155.011719 321.355469 C 155.011719 324.953125 149.613281 324.953125 149.613281 321.355469 C 149.613281 317.753906 155.011719 317.753906 155.011719 321.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.699219 307.4375 C 166.699219 311.035156 161.300781 311.035156 161.300781 307.4375 C 161.300781 303.835938 166.699219 303.835938 166.699219 307.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.167969 291.527344 C 181.167969 295.128906 175.769531 295.128906 175.769531 291.527344 C 175.769531 287.929688 181.167969 287.929688 181.167969 291.527344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.742188 283.574219 C 191.742188 287.175781 186.34375 287.175781 186.34375 283.574219 C 186.34375 279.972656 191.742188 279.972656 191.742188 283.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.875 269.65625 C 202.875 273.253906 197.472656 273.253906 197.472656 269.65625 C 197.472656 266.054688 202.875 266.054688 202.875 269.65625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 217.34375 257.726563 C 217.34375 261.324219 211.945313 261.324219 211.945313 257.726563 C 211.945313 254.125 217.34375 254.125 217.34375 257.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.246094 247.78125 C 226.246094 251.382813 220.847656 251.382813 220.847656 247.78125 C 220.847656 244.183594 226.246094 244.183594 226.246094 247.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.820313 235.851563 C 236.820313 239.453125 231.421875 239.453125 231.421875 235.851563 C 231.421875 232.253906 236.820313 232.253906 236.820313 235.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 251.292969 223.921875 C 251.292969 227.519531 245.890625 227.519531 245.890625 223.921875 C 245.890625 220.320313 251.292969 220.320313 251.292969 223.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.863281 211.992188 C 261.863281 215.589844 256.464844 215.589844 256.464844 211.992188 C 256.464844 208.390625 261.863281 208.390625 261.863281 211.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.890625 200.058594 C 276.890625 203.660156 271.492188 203.660156 271.492188 200.058594 C 271.492188 196.460938 276.890625 196.460938 276.890625 200.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.691406 188.128906 C 289.691406 191.730469 284.292969 191.730469 284.292969 188.128906 C 284.292969 184.53125 289.691406 184.53125 289.691406 188.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 301.933594 180.175781 C 301.933594 183.777344 296.535156 183.777344 296.535156 180.175781 C 296.535156 176.574219 301.933594 176.574219 301.933594 180.175781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.074219 166.257813 C 318.074219 169.855469 312.675781 169.855469 312.675781 166.257813 C 312.675781 162.65625 318.074219 162.65625 318.074219 166.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.429688 154.324219 C 331.429688 157.925781 326.03125 157.925781 326.03125 154.324219 C 326.03125 150.726563 331.429688 150.726563 331.429688 154.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.785156 146.371094 C 344.785156 149.972656 339.386719 149.972656 339.386719 146.371094 C 339.386719 142.773438 344.785156 142.773438 344.785156 146.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 354.804688 138.417969 C 354.804688 142.019531 349.40625 142.019531 349.40625 138.417969 C 349.40625 134.820313 354.804688 134.820313 354.804688 138.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.046875 130.464844 C 367.046875 134.066406 361.648438 134.066406 361.648438 130.464844 C 361.648438 126.863281 367.046875 126.863281 367.046875 130.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.855469 118.535156 C 384.855469 122.132813 379.457031 122.132813 379.457031 118.535156 C 379.457031 114.933594 384.855469 114.933594 384.855469 118.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.324219 110.582031 C 399.324219 114.179688 393.925781 114.179688 393.925781 110.582031 C 393.925781 106.980469 399.324219 106.980469 399.324219 110.582031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.683594 100.636719 C 412.683594 104.238281 407.28125 104.238281 407.28125 100.636719 C 407.28125 97.039063 412.683594 97.039063 412.683594 100.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.492188 88.707031 C 430.492188 92.308594 425.089844 92.308594 425.089844 88.707031 C 425.089844 85.109375 430.492188 85.109375 430.492188 88.707031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.40625 82.742188 C 444.40625 86.34375 439.003906 86.34375 439.003906 82.742188 C 439.003906 79.140625 444.40625 79.140625 444.40625 82.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.53125 L 78.238281 410.625 L 82.078125 405.746094 L 85.921875 400.898438 L 89.761719 396.082031 L 93.601563 391.296875 L 97.441406 386.539063 L 101.28125 381.8125 L 105.121094 377.113281 L 108.960938 372.449219 L 112.800781 367.8125 L 116.640625 363.207031 L 120.480469 358.628906 L 124.320313 354.082031 L 128.160156 349.566406 L 132 345.082031 L 135.839844 340.625 L 139.679688 336.199219 L 143.519531 331.804688 L 147.359375 327.441406 L 151.199219 323.105469 L 155.039063 318.800781 L 158.878906 314.527344 L 162.71875 310.28125 L 166.558594 306.066406 L 170.398438 301.882813 L 174.238281 297.726563 L 178.078125 293.605469 L 181.921875 289.511719 L 185.761719 285.445313 L 189.601563 281.414063 L 193.441406 277.410156 L 197.28125 273.4375 L 201.121094 269.492188 L 204.960938 265.582031 L 208.800781 261.699219 L 212.640625 257.84375 L 216.480469 254.023438 L 220.320313 250.230469 L 224.160156 246.46875 L 228 242.734375 L 231.839844 239.035156 L 235.679688 235.363281 L 239.519531 231.722656 L 243.359375 228.109375 L 247.199219 224.527344 L 251.039063 220.976563 L 254.878906 217.457031 L 258.71875 213.964844 L 262.558594 210.503906 L 266.398438 207.074219 L 270.238281 203.671875 L 274.078125 200.300781 L 277.921875 196.960938 L 281.761719 193.652344 L 285.601563 190.371094 L 289.441406 187.121094 L 293.28125 183.902344 L 297.121094 180.714844 L 300.960938 177.554688 L 304.800781 174.425781 L 308.640625 171.328125 L 312.480469 168.257813 L 316.320313 165.21875 L 320.160156 162.210938 L 324 159.230469 L 327.839844 156.285156 L 331.679688 153.367188 L 335.519531 150.476563 L 339.359375 147.621094 L 343.199219 144.792969 L 347.039063 141.996094 L 350.878906 139.226563 L 354.71875 136.488281 L 358.558594 133.78125 L 362.398438 131.105469 L 366.238281 128.457031 L 370.078125 125.84375 L 373.921875 123.253906 L 377.761719 120.699219 L 381.601563 118.171875 L 385.441406 115.675781 L 389.28125 113.210938 L 393.121094 110.777344 L 396.960938 108.371094 L 400.800781 105.996094 L 404.640625 103.648438 L 408.480469 101.332031 L 412.320313 99.046875 L 416.160156 96.792969 L 420 94.570313 L 423.839844 92.375 L 427.679688 90.210938 L 431.519531 88.074219 L 435.359375 85.972656 L 439.199219 83.898438 L 443.039063 81.855469 L 446.878906 79.839844 L 450.71875 77.855469 L 454.558594 75.902344 L 458.398438 73.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 382.996094 L 78.21875 382.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 386.816406 L 74.398438 379.179688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.945313 363.113281 L 96.582031 363.113281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.765625 366.929688 L 92.765625 359.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.3125 341.238281 L 114.949219 341.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 111.128906 345.058594 L 111.128906 337.421875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 125.675781 319.367188 L 133.3125 319.367188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.496094 323.183594 L 129.496094 315.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 152.945313 291.527344 L 160.582031 291.527344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.765625 295.347656 L 156.765625 287.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.3125 271.644531 L 178.949219 271.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.128906 275.460938 L 175.128906 267.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.121094 251.757813 L 196.757813 251.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 192.9375 255.578125 L 192.9375 247.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.042969 235.851563 L 215.679688 235.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 211.859375 239.671875 L 211.859375 232.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.964844 219.945313 L 234.601563 219.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 230.78125 223.761719 L 230.78125 216.125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 245.328125 204.035156 L 252.964844 204.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.148438 207.855469 L 249.148438 200.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 272.597656 182.164063 L 280.234375 182.164063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.417969 185.984375 L 276.417969 178.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 291.519531 166.257813 L 299.15625 166.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.339844 170.074219 L 295.339844 162.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 310.441406 154.324219 L 318.078125 154.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 314.261719 158.144531 L 314.261719 150.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.808594 142.394531 L 336.445313 142.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 332.625 146.214844 L 332.625 138.578125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 348.285156 132.453125 L 355.921875 132.453125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.105469 136.273438 L 352.105469 128.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.207031 120.523438 L 374.84375 120.523438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 371.027344 124.339844 L 371.027344 116.703125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 395.589844 104.613281 L 403.226563 104.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.410156 108.433594 L 399.410156 100.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.417969 92.683594 L 431.054688 92.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.234375 96.503906 L 427.234375 88.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.894531 84.730469 L 450.53125 84.730469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.714844 88.550781 L 446.714844 80.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 452.910156 82.742188 L 460.546875 82.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 456.730469 86.5625 L 456.730469 78.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 384.386719 L 78.222656 379.664063 L 82.046875 374.980469 L 85.871094 370.324219 L 89.691406 365.707031 L 93.515625 361.125 L 97.339844 356.574219 L 101.164063 352.058594 L 104.988281 347.578125 L 108.808594 343.128906 L 112.632813 338.71875 L 116.457031 334.339844 L 120.28125 329.996094 L 124.101563 325.683594 L 127.925781 321.410156 L 131.75 317.167969 L 135.574219 312.960938 L 139.394531 308.789063 L 143.21875 304.648438 L 147.042969 300.542969 L 150.867188 296.472656 L 154.6875 292.4375 L 158.511719 288.4375 L 162.335938 284.46875 L 166.160156 280.535156 L 169.984375 276.636719 L 173.804688 272.773438 L 177.628906 268.945313 L 181.453125 265.148438 L 185.277344 261.386719 L 189.097656 257.660156 L 192.921875 253.964844 L 196.746094 250.308594 L 200.570313 246.683594 L 204.390625 243.09375 L 208.214844 239.535156 L 212.039063 236.015625 L 215.863281 232.527344 L 219.6875 229.074219 L 223.507813 225.65625 L 227.332031 222.269531 L 231.15625 218.921875 L 234.980469 215.605469 L 238.800781 212.324219 L 242.625 209.074219 L 246.449219 205.863281 L 250.273438 202.683594 L 254.09375 199.539063 L 257.917969 196.429688 L 261.742188 193.351563 L 265.566406 190.308594 L 269.386719 187.300781 L 273.210938 184.328125 L 277.035156 181.390625 L 280.859375 178.484375 L 284.683594 175.613281 L 288.503906 172.777344 L 292.328125 169.976563 L 296.152344 167.210938 L 299.976563 164.476563 L 303.796875 161.777344 L 307.621094 159.113281 L 311.445313 156.480469 L 315.269531 153.886719 L 319.089844 151.324219 L 322.914063 148.796875 L 326.738281 146.300781 L 330.5625 143.84375 L 334.382813 141.417969 L 338.207031 139.027344 L 342.03125 136.671875 L 345.855469 134.347656 L 349.679688 132.0625 L 353.5 129.808594 L 357.324219 127.589844 L 361.148438 125.402344 L 364.972656 123.253906 L 368.792969 121.136719 L 372.617188 119.054688 L 376.441406 117.003906 L 380.265625 114.992188 L 384.085938 113.011719 L 387.910156 111.066406 L 391.734375 109.15625 L 395.558594 107.28125 L 399.382813 105.4375 L 403.203125 103.628906 L 407.027344 101.855469 L 410.851563 100.117188 L 414.675781 98.410156 L 418.496094 96.742188 L 422.320313 95.105469 L 426.144531 93.5 L 429.96875 91.933594 L 433.789063 90.398438 L 437.613281 88.898438 L 441.4375 87.433594 L 445.261719 86.003906 L 449.082031 84.605469 L 452.90625 83.246094 L 456.730469 81.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.292969"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.292969"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.292969"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.292969"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-6" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-3" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-16" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-19" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-1" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-3" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-20" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-16" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-19" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-4" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-1" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-6" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-20" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-5" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-18" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-5" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-21" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-19" x="439.058594" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg new file mode 100644 index 000000000..b115164fc --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg @@ -0,0 +1,451 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.808594 -2.75 L 0.808594 -4.726563 L 4.691406 -4.726563 L 4.691406 -2.75 Z M 0.808594 -2.75 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 7.542969 -5.257813 L 5.597656 -4.90625 C 5.527344 -5.292969 5.378906 -5.585938 5.148438 -5.785156 C 4.914063 -5.980469 4.613281 -6.082031 4.246094 -6.082031 C 3.75 -6.082031 3.355469 -5.910156 3.066406 -5.570313 C 2.769531 -5.230469 2.625 -4.664063 2.628906 -3.867188 C 2.625 -2.980469 2.773438 -2.351563 3.074219 -1.988281 C 3.371094 -1.621094 3.769531 -1.441406 4.273438 -1.441406 C 4.644531 -1.441406 4.953125 -1.546875 5.195313 -1.761719 C 5.433594 -1.972656 5.601563 -2.339844 5.703125 -2.863281 L 7.644531 -2.53125 C 7.4375 -1.640625 7.050781 -0.964844 6.480469 -0.511719 C 5.910156 -0.0585938 5.144531 0.164063 4.183594 0.167969 C 3.089844 0.164063 2.21875 -0.175781 1.570313 -0.863281 C 0.921875 -1.550781 0.597656 -2.507813 0.597656 -3.726563 C 0.597656 -4.957031 0.921875 -5.914063 1.574219 -6.605469 C 2.222656 -7.289063 3.105469 -7.632813 4.21875 -7.636719 C 5.125 -7.632813 5.847656 -7.4375 6.386719 -7.046875 C 6.921875 -6.652344 7.304688 -6.054688 7.542969 -5.257813 Z M 7.542969 -5.257813 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 1.035156 -8.480469 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 -8.480469 Z M 1.035156 0 L 1.035156 -7.46875 L 3.007813 -7.46875 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-19"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-20"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface31"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.375 C 77.101563 406.976563 71.699219 406.976563 71.699219 403.375 C 71.699219 399.777344 77.101563 399.777344 77.101563 403.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.023438 379.882813 C 99.023438 383.484375 93.625 383.484375 93.625 379.882813 C 93.625 376.28125 99.023438 376.28125 99.023438 379.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.304688 364.78125 C 114.304688 368.378906 108.902344 368.378906 108.902344 364.78125 C 108.902344 361.179688 114.304688 361.179688 114.304688 364.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 130.25 348 C 130.25 351.601563 124.847656 351.601563 124.847656 348 C 124.847656 344.398438 130.25 344.398438 130.25 348 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 150.179688 327.863281 C 150.179688 331.464844 144.78125 331.464844 144.78125 327.863281 C 144.78125 324.261719 150.179688 324.261719 150.179688 327.863281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.773438 307.726563 C 170.773438 311.328125 165.375 311.328125 165.375 307.726563 C 165.375 304.125 170.773438 304.125 170.773438 307.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.019531 282.554688 C 196.019531 286.15625 190.621094 286.15625 190.621094 282.554688 C 190.621094 278.957031 196.019531 278.957031 196.019531 282.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.9375 260.742188 C 219.9375 264.339844 214.539063 264.339844 214.539063 260.742188 C 214.539063 257.140625 219.9375 257.140625 219.9375 260.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.203125 243.960938 C 239.203125 247.5625 233.804688 247.5625 233.804688 243.960938 C 233.804688 240.359375 239.203125 240.359375 239.203125 243.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.8125 230.535156 C 255.8125 234.136719 250.414063 234.136719 250.414063 230.535156 C 250.414063 226.9375 255.8125 226.9375 255.8125 230.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.40625 212.078125 C 276.40625 215.679688 271.007813 215.679688 271.007813 212.078125 C 271.007813 208.476563 276.40625 208.476563 276.40625 212.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.660156 191.941406 C 299.660156 195.542969 294.261719 195.542969 294.261719 191.941406 C 294.261719 188.339844 299.660156 188.339844 299.660156 191.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.253906 175.160156 C 320.253906 178.761719 314.855469 178.761719 314.855469 175.160156 C 314.855469 171.5625 320.253906 171.5625 320.253906 175.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 340.851563 158.378906 C 340.851563 161.980469 335.449219 161.980469 335.449219 158.378906 C 335.449219 154.78125 340.851563 154.78125 340.851563 158.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.109375 143.277344 C 362.109375 146.878906 356.710938 146.878906 356.710938 143.277344 C 356.710938 139.679688 362.109375 139.679688 362.109375 143.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 383.371094 126.496094 C 383.371094 130.097656 377.96875 130.097656 377.96875 126.496094 C 377.96875 122.898438 383.371094 122.898438 383.371094 126.496094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.316406 114.75 C 399.316406 118.351563 393.914063 118.351563 393.914063 114.75 C 393.914063 111.152344 399.316406 111.152344 399.316406 114.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 421.238281 99.648438 C 421.238281 103.25 415.839844 103.25 415.839844 99.648438 C 415.839844 96.046875 421.238281 96.046875 421.238281 99.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.164063 84.546875 C 443.164063 88.144531 437.761719 88.144531 437.761719 84.546875 C 437.761719 80.945313 443.164063 80.945313 443.164063 84.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.457031 430.558594 L 434.59375 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.457031 430.558594 L 121.457031 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 199.742188 430.558594 L 199.742188 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.027344 430.558594 L 278.027344 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.308594 430.558594 L 356.308594 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.59375 430.558594 L 434.59375 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="118.121094" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="196.40625" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="274.691406" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="352.972656" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="431.257813" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 395.824219 L 59.039063 64.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 395.824219 L 51.839844 395.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 329.542969 L 51.839844 329.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 263.257813 L 51.839844 263.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 196.976563 L 51.839844 196.976563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 130.691406 L 51.839844 130.691406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 64.410156 L 51.839844 64.410156 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="399.160156"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="332.878906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="266.59375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="200.3125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="134.027344"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="67.746094"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="166.554688" y="34.675781"/> + <use xlink:href="#glyph2-2" x="176.159375" y="34.675781"/> + <use xlink:href="#glyph2-3" x="184.955469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="193.751563" y="34.675781"/> + <use xlink:href="#glyph2-5" x="201.760156" y="34.675781"/> + <use xlink:href="#glyph2-6" x="207.364063" y="34.675781"/> + <use xlink:href="#glyph2-7" x="212.159375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="220.167969" y="34.675781"/> + <use xlink:href="#glyph2-9" x="228.176562" y="34.675781"/> + <use xlink:href="#glyph2-10" x="232.971875" y="34.675781"/> + <use xlink:href="#glyph2-11" x="236.972656" y="34.675781"/> + <use xlink:href="#glyph2-4" x="244.98125" y="34.675781"/> + <use xlink:href="#glyph2-12" x="252.989844" y="34.675781"/> + <use xlink:href="#glyph2-13" x="256.990625" y="34.675781"/> + <use xlink:href="#glyph2-7" x="265.786719" y="34.675781"/> + <use xlink:href="#glyph2-14" x="273.795312" y="34.675781"/> + <use xlink:href="#glyph2-14" x="278.590625" y="34.675781"/> + <use xlink:href="#glyph2-15" x="283.385938" y="34.675781"/> + <use xlink:href="#glyph2-4" x="287.386719" y="34.675781"/> + <use xlink:href="#glyph2-16" x="295.395312" y="34.675781"/> + <use xlink:href="#glyph2-12" x="303.403906" y="34.675781"/> + <use xlink:href="#glyph2-1" x="307.404687" y="34.675781"/> + <use xlink:href="#glyph2-12" x="317.009375" y="34.675781"/> + <use xlink:href="#glyph2-17" x="321.010156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="329.419531" y="34.675781"/> + <use xlink:href="#glyph2-18" x="333.420312" y="34.675781"/> + <use xlink:href="#glyph2-19" x="341.428906" y="34.675781"/> + <use xlink:href="#glyph2-12" x="349.4375" y="34.675781"/> + <use xlink:href="#glyph2-20" x="353.438281" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-7" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-8" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-9" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-8" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-10" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-11" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-12" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-10" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-7" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-9" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-8" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.375 C 77.101563 406.976563 71.699219 406.976563 71.699219 403.375 C 71.699219 399.777344 77.101563 399.777344 77.101563 403.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.023438 379.882813 C 99.023438 383.484375 93.625 383.484375 93.625 379.882813 C 93.625 376.28125 99.023438 376.28125 99.023438 379.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.304688 364.78125 C 114.304688 368.378906 108.902344 368.378906 108.902344 364.78125 C 108.902344 361.179688 114.304688 361.179688 114.304688 364.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 130.25 348 C 130.25 351.601563 124.847656 351.601563 124.847656 348 C 124.847656 344.398438 130.25 344.398438 130.25 348 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 150.179688 327.863281 C 150.179688 331.464844 144.78125 331.464844 144.78125 327.863281 C 144.78125 324.261719 150.179688 324.261719 150.179688 327.863281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.773438 307.726563 C 170.773438 311.328125 165.375 311.328125 165.375 307.726563 C 165.375 304.125 170.773438 304.125 170.773438 307.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.019531 282.554688 C 196.019531 286.15625 190.621094 286.15625 190.621094 282.554688 C 190.621094 278.957031 196.019531 278.957031 196.019531 282.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.9375 260.742188 C 219.9375 264.339844 214.539063 264.339844 214.539063 260.742188 C 214.539063 257.140625 219.9375 257.140625 219.9375 260.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.203125 243.960938 C 239.203125 247.5625 233.804688 247.5625 233.804688 243.960938 C 233.804688 240.359375 239.203125 240.359375 239.203125 243.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.8125 230.535156 C 255.8125 234.136719 250.414063 234.136719 250.414063 230.535156 C 250.414063 226.9375 255.8125 226.9375 255.8125 230.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.40625 212.078125 C 276.40625 215.679688 271.007813 215.679688 271.007813 212.078125 C 271.007813 208.476563 276.40625 208.476563 276.40625 212.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.660156 191.941406 C 299.660156 195.542969 294.261719 195.542969 294.261719 191.941406 C 294.261719 188.339844 299.660156 188.339844 299.660156 191.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.253906 175.160156 C 320.253906 178.761719 314.855469 178.761719 314.855469 175.160156 C 314.855469 171.5625 320.253906 171.5625 320.253906 175.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 340.851563 158.378906 C 340.851563 161.980469 335.449219 161.980469 335.449219 158.378906 C 335.449219 154.78125 340.851563 154.78125 340.851563 158.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.109375 143.277344 C 362.109375 146.878906 356.710938 146.878906 356.710938 143.277344 C 356.710938 139.679688 362.109375 139.679688 362.109375 143.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 383.371094 126.496094 C 383.371094 130.097656 377.96875 130.097656 377.96875 126.496094 C 377.96875 122.898438 383.371094 122.898438 383.371094 126.496094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.316406 114.75 C 399.316406 118.351563 393.914063 118.351563 393.914063 114.75 C 393.914063 111.152344 399.316406 111.152344 399.316406 114.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 421.238281 99.648438 C 421.238281 103.25 415.839844 103.25 415.839844 99.648438 C 415.839844 96.046875 421.238281 96.046875 421.238281 99.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.164063 84.546875 C 443.164063 88.144531 437.761719 88.144531 437.761719 84.546875 C 437.761719 80.945313 443.164063 80.945313 443.164063 84.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 403.304688 L 78.238281 399.199219 L 82.078125 395.109375 L 85.921875 391.035156 L 89.761719 386.976563 L 93.601563 382.933594 L 97.441406 378.910156 L 101.28125 374.898438 L 105.121094 370.90625 L 108.960938 366.929688 L 112.800781 362.96875 L 116.640625 359.023438 L 120.480469 355.09375 L 124.320313 351.179688 L 128.160156 347.285156 L 132 343.40625 L 135.839844 339.542969 L 139.679688 335.695313 L 143.519531 331.863281 L 147.359375 328.046875 L 151.199219 324.25 L 155.039063 320.464844 L 158.878906 316.699219 L 162.71875 312.949219 L 166.558594 309.214844 L 170.398438 305.496094 L 174.238281 301.792969 L 178.078125 298.109375 L 181.921875 294.4375 L 185.761719 290.785156 L 189.601563 287.148438 L 193.441406 283.527344 L 197.28125 279.921875 L 201.121094 276.335938 L 204.960938 272.761719 L 208.800781 269.207031 L 212.640625 265.667969 L 216.480469 262.144531 L 220.320313 258.636719 L 224.160156 255.144531 L 228 251.667969 L 231.839844 248.210938 L 235.679688 244.769531 L 239.519531 241.339844 L 243.359375 237.929688 L 247.199219 234.539063 L 251.039063 231.160156 L 254.878906 227.796875 L 258.71875 224.453125 L 262.558594 221.121094 L 266.398438 217.808594 L 270.238281 214.511719 L 274.078125 211.230469 L 277.921875 207.96875 L 281.761719 204.71875 L 285.601563 201.488281 L 289.441406 198.269531 L 293.28125 195.070313 L 297.121094 191.886719 L 300.960938 188.71875 L 304.800781 185.570313 L 308.640625 182.433594 L 312.480469 179.316406 L 316.320313 176.214844 L 320.160156 173.125 L 324 170.058594 L 327.839844 167.003906 L 331.679688 163.964844 L 335.519531 160.945313 L 339.359375 157.9375 L 343.199219 154.949219 L 347.039063 151.976563 L 350.878906 149.019531 L 354.71875 146.078125 L 358.558594 143.152344 L 362.398438 140.246094 L 366.238281 137.355469 L 370.078125 134.476563 L 373.921875 131.617188 L 377.761719 128.773438 L 381.601563 125.949219 L 385.441406 123.136719 L 389.28125 120.34375 L 393.121094 117.5625 L 396.960938 114.800781 L 400.800781 112.054688 L 404.640625 109.324219 L 408.480469 106.609375 L 412.320313 103.914063 L 416.160156 101.230469 L 420 98.566406 L 423.839844 95.917969 L 427.679688 93.285156 L 431.519531 90.667969 L 435.359375 88.066406 L 439.199219 85.484375 L 443.039063 82.914063 L 446.878906 80.363281 L 450.71875 77.828125 L 454.558594 75.308594 L 458.398438 72.804688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.53125 398.339844 L 92.171875 398.339844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.351563 402.160156 L 88.351563 394.523438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 96.492188 384.917969 L 104.128906 384.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 100.308594 388.734375 L 100.308594 381.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.078125 361.425781 L 126.714844 361.425781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.898438 365.242188 L 122.898438 357.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.367188 346.320313 L 140.003906 346.320313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.183594 350.140625 L 136.183594 342.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 148.976563 332.898438 L 156.613281 332.898438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 152.792969 336.714844 L 152.792969 329.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.925781 319.472656 L 170.5625 319.472656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.746094 323.292969 L 166.746094 315.65625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 182.859375 304.371094 L 190.496094 304.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 186.675781 308.1875 L 186.675781 300.550781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 198.804688 289.269531 L 206.441406 289.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.621094 293.085938 L 202.621094 285.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216.742188 277.523438 L 224.378906 277.523438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 220.558594 281.339844 L 220.558594 273.703125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.679688 264.097656 L 242.316406 264.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.496094 267.914063 L 238.496094 260.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.9375 250.671875 L 263.574219 250.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.757813 254.492188 L 259.757813 246.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 269.890625 240.605469 L 277.527344 240.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 273.707031 244.421875 L 273.707031 236.785156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 284.503906 230.535156 L 292.140625 230.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 288.324219 234.355469 L 288.324219 226.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.421875 213.757813 L 316.058594 213.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 312.242188 217.574219 L 312.242188 209.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 321.710938 205.367188 L 329.347656 205.367188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 325.527344 209.183594 L 325.527344 201.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.640625 193.621094 L 349.277344 193.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.457031 197.4375 L 345.457031 189.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 353.597656 185.230469 L 361.234375 185.230469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.417969 189.046875 L 357.417969 181.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.871094 173.484375 L 378.507813 173.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.691406 177.300781 L 374.691406 169.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 386.816406 163.414063 L 394.453125 163.414063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 390.636719 167.234375 L 390.636719 159.597656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 406.082031 151.667969 L 413.71875 151.667969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 409.902344 155.488281 L 409.902344 147.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.355469 139.921875 L 430.992188 139.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.175781 143.742188 L 427.175781 136.105469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 438.636719 129.855469 L 446.273438 129.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.457031 133.671875 L 442.457031 126.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 118.105469 L 462.21875 118.105469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 121.925781 L 458.398438 114.289063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 408.75 L 78.238281 405.027344 L 82.078125 401.324219 L 85.921875 397.640625 L 89.761719 393.972656 L 93.601563 390.320313 L 97.441406 386.6875 L 101.28125 383.074219 L 105.121094 379.476563 L 108.960938 375.898438 L 112.800781 372.335938 L 116.640625 368.792969 L 120.480469 365.265625 L 124.320313 361.757813 L 128.160156 358.265625 L 132 354.792969 L 135.839844 351.335938 L 139.679688 347.898438 L 143.519531 344.476563 L 147.359375 341.074219 L 151.199219 337.691406 L 155.039063 334.324219 L 158.878906 330.972656 L 162.71875 327.640625 L 166.558594 324.328125 L 170.398438 321.03125 L 174.238281 317.75 L 178.078125 314.488281 L 181.921875 311.246094 L 185.761719 308.019531 L 189.601563 304.8125 L 193.441406 301.621094 L 197.28125 298.449219 L 201.121094 295.292969 L 204.960938 292.15625 L 208.800781 289.035156 L 212.640625 285.933594 L 216.480469 282.847656 L 220.320313 279.78125 L 224.160156 276.734375 L 228 273.699219 L 231.839844 270.6875 L 235.679688 267.691406 L 239.519531 264.710938 L 243.359375 261.75 L 247.199219 258.808594 L 251.039063 255.882813 L 254.878906 252.976563 L 258.71875 250.085938 L 262.558594 247.214844 L 266.398438 244.359375 L 270.238281 241.519531 L 274.078125 238.703125 L 277.921875 235.898438 L 281.761719 233.117188 L 285.601563 230.351563 L 289.441406 227.601563 L 293.28125 224.871094 L 297.121094 222.15625 L 300.960938 219.460938 L 304.800781 216.78125 L 308.640625 214.121094 L 312.480469 211.480469 L 316.320313 208.855469 L 320.160156 206.25 L 324 203.660156 L 327.839844 201.085938 L 331.679688 198.53125 L 335.519531 195.996094 L 339.359375 193.476563 L 343.199219 190.976563 L 347.039063 188.492188 L 350.878906 186.027344 L 354.71875 183.578125 L 358.558594 181.148438 L 362.398438 178.734375 L 366.238281 176.339844 L 370.078125 173.960938 L 373.921875 171.601563 L 377.761719 169.261719 L 381.601563 166.9375 L 385.441406 164.628906 L 389.28125 162.339844 L 393.121094 160.070313 L 396.960938 157.816406 L 400.800781 155.578125 L 404.640625 153.359375 L 408.480469 151.160156 L 412.320313 148.976563 L 416.160156 146.8125 L 420 144.664063 L 423.839844 142.535156 L 427.679688 140.421875 L 431.519531 138.328125 L 435.359375 136.25 L 439.199219 134.191406 L 443.039063 132.148438 L 446.878906 130.125 L 450.71875 128.117188 L 454.558594 126.128906 L 458.398438 124.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-9" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-10" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-9" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-9" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-10" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-9" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-11" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-12" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-11" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-13" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-14" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-15" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-14" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-5" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-14" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-16" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-6" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-7" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-17" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-2" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-11" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-1" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-3" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-1" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-6" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-7" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-11" x="416.728516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="420.0625" y="346.695313"/> + <use xlink:href="#glyph0-11" x="427.070313" y="346.695313"/> + <use xlink:href="#glyph0-14" x="430.404297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-3" x="440.412109" y="346.695313"/> + <use xlink:href="#glyph0-19" x="447.085938" y="346.695313"/> + <use xlink:href="#glyph0-4" x="453.759766" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-10" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-9" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-9" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-11" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-12" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-13" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-11" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-14" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-15" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-14" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-5" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-6" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-7" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-17" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-2" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-11" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-18" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-1" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-1" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-20" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-6" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-7" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-11" x="410.054688" y="375.496094"/> + <use xlink:href="#glyph0-18" x="413.388672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="420.396484" y="375.496094"/> + <use xlink:href="#glyph0-14" x="423.730469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-3" x="433.738281" y="375.496094"/> + <use xlink:href="#glyph0-3" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-20" x="447.085938" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg b/docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg new file mode 100644 index 000000000..95a96f51b --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg @@ -0,0 +1,454 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.808594 -2.75 L 0.808594 -4.726563 L 4.691406 -4.726563 L 4.691406 -2.75 Z M 0.808594 -2.75 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 7.542969 -5.257813 L 5.597656 -4.90625 C 5.527344 -5.292969 5.378906 -5.585938 5.148438 -5.785156 C 4.914063 -5.980469 4.613281 -6.082031 4.246094 -6.082031 C 3.75 -6.082031 3.355469 -5.910156 3.066406 -5.570313 C 2.769531 -5.230469 2.625 -4.664063 2.628906 -3.867188 C 2.625 -2.980469 2.773438 -2.351563 3.074219 -1.988281 C 3.371094 -1.621094 3.769531 -1.441406 4.273438 -1.441406 C 4.644531 -1.441406 4.953125 -1.546875 5.195313 -1.761719 C 5.433594 -1.972656 5.601563 -2.339844 5.703125 -2.863281 L 7.644531 -2.53125 C 7.4375 -1.640625 7.050781 -0.964844 6.480469 -0.511719 C 5.910156 -0.0585938 5.144531 0.164063 4.183594 0.167969 C 3.089844 0.164063 2.21875 -0.175781 1.570313 -0.863281 C 0.921875 -1.550781 0.597656 -2.507813 0.597656 -3.726563 C 0.597656 -4.957031 0.921875 -5.914063 1.574219 -6.605469 C 2.222656 -7.289063 3.105469 -7.632813 4.21875 -7.636719 C 5.125 -7.632813 5.847656 -7.4375 6.386719 -7.046875 C 6.921875 -6.652344 7.304688 -6.054688 7.542969 -5.257813 Z M 7.542969 -5.257813 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 1.035156 -8.480469 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 -8.480469 Z M 1.035156 0 L 1.035156 -7.46875 L 3.007813 -7.46875 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-19"> +<path style="stroke:none;" d="M 0.640625 -2.652344 L 2.609375 -2.855469 C 2.660156 -2.40625 2.828125 -2.054688 3.105469 -1.796875 C 3.382813 -1.535156 3.699219 -1.40625 4.0625 -1.40625 C 4.472656 -1.40625 4.824219 -1.570313 5.109375 -1.90625 C 5.394531 -2.238281 5.535156 -2.746094 5.539063 -3.425781 C 5.535156 -4.054688 5.394531 -4.527344 5.113281 -4.847656 C 4.828125 -5.160156 4.460938 -5.320313 4.007813 -5.324219 C 3.4375 -5.320313 2.925781 -5.070313 2.480469 -4.570313 L 0.878906 -4.800781 L 1.890625 -10.167969 L 7.117188 -10.167969 L 7.117188 -8.316406 L 3.390625 -8.316406 L 3.078125 -6.566406 C 3.515625 -6.785156 3.96875 -6.894531 4.429688 -6.898438 C 5.304688 -6.894531 6.046875 -6.578125 6.660156 -5.941406 C 7.265625 -5.300781 7.570313 -4.472656 7.574219 -3.460938 C 7.570313 -2.609375 7.324219 -1.851563 6.835938 -1.1875 C 6.160156 -0.277344 5.230469 0.175781 4.042969 0.175781 C 3.089844 0.175781 2.3125 -0.078125 1.714844 -0.589844 C 1.113281 -1.097656 0.753906 -1.785156 0.640625 -2.652344 Z M 0.640625 -2.652344 "/> +</symbol> +<symbol overflow="visible" id="glyph2-20"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface36"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.992188 C 77.101563 407.589844 71.699219 407.589844 71.699219 403.992188 C 71.699219 400.390625 77.101563 400.390625 77.101563 403.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.464844 385.695313 C 94.464844 389.292969 89.0625 389.292969 89.0625 385.695313 C 89.0625 382.09375 94.464844 382.09375 94.464844 385.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.152344 371.054688 C 107.152344 374.65625 101.753906 374.65625 101.753906 371.054688 C 101.753906 367.457031 107.152344 367.457031 107.152344 371.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.84375 354.585938 C 121.84375 358.1875 116.445313 358.1875 116.445313 354.585938 C 116.445313 350.988281 121.84375 350.988281 121.84375 354.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.875 332.628906 C 139.875 336.230469 134.476563 336.230469 134.476563 332.628906 C 134.476563 329.03125 139.875 329.03125 139.875 332.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.578125 312.503906 C 160.578125 316.101563 155.179688 316.101563 155.179688 312.503906 C 155.179688 308.902344 160.578125 308.902344 160.578125 312.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.269531 296.035156 C 175.269531 299.632813 169.871094 299.632813 169.871094 296.035156 C 169.871094 292.433594 175.269531 292.433594 175.269531 296.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.304688 277.734375 C 195.304688 281.335938 189.90625 281.335938 189.90625 277.734375 C 189.90625 274.136719 195.304688 274.136719 195.304688 277.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216.007813 257.609375 C 216.007813 261.207031 210.609375 261.207031 210.609375 257.609375 C 210.609375 254.007813 216.007813 254.007813 216.007813 257.609375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 237.378906 237.480469 C 237.378906 241.082031 231.976563 241.082031 231.976563 237.480469 C 231.976563 233.878906 237.378906 233.878906 237.378906 237.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 256.746094 221.011719 C 256.746094 224.613281 251.34375 224.613281 251.34375 221.011719 C 251.34375 217.414063 256.746094 217.414063 256.746094 221.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.785156 200.886719 C 278.785156 204.484375 273.382813 204.484375 273.382813 200.886719 C 273.382813 197.285156 278.785156 197.285156 278.785156 200.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.820313 180.757813 C 300.820313 184.359375 295.421875 184.359375 295.421875 180.757813 C 295.421875 177.15625 300.820313 177.15625 300.820313 180.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.203125 160.628906 C 328.203125 164.230469 322.800781 164.230469 322.800781 160.628906 C 322.800781 157.03125 328.203125 157.03125 328.203125 160.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 343.5625 147.820313 C 343.5625 151.421875 338.164063 151.421875 338.164063 147.820313 C 338.164063 144.222656 343.5625 144.222656 343.5625 147.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.585938 138.671875 C 357.585938 142.273438 352.1875 142.273438 352.1875 138.671875 C 352.1875 135.074219 357.585938 135.074219 357.585938 138.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 372.277344 127.695313 C 372.277344 131.292969 366.878906 131.292969 366.878906 127.695313 C 366.878906 124.09375 372.277344 124.09375 372.277344 127.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.976563 118.542969 C 388.976563 122.144531 383.574219 122.144531 383.574219 118.542969 C 383.574219 114.945313 388.976563 114.945313 388.976563 118.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.003906 105.734375 C 405.003906 109.335938 399.601563 109.335938 399.601563 105.734375 C 399.601563 102.136719 405.003906 102.136719 405.003906 105.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.378906 89.269531 C 430.378906 92.867188 424.980469 92.867188 424.980469 89.269531 C 424.980469 85.667969 430.378906 85.667969 430.378906 89.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.738281 81.949219 C 443.738281 85.550781 438.335938 85.550781 438.335938 81.949219 C 438.335938 78.347656 443.738281 78.347656 443.738281 81.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.925781 430.558594 L 434.914063 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.925781 430.558594 L 121.925781 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 200.175781 430.558594 L 200.175781 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.421875 430.558594 L 278.421875 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.667969 430.558594 L 356.667969 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.914063 430.558594 L 434.914063 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="118.589844" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="196.839844" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="275.085938" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="353.332031" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="431.578125" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 388.742188 L 59.039063 100.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 388.742188 L 51.839844 388.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 316.773438 L 51.839844 316.773438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 244.800781 L 51.839844 244.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 172.828125 L 51.839844 172.828125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 100.855469 L 51.839844 100.855469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="392.078125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="320.109375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="248.136719"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="176.164063"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="104.191406"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="166.554688" y="34.675781"/> + <use xlink:href="#glyph2-2" x="176.159375" y="34.675781"/> + <use xlink:href="#glyph2-3" x="184.955469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="193.751563" y="34.675781"/> + <use xlink:href="#glyph2-5" x="201.760156" y="34.675781"/> + <use xlink:href="#glyph2-6" x="207.364063" y="34.675781"/> + <use xlink:href="#glyph2-7" x="212.159375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="220.167969" y="34.675781"/> + <use xlink:href="#glyph2-9" x="228.176562" y="34.675781"/> + <use xlink:href="#glyph2-10" x="232.971875" y="34.675781"/> + <use xlink:href="#glyph2-11" x="236.972656" y="34.675781"/> + <use xlink:href="#glyph2-4" x="244.98125" y="34.675781"/> + <use xlink:href="#glyph2-12" x="252.989844" y="34.675781"/> + <use xlink:href="#glyph2-13" x="256.990625" y="34.675781"/> + <use xlink:href="#glyph2-7" x="265.786719" y="34.675781"/> + <use xlink:href="#glyph2-14" x="273.795312" y="34.675781"/> + <use xlink:href="#glyph2-14" x="278.590625" y="34.675781"/> + <use xlink:href="#glyph2-15" x="283.385938" y="34.675781"/> + <use xlink:href="#glyph2-4" x="287.386719" y="34.675781"/> + <use xlink:href="#glyph2-16" x="295.395312" y="34.675781"/> + <use xlink:href="#glyph2-12" x="303.403906" y="34.675781"/> + <use xlink:href="#glyph2-1" x="307.404687" y="34.675781"/> + <use xlink:href="#glyph2-12" x="317.009375" y="34.675781"/> + <use xlink:href="#glyph2-17" x="321.010156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="329.419531" y="34.675781"/> + <use xlink:href="#glyph2-18" x="333.420312" y="34.675781"/> + <use xlink:href="#glyph2-19" x="341.428906" y="34.675781"/> + <use xlink:href="#glyph2-12" x="349.4375" y="34.675781"/> + <use xlink:href="#glyph2-20" x="353.438281" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-7" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-7" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-8" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-7" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-9" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-10" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-11" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-9" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-6" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-8" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-7" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.992188 C 77.101563 407.589844 71.699219 407.589844 71.699219 403.992188 C 71.699219 400.390625 77.101563 400.390625 77.101563 403.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.464844 385.695313 C 94.464844 389.292969 89.0625 389.292969 89.0625 385.695313 C 89.0625 382.09375 94.464844 382.09375 94.464844 385.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.152344 371.054688 C 107.152344 374.65625 101.753906 374.65625 101.753906 371.054688 C 101.753906 367.457031 107.152344 367.457031 107.152344 371.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.84375 354.585938 C 121.84375 358.1875 116.445313 358.1875 116.445313 354.585938 C 116.445313 350.988281 121.84375 350.988281 121.84375 354.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.875 332.628906 C 139.875 336.230469 134.476563 336.230469 134.476563 332.628906 C 134.476563 329.03125 139.875 329.03125 139.875 332.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.578125 312.503906 C 160.578125 316.101563 155.179688 316.101563 155.179688 312.503906 C 155.179688 308.902344 160.578125 308.902344 160.578125 312.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.269531 296.035156 C 175.269531 299.632813 169.871094 299.632813 169.871094 296.035156 C 169.871094 292.433594 175.269531 292.433594 175.269531 296.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.304688 277.734375 C 195.304688 281.335938 189.90625 281.335938 189.90625 277.734375 C 189.90625 274.136719 195.304688 274.136719 195.304688 277.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216.007813 257.609375 C 216.007813 261.207031 210.609375 261.207031 210.609375 257.609375 C 210.609375 254.007813 216.007813 254.007813 216.007813 257.609375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 237.378906 237.480469 C 237.378906 241.082031 231.976563 241.082031 231.976563 237.480469 C 231.976563 233.878906 237.378906 233.878906 237.378906 237.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 256.746094 221.011719 C 256.746094 224.613281 251.34375 224.613281 251.34375 221.011719 C 251.34375 217.414063 256.746094 217.414063 256.746094 221.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.785156 200.886719 C 278.785156 204.484375 273.382813 204.484375 273.382813 200.886719 C 273.382813 197.285156 278.785156 197.285156 278.785156 200.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.820313 180.757813 C 300.820313 184.359375 295.421875 184.359375 295.421875 180.757813 C 295.421875 177.15625 300.820313 177.15625 300.820313 180.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.203125 160.628906 C 328.203125 164.230469 322.800781 164.230469 322.800781 160.628906 C 322.800781 157.03125 328.203125 157.03125 328.203125 160.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 343.5625 147.820313 C 343.5625 151.421875 338.164063 151.421875 338.164063 147.820313 C 338.164063 144.222656 343.5625 144.222656 343.5625 147.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.585938 138.671875 C 357.585938 142.273438 352.1875 142.273438 352.1875 138.671875 C 352.1875 135.074219 357.585938 135.074219 357.585938 138.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 372.277344 127.695313 C 372.277344 131.292969 366.878906 131.292969 366.878906 127.695313 C 366.878906 124.09375 372.277344 124.09375 372.277344 127.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.976563 118.542969 C 388.976563 122.144531 383.574219 122.144531 383.574219 118.542969 C 383.574219 114.945313 388.976563 114.945313 388.976563 118.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.003906 105.734375 C 405.003906 109.335938 399.601563 109.335938 399.601563 105.734375 C 399.601563 102.136719 405.003906 102.136719 405.003906 105.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.378906 89.269531 C 430.378906 92.867188 424.980469 92.867188 424.980469 89.269531 C 424.980469 85.667969 430.378906 85.667969 430.378906 89.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.738281 81.949219 C 443.738281 85.550781 438.335938 85.550781 438.335938 81.949219 C 438.335938 78.347656 443.738281 78.347656 443.738281 81.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 404.910156 L 78.238281 400.410156 L 82.078125 395.929688 L 85.921875 391.476563 L 89.761719 387.042969 L 93.601563 382.636719 L 97.441406 378.253906 L 101.28125 373.894531 L 105.121094 369.558594 L 108.960938 365.246094 L 112.800781 360.957031 L 116.640625 356.691406 L 120.480469 352.453125 L 124.320313 348.234375 L 128.160156 344.042969 L 132 339.871094 L 135.839844 335.726563 L 139.679688 331.601563 L 143.519531 327.503906 L 147.359375 323.429688 L 151.199219 319.378906 L 155.039063 315.351563 L 158.878906 311.347656 L 162.71875 307.367188 L 166.558594 303.414063 L 170.398438 299.480469 L 174.238281 295.570313 L 178.078125 291.6875 L 181.921875 287.828125 L 185.761719 283.988281 L 189.601563 280.175781 L 193.441406 276.386719 L 197.28125 272.621094 L 201.121094 268.878906 L 204.960938 265.160156 L 208.800781 261.464844 L 212.640625 257.792969 L 216.480469 254.144531 L 220.320313 250.523438 L 224.160156 246.921875 L 228 243.347656 L 231.839844 239.792969 L 235.679688 236.265625 L 239.519531 232.761719 L 243.359375 229.28125 L 247.199219 225.824219 L 251.039063 222.390625 L 254.878906 218.980469 L 258.71875 215.59375 L 262.558594 212.230469 L 266.398438 208.894531 L 270.238281 205.578125 L 274.078125 202.289063 L 277.921875 199.019531 L 281.761719 195.777344 L 285.601563 192.558594 L 289.441406 189.363281 L 293.28125 186.1875 L 297.121094 183.039063 L 300.960938 179.917969 L 304.800781 176.816406 L 308.640625 173.738281 L 312.480469 170.683594 L 316.320313 167.65625 L 320.160156 164.648438 L 324 161.667969 L 327.839844 158.707031 L 331.679688 155.773438 L 335.519531 152.863281 L 339.359375 149.976563 L 343.199219 147.113281 L 347.039063 144.273438 L 350.878906 141.457031 L 354.71875 138.664063 L 358.558594 135.894531 L 362.398438 133.152344 L 366.238281 130.429688 L 370.078125 127.730469 L 373.921875 125.058594 L 377.761719 122.410156 L 381.601563 119.785156 L 385.441406 117.179688 L 389.28125 114.601563 L 393.121094 112.046875 L 396.960938 109.515625 L 400.800781 107.007813 L 404.640625 104.527344 L 408.480469 102.066406 L 412.320313 99.628906 L 416.160156 97.21875 L 420 94.828125 L 423.839844 92.464844 L 427.679688 90.125 L 431.519531 87.808594 L 435.359375 85.511719 L 439.199219 83.242188 L 443.039063 80.996094 L 446.878906 78.777344 L 450.71875 76.578125 L 454.558594 74.402344 L 458.398438 72.25 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.265625 402.160156 L 88.902344 402.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.085938 405.980469 L 85.085938 398.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.621094 389.351563 L 100.257813 389.351563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 96.4375 393.171875 L 96.4375 385.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.640625 376.542969 L 112.277344 376.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.460938 380.363281 L 108.460938 372.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 115.324219 363.734375 L 122.960938 363.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.144531 367.554688 L 119.144531 359.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 125.34375 352.757813 L 132.980469 352.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.160156 356.574219 L 129.160156 348.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.359375 341.777344 L 142.996094 341.777344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.179688 345.597656 L 139.179688 337.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.386719 328.96875 L 157.023438 328.96875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.203125 332.789063 L 153.203125 325.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 164.746094 314.332031 L 172.382813 314.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 168.5625 318.148438 L 168.5625 310.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 182.777344 299.695313 L 190.414063 299.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 186.59375 303.511719 L 186.59375 295.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 194.128906 288.714844 L 201.765625 288.714844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 197.949219 292.535156 L 197.949219 284.898438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 209.488281 277.734375 L 217.125 277.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 213.308594 281.554688 L 213.308594 273.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 227.519531 263.097656 L 235.15625 263.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.339844 266.917969 L 231.339844 259.28125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 240.878906 253.949219 L 248.515625 253.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.695313 257.765625 L 244.695313 250.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.234375 244.800781 L 261.871094 244.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 258.050781 248.617188 L 258.050781 240.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.261719 233.820313 L 277.898438 233.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 274.078125 237.640625 L 274.078125 230.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 284.953125 224.671875 L 292.589844 224.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 288.773438 228.492188 L 288.773438 220.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 304.320313 213.695313 L 311.957031 213.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.140625 217.511719 L 308.140625 209.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 315.671875 206.375 L 323.3125 206.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 319.492188 210.191406 L 319.492188 202.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.050781 191.734375 L 348.6875 191.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.871094 195.554688 L 344.871094 187.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.410156 182.585938 L 364.046875 182.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 360.230469 186.40625 L 360.230469 178.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.433594 173.4375 L 378.074219 173.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.253906 177.257813 L 374.253906 169.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 392.472656 164.289063 L 400.109375 164.289063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 396.292969 168.109375 L 396.292969 160.472656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 411.171875 155.140625 L 418.808594 155.140625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.992188 158.957031 L 414.992188 151.320313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 429.871094 145.992188 L 437.507813 145.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 433.691406 149.808594 L 433.691406 142.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.5625 140.503906 L 450.199219 140.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.378906 144.320313 L 446.378906 136.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 133.183594 L 462.21875 133.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 137 L 458.398438 129.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 411.421875 L 78.238281 407.253906 L 82.078125 403.117188 L 85.921875 399.007813 L 89.761719 394.929688 L 93.601563 390.878906 L 97.441406 386.855469 L 101.28125 382.863281 L 105.121094 378.898438 L 108.960938 374.960938 L 112.800781 371.054688 L 116.640625 367.179688 L 120.480469 363.328125 L 124.320313 359.511719 L 128.160156 355.71875 L 132 351.957031 L 135.839844 348.222656 L 139.679688 344.519531 L 143.519531 340.84375 L 147.359375 337.199219 L 151.199219 333.582031 L 155.039063 329.992188 L 158.878906 326.433594 L 162.71875 322.902344 L 166.558594 319.398438 L 170.398438 315.925781 L 174.238281 312.480469 L 178.078125 309.066406 L 181.921875 305.679688 L 185.761719 302.324219 L 189.601563 298.996094 L 193.441406 295.695313 L 197.28125 292.425781 L 201.121094 289.183594 L 204.960938 285.96875 L 208.800781 282.785156 L 212.640625 279.632813 L 216.480469 276.503906 L 220.320313 273.40625 L 224.160156 270.339844 L 228 267.300781 L 231.839844 264.289063 L 235.679688 261.308594 L 239.519531 258.355469 L 243.359375 255.429688 L 247.199219 252.535156 L 251.039063 249.671875 L 254.878906 246.832031 L 258.71875 244.027344 L 262.558594 241.246094 L 266.398438 238.496094 L 270.238281 235.773438 L 274.078125 233.082031 L 277.921875 230.417969 L 281.761719 227.785156 L 285.601563 225.175781 L 289.441406 222.601563 L 293.28125 220.050781 L 297.121094 217.535156 L 300.960938 215.042969 L 304.800781 212.582031 L 308.640625 210.148438 L 312.480469 207.746094 L 316.320313 205.371094 L 320.160156 203.027344 L 324 200.710938 L 327.839844 198.421875 L 331.679688 196.164063 L 335.519531 193.933594 L 339.359375 191.730469 L 343.199219 189.558594 L 347.039063 187.414063 L 350.878906 185.300781 L 354.71875 183.214844 L 358.558594 181.160156 L 362.398438 179.132813 L 366.238281 177.132813 L 370.078125 175.164063 L 373.921875 173.222656 L 377.761719 171.308594 L 381.601563 169.425781 L 385.441406 167.570313 L 389.28125 165.746094 L 393.121094 163.949219 L 396.960938 162.183594 L 400.800781 160.445313 L 404.640625 158.734375 L 408.480469 157.054688 L 412.320313 155.402344 L 416.160156 153.777344 L 420 152.183594 L 423.839844 150.617188 L 427.679688 149.082031 L 431.519531 147.574219 L 435.359375 146.097656 L 439.199219 144.644531 L 443.039063 143.226563 L 446.878906 141.832031 L 450.71875 140.472656 L 454.558594 139.136719 L 458.398438 137.832031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-9" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-10" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-9" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-9" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-10" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-9" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-11" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-12" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-11" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-13" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-14" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-15" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-14" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-16" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-17" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-5" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-6" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-7" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-18" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-2" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-11" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-19" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-1" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-3" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-3" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-6" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-7" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-11" x="416.728516" y="346.695313"/> + <use xlink:href="#glyph0-19" x="420.0625" y="346.695313"/> + <use xlink:href="#glyph0-11" x="427.070313" y="346.695313"/> + <use xlink:href="#glyph0-14" x="430.404297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-2" x="440.412109" y="346.695313"/> + <use xlink:href="#glyph0-16" x="447.085938" y="346.695313"/> + <use xlink:href="#glyph0-3" x="453.759766" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-10" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-9" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-9" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-11" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-12" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-13" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-11" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-14" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-15" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-14" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-17" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-3" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-6" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-7" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-18" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-2" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-11" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-19" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-1" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-2" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-5" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-6" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-7" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-11" x="410.054688" y="375.496094"/> + <use xlink:href="#glyph0-19" x="413.388672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="420.396484" y="375.496094"/> + <use xlink:href="#glyph0-14" x="423.730469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-2" x="433.738281" y="375.496094"/> + <use xlink:href="#glyph0-14" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-20" x="447.085938" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/calage.md b/docs/en/calculators/par/calage.md new file mode 100644 index 000000000..905f051dc --- /dev/null +++ b/docs/en/calculators/par/calage.md @@ -0,0 +1,38 @@ +# Calage d'une passe à ralentisseurs + +Ce module permet de dimensionner une passe à ralentisseur. Les types de passes à ralentisseurs supportés sont: + +- [passes à ralentisseurs plans](theorie_plans.md) ; +- [passes à ralentisseurs "Fatou"](theorie_fatou.md) ; +- [passes à ralentisseurs à fonds suractifs](theorie_suractif.md) ; +- [passes à ralentisseurs mixtes](theorie_mixte.md). + +Voir [l'ensemble des formules utilisées pour les passes à ralentisseurs](formules.md). + +## Calage hydraulique de la passe + +L'outil permet de calculer l'une des valeurs suivantes : + +- le débit passant dans la passe (m<sup>3</sup>/s) ; +- la charge en amont de la passe (m) ; +- la largeur de la passe (m) pour les types ralentisseurs plans et Fatou . + +Compte tenu des paramètres obligatoires suivants : + +- le type de passe (Plans, Fatou, fonds suractifs ou mixtes) ; +- [la pente (m/m)](../hsl/pente.md). + +Le paramètre "Espacement entre les ralentisseurs (m)" est facultatif. S'il n'est pas renseigné, Sa valeur standard est alors calculée. S'il est fourni, si sa valeur s'écarte de plus de 10% de la valeur standard, une erreur est générée. + +## Calage altimétrique de la passe + +Les paramètres de calage altimétriques (cote de l'eau amont et cote de l'eau aval) sont facultatifs et permettent de calculer: + +- la longueur longitudinale et au fil de l'eau de la passe +- le nombre de ralentisseurs +- les cotes de radier et de déversement à l'amont et à l'aval de la passe +- les cotes d'arase des murs latéraux à l'amont de la passe. + +## Génération d'un module de simulation de passe à ralentisseurs + +Les résultats d'une passe calée en altimétrie peuvent servir à générer un module de [simulation de passe à ralentisseurs](simulation.md) à l'aide du bouton ad hoc. \ No newline at end of file diff --git a/docs/en/calculators/par/formules.md b/docs/en/calculators/par/formules.md new file mode 100644 index 000000000..fea7ece75 --- /dev/null +++ b/docs/en/calculators/par/formules.md @@ -0,0 +1,57 @@ +# Formules de calcul des passes à ralentisseurs + +Pour le calcul de : + +- la charge amont \(ha\) ; +- la hauteur d'eau dans la passe \(h\) ; +- du débit \(Q\) ; +- de la vitesse débitante \(V\) ; +- la cote de radier amont \(Z_{r1}\) ; +- la cote d'arase minimale des murs latéraux \(Z_m\) + +Se référer aux formules propres à chaque type de passe à ralentisseurs: + +- [passes à ralentisseurs plans](theorie_plans.md) ; +- [passes à ralentisseurs "Fatou"](theorie_fatou.md) ; +- [passes à ralentisseurs à fonds suractifs](theorie_suractif.md) ; +- [passes à ralentisseurs mixtes](theorie_mixte.md). + +## Cote de l'eau à l'amont de la passe \(Z_1\) + +$$Z_{1} = Z_{d1} + h_a$$ + +Avec \(Z_{d1}\) la cote de déversement du premier ralentisseur amont, \(h_a\) la charge amont. + +## Longueur de la passe + +La longueur de la passe le long d'une ligne d'eau parallèle à la pente de la passe \(L_w\) est égale à + +$$L_w = (Z_1 - Z_2)\dfrac{\sqrt{1 + S^2}}{S}$$ + +avec \(Z_1\) et \(Z_2\) les cotes de l'eau à l'amont et l'aval de la passe, \(S\) la pente. + +La longueur de la passe le long de la pente \(L_S\) doit être un multiple de la longueur entre les ralentisseurs \(P\) arrondi à l'entier supérieur : + +$$L_S = \lceil (L_w - \epsilon) / P \rceil \times P $$ + +Avec \(\epsilon\) = 1 mm pour laisser une marge avant le rajout d'un ralentisseur supplémentaire. + +La projection horizontale de la longueur de la passe \(L_h\) est alors égale à : + +$$L_h = \dfrac{L_S}{\sqrt{1 + S^2}} $$ + +## Nombre de ralentisseurs \(N_b\) + +Pour les types plans et Fatou : + +$$N_b = L_S / P + 1$$ + +Pour les types à fonds suractifs et mixtes : + +$$N_b = L_S / P$$ + +## Cotes de radier à l'aval \(Z_{r2}\) et de déversement à l'aval \(Z_{d2}\) + +$$Z_{r2} = Z_{r1} - \dfrac{L_S \times S}{\sqrt{1 + S^2}}$$ + +$$Z_{d2} = Z_{r2} + Z_{d1} - Z_{r1}$$ diff --git a/docs/en/calculators/par/simulation.md b/docs/en/calculators/par/simulation.md new file mode 100644 index 000000000..d6005c233 --- /dev/null +++ b/docs/en/calculators/par/simulation.md @@ -0,0 +1,26 @@ +# Simulation d'une passe à ralentisseurs + +Ce module permet de calculer différentes conditions hydrauliques sur une passe à ralentisseur dont la géométrie est connue. Cette géométrie provient de mesures topographiques ou du [résultat d'un calage de passe à ralentisseurs](calage.md). + +Les types de passes à ralentisseurs supportés sont: + +- [passes à ralentisseurs plans](theorie_plans.md) ; +- [passes à ralentisseurs "Fatou"](theorie_fatou.md) ; +- [passes à ralentisseurs à fonds suractifs](theorie_suractif.md) ; +- [passes à ralentisseurs mixtes](theorie_mixte.md). + +Voir [l'ensemble des formules utilisées pour les passes à ralentisseurs](formules.md). + +L'outil permet de calculer l'une des valeurs suivantes : + +- le débit passant dans la passe (m<sup>3</sup>/s) ; +- la cote de l'eau en amont de la passe (m) ; +- la cote de déversement en amont de la passe (m). + +Compte tenu des paramètres obligatoires suivants : + +- le type de passe (Plans, Fatou, fonds suractifs ou mixtes) ; +- [la pente (m/m)](../hsl/pente.md) ; +- la largeur de la passe (m) ; +- la cote de déversement ou la cote de radier à l'amont (m) ; +- la cote de déversement ou la cote de radier à l'aval (m) . diff --git a/docs/en/calculators/par/theorie_fatou.md b/docs/en/calculators/par/theorie_fatou.md new file mode 100644 index 000000000..d8948bfc4 --- /dev/null +++ b/docs/en/calculators/par/theorie_fatou.md @@ -0,0 +1,91 @@ +# Passe à ralentisseurs "Fatou" + +## Caractéristiques géométriques + + + +*Extrait de Larinier, 2002[^1]* + +## Lois hydrauliques issues des abaques + +Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(Q^*\) : + +$$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ + + à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + + + +*Abaques d'une passe à ralentisseurs Fatou pour une pente de 10% (Extrait de Larinier, 2002[^1])* + + + +*Abaques d'une passe à ralentisseurs Fatou pour une pente de 15% (Extrait de Larinier, 2002[^1])* + + + +*Abaques d'une passe à ralentisseurs Fatou pour une pente de 20% (Extrait de Larinier, 2002[^1])* + +Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). + +On a donc : + +$$ ha/L = a_2(S) Q^{*2} + a_1(S) Q^* + a_0(S) $$ + +$$a_2(S) = - 783.592S^2 + 269.991S - 25.2637$$ + +$$a_1(S) = 302.623S^2 - 106.203S + 13.2957$$ + +$$a_0(S) = 15.8096S^2 - 5.19282S + 0.465827$$ + +Et : + +$$ h/L = b_2(S) Q^{*2} + b_1(S) Q^* + b_0 $$ + +$$b_2(S) = - 73.4829S^2 + 54.6733S - 14.0622$$ + +$$b_1(S) = 42.4113S^2 - 24.4941S + 8.84146$$ + +$$b_0(S) = - 3.56494S^2 + 0.450262S + 0.0407576$$ + +## Calcul de \(ha\), \(h\) et \(Q\) + +On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : + +$$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ + +$$ h = L \left( b_2 (Q^*)^2 + b_1 Q^* + b_0 \right)$$ + +En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: + +$$ Q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/L)}}{2 a_2}$$ + +Et on a enfin : + +$$ Q = Q^* \sqrt{g} L^{2,5} $$ + +Les limites de calcul de \(Q^*\), \(ha/L\) et \(h/L\) sont fixées à partir des extrémités des courbes des abaques. + +## Vitesse débitante + +La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : + +$$ V = \dfrac{Q}{A_w} $$ + +pour les passes à ralentisseurs Fatou en utilisation les notations du schéma ci-dessus, on aura : + +$$ A_w = B \times h $$ + +Ce qui donne avec les proportions standards : + +$$ A_w = 0.6hL $$ + +## Cote de radier amont \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} + \frac{0.3 S - 0.2}{\sqrt{1 + S^2}} $$ + +## Cote d'arase minimale des murs latéraux \(Z_m\) + +$$ Z_m = Z_{r1} + \frac{4 L}{3 \sqrt{1 + S^2}} $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). diff --git a/docs/en/calculators/par/theorie_fatou_schema.png b/docs/en/calculators/par/theorie_fatou_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..36e32a67245d6a04746cfdd59638c267741f19e0 GIT binary patch literal 138046 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]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 NXUsFXGR@ZSe*yC50x$po literal 0 HcmV?d00001 diff --git a/docs/en/calculators/par/theorie_mixte.md b/docs/en/calculators/par/theorie_mixte.md new file mode 100644 index 000000000..b9c77c510 --- /dev/null +++ b/docs/en/calculators/par/theorie_mixte.md @@ -0,0 +1,78 @@ +# Passe à ralentisseurs mixte ou à chevrons + + + +*Extrait de Larinier, 2002[^1]* + +## Lois hydrauliques issues des abaques + +Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(q^*\) : + +$$ q^* = \dfrac{Q/L}{\sqrt{2g}a^{1,5}} $$ + + à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + + + +*Abaques d'une passe à ralentisseurs mixte pour une pente de 10% (Extrait de Larinier, 2002[^1])* + + + +*Abaques d'une passe à ralentisseurs mixte pour une pente de 15% (Extrait de Larinier, 2002[^1])* + +Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). + +On a donc : + +$$ ha/a = a_2(S) q^{*2} + a_1(S) q^* + a_0(S) $$ + +$$a_2(S) = 0.188324S - 0.0427461$$ + +$$a_1(S) = - 2.47998S + 1.25363$$ + +$$a_0(S) = 5.02138S + 0.709434$$ + +Et : + +$$ h/a = b_2(S) q^{*2} + b_1(S) q^* + b_0 $$ + +$$b_2(S) = - 0.0733832S - 0.00839864$$ + +$$b_1(S) = 0.176261S + 0.661656$$ + +$$b_0(S) = - 4.97686S + 1.30546$$ + +## Calcul de \(ha\), \(h\) et \(Q\) + +On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(q^*\) : + +$$ ha = a \left( a_2 (q^*)^2 + a_1 q^* + a_0 \right)$$ + +$$ h = a \left( b_2 (q^*)^2 + b_1 q^* + b_0 \right)$$ + +En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: + +$$ q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/a)}}{2 a_2}$$ + +Et on a enfin : + +$$ Q = L q^* \sqrt{g} a^{1,5} $$ + +Les limites de calcul de \(q^*\), \(ha/a\) et \(h/a\) sont fixées à partir des extrémités des courbes des abaques. + +## Vitesse débitante + +La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : + +$$ V = \dfrac{Q}{A_w} $$ + +pour les passes à ralentisseurs mixte en utilisation les notations du schéma ci-dessus, on aura : + +$$ A_w = h \times L$$ + +## Cote de radier amont \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} + \frac{3 a S - a}{\sqrt{1 + S^2}} $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). + diff --git a/docs/en/calculators/par/theorie_mixte_schema.png b/docs/en/calculators/par/theorie_mixte_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..400c43e8eaebe4fb753b91bc51276975adb24b8d GIT binary patch literal 99570 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�Yj)YMrZ)npaNTCf7dQ5G4h-=7 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%0DxeJ_kuwpEVm)~yEdHAFcnO4N-gc7h4x?Q>5B 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�))>LW)AJbsgPss=nAvHW~O}s^U(6>=QW&j_-qV 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 GaNz&RPMUQ9 literal 0 HcmV?d00001 diff --git a/docs/en/calculators/par/theorie_plans.md b/docs/en/calculators/par/theorie_plans.md new file mode 100644 index 000000000..c6905b2ef --- /dev/null +++ b/docs/en/calculators/par/theorie_plans.md @@ -0,0 +1,91 @@ +# Passe à ralentisseurs plans (Denil) + +## Caractéristiques géométriques + + + +*Extrait de Larinier, 2002[^1]* + +## Lois hydrauliques issues des abaques + +Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(Q^*\) : + +$$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ + + à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + + + +*Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 10% (Extrait de Larinier, 2002[^1])* + + + +*Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 15% (Extrait de Larinier, 2002[^1])* + + + +*Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 20% (Extrait de Larinier, 2002[^1])* + +Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). + +On a donc : + +$$ ha/L = a_2(S) Q^{*2} + a_1(S) Q^* + a_0(S) $$ + +$$a_2(S) = 315.110S^2 - 115.164S + 6.85371$$ + +$$a_1(S) = - 184.043S^2 + 59.7073S - 0.530737$$ + +$$a_0(S) = 15.2115S^2 - 5.22606S + 0.633654$$ + +Et : + +$$ h/L = b_2(S) Q^{*2} + b_1(S) Q^* + b_0 $$ + +$$b_2(S) = 347.368S^2 - 130.698S + 8.14521$$ + +$$b_1(S) = - 139.382S^2 + 47.2186S + 0.0547598$$ + +$$b_0(S) = 16.7218S^2 - 6.09624S + 0.834851$$ + +## Calcul de \(ha\), \(h\) et \(Q\) + +On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : + +$$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ + +$$ h = L \left( b_2 (Q^*)^2 + b_1 Q^* + b_0 \right)$$ + +En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: + +$$ Q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/L)}}{2 a_2}$$ + +Et on a enfin : + +$$ Q = Q^* \sqrt{g} L^{2,5} $$ + +Les limites de calcul de \(Q^*\), \(ha/L\) et \(h/L\) sont fixées à partir des extrémités des courbes des abaques. + +## Vitesse débitante + +La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : + +$$ V = \dfrac{Q}{A_w} $$ + +pour les passes à ralentisseurs plans en utilisation les notations du schéma ci-dessus, on aura : + +$$ A_w = B \times \left( h - \dfrac{C+D}{2} \sin(45°) \right)$$ + +Ce qui donne avec les proportions standards : + +$$ A_w = L \left(0.583 h - 0.146L \right) $$ + +## Cote de radier amont \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} - D \sin(45° + \arctan(S)) $$ + +## Cote d'arase minimale des murs latéraux \(Z_m\) + +$$ Z_m = Z_{r1} + - H_{min} \sin(45° + \arctan(S)) $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). diff --git a/docs/en/calculators/par/theorie_plans_schema.png b/docs/en/calculators/par/theorie_plans_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..a25abf5b7a92c69db30199bdfb3daa19cd32be1f GIT binary patch literal 95961 zcmX_o2V9Qr`~Iy-D(%wJ*3v>Ww3LQaDzulRG&D7|jFz;7L`ljBrA1R|XlO{0qO`O` zn~KK&c)Z`=|Nea5_w|P7x$o;buk$?4<2cSc#>haMj)s$lAP72L9Zh3`Aaln*<D1Fw z6H|@x6Zp>-PaSg~f}pP>{j;g@>|;lQ;3IT3)lCD^ex&=Wv79Jwm~lJB&UW*`;iE}5 zTDKj@Hyy3lJ9;$h=t)U42k8RMf<_Ow9tU<7(`Y`eE35?<C`}n;_;ga*3tOsGr&}rm z*>$hWXSL5fZ?W%JXqH-Nd$rUzV<(qN+wtF3OheVX<-cDBzv)oaJ4m{^f}D9CWRfnI z1CoWz_wb7q+uOHq-#u`is*x$?TW!SF<>$jABMbBMgQZnf>m!W`Lf^C(es#TY{gjrL z_B+JTLfggJS@BX~VPQkVq5bWxt(E>Wyxi4+3uEhRe?9v?d{|svS$Jusb@b>_1B1L> zGiqJU*Kgj`dtgk2-@eTmX&+FTot>SNvxT^qm-khQohkMWD=Vu;X1?{;xXp(?O?7s3 z6tn;O^^2dMe>tI`pn#H+(sOm<eHOm&cX?uUwd$q0>MzD2e->qBWWrBw-5M)pU0(d@ zn6u(0a`H>ho=FmF$Bx~&c#({EraRZt!$XR=S5<YlW%T8m#?a7^;GwHcO-(ZL@*aOH z7&FJS_Uze{q2=u@S9SY#QqtV)(82u%hK7xe?u~EXV!6oUe=ROj(Q*)t))nX8G%^hL zMMOqwlGbnK>&om<UDUQ6gQex=ijtDF8^=sdO})HixtZCWEHB_*<KyYMcXM3b!Ynda z%_(E2_9@SL$V`-_b8FEaTlV7k&W_*~(y9nC?Wf<i?fK)!;UnYkGE@WSDdJ<VT%p;z z^@}%arcu+7=U~srkF2)lA3uGX`BEayEg>N>H97fWRD92#50|@-a^8M^cc<aq!BGXQ zAtNK>^7HAhuPm*t`=w6E%E@_qdWN5*j~W>tkJ@;0;<?S4GiQE!v*Pd2llD-w?dO-0 zsqfzh_wU(L{O}=Fe1=NMl^u*ON-tl&eEasT=Z~SG3nz3qw{KTaR2-JhDiLyVzI|{? zl#WiJGHjzNJDVcj#MoF)PHwO?J6lLjjw#GsS9gmtYlougv12caiwAEtj;t&%zn0B- zxAgmWgRKZt%xr`?C+BVHi=_KLcSw>gB_(A<)u!BcONLS8<;&QM*IuEaDtTGC;mwXu z9zPyb4GIbxR;A~Xr_Hc>^7LufxEcbFg>>&0&1-*`cJJOjRGObJBO*c-fB5j>9S4Fw z*qkURE-o%Cym(Se>rIlNc5OjrWpH)q+UF@O*q+=-d^6|u`}gmE_+Yx)xG?^1MEH5V z7Z>AZiu&9}M!`d(Vq!IOO-X`S%sJcl71#FcF~wiGJ+nDg|Io9xGQTOd>EhIkj2%06 zY->b_F0UkZ+dDYaIu#9-VtL2L#yp=rd#3ExBeUPBsQ1Z}C+=l5baZsA_x!Gpab1|O zzMGuv^Y^#=>WN2&8Ik0v`ZsUh?7sOlzt?TJdt|WY(wuGJ`SS}a!TaU+?Q8VA9vM0I zh4k&uV;UM7V%epKRhiC*v#_zfJSrHoys|Q+F)=aW?C40*sF9gi%5j)<wvQ@Wn3>&5 zNjZJ`^e6Qh!-bzo85tY%qlfp4{3g`@oPJSIbn(iSD{*mj-2RiDZxC1;H}Eu}zsc)l zf=*n+7y3+y@*L6AQ}i5E)6meMex=%W;<Bbd4J8x7z{M3?(eb9fesJXT=g)|bmsU-+ zwPft7J9q932?^Ohjp$Sv^DYxedc5ldDZTJ(JfG?;jwvjZs|?*MC@3f_Oc@_@Kuw6L z8PD?Bn^j9otJ3S*-Me33UmzdinB3%W>Quy1=l#r;v7Ed-e9)qS@+6Yh!T`d_`c)9? zMp6&?H)I(1G|gc<j<K1Ugbke^n;hKTb8~WfrSO$2PPY{Oo~ZHl<lB?GzfhMdjt`yb ztMK2pBpbHAy3+N?aA^OoU2y@Cg>e<v<mKf{zr<HnRV61gb1zN2C*MI%O!NxTwVjqb z-Ok-3cR)pD9q9v4>Uer_O=D_e-(h=ueic_qY3ZH63I5;j#Kpv1Vhh4`glaP)%B-Xc zsGIJoUz)9UPty4y#q$#hk|1^(r0w?{eBGM58+k(I+z&G!pM^`*+v0bq-u+QoW#Y`U zCN8#X*PB-@b+xs#TZ9X!b=1|>ku)vy1XyV1a#L;wg+G4sWVkJrlx{C9FE6hwjB{~v zdh`}*>FSC}O1e#UJ}`M?(DwGNMY*q7|Ji#BnSR&Hky|T+e$m7q*3(0r&)NzL3lDXV zyVtk2(yCI|jxRJ`-F|7~ZB5MuDR-0sma?+4tV3~3F`8apUL87}ZEd?06+hS2o&5Fv z<Bc0PzPxl7RBD_-x@hJX6VsJstMl^ol=(`2xkvSBoaHrwpr)q2phh&>*w~aZCZwjO z=H~9=?xGfU!Q%%82D-^x9z1yIhvs@55@Ny0#_sNJUPWJ>6DQac>Z%>+qYm!q-AQSo z{Ux=sQn~Up+kY$I<|esbh+BX7@ZoV=Eo*BY+f%|=^7u^z4wUZ^WxBSo`QJY+w{6?T zo50S^?dIU1aZYj9@aX8T#mTNL?F0eK%%aopLKi3Azt7T+p`_W9en@-raYcnvmBq3< zs$uw-l8a6U)MoqN`p<mDGrssEF3GkvWADEoHb1y|lP!e)a^yp6XE(RSg@u-u7S}Up z3SYc9;6KehXMbH_&)&W6166AX#F2)$JIaA_vQ?*AZVnFG+1lC;7s%dj&(88SH8)Rv zOl`|pa(1A-tu11N^mx=dM~}Ww-f4(Tgy6%&c}gN7^77$4*8A`wIq}e?wYq;Uc4<oF zXBN@tPz_y0<oHkb>7KLMNWguMwxlF*$PV`uoU9M<^qhTi?CGHdUX($Xa-qADRat)h zwY9Y<AtR(Lk*457l~Ce!!dR4L*fL>oV+rdwX|2o2DV`s^GLJ=)vMTjlnIGkdeAC!y zcvm?P)yXhJ<v{3aK#50xlK}%k@T!I?yLL<Z`Ta^vWN=XM(9?U1PsM${bpLWFRx~Df ztD^V~y_ny*^}Kxb>*jube(rAKE@#fXb(9<Gsi~>y>EVd~_~C=Hvhv`qx}lCEh>0p1 z0YSl~AH5?#epLER9bdM3nwg23H8eA`gNdoov6;!)S54~dKoyFvV}aTG_wO|sbMx|k z&&?$zC&$Le%ge~{$sXi<GUaS-ZGG$*D+zLlC@5@?=i=g;<K;8Xx!#jj#)@p3X|%Z! zCs#^JYWaCXJWp(xf9|tqo+Q-c64TVAb3v`+xvgp;^UA*A;o;zr5G3+<X$o}?YXj*r zN=kp9SFg+M+c!{hc1O&l`uC|Rtm(FdSLPNLOe4q_D=RBFr2#1coQ3x;$9I4H2t@EN zF@GB!eer%cO=sroE7e|dO<<5b_D7j6?1e=|$o4ko=7FPcSsg4D^^RItl)LrH6_{~z zaXo$TAfhogHg;`wm6MYb`9eKNEW=Fl_pe`Z(a}BSeoyb*;hH<KY11a81ttIK)w#wU z&3Xw`kLvsu`z!pP+g3-Obl8^o=g*(RDN;2B`Xa6)dD*~nH*T<U3m#At(Z3ZwqbbKh zOUmsJM*@C*zwz{`tF?8yj*z#H&)=2tjBPxMn&*r~-@JJ<Jw3gB`*wCIE50kD#Owb4 zwU19vq)6MoEGgM3aUgB?>2^&`O{5@6^TNv<s@~t4aGDzuc2wKdkQI7o@ptko{+S!m zuH<-uz}~f{CPOQjXF<y$qh@HhEuNa5J33+X+c)QN9!^g0oafJN%e+s8hK7237e+=l zyuBfT>}Z8Was4Fq{g!s^C4roroT=_y!E*n-d-vv=6$tFwwM#}Ok!IW`p7(&_`QJZ6 z*Z%M*ox8fc7&cTJ5gs0Xft;FG!Ta)ER-?=G?~kVHA2%|Z&5#B-skJ7H4pEIhNn026 z`$sRME(ux+IutBF$_NF*vaAX&d-du-q&)x>z?-tyu;!sd4ejYl{r&yT?TiHR(yh19 zXS^K{PSWz_RgQst`#J=F=<-mMRxDf64K9P@$GZzpwNQ|$2LzPfzc0WWwlLO)=UE9} z$1Sn2u;{cVM(RXOJg%&)ymYA!xt}1o=^GmxsW(^)sH1apb8p|a&=yid;ciY-^!twU zezGyXzcO(5)%@Nc_~S@;R8&-X))hBt6#oDq;Hi7QeA%HInr8Ml2!VzeaCLRvq39dE zNG^o`_wn&zj(vk86|g2q@a^08>Ep*=!0%yezfw|Dx5sSnyw{`{xs_dtv@-%pIzrdz z%PHvEmR_UMvG20bJjb@7?(8fYX%7I1kf`6Uyl;4L(8$6<@3_Z)BuiGB2plVObMyKD zC#Q!<(Rc6KoI5A4o3pkfE-o%v<OmtjSL$_%gFW_5N8SV=yW?oLI`T02m7_SWvR_}g zp5S=?{Q23Gt$@>XL}F6Xd#Ra2$d`-5Z(_-*>3`hY_b7A40C6vo+*~iy`u_bKAhzS9 z1(*5x`EuMqmi9KGI{epfs{4q#`p``EhKR(zG(dG=5a7MVMPG+iJa2n@yPN!9Je1>T zq=~JqYRDg7;&tbP!^jgc)wlP$vJrNpZ*L5IZN1$6o((lK@?o6v`QKOThDyuIj@(sF zts7eW{!v0j<?fGcBYd;uu3cqT)4!%Z#mr%ovBpv<Ts%BSuqH2FyvWPTlVo$n+Sdo1 zJegHgv^(|<z!PC!#(1G?ski8~pu=`f&bQ+WuPQ6Ejm6B%{J4wbUvADt<KaGpjE+-} zO-|UMdb8Ql-rincB>COAptqJ{$73M@0kW8P=}PQ`=jyVTaiNA;krN$Zx3Rva6O4Zm z;rQFh*H~+9!`9x6%<1dvBcfyGTtDSCH#eu=xnpup{eE1B;%5O;t5JOW^Jj~#TelJf z%h9I4OEbG9C1q$WU%G9NDP!ESc{4%iXQ=SRAPF)PGCpIi4<CvcGYJ;@&)5**6&2@E zf@SH`C!%P#ciNOpzBDp5tsj~D@Zkdu4Ndf1ZLJ0~Gcz4s+}UHArv@&^%YDwViisSP zxEDv&l77(L{bzj)vu$NSLEwTDLRC5M@#DwHdG;Jy?GEcmK)9Kug@wN(398X^NG}JY z=vV&!o$0SgStO4~^|UGV%*@UGc|+pFw{PEOmr>Wr$jNzlcz|_vr8{<si(h=xO1+I& z=(Z>;8(VorMfLfmY4l|Q)%Kj?ozrh=NgbYPR(5v%`}baeg{F^r*4XK}_Y;KKtDwD1 zQ43GROdcj)V+GW`c>lgb0`Gyu&!0+5_g_%6b9UB=`26YWRa(@VBpu(GuLm4f-^8*b z{;^-%c$N7i_HoB($~iVM5U(E`PDxz8x_vi6oXE4{mndl;;<}a43F!KYkl@`!h=_>n zJNs2gDc#U#x=%qQd2(VRI(lug>(O@F$mC>`z(57_vZ2cJO9r~Sx`u|*J9kELNJ~pc zEma}XNm<6kBpH{HsHUc=K+@uLKNks$A3pA(c|6yGk^oRpHomvjT|mSjZTTnbguwqc z-H67_Mb4@9782Ox_wVy7tH|Mr=`3%*l$_l}w7r=}?}zRR=>_RT2&V`*9jAyb)(?on zp|ZI610Z6XQ-+d%{G$8&KYxN$RaJ@CXRFr^T}4(wpF&Q^d-Ul9U6V`wfs{vtBTMo% zzpk|gE)y5(egA)V5hZaVPlkgQ;K<B{1l!OE5U-`HS1&G8C2nrj<741kc+}dePfkvL zK`rstEgd|T$dTLiL!R+GN|E)A2|KnC`-7Kd#LW3AsHn&Y9O@|jvF<$Ut%O-+fGjJ0 zVqck$wkXTFscyQ|s)2I9t$C?{1(DDC6qzlwElC~nmD%OFlSw++xw+{nDN)p0X=nz6 zPaznD#v%pTVt@Ypxe^>|WyQ^eCKXMa>3#*k8iZcFeGi~k((=t+mIU$j>sQnw#|Ke9 zbHiE+3S}Tm1m+NpZ=0KYdwY-CUm~R)P#8FV(bAegf7h-Vr$|}bREHu>q|@eR?IN`h zhTh)u_)AUg!>Xdv(kFliKYR$D8>W=CF)=xbjQZfgN5(MIT;lk3JgdN5j>#i3Vyx|s zw%+m0D8*DnKw#j<?rx?LF)=YB9L=o&^<kYMfLw0+N2lN2ZPGg!8d`Pn;>FxtcQoRN zDbo`twsG#+Ofc~B8eBbb{5T??f#?V>-=I4<<s93g_{V)=sE*pi#6(#50m33V{ctRL zt-yc)f?z1QjkMZh`v=Xi<LDvBH&<ARaP%L7ckFTAC<sZ5;%J&Xj)0Cw@%K$k4%W|u z4iOg@|Ni~^bDLKJ2q;i6*j01^j#_)9r411Q>gpE+UTD=t($&dGii&PtaXj6g)@&z3 zf;|z2m0kDzinY)bMWVGq2S2>9f|G{yD{=hUy;=_wpF>wUY8>VKe}0bWyD`?9N>22k zP@2au#$35_(PM9uvY3E?hJiu*+qX}iJ-hm>&lA84d$xDap1Ud`dRI@JIN^_~arm$V zdO-XxKD)KG6`*b7&y=)-l_Z;zl9Gg|C|~=GV}Z}O0bA@S*pK=W_b&~Oa>(5}%~!zt zxHDR4S06(M`%ZO(me{;?>tRE~DD45K_B3--Q_XW{HWHA)3d|(^{rw&Cb8;pVRM+ha z%sf0iOdp4|H8&qMGLn&%RZr_HDlEh|pI@9ndv1t20t5<T%1(v@YpXeY_wHSNk=>%A z(YQ@cE-qlQ&5veug1=S<hRcnGp_g=$OXcO|Me9-@;OHoHsfI(|jpM%X0QrBFWk9?o zMLO!npL`}`Nwx$YB~&|C*E`p)X`DN^(b9Hj-zEa3_Sxgdd<`cZ90=kP6`jVkLpG{B z&0p(*SLahWq@|>$KR#toZl<N96GoaVFjID@k2W+I2>Ua+lX(66=NDaFTKlExej<EF z*eav>`Q^2xftp8YTXly}BmqAKlA_J#MUtC4ySlLafL079uV*O!9mn@)nao^<r>709 znr`Sl;F5PEh+C<tNw>J#r#?OR^Yy)c<3^I0Hxd(0kEQ^l*5X&Bp_Wl9YHC3*ur3M; z3gXd^^+l8d=Y^F0V<);0{j#(R3kzAb1~yh!X#iRg5tP^TeSP;NG*0yv?PR@%>iw~^ z)A;Doz{LqhSsPPR3NEJXhYzpa;41qsM};z?@S2)&|MmA6sLDlsdj34Y^xIAm5phvb z4h{}SCnx+_1N<30F?gXQT^k^1RQ_w%m{^|;;&DUQex0DLV^~nlF)ep^Lql69>afm^ zqVH7n_xI0O{i#crF7>*dL(R^S$qk$T7K57v^1*?NnZst*{uYa#WD@((-CcW%tA6$Q z!-ow3h;{ktO8)p>Fd(E79;yODr9=IE%gtR)F=XG3jvYJY;*x_xdi~UKQ`1{_?i86x zW|Kv*)H}?5YfhG>t?(Qoll|J!F$k6fwU&*4$fd<=q=A1236c!mRzTjY4EfvL(P1RY zA~2?h#{EFhA_{x(`YNdyT~A3_`uQcL%}J2N-2R^KztiSqlHJy~JU6nPwgC;&mHLq2 zU=G@ba=$5@jQ^FKP!TjopsJL4-@Sj&NOY|BX3!v?C@3kB6N$PD$mOW^Naxr)z@t<d zdoseV`I@i}x5bS-vx1A)pD`F48*2(ArKekidX){`SPwaMY833QQO(;yV7=~7pFkLD zUyTL?t2p;lkJ0A=n&+yJzhuO1OXb@6ec!yUNDeNBbY|=7tb&4;WNYc|O}+l?@xe!v z69AIf1not)8Bv~)zrS~B-KEIUM-zgY51@WOD+}OopIgsshXM++O{}f1(XDq6+^MnS zRys%9d-^jn4KcVh5ca5cy$fJOhStZ+OZ{3|@QPfdJvt{-9i}TJ;=ud0tc1j2QI_u$ z6MR2Sbkqfs^i$<1iSX4e`{d=3<`|6{R<}*R1zO}<ar~5P`Ki(~Me^dMOR}^+o}Oy@ z*U^v4&`xzd+Q!PcE%ET9Nklrjm@`%49p@DFv|ZMjaTMJ@?;&1)eRY0r5FHwcTx4Mp zm8(l`cC6l5S4wVPTwK%~2DG!6OT{BUs<qhjL%`+aNfR?OovYf~+CF7gmX?;{#p-!a zo_zoGd`IjXjn)lu2?=UC&U&XJW+tYlw{(v(GdJCq*kw_?c~Xt6;+(YQOWK%Z4LdtN zWSYHaSPH4C&M$dTT^br0IT-Q6Yk$ZIBO^5$-=d<TxT{yOmR0Y_tZ~>~EZ*JMiXCh| zTwtbuwXR(VI6z23RsfAGE!D}1j?AVLtB6H6`SY`bH6K5I1XN#GUjx>(rjNSRcjG_U zt-x&nZXN*%(xt4TVs~mQIv(Z`rWnVLd+PckJ~&e-PC|S3un;l<vv&1EYu`UU4OSWG z>Pn`$%Y`<QmZ}as#LAxof%BR|Oe9!r@4kw40aI%wwNFv;HixvRD01@9!U~J*2>~9` zZR;YBpo%_yD#29kH9{q+A|xzv89?yJkt3|EH<o4wm`9{-DveN3jvWhGU6#e|1uxIm zynTD6&B?anTpZ~m!~JFJ`y(asF$95rOLI8iwdDD8X`mRinDZ;aCr_UI79*sroYpvk zv&Y{RVytuc@Fn_)CiNsVqhS5cI6E6<5_-SiExuZ*?L=d^i9m@L7M7sVm=ZnW8XXgZ zTRwE?P;~5(GiRPam&wTyW3_U-5*v$>ckI})4CO$LtDio6Kx%lJlXJ9&#y}*wEkku9 z+5Z7ny^hHl4F$+aBGMiWOp~(9ySoQCBI$UQZ_&gif|$kfx9zy261;2&Sdy1#K>3e| zSzM$b_#DiS9ori)J4pYeVbvJf@19xv?Y&zSTn_x}vVg{N@+}P+p^>aOylrV|Yiq*| zAvR*>kc1I>qzpb`0@4=C5ou3~SrYo$9kl37TbKAo*Emr}=<rR+O@#g(dAghs@V<MA z!SRf+L&Mp#;IZ*pIH#JL8LDA<=s)k@*ND(+8Xk7Q4|x-!mNmeRTUc5y1XQ8~CL?S6 z`R(-;?R)9Ybu<bE|K7nNpvuSh48e8It}+##VrFHfByNGjW7=p(A2`+`3Uvj??@pVF z-**;Sn`6gD2M1p}6`>8&1~3H_Y_O97_>8R|x;u?VvPp+Vn4f<WK}xf$si4v%#Kln_ zQ)mSKAP~{F(?ryQwqY0nsrB*wd&GWO*oF!M2Ca9Q&o~(&Wm6elf4c29<>A8Sw{cB? zl>~u8s6E`VIs=kI0Fl?zWA?8diC$LK)Y1||P2%Dbw61U=t+1TM_dWAp&Q@=FYjy*z z(uFq;bR057OvZupXeUW&n}$cnqrdzCIN_&HV@rF4goH!^(IzKH$Hq`xl0afgh>7tF z0P!N96NC;Wjrr?Nc|d)~yA)jIXvIu2)s{Zwn9x#X;Sms>%sUMT0*aVg#HCN8qoXL) z{pEfKX?!8Spd_a1i?F_QdrXD))|OytIhu8dpEbdgv9qx;isnY*+}s>T<X-j`z<pAU zWIk$RllS0(F#4TmaVa-$KxIO}n5b)l;|8@f5d6o+)^=umoO=A2so7=PZQH1ct6cl& zSN_!0TJPJpPds?nZaFy_+TDBhXqGQ3hplth$)FPzFV+RA9`RHUwB61Ikl=3a?h4%W za{Z4kkV+|d&V}E<r|<3C;M}rp+i4jNfHNH}U1XVrMtt0TjR(302JuiGfnJSWuHCqC z3WNy5=Et7l6t_ja_H$=%^~dpmP`01DeQu<Yv}q5I+_BTz;vN1Cr<4e{4PBv(Nv?f$ zehE<Kj^V&eUm5z(53kPqi~Ej88eAs3z$Yda!x8rDJL{tHp@)ARWj*@#cRW)FHZftg zI)AU})3uBLO1?B-5@<t+V7`-`lsO;5fEE9VitVHZ0y#QAzvIJ)>y0B2WEe&q3VOP` zUzTZciy={}FQ{g-i}(gm6Wj-au0QLGzI^%eY=E+a#8Vs;hgImi-rnAzprb43#895a z@EcE`RtL<H#aNn~gTOV;{C!N44K!_X-4LG$YknqIN{d$g4HnQBi~7HR{}wqOr~9Du z^=mcaH5#NGyAv8m{zJxIAWOk%0rD{vJj=~}k)IE}oBD7Q+41XXDj}RPb@It~<lPa| z6g^IWhRiu${Z%1KL^uElG+vF&j?bStUHX2b3V@+~dO}*$N;k8-{Bv6y9WmRuBaC4L zc@3Oy+xRiZIS>ZujoxJ>)Mp;#*J|CkmYh6vldkZI?|3_pXr8HPV3y>6XqaKO^a~(D zv={yhQch<;C|U182aOaTAJI#D$-07F(o8MlNFmVJNsh6}$(X(yc0+k!1zF$PgHS<5 z15iiL8Z(E)&&9!^CVi^VTTsrSelu+y{SK9@!E0zm>g;5|OzQplWc)ip_YJtLBuBfU z>G{!?oWyS^Hn?pRxTMgFU}nI&p`Aaf^;hHnyZ|(76gmGjh@y_5GxbG^%98&gbr8gb z3l|)P4+$wMauOuMI@<~XdaZE;c*<m`)Dl`QFfwSEM4k#jD~J@hj5F!HK|@7FQD?kE zBd$G+>`o9u25ewW?F-BRRdj+I<9WbXp#o<+MxZm4+PU*Il(*{u&Jno5Uq5=8a})$3 z(8u8>&bYYnH@}&613!rmRhdj+w|84duIddZ;hC6M%dz=}VR0C%DV&8D$m#iKX zF)=Y@7hX3tZO++qp*;fRhYqEx7<7Y)@86%~<RBL@jG*7Ku&{uJXzD5I=H_;}ilKUS zek;?)Xo~GUX$sc6Isihq^dCaAng3OR8Vuke=eU`*+~>5D6LQ2IluY5XpsP{pYilpk z#8D&iqUd=bJtSGLK#!kzpr7u+4C$6c@9jZ`uFFTN6QtJqS{1UD@H}_!;l*fZuZoI_ zAjiL%S?cP>q^I*-swst$frK{X<>NW`(h#1*^;;Y&Gc)a%XNO3w7vMZOu{v9~t%-9P zD3Bnaz6k@<poGshlh0)bgJ1{$ts|u28_RO948{hH?{!|%quL3);Bgq8=RfsjJIsG; zCJ6C>&=3gap9KcW;+>qFkde1U)K>V<FpZ#j?nI?He*9tWCMMCF-1O8g{#I62eMP4Y zK|3-rX`l|-Nw@B@e97lJGTXOH>)9a88UTSoixU@0Kh`%i0A7F|6W5<=dHWXIrX|2A zmy4FJ`(G23SzBx)lHA+V)70Dy<wC#<tRQcK|F7@I00=hI(A3Jffx>P2Gy}F7fPiyP zG>!0CTS}azrln_D*f%5qfNt<3A`P$(VDng5S##_t0X2%jmXA?uAx-SraP^?kp$S`G z*%?&_o@?8DiSLgdS^B81lC!qrAJ`r|eE45)#m6d)jw(Nd#-Uu31`5*p`ue@p6<eSK zsM3-4rukhL$5Uiz|3dbN@ruzb^qn*&UV~_BLfQox_g`0)w09Ocv9R|Cj<<1U#^5J1 z&@J=ed>qbypP?==TScyL;E4Rd5c6hOH(A7<<0Z7GLhrgH^q>1YD2U}he*_HMIu6*a zF3*_;+y)Cb<XuKjPp|W!8CiTkcRVCw2S#lg+$lT<rwhzTBwqs-7pTij^0=lZ1*x0a z?<Ejv52`|K7!>{~8IGqXo{OM*qah|Iz|2K+^IaGVgZ$^wXnE#ob8G8|PoGYJGidLx z3SBF=Eb-9DlsRx9{aIhtp{h+hZye>e-*Zs~(x`ye5wVqhx~Je02V|2`&_OA?EUDhP zCb!_`a0fxZzWXgrTT7+HHlkIC1V;;X510co7}IVF0@<sqv=pdZIe59FzMdjs1HC%> ze@Q8+(ADJvsPr-0H4epb`a$ni-B?|S+7Zgv5JkszZtc%6tZJ<}Uzt@^aPPoCHT(@| zfCU@S&F<8{)q&y!*9Vpn^%9z{XvRB;A9M+gbt8~0=jP{)jf|S!z8&`5FXXg&67339 zgMfhL@J-~=UT~)Xj8(7yc?wJc{H~5u`4{mP7FdI>4epnJ(s^QXa@`2X%Uxn(n+T{Q zPhNRw<GdjNRe&@rD!J%$vwrI0GjGYB#5&**Y^SB-t;Txb2atQV^YG*XA38)5;n%NU z&pa4~2*DlSr|+*0BQ*$(Bf=sgoE#j9xA+M)Nwzz;Z?mzplawj676FxcdGIwotE^o8 z{KB=#`YH=a3i2L(3+xOR&bB%k<tqES$i2`<&GPNW+tcg!ivjsQ3fowRbdr>mgy#!T z=I6J^XCab4J-20#(ZoU!SQ5}u%$q5;Y}o?UE?^aW%(-*tkO={f(A#V*?bAJSWS4}* z!HYN!$nR&KE2G;z`?V51To-bHgEDw3e*PLL=^(mZ<xz@(1K-(IMMB~@dA;VVJD{zA zYjPP_%JwVn*U{JKmUE0QDDZN0%tnXG`>wrR9=@5~yAfICk&#p}+sO!6Ycl^WOJ83a z#}07X*!k&!>a%Cg=wbPY0<%iHnv0O5u+I~~;vx;?WMpV<Nc8j1?xs;}9rlSw-mM3b z8ols{)Lvs*K0H23YFSillQnE??nXsv18M~YmFMM2@xE(o<B@aJv9bAzV^Z!r`EQr7 zW&n(UlM?dsH<tsTp(~)T0--M~B(z^a;gq8zz|AHC%H`Sqa!OlfcJ?Jeh5bMT9?s6r z>+8UxXj|Oh?N(B%sH*ykU=NfJg4+hka3SElEb^n_ST&@2d=FTE-}YL49i1k)Lc*4Z zs8608dAD(bmWn(m@TDfYO04-NV%CV6cLsj|mL!62_wJ%s-TbX>ZCV0HE2c#IXC8!z zii+kJ6xbK_>X<u$d4=d2RhL=2=^Ds#)ZU4$>Q_H?cbAuy$)>g*IR85l6`*J9Zs3j_ z{)_Dq@E$$7Soaqz{o&(BwDCz-uECQ8r~t9^o81;Mq*Ze>Gtd2Lj~|OVR08b*H3ON_ zjOjsY^K7=q`F!y2LU4h#!_lmO&bpZx^e#gP;?lffyiU!<btiCx#7bW`d@psnHP5OH z4iFsg$TZh-kQWJ!Ma9KG9N$S7m^~vI^3>$Vl%~CB1E2OQmHW@HI|D6$nd<j6`zhHn zAPhzDU?gqe%KRxEo#>Y@<>yWy)3i4=l?JbPgVAW#+jbfSa-T<E51fJ*DYr(?p-7<~ zk&HoneBmH7!LmT<Qh{a?z|Fi<P7b9o8J&2CLyDD6Wx&w)@8ZeLU_)Y<BZ`an0OC_! z0%t`Bxrb@@Wt62k@XtUxOS7|l4R~t!np&_s6%`f!p~vz6&!0V`Ak>=O&YUTSFMzOX zyS+D`S)38)WmQE9+HUahUf&6$;ci`RW=2L5>JAB6L$2nxlt<YCZ6zx!o1VIj7=*+C zC`5!04i18251rqOwY_BWN}6o?kYEim>+8TU1P+o+mGZ#Z+viS<%`i+HFY@SD6jC|+ zRhf9*5XYt4Of%Gxd5|L#xtEWA2DDeB%(K9Q`;4QnTme$uy?3uxFhB2sAjlk&l9G=H znT$+KMn*>|NtCi+1K>Eo3=MHl=Yo_Qr|QWD+F@l~@f)=d<`sO#eCt<pGBbz9RDTRq zhkaLl-H?_z=FgAweERe_T1wtEIC7|o*ZB4vqkDh<qxYfCL8f!y4iba8%$UX(JQuMs zGdVR?vUs$XzSLIl`0?WlB^O!O34*rn^QW6r|KzLB$HCvr(%z9fMKf>z+_Hq8kU`=V zFAge24-4QYV@DKj4xH-V#TI+Y)ipL+LJWEK)~#DW7W{Eu00{sG0m{6r@yr0JS9uTI zuCa6bTDe^zT-B+SLnOH@<nKB0Wev5Nb@Wk!w$-<8aS&<)RUwxC5-7wYEnz*?VH;P% zJbisXzzOpHJ-^2bxm5k+FdVtw<!z`&A*7i1pMj+Wm03&RJzD;l6Ud%WsR1rcmo3=- zM+PX@vk#+k1Mmf_Y#^U!3pu&F$89_h1+3d?i>f(4-Lmp6)$Q!rv#Z`eT?G$LO)S9$ z;D1>o^U@{qdEK4D!cbg5TpU%`9H<QJ%C+1FQ`I*QluU^O2M(M%b*kPsh6N<r(DhLi zu=)Tktq8!$J8ci6%Q}HOHxa6<v*b*wL5rfKpRL#i2Uq^5HZp8P;j#a<_qURh7n;M& zz<>SOhIkoR+ZG=m?-_N?Ot;0UNVQCt<Q^%NSec>Q)Ya7mC{AM4Ew8al+c>+p>|HVz zp^VWado-hT?uXiN*TW+qT#p$W+1kEyl$(1u3`I0!;W<#Gn<}M%T}CCh7yqWo^)H8j z<dZ-RASe2D+%cgLy$?X#B)6I6C@S>L>Er2F(LI3WcF4m9egNbfYmac;^k}9nR}YSY z6KdO^c0yB>;kb%|%vZ%gf_ssqyp(lOS`(sX<tF|(YE(8~UtbQ|LvV<>xJ<76+tvKA z*E3d|k)uv-3_&}DEf<%&Y}pMRA(Ed-ia?43&LqO22p_KwR3iIJ_2=(j!3XXz4pI^N zxA(+63%!V{D;TPVnu14rXppY>+hldTas%CMeG5)qabsBhh6Yrw;DxGi5_0?VYs9;( zNiYn06uNgaNw)iz*)UZR677sz6HtngX)YN4oV-THa@f{(!0?<Z4|G-5@(icbr{TBV z&cVSKM=iH|H&*^?TwG2^z`bYBXuo$AyL16~;F>$4w`wH_n!I4$_Cn^XS8FgeA|Fru z{24c61YvLQ>cPKkI#5nm{`?^$P%71|$e-utMo>z&eQMPmLe7DjjuLyQDinK4K?DQ^ zU0Z&ksYh0U{y+1bC(6Z68-v4#w+3E!+e$*?CAnD;fc|qj;IP*(lj!wdQ;kEO3|$t5 zw-kJk0bz1z3SqcO`^>y3l7?CbnFlVMNP3<tEQ;z2)zIrqGCPGNBw8Q?kaXB=sMK(4 z9OPr@gY&5CS|D)c!jZQq>fo~<=j4QVYit3stKBEo)!8|_mTxdUM%C~5<L6Jt8C~b~ z5`c4YW%+){vAViBC`dZhUx2p|+;(=eV{Kf8-mY$LNLs4%L+7l1g=-32piYb~KDo31 zteW<ukF@PoeUUF^KBqM_YH?&@q&9(WMN?i4Fae9r;MXl>mm?z575(1U);d5ztiQ4f z%M&FP73jW=-(SuOJ){mq+DPO-h#HDeH7J$@M|t7Vqel-Pj$w6U+9R_0l61h}-Gm1h zRRs=NWqPjovC+}~Qm-uA>d>ElWpJnW=?@}=5Pw8C)c2w85J0b$<vBs_qF%QEO?8oE z*t`h>M+veLk`I0Vq@!FfOhHn%RX^aF2RdSUS2kjL{5UVz)x!(ivJUlOoV0t#@u8|~ zizevqKw3tRu>u*TEBHJ_prDE=tq{6C0AVCKbbJA9189fY0B9fBxO?hMF?VgjIhE2; zw!>&JSZ+{Z0)hF~t!RoJ2ZAV`cDoQ0`99JEv%xHPU4ivB8~-hbfJwZDTj}xO?A_b9 z-;R0%R3x2ioF#O@^8#R#2qfrCeSKD7oy5YQ<mE+1mcxC%Q(~V$ew(A38o?ChE|Qej zPbv-F2msgx^Ur*I5;l;%h=chzYV6MSe<Cz2(|a<y$q68{q)}&q+#-LMH&=yJRY_8B z;|PC-n~e=GKt@T4w3ygR=aQR0z!w&eAmE|<7qXe3m^!IT7J6X~T1cqt>@2(_<qu!t zSjz5w`_4XJ+MpWCg8H=`d+|o5wV{D(#Tlm;A9CjOY3&Fy>wvyE_+|c3BvdrFw7}+l z8z_UMW^Ci7C7i3|r@w!{V&8*6&&k(4H_^dQgkyZ5uxImDf3WPU3bBa*UY;fM*aFXz z&bm5s-iP&1rQr3cK5M+*vJr<P1@b%x8{_E6KvLbIZ^N+DG%Tb6$-6FP;lb1Aki6ib zz~Ke(;cEaAdjw*eVY3IqM(b>k`u|j<13@e+JJ!1lRW}i#8*BcZ)i)tMwM85;H{U)P z^2O%01r0@}QICz^b<)w^my_k<;sU1$zE0=CFfb0>^gxLluR5xIa1IOpiR00hX7Ct7 z?aX-hDEcr#>bZ?KE%`#RJ_Nr2@X+{N04iW~^8nx&+%qtyM~5<^gZF$lk1o>loi`f& z@_$#o$qiJ}C~a|6)mKP_NAAdjAjT!o&75KA=l7zjN+qH3@R1{0!}#<1A`6GxHsC$Y z{VVp__?`q?Z05?2PJ^Q`2kY_*<T=j$ovGfPs&8m$C<JFL8~iS#qgsE?n1qD9N=@zE zd15mYGqcjLH|{N?((3%N3&G@ydNT>3QVs<HuxSGU1Bkr}`XxZ>GS0ZVjtmbcvN5D5 zn2K9hhlW^Kd`8ueIc^UP2(1EQ*0$7h2%)ai%0TcXH^*};ctcQ9zeL5@LVrrG7g-pc z3Kinv<8>>vUNBl>K7e!v&n1MR7e?0xZch6uhZoG$k&%(`@e*n%f2cHru0St+(|+FG z7f(y|_x0H=k-@-i=wbX462G!XUn#oIIIew6N^u~!P^mB!5ej|Q_RRV|yVv1{w>e*y z@1*@v8v;*YM%a4la<iV$H5?@oVc|ANi#;EsB!P#~;(Z?;CX?{?%CoJmf_m)lzl2=R zyyUB!Sy|bKd;9otFWf+wFd^*V^$*!`XQ|vp2^9@}4=#islwpE6c(9KDU}U&_@Qy0= z&(^8@13kgT1qF=9zmbw-eW{sbq_-C1LbdSWo5Vjl;#ryccx`j?&g3c~;pAp8%LIW> z1Hq3F*hKX8^{p?M2JAEfWN>wDag-x@5SFAL>8Fw{N#7aJMWKO6I5a-)KmSd))V<f` zP1<g!R)W}bmR{BGyD9OyGH^k0XIvQd@8O8}dhk_WNh<(>7t<n07097LJ|yho><q0- zC3N-HvpyB*ZrrPXpgH*0j-sdzjRHu2s+w7)Yt?q)S(CI&$wOT7D^m26v%#xK8KS4J z51ksq>LJZV1T<7<w68RcTksu#9AMvfC<mxrtqxu(M5TZw;d;eK0IQ+(QLqt1>%w16 z>1SkX?PRFvxtr`{0+hevGav^40fGY@z=aa_Vy1cV-8Z07P+<^O$~N&RcvIBLpmvBW zC;dmYAzM2xP2*NO4yV%GZH5Sf)*J`7>C^N4e1<E|78ac5WiKdlG1Jn0v~$1D7;Q=m zK!m1BJIEmK{UFBw7}dNXl_;_c_dpaj=}&+$LnDh|%viiT?Fb?kY(`FY_GPmgxPJg` z<=H>|28~KFZ3|~h5Q;pc)ij7$eJdu%k4J_Tz|F2YE(4G5>wgz)F4#{5D-44tIpm=q ze@lnswsq9o@>NZ*qTQq)P<N6`2sDs8Z2)B?ZZstYodSwReV&klLh8G5up<Hw4`&-$ zT25h>$ezRD(J_d2!0}X<)ESj_k-Qz7a<kyjn>#6$;(Ge@2@4Cot6+u0TSh<k^b}`3 z*M6Gw>=}AG&}TZC%zLaI3e2Jxl*FR{N6CSmtKm_htvff}*Zcb^)G<UPE`-PrP%bE1 zI1?pM5sQihr&qR6kY&QRKy$kFmMq97bcOgPkPy^xut$in!il9#p9sc?CNEVm?4xnc zVsb<y4+_~$5bA1tYAU^05hM{PUx4v`7IM45wvK)KR_{;%7^!tN<@)vgii(A1l2<;k z)i6JG?S7^{9Lu)LL52g$+)m-A8*q&tSDO;u0&Wf7PB`mun+zk!CMEEPW84UF3=$a_ zK%*oHH^V$)q`8RzUk0zLK*zVUC~rE!@9%5fOZ6EVhvM!H)*r-HO<T)Yg9JgqCl&Bx z9+2I0qfmHT^|x=17%6#hn7!T$*1rmkOzc5Lpnn<I+<+U~cRLkNt7fvkz9i6g#2L1E z5*f>P9}|G*lD@#Rz~t}aQz!ESiUhcRPgvL3Vn41r`ThQ3PIc*huwjZKC}<jIo}X^@ z4zk6;u`x0H4Vi~;!sMzIU*X<g&PsGtTC?|c^}ldsXZ`JgF_l5<ExlQETejHCZ~zBv zsN`a@Mxn3zvdvL69n3MB-1Jd(LxT=3_V%0J*+O~T3ywro6#i%KY1`1TjSDza(3@Zc z6?7c|vN~#P3?b<6x6c7!QT1PAa?mHQ^AJ2wq)c=BS06*{8widR#51e1Lgvn8!_dD! z_tDlJisz0AFwC=g#aWk+gqC=NBk9h*vvM3)aj*rS9zm}N*}u6thQ?BUm->{m1bk&C z7ao}t1a?uN0qUaNQ0PJ+tC-uDmvPOGr0KF$RSaIlG&`btTw5IRkV};m5jlj}MI=KV zu5TC_D0PCnNHVz@<P+L2Twp<m)*rx~-&b9K*fByQ6Ov&;!5jp!p|Mk#U{Mb1ZP@61 z@<hCJbBz8JhW4zjta{vjBMq)Jhn0q|1>NF;I$+>=j$*d&=QZKOi6TiwPHkia@WS8Z zHbJFSFh;OVf&}??u(#kO^`)9wn4C1amebO>p>k4EM*N?yyjM;RT&wed)SaJTM3H6Q z8=L|iLxh_bIq~}oo7L=KU{IrsT0)S56NWSG+h1sVyAc3=Wr-~F3k#Ty=y8*Ow(AdI zZeR7)`1r`Z1xSCM8^(MLuT{Bd>juXjT)0q!N{N=M!u^YUX;^A{dOxEsW*2dPBFQnu z$t<yNP(FYR(Dv+Fvjpc7Y!D1(EM8~ZPGw~)5PcXw^18Wg>(-Hl6%s0;6B2_73-Tt~ zS2zc*bA*A7))6W!F3zqkvbML+1n$D4IvCG^<AYm5CBrac*PXDae@D-GoROKC+|??H zWPg*CBl$DnkF32CTz^Vr*RCVzp^qG)D~nCiz{u8~gYUb$e<Powad~sC33f(601Snk z{|P4GQy%};$#h_+g}FI(lICvf!Hu;8B_OaK<!f~fZ7w@>;k|oz!5P?)S#}L@ORj%s z#QePXgi$n$8cb6<T3QdvQsm5EPo7`k6mVYugkwcga7o8X$k@arQ2A~_fvf{1^;Um) zA(U1E>UQR!@B4F^+y7}^p8Vdul!WiRS4n++J!D$w5wF`0gNG;$)cxV302r}}oGKt7 zfP#{;Mui_L!P@<`7J3KdYfwvNW&Exq*pfP#*1Eb8TQ+`hYX-r5Mn{iM-V*}I2Ui)W z%sbx<nxh7vE^saZSOVTcA{;#x;|RLP4ig~SD^Q4ESBYZAq`p50Bmx%`IPGwnow*w% z11++8x;okoD56k-<;!6(IsfZBG<)p`dLg(mzJC1*I}awI>Q$FPL4&}R<+uvoued@E zBJpAvxIp&4YSjFQzbU1O&aSR?Yb_WQRyXNIm8)Aje9IWrE675E0F{t^@zDlY9KZuu z{|c$r5vCyjfYCLr7!gbdKO9BWGEQ9ph=qQw%quM<beZI~$$$BBY%Tx}y`Q1)kITSH zf|$Hs2_#9!qj<g9@nuWd!<RTTb>j;FE-)LQ+v6byfBfic?l-ff`|r@uKSEc5Hbata z3MJ=XZ^FaP4W2+t{8#460PGw|`}?}I(zaG#fA~-YN8r}2&F^d#6%=~Ed|}=d0gFLj zHTQl`zP@UV61YKOM>(|_*u2q{o|eW?a1|a^9~1GuT$@)xlt(x)qkH%&RM(nFiVbs@ z`;Q()Jv%znQ;-#sd|gKflsHve<zHc@Eqf@_l>9yZ+7$Sal>9a)n0cc)z;Awrp(WT& z0LtTkT5CrK!(3Q&Y^(|VrSkIaEiHl)CDIZ99hIme2o+=g5~=zx&;7Lc-j@qztI<&o z>zbsuhSs8_+*lQ}jwlg;yf`Npr@S@c!NZuw^XD_@T7j3sq&P`#$ba5m0sp7SwKNnL zAx#Omj%D-R(8B|&6&VPkXGSm(;Tvh@;5!)4CmbZ1II05kEMCxjtxUXD0-9+PfsrIN zSawu5R+)*8>aeivmPt$!4GKMfKwgoq3r}NKmSA$TW_=+%`|a)VbwfrqnX{N{EM^Tp zr5Lm@cH~NcW0(jI?i(35lz$!mY0SaN{BwY6T<|!4ob6K01O!L#&vJr-mul=5r#{Wt z2JLNeEW~ge4j3-zhK8^qK>zk+XD&&6QB=ewWA_@Lf<6IjL%mPB+V|Is%1SGw5p=IP zxqv~(;M_4a&A!NL6%umb$CFZ!z4z&HnlRpsp?`An4U>$o)nVJVJpno+BL>Sp{yuOl z7}CQ9wLx^C!E4v9T?1G^SO0kS1;7UgO-7oCrs8!t_^d5r1SkK`3sCMWyL)%m#e?=( z2%Na6I)$)xWm%LSx05I9M!ivVn&0O7k+Msb9M4+04y4Mt002cDEz&r2nN=Ri1r}d% z>hx(CqDXG$v0`Y`_yc4Y!h0T(NYKg2NfJupN(JE!!33K+dmhM))?XI6?i27Lk~~Nv zT*V=|q}d_lic!z~I%jJ!ln(!(RLXg<_VPCOt@mRdlCZ0fW{jq<3H(T+!=0~DTfTpB zp8b^b{SWBpvz6c>EkUP(<C@cvum&l#Bkvo4ZhZiZYanm&TbT5Kv1&iKo(==ok57)( zm!i#sub;U0pst3b-veklYtIe8+3HLgC3ymY6{9JD*sW(tWC2Y0&%BRv%T)4Dh(W9M z1*}XY9T!+BTu1>!CyYQn{u>b3#Yeh`X@_$iSB=DPU=Eje&+eQ=J+LZLlo_A9gd@=X z@g|&hcege+*0>6fnGO8p-Q8^FyEhCKHMGIY!`=dq({R5noHF+Iu%qX6G#rM@nnRYX zE+3W{q3OxV=8-uDFJVfUfnB;pi137jZ3Sm&<)<QQ)gq`z|NpTBjN5v?Q^5ZLNGG!# z!=zAMoQd7bk6I=H)8Q{%hH4!Y7zk7>02UU&5((N<x@h;dv4hE1aHRREe`fj&p`7J- zmIQ6Azf$94h=D&$t3Cj7RmMAb6SeAp`8fOY<UV=g?dM0?RyhL{lAfNviGTsb^||Yd zh#jHJn}~eRAq}DF8TfL|FhmT4BI-OfL9*X`JC}wWN9323Jkn^kB%vr)-^BR!fw`)g z#P8qFfF*@j8sR~5j3nUuFcZ?)(7>x4z`)xj6oD{bT@A(}xPN(xvPO_5H%cI8LvkdD z<YpF{2&h+r+VP9?^MHUjf&>v>Hw4Ht{I?Q<66%_5&@VbJdEkSP^{M1**Vv?O+)kfn zXJcz{Dw+#`BLb`qB0<`^TvORVj|P$r$WR0lNHmNj)QzAs#t&$zM({w(-}l7;L&`xa zM5)RbU_Xs+9}+BT&cBh$w{$xN1cos_Oio4H15c7H9In$i2}eLSA*SF>#SM^5KTuN8 ziNHjwd^ask`OJsMa3`n1ZMW?AAk&3%;6*%XYF1qQ4Cv+#J@#>I56BE8%*f;A>1q&q z(WavZ1@hfOM90Uk<9!q6<`|vb8+-x8N?zXd<D*#w0pcGA1S&FkH;@%1{{nm*8>4M- z7s8^x_CO4&CuBVq98_Z*7l=GI78cD)33yx`YcFp>71oaD=C{@qW@^sXO~wdH2;3b# zS13ArdP<$zZewH6$JA+U_U?sjh^`4_8T4JUN(x#cA9~omdwhn5?=We|Fp}*Fkc9MX zVQ!wT8g_TNkByU)<Zy?oh*<v?n706wW?mWK1&LKdgY4^ZHp0l-8lY$bE*J<K_%YM& z?3F{#OWUVEkyRD}7Bah9p_ioRRc>;WLxNShZ)_`m1MMa*1P@8j0SDx%#Jpq=cZ8|2 zF$S+AzNF5!UP?-0^fsbUWQWtIq}D1249==a@t<W)%$GyhF%pGT%+GWJbY_gE&IwbJ zjWl2V3wAVSDgc!Un?_BvrYRJCq@Vd&ns+BDiGSzL@gF~|%*}PLY9BfT8xY=MApW5W z*c4`*f?l_8Q%mrhs$`sXbiDj5HCY4f6<k%9YShYoNUAQ$jI4j=-1vI%gkS%0wV8yM zJ241EgoAGqa99D|O{kHk$tujA<~)8}8h{KI%MM543`9OI6=n?4&;I&lUE;yh*Dk~> z2WGLLqy%QfCNDDQJoKSpll!h*2d$*CqWSSkh<d6%torEab%@t+8%EDTVFoAkZxq9F z?&Z(+e|9mGhx+Qn;FB&6f4;fztTa!^+MgF#8n}^GcaSDA{_!q}J6VlM7Ep{v+-a-w z9;K1BF*Cy%YaaEktE+>Zaq}~N0AqHhsQyug@!IDYcp+iHpACo^^p}@4_`OTsHZ^tp zvnY93S7&3iJwVY1vnjw5pFVvW_bv;#q>lk?Iw$zs{l7IOB_<~R$1>h*-?(x8de7(2 z-erAbB6=N}vlz+D)iD-HP6r9n^vKzou>%2%HjQ2SP}=69N&PFns;>eU9%5eN!UgpO zmjjE&9$BZoD<&}iosLb#lhqf#e93m#P>Yi(k+RQfKTNw!OY`#>9fEQ#h_(RkyWJeL z?Ck8>-+p2k=e11h$B#GQXmTg@@Uu52LC;ti85vQ(3be%7N6Cv9lpql+;UGhcN_FW% zTDx1ksdyXS7z3Fbn+TKu)58NmBM1wqnyP-NFkpZL1+xZ1|GGn$z@}p+Y~{WUw{Z^3 z?TuXXBC42!w$Wn?;>P>EhAIBDLk({*u&_Y;{qt)|oAPNoa63$GuFlSU)}`>#t^`-X zuJPr3!3%3`+y;(#lzk7fXHw}u%QR+Y_}0Q6LO*#V0~TAq@`bJt6Y@{=$^hznuiMKP zFZO!d!cilCr|q1V7k^2Hou+0z?i_BSFAYoogHn1&Y}LSGo_fndTSubP(ssffg%LhG zj!5ocbaS3FvjBg{g4RV&aeyM%?J+4-V}t<>$fdKhn>TM>hFNcLvQ^%~SMNVJXgEAu z^Lyyhx2~<N<;?B@ENmU}gdHd1mP9|sirSo%_U|vQ&CKt|iI{*V0E4nv5m_5hx{nNZ zu*I@&-wy7l*jgL@sx5>Wrc;@s#yv=|<fU+ridr(w`Sa($RZ+EVJk(Fsh-e@OvO&5y zfl?ixS9?qpatYdX`0N}Jj9@cU@USlF@x#KLw&g~eQxny*A(I$M*4{+GU#>o!zxM44 zt3<Z3izn%ty}X4va@!7%vu6|B1n9TR)i*Yt1}%dR)RJWU9E;9t6Y=B6kHm^jtT8$# zsB#(+@=gEaeBc#!xRi3|&KIDb|3AfeuXgX*=Rb#rHo;vq{5jyp@hN8=oz1atkkNKY zNr^Oox`sN79;505`+dPupYeDjQ49ecdiV=tpn7_GI5coaqJ6<HAf`u0gFZ&J+2b!I zMCt7ZDvf>psdPx|1HVPv<#=BVEI-v3>4HMS_96SxBjEKzT3X;s>DVTG_H(aZ-j2wF zVF1<^Xv<+ZmdnclrRlxzU0we(rIM7zGpKrbVBO;5+flL<_gr|FnU_azQN=G{0Y?0v z>J8cvo-e^duaQHvby%=?<sgzXpe`Q^Tk<L5^ZhJTRj@BLHJfr4@Sd5q>=ZdMByu!< zEwBX$+`fBPieWQpl>7IKxtCqgUtOaa7OIiYoQqxnRpYZU-%z{nUe>^ymG_V=Iy*a2 zfbi}pq~}r@OGKZE3Ayb(yzvG16R__GbPl|*!c6jJe7wQVadT_ySI+P6Lv#k@;A`w> zld^(Hg3(|nJG+i%bAHf`@MjAvDV@hWBM6HClDV_yA|<qabX~AKslpAn4(J7E*Hvx> zrk5iPBXG`|SBJhTDOtiirjGu$d5i&pki644@)M@Ki4FMF03*0nGOD4v1rMZ4qK|~3 z4oz$^2B>k{%6Rv~3Zx(SqSI8vst`-xgqN$)WRAly4#%Jw%7Cm2U<-;Ah7q6VhwSrv zjD_F26`eLKp@zZ5A3X(l$ItRb)NZiG!>Z+_r9Hj9C>ws>clT@@sgT%x`T7d7B9GOd z4WI>#AnZdEN^*iwQ}=BrJWgX4;Cy?U0#*exeK1J4$#WIR2uC2a008!#^@k2PGB$=$ zM=|4^ZAvGoDJb}+0>JOSmT^Np&Q7Uoax4T5i*gTxxPVXnf7W!=jTZ%K?3sQG@9`!u zOb^3_xW@y12PSIZHU{+hdCPIi`OKM%@XjvH>?AoxNp!oTTmrWO$;gVPY&p0Jq{{rS zty{LBmw^$*QMj9X|Bg2@v<2b$MMZV*`fE?NfxKz@Ns5}~q{^4?wC7%R-lP`>^AF%q zC$15s@<%$jU(v$Kine4oi7XCY_WX9f*{KLK4W1>H(Bb)}&O=ce_AbM#5qQ$a$BBwG zDU3J8)X}hjZiVwT8b0rZ6*zHqlreU%SdGDY4GW9gSRcHh;mjFvSsNH~v9Xz%bI=EV zzjB!JWhr;wYwLDd%7P^)q#rK}Aznj3%<+maNG7>GFqazmXHhJr1=5{nUp9~sW|?qn zIfGj-ko&R7ft|;wXdLeW&UMVgIWBVsEZ=zJfSIca9AvC+L)_uH?mg}w-lHX%7@{SN zjvu#qafY?(Kp0+RF;o`?2pRbOLyk-wevP)QOYt+4ZCtzxeAu$GbBHTcV_;W6$~>@W zp^7Fr1s<n8J{L~{l0saBOp*VXHPrQyLHd<S{>s?4Te4X^$!>dLS-=$Pzmd@62>cqE z*8cu<nipCCqgGO%`uez2TeUPb!6Ra509g<APrR!sGPfz|(p6MK8Q}Y0=c=70d|6cF zVZVyqpPK@+y%9+IGSge#8F(p8oeZpT*($+!u@FaOU{H`T=1WkdffwP;LFZE+0A(0O z6zwtw{Iy>D`QjsIo2xKPi+LC_Vq$8l?h`2G@Qr~TIe2FouV7@GxTAab`?0(@6&00P z9NcH>Hg;$fFd{$Yd>F6kd*dLhoE`}N2yaU8!?}k)60lZcx*f8&2TX--J^5%&@h%k= zbozMzOS1J5A*L<L@-k4ez9om-UI)u=G<3+5WO2OHPnt{6v_H5HkL#UKp$<L_NCX{o z;^cX-mhjUiG-fsRzy0zB!-MdQQktLVQ1BK?ZvMgN^FaFJdn8r}1|-9bt!hu)Yj{lk zz8e2*fyM#N3W*XxEe7vaFhwWl?(XieO|I~Ng6}_mtA76vsmAdIG1%}azKf2B^(egy z7r8kzV<;bYnJs8*G>f|069GGQw|neI3nU)*Fw9xx`!8C&4%!v{%Ae6l{mm5`vMX@{ zotmcCrCw#LNRQ2^{QaUf;WYDVrIO}g;r3dm_ExchgIV^~pKwsjlt@EN;PUKF9aITh zr?p)3y~%SUDM`V98iXz`-XDQ)>}2kBaY!W);UKo4$4)`FKxiiY@q5#8?A#t@<zSSW z;fyW}F@ZukdejTq1TGhY+k2Y7e&zME<=cG!9_bpyWWvl$H5|4eLUDC(<%GOOMlAmN z<+Yvk62N>q?-QaEFK?g-Lso!Y5pQYufwz!|+-XD35YgcJh8juI(nPO=9I|i3Yny)l z_#w)ohc~lik42866EGD&=1cC6cWKZ>$RQ%7f(GP!-y>a+Myj@NAM&=s%$$I<^jSBz zzR9)MU(`K3@}Pzx$_>6qC@EQ@+d6V2ZZl1UGVfW$HW7|@zzj9m`+HdFr||7beI8qs zrI9%c%L@7_Sf&;9=haR=NI#`rpuvEGKD)T3y6G_wVnr)M@I{uxa&CDz0E|qUg4b|8 zSW`Ii2f4T6O<bIK?-PnC7BOax{pBS*CPG2}PMl@#J;sk+U4pe|-i$9mK!o!=I9T}{ z1_&`XMMgv?x(KZPdR3cyTqBbq&w;``w>?AEP#_5qGwSd})b<2q!TJ~}KY`qmEX-}q zs>Vvt!6*S|2Kz_jo13kq{NV;5!eK`~*$6I^g;Gev-(yHR>55C&!=d0o5<_y!Oz^#P z9M3DCaeBO+B`*%NQhtK{>E5GOr%ySzdY)t9GPw5nsH|@$Pa9qdiC47zrx>)@$v8SX z8Vx*yiGcPrOpmY_Wnlmh{$^b158nJ)7&pYpqlvg^nF|~Y59#3t#xeO8doeN#023X( zfyxQf*Ooj7&CS<x@iH7ufg||elzSE4qk4E_CF}*4$ySl?@SY10T9_N=QM#L+PUkP4 zJ9#<}M^aF*i(c@(o{|O3ESNyxjEn4w5Z$%wXMe@Mbb}em|3}lAfc4b2Yk!p@6^%kf zQc1{^q(Y^ER5C|Ak`Rhg5+X{P$dIW*lVpmJ%2-J<MG;aVGK8WCN$UG8@3%Yl-p9N5 zexCaO*Sha(IM4GsuleC!B`-`y#Ix<%UjzpWP3-YFQ(AeCvvKF{-ME7Xt5@byX(M#w zMJc_`^4z0V?}5XDVKUtV<v7XX^r=%d-o_b?6L=g|{?nJ+np$?RD22N0ATW@NVyu&V zj|>1%F`7qzy&SW}N$>Q@lj`8b`|NlkdS7NcIyxGv*CU9X|LaS7C;u^R-ye?mSrBmW zq^PUX8Z1uL7^?GN<qs_T1{@|E>b7jz^N8$#E7Wf|J)-R@h@b{uj8g6Py?Zs$e~Kke z{i;a1S*C8PuPEdCX_Vszk<an%W^}?T81t_!j%k&Zl{IY_oa8(aGFlBwrko(pB4z=S zDEIN02V4n=tvxDRZCPpb%N(B$6$+<KiJ4uW_MceqVcY!Sc`3Xym-SVZ!BkB}!l(rA zs_}O#)D>{gnfZTAKRoV@EQX9i_PsGFpUCTg!%{^>oJ_1PQj=-3X5qL2Bw5~g^QM(r zRBBq<FI=Q16?X}}_wI)8BbZ&E8tw!`Q}hJO-lbkHi@s6$kkPUDBY^oxT{;Q}86#Jk zb{=lB*6%W^OUH-?GPI$3I<o~<inGbt!KtTmu4e%@^0^4a)G&METvmASovyA^sZhu? zg0}6GrPcA^-2NvtygId;nd&RGwf$Ko<b^Bs_r9~0bRj9^T)CoR@%k_K!_VZ!-Mg|M zJQ?=sW?xm<b9Myc-9^in%L;kvb^tR@D<WiUX6UK5h}bZo)%IRtU0zsy_9-k`<KF}z z$|n-d2fHPW8L~Kn-qRKMa<2KeAD?Hd?*QMlmWq9a^9B+FA&-JHqlOPo&(X<YlwW`K z^oX67xdx$@jSb>Y-mF_Nc`D;<m)lluDT~g!PXReedk>`JgYfI?zS97taw&RuwVmcW z0Z$D>in0;0Igb751HP7~gdI9m#V^(wHF_@}2}BW#6oi1DC6~{ie^gi~ZLte5NGa)@ z2VM%nnn3%;OKX7e;O2MkoDzR%S4lLQ?b706-l+KF=(rN`%RGbGt#XBxrLflE4czZ} z5_f<zlX8@m?6xuKvK+#0=+K>4{=z$Uk(XyKg@B-a;?ly-UAuM^>MAbEt^Jd)r)<&k zA~J21zu44Jf*r4SAJzj~qUZmn1q<Est0svrYMN<<Bxe?#6oYR${zc-9EjrbblDu_W zv@QADoG`0O4SY}H;^R9AGSj|f0dtk?ohW@;4V_lD)soN-k$Rkcxo5`>urG}q^m=vl zT&aqw&aRq}2X`m6{Qey=erV*m6ut`00-ceuj|kU-Ix?@QW!#TIY4$X1>sHqy;P%)3 zc51Gx;jn1M+zD!J?6flF>Y}2qBVx_qqqLfDxg15)K6L0;-cflzpBdc5Gv5O>D%>dV z8EMk%09ecWL$~-_|L=W9h7`P}(vq_94l~2U71JP186`Ez8Qt9gFLQhjo)}Lejz~Bt zEh(CI#oG5l`<HcnmZoBFAXp1U=F?}qo*s-Mz+z3;x<~z0WuaK}ms}tPRhAiRNY?YO zygawacKPy8BrQgIgxouCzR!xgkitI!Fl(hK_3ZGKq$Gy(yIJhw?qsgnbGYlyqL2Yc zxtEKkyqssyePvqf-@g&NzWqdJPDJwX2zT+~HFOcYeSP}}&%5*W=tlp{)2Hvh5`X$; zcYmI_EG9R%9f*Fb<-!>=R0F&E|Is5G*6N$KQ2Y^O{Yndcyp4MwTy~xztvb<C3)D@} z)YGf|b>GU2CZf|nuc{C0gL~>F-wjok@J|>vV#JM}_wfD_@~A#Y9NoHiuPiSQ|1@5l zp_n`Okw+#~S60pWl4uT7a)0IqHO{4E^!)=FAHn6EBq=FbG5n6>2XbXjuKMbak934Q zC`s)RgL?NJ7l=q0yN$wi@pPU^`$rfG?E@>8+E(r;i;mpleR*@eFhn(9y1@0#7j!rg ziX$R+?AV7Y2?JNJ`o5fP)DE7W+kGAFL<<4E<gF_<$L!yK3?6~mq+L&BPf8scw^4oc zm)EcR=_@^3pQusTQIb*43NKqwp=ix;48>O3DyyqUYQpc`TjjWT)gI~#U~>4(s<$G2 zlJ=Oa5S|!2Z}#j?qi<3-<VOQg#>K{-IC)Yze{|cQ-4&(&nio?XMDr<=!v=A?gFclF zRNsN(r7ZR0$@I4b0pdJYILDxhDtQ0Cef6a&oz9FsZzV!vnVG~)l23Ufs2F1g`unH~ z2Z<s2;Rjm(Xe%vn|3%Z!t}}bdZH?dlF{@8$;0yoCQW*J19){pqhm<zrakS6w;<<DE zf|Z609XcA0>+#2&@_N3a>+A$*0)Aa8#W(_9nc&tR&lVWZ4<EkhmZr?=>O6_gj#Glk zH>SHPN_BBC>~`2OJ1gtf;<q2(y`v07@}ZJcm45#GYPfQy=0125{g<Kyz3sl*&o7hG z@5XCy<l%N&yS?=#dUsv==4OPp@-mu=J#oGE1F$29!zJ<50+Wp`hJx$ey#qCV-(9m` z1Fk-_MIlEyuCC6L9$qcVT5A3^EVAgeWJ9&|&$zEzH6_WZ&$vK6f){g2!#wPciuY0` zxY}||`@p0AnHm%8^^R~EIBrxCZ>~2ixE{zL+!bcZR>_q_CNTlPM;0EBQv5~%MDr}< zfe{mq2Rl7;nQ_z&XO!w7ophavc$2{&GH~<7xo`LGMa+78{-nDzS^f9H`4n0;)E{|0 zr^5Lxxj?S)>C#y{6rfNr&y<Lcijs@9zcosGmnv@qLmt?gLa)80+g9$0>!HL070*Tc z1USvsCZA9(ia<UQQdWuqs>uC;Xz^;?GKU?zf;HzP2l;!b9l-%=8%385nP8IH0h#NK zBrAY?lf%&?lPPGa!qJXs{Mxa$DjIbgtrMld={X@AExF1E4$O}EpdX>wqsK(8-DYFQ z`lOyKSsML)(!@xbR4I$z8X7*??-;yLl=_G@iPFl+owY8e)SEB2Z6D7Z?2@<8Vm(~+ z;4x&@K9^Ez$H|LWOMP%7_28<?tS%P2fQpopsu-V}Oqqf4$AB}00PD2Jf0{l{kn%}I zN{2|&>BNkAt9t4w*``kOd2r`vsgJ4b^t03#5f`RpnEnF%j&L$p?%A{R=L6o^uRzu( zYCobZi%9&<y<Y0(rZs3#RMgWC@882ef@vuw`NX^b|0~v>zyp>L-aj}T<+2YcTW0~$ zPXFM&{_EG91Z%>$=EV0OH40S~gM3;rn5wE|xG0+xH1nNI+o%AzUmTZtv0JPZWu%;R zM6<sfALJk-VtcErR}5TLW?{O%xnbeKBOzCY0N2Ob9}5k&PP0EBf_q%oNWIq;OHgJ^ z81l})?1jI{JcDe~{|x<ZvwwEkCr4?B(c9n?my|mFFL|~EQM%<>?xw-1Yv!T%klzM- ztTf^W;(pgTy&SDR5*VDcx@JdCk_CnqKUeZ}WZe-Fo&OC=A33VKO?pY3Jo2gR@0)+* z&=4N}VFT{acl65Mv-aj*zrKl<0=i8lXu5@|tT2p__&f<MmC50il&*2Nyyhc+j-~d1 z5<JtG2LPAoqZ7VlM3X+$9i7#L(WM8!1gZS*)9OPQa+zp9KSEtN7UKIFYm>r+T=n)- zR>u+49G0|Bt;QluLJ()H%Bq~CB=bSAB?PF`a-VSt3Ws-D?W%xw=O)-Fy5s+5Jm4*o zCPgV9a+PI`k%ukwqmEzB9X~FkpIftcjSeNmsH=ay-vrU>Gx*kT_e3j2f3>#dC0QP& zT2<#Z{j)^dyjjo+h!5XP`PJcs#@}53BIKtzPfh~RJ$*W>X`YS}9R))|N>XC=Vw8P6 zE9+@NL5RIB$efBrcge^Z_v1$^r1h3NH4G<$>wo6^|DP7Xd}~*2N@G$MaAr<dZAu-+ zbLcp7@-A3aHwJL?ks7FH&YV5lW$s+mZ#-J!sGR+^m**GDtrQz?RoTTzg_L8vMMK8b z_A1h;wXwCulOD`3yL@DIZU~<`r2Vo63a~l=`A|#I(8&ML!w>M;!Inw$fIU@Soq5sQ z#81X`y;O4EK?94M?QV+}F>Nj{FHby0Mv4TtFLVD&vrci?EPPV8Zk4JFU{Dd}i9*!T zZ;}??6Pd%cXN55kkd79_@JUJiul|ZM(C>~(PKOR3J~!r!<d$l1Dfbbvns0)j-GTK0 z_in9=hfLPQo&bkusZ}aIV!&!xkexy{?<fqOm!mkEigLaALCHNZMn<tGf=F<JId>*v z*9nDgvRBr8-WC%qnyjIH-LgeONmUj-R9QF;wz2=Ag4c}L1Rt}K(2?B!B9fwS=jZx* z2dP&b=6OSspWD%CtL1CL39Lsa1zpRUEdbFXY9kX|Y4kr9izlAt|MmAXy7~I*@m{ug zLK4-`yzDd`K$*XjCN*|MsLTg=qQM6fqgG6mQdtW<?Q`m&73P20u<FxJ5YY0Xu|9!1 zEcGzd>iunNu6m{ys8KKZ5M|nNeveAOi9cI^`vL->f}^ZBts#y`#Y9|D?njuLGG%9> z+iTg0NT{*ZT)c3h#n!8$(GE<jAQ1YqJn<>ta>84x(MU;Fyh-izO=T-J7-pGQbe*0H z0W71gT6?eXOFR3&CauzV^de*3xkJTgKh3w`O>OPOlv2kdW)T`<X5~D6^fTeLP6OkJ zbxcFX(d$>jSco@4oS!Fi&|i@RU}oCU6V7_5XJFt+iHk%jt$RNuX3izL$uci>u7-d@ zrr;knuF+R&4jkuc1_;DB*8}$v3yTc6uzxy7-tud|M+Eocw!*E^gOuENc6QEFn)mGX z1FGagb3fC#J$sVj3DVPdtoYb~za-xXwB(-oZZM5!w{C5-Nm=L;n&(3uVsh9~%0~yB z9``CCZ|}hA-ZdqiCn+}OHZ*wiVIZ}6aCOaKfk{4vixVeqMdWZiq0{FTQ%xbjmn~Uh zqZ{LMqCy!vI-v9zD=qN<4x<?{p|)Tepx=p0Ne#aP%jd78#Gw1&NriN&CsB*yidD0< zJoiRmhni0K^oTU5KR=kVS2I(CLXdw}TBsh;=l{k&HG`Ev=;?QsjqsP#c_X8IB~+`M znB~&#oGy7Ida{~Wg8jJZ;Q58!j4g*O=1?8-*(XDkqDd()ACf6fj{x^*JJzY`D?ugq zHog7fJGHgE)m}NBLZC)LAdEQwIuBtt&m0CST=9HAb@V04HZ!J7IXn6B(4+n{<ZoU~ z;a7S;3uJD_^Sll88e?WkQl0Sxv{Wu)GFA}K{1!+TR9_S47HEf<jZEQH96Ppc-&Ddi z@IOw8=x}9D&9tzPXxdRzHJutr1S<|4`1+{c|MQlj7PNp#*?lupXgH*Vx|i4DWwPJV zW&WE+$f;Cte2M3qO!new)0E4CZr{IuGrFj-kl%Ukc^%hkQt^)4d1q{m8Skh{U8OHR z(K8yHyrF_CZz#tn;7r{3piQ<0FXsS7h23$d53CvSgEUg?I*j?Ph+QsCoEV-T62n6| zj{t#bAdy-`RBwIjZOnt}C{$NWqKt_hxl~e+(K;g~HxbAq<HLX%4{rmE%jl#7jLUbN zfb3wc%QpN|Zr_IAR<@W2G;QPJ5^tGQo!k#hfWiYtPrQV?L>CTI2DBa+Y@B{Vqgw~1 z`s3!B#y~)^_OP}2`>tq=3+!>SQZb)s({$pF<!-(wfD9C~mY(Wr<KE;AI>Hz4s6Jq4 z5%;uwd0|T2zsHoEAn<z&k8CH*sm|xCk5gK`0M8h{5gk|bAk{7YevG_Y)jl}9dpFvp zfvU2tW~Hme3IO~Kd{fJ?4<-NFHEXOD-I2lmEBR}^S|0j;SlOjv@{S8B^RM;V55%Wf z8cp}WuyB_yKBs2d*mM-c$ptItbiO12EvT!ra}WQk<UpVvyHp!1tBK23vNxm)r&v;u z>eOjb5lm2`in3T+IA6w9z^O_!RM{N9I_W4>JI+Qk@N1;l_cue&iy5G>`Ci068G;~b z1(=Lc4GN7;0>J>sFMfEl_io=-w1~m*p1Y_dWZ<w~)l4xbA>gsN|MuxN3-iuysv;s$ zygp4tU^NekI3;6MGw})Ew<xH&LE>a(^{nBO2vF9Q8ZL9@4DTVY<!&h()GhKfd8@m8 z$eSS1mfTVs^u!jQ9=<b`N_it)DM=OYF6AU4mo|ngDhO5evr%|`pPb+RY1l;B9IxO| zEwesf`QTVQJEoz5A*;WM`(YPJdnskX3En<v{#Xpzf;HiVbS&@o$``G|o<_gf({M$S zgEC?E^HRh>P>q>CW}>KbN`H@hBF6_hMK*NL-o0h(d_4yQjtipTqQAMdy=S>kpPil7 z;u-O9e@R(e7`!3v7;VPXZoTyPRUp08>irq@{<4)T9n&6jbwe~TiJ|$!r!2o)m&scx zJa9_^6aw?A@$1KgOPHoi%$>bC8rJ({VAe7|JJMjGg%$E%y;^Yp-k9DG_-BCo!oRm{ z`u$Dk)WDL{U#WTFJM*7q*+io<Jz|#%^6_S6E>V#e1)r}~YuVa=^O+43P1P#1DE37p zprUKeyffL^qa&>5o^z948Awm2tsJ2l+d}2`Z~C|MY;)xvJ!FJ~MqcVlCcD6Ykui(w zVy=#bR41)sxnW$Y6VU+H0wcBi&Rebpl)&A)y?cw~<4RMVf%rAa#x3uvu;?;c&>P|_ zs@;GNAW!3cVsiq2++b!eTl|gYUGP3}0X<gYz!HribzN^ZOP>joivAx7!5_U<Sh%nV zGuLv@Eas#gmrRcAQBr4wO>(XJAn}Op(g>BtaU_x&0_)<l3x@8V^LnD49k?fMJU1>j zuBS1MD#Y)nU-0Bl;AA93AXwwSVf4f_RiI44;e+x=<fF-|YG$@oQ7Zr9l-;Vx5*XT| zY0pvL4l>_Q<_#|G|NUp+W2)Z0d)o2ix0hUCds9XY71>NDrxNhe@!249bcduesC;bH zhx;4q=vdPw;q=d#Bi;_&U2w_bYjOz>ze0oydH9Ru<n+*h4?&hN3rT!%&ZF@%Jr;Eo zaB^zfrmri8uc>t&jBdo*s}<j-={AYA|AP8f>A@7#=^Sth)*PKty!b*lN?9cfSp>a! z&tosFq7tHkVZ+vG-n_B{WmOqs+t0y;9LRYzvvwrC%2gVScic4h5p(blaZIDxO6t4J z-d>(a$xL3+#yb_IAP6A-{3V7J-HMpYNV4qrAm`2IzqV65L|jZ6R-+&=!#3}GZeG(z zzGerZWaM$AW{|ouUs(nqtm)?tWG;`GeoWnJ=LHKC*7R$Gf{)%P-#*6m@nX#<&%ET? zmzc)I#1McNAqD&H7}(l8)yC!+m%seQsiP3}eQ@6mwakxrJZtvsUmqWb*`+GykAu9h z9A8OH&iIL4!$MkMVKbV!&W;N2VCRRWNUc4+Gd$c}QB>^Z_(beVNO(n4IA_jt3>1Ll zMEA8j?r_u?65gXuL)iSJ=|G|==KTMp!Rog%E2~JZHYpbaPKWIi17os(lQ@U=ZPaYl zKOY|tU`B-L0r#a#$5Y7x&$3s<Vcd6GcVRPa8C(e>Hfjz+S4Kt#G>?R^-(bF-)co+E z-rQ0_DD^CI#2rAYWA4J1(Lx^NZ?xb3LubpP{Ut$=0fvrFI{{=wopT{0Bk}Ra`TEzZ z>~iLPp;l9rdY&6J-v25(CI+))f{|U50i5ynVE%Q}rkt6};D34BU>p=P4wELaAAr<* zbKe<sOS1^`<W8A2*=BtdeqOPDm?$DAbbbF8d);w&`|P8$*j8Fn!t5;$R>!r@Zwu zpAYHbM%^#w4&!fLeS$BhaIq!DIr>=(^Ilkj%UUW*U7v+ULbhv-%s=Zt2rSM$)da^h zKR+K1x?v_{4D`vVJ&*iRozb9Q5Bxoi&u0BwTyWBm)jjpX(W!0H{(B$2?bKu{N*~b- z1OynL_OR+XX0<!zE4RVZPG=4U^KVAd#MKc94NR$f8##XfW-F1K06pEM<3>0R$9@Sd zjo-2kLe=$+qP;J7FylauJ6kdkvRNv=rB@@r)dpamAbNVt_yk+NaMKC*Ihh{f^b~`Z z$Z)#a`mI?r9=Fbg3wIwm(nnQw>yJ>oNNPZco`p!XYv)LSA+|72!TgWM;`siohPZbx z>fr~54w#gh)YO?rEFp;YkOK!cvVh8%4+bEcGD}<%gKian2H4&24GoGr($u<jE2jP} zUIMay>*h^N$+7XPEH3uqfN^c51QEYIr<1B7uVLcH8y1AIW3QcQ4(6bZZ)@)G^vj|x z8qZAs*0-JTyS#X%3cXuLtv5k|<NCJ5wYIiuj~YH0_Y+G+cYdAm*Qc+7+IMK)7J=Q8 zoyiPA=DUhXUsct$2uZG<Y9y{ZN?q51(8C~`TeY73XBfDH`4OvD1*5QEzkU@(=;dFo z1X`=PrL($^xWy+}lW&ysqJ{C-*9Ni!WW!Uqp%m@d_s^a^E&)Y|LU*aUb*f|aI0~j? z#;p1JQlm}pWNle*M8+j=I5x+Q9%XdZTq(%8jSDK$km@^Zq!MEGzTezU)|kN?)6XsK z!QYQ-*Vn=UN(ijRP@d141+WOK+Z+EjycU<|A*lZnbZGznTW;r=kBM;lGV9;8?V$es zNmm+m&BQj^nx67dE79PXixB}eL^1dj(&ZI5H|EY;I<$%2EA?nRckSE96Da(#{}Kjv zbq|K<_x}E;-owr=k|lJ8)(pgXINYNIq<)~AO1e67<@C^ZR1aXEF`bLkk87|<VH)tU zz;clS{g?D)2(MAlmdse&f2wPUQOA(sINR_RQQ%zL^mi_C4m;+oj0|=S^2^5uwbeaM z?}cBug2I3szvf5k!7wNL&&ZTN{Q~6n0@h>RoO-t-4IDr&H+X85a{JpmOtDGh5U+Jy ziWE+M0O5G8{px=v8;tML#XtP;J?V3=G$&_>!WAnfCpme~|Dat6U2=TJay|-Wkc5EX z1L2V57C}E(+#~Zyh1TN+dIP8xV)mgN<rxNbWRaM#tFJt5VQdVOvHS7vA}b@qE2O2^ zD*F}GJ32B_xh6~$mOSt^%&2&~u8BSnPp+K5H=(N~gu!Z)TeYXo59d05|J@2RMvnzu zDO$tm=?UAL`_@en{!X!Snz}zY<lei;%YS_whMEMIMH@v0%+DjmA&MevzL|9jq?1p^ zBhZ?7x-sA?C6<JM@NB0B%307uX~Aq$t22G~dDL(Lr;E}pyt}zvTAeE9LYf#s90)@u zf=_qPO+(mIv+#F2d&k26`H`HavjKn3azI&+v>Uv)*eiZhng;V54bB*;rZGprjC#3( zxGkVhpFYC$of~jC6!KWnVLg;ZYFz}zhpsoum91UdP;JrJ>nsIS_N{0>USFa5-MiFN zr>?N0C&?)Q1cGWFKlXp)4K4RMTgj)s<5uB4zwc2+iOl|k*?)9V#Z+Q4uRr`;ig-e( zDfZbFo+t+}GBq)oc47u_2WARj^RhyD<}wwdU)T)vvDrud9jfL232Ng25XxbbZnHyy zrB*9P7~(#pWvGU?8J1g|(c?=-9Ju%6*DrL_-qyOv6_T7-hzD39n(AuM--V9z9WJe% z`#9S2)N|2i?DAzYDZw0pNWL3zJJ@bXC5D>$ZfOiDyfz3vX<*p--)I5~PZSEqu`Bql zPz7rBdS*{ilmrnB={pDjh?FF^i2f?VW<VmhUx7T1^55Ym9ga>s1V3XQH11|$VXDed zgNrG}TDPLtZ`knIBa>6Ju+#6raq|k9Gk#({eYwi8^>5iSVEQ)SZZqNlrTlPRUETA} zr%|}PKC}aH$XpQ>%r-P9{6Nr%6<<pQ)fui796Ln|Sx0zx;35mfLx<E79umaI2(B$n zAKm_ItE{Vqru*o(p8Sle%a{RIs!Py0Mi~B~^8e8G#R${5Na&Zmb!^CiTiWI9(<T3b zYZWh$hzbJl?1x0CqdL;3Ds7BF6Wc-}BJN<L41<UA2B{WsH<KkI%k?-)Q8pCs@qG2w z)2Ba%i|x8;)-;pu$A1g?``Xtif<Nuo72Dm-vCoYcs3bhZnWDSq_T~k2i}sK6mignp zC!J-Xd*e5e0L_f(gg17qhG`o@e7!SURqXbG>2$Zr&06^)vRA_JMI9roK0Q+Y_Ebep zjhYnB%4o&*hacK0Bpdv@CG7dTq0WOLyu*%5N5m3!sD8mmN)#l1`8y>!HO&O4av!md zVWu~0HzhZgaxZ(_KE!UI`-_xiq`2KqeXd<<OXMVE_^qK@K_bfYqvd}0{Wrw2q_FGG zTiuJI3D=a=Y3GjZbxh;wUn)-6z1N^amU6J)nfKed{gY$-Ro8DtQL0dNQtC+umZ61v zZ(>sx<ohAwzoS)WwOx#L$IIBL4hqD!Y>D4hs4QFq1%Y;7Hq_GjSq}P-x<nqDzL8Xf z=oUE_E#Ibt+~3;w1C5N-1kIDFgYT}&Na00KI1nG9GT>XlRiM}I-4BTU+Z}hK_#wys zYFBj$Uu9hGene^eVo8C#f)-J3%C(XuppT>0Y2;LNl#)VeHWtu<OV3pS4EYKPBUA&T z7dr@E<HIaT7UzriXtlnJ3^^12V29cy@p4y`k`xeyg5$p#w-*^5XMw6R>Z@(z28<Ir z?G04vHhTn8O#~_@%O^%c7af0lojDZl&7O%zsrTqP5zERm+i0&#{cuR;vbZ@`5I`ai ztulj{7lz>&2Zc@)kuThb65dufMna$};x9Yc+i!hi=NA1#q`v<BWDG>}#eC4b**Ovn zi~P^QcafW$t4k8Lf7ouOrKU;<R1n@>I(y^v$_IBmILxBeg|7n0%M_N%(wAJ0_zTau z<r(KVuQ?1MY};mopBb7k-rT|dgQeQ$JChM3s;BRkT=%zSlwZBwk2Ti69sChy&jxIy z&V05++_6K5OIG#~LBp;ZCaQurBaC&%VFi3t#28XjJDV4_bCYPw7+OQYg4Ev305E>a z|MD31BJ;Fp>t5USNU}PFwBN$7Ut*-1*?`ckTg|^hf3Ybg*-4L8lZxNJ5#Br%CQeLS zJLA2#vD1F3_u1bA%zE5o#45O`<>}iUU`LNV42RoJ8<&tEt`v$18T4jrji|6^ssv+* zCee>?#3|A!AO$Xg*rZ(p+QWBNNeL<VIP?Zm7C;M+4^15U7FfXf*%|tOrMc55=CcA- zLOA?o)q#rACHWOoyM~F5?#dBcV;=EQunLd~R!rKwl~}ud4;9g(DJ+Rlh%|r?unT@1 zA|n+{Roh=?1dCHoC&~}D76dkNDJ6Z$I)0pGkq3a$WG7NWvkJ-qX;?{s@brb2%n1Gh z8p$5nNQbw$nac!cF0plUb=`a+1r(yLYTXT$*C5uj)8_(<OZeWcz9uU;Qx30){z0t) zOJm$=!vL1nbfU0lcNpb9_Sm>QGU7pAX8uVKFdBHSeo48u&uHeC$Ne`?KUp<`jg0f? ztgyO!aP72s!*P4CS6_~aacCutThX{AvY6e?{E86~zOdJVxc<|prlBEhy1`ym<OG61 z#aPqTmnhyzTzwMp>RWpsRHSe)9)@%29{e$TR5a?N`0CT|Y>8eA@SMg;;)t=2B{0|$ z&-{a5C_!9&cQd^1wnJ}+&16T%FE=MqhYyRjH=HIq3#h2X@XHI<S3M1vP1@df{C|@t zpHlg-Z4a^o^r@h;ai5r;;!I&f1NhlR$RO^_OFTLWM}^Bviq*+^Y~BEK1QZ{>-hSGq z@t|Dur|xMQnvpU;b^0r;s1MHZCilU^FhXiMN7yS)>{wef+-#z$nHcrHWWBhO8J4VL z$T`kWT{A|JMyp=3sq;L43b67WuN!GHeLEnrv(7IHQ=Ft2C!BXRfQV)1y=@nwP$m^v z7yy;AsEC5)@c#Ws^o%^;BpfyNuRBP?OyL83H`dGy3qWbfE%EX3J9j?BVFwdjQQ-M> zUJ)A8KPkLfHi|5D_y#h(=+^eqXU|^2`%$dG5Q4`IRK3eDLXQOHU+T8+Da&#;0HRSr z9*lTu!N39PqUsvX1EurfaU0P<s636p5Uq#0y5*KB{|2%qYAgSI-y0ZUJ%?CQqs)`h zn<Y4^TY~f4x~0q1Avrl`Pmh7hA2=co(fC&*U3g{IGuT{NHgx{lABedqYH>=by0)SF zA0>pSt0|bN;h4xUxSxJNlL|6y6D14w3Mt9Sl*<wVNoX}e<ic~Jpmn#)I?^+`?Tn1P zjJBDuTPlu-xwusF-E(qs5J^ntky7L&MP0!Ujj>}&0!RTywAi4^n$Od`kjEeW?l_Jh zdNU<LWsRDe_(!+S+b15A`Ceo$n@+L7r<0t%Xs$LrWK|U{zEYbpKDcE8e!FODc#UkI z{Y0xul}!q#=Haogf|TQ$@r3#J$qtn*as+;ia{Ng{L%z&|$tO-$*YHOm*Yb+^N+8nK z2_bDy6o(8+CoAL?0kcn@Ov}no_NHw^MliZ`P_E-EN&i=SEfud`yH*;rI36j`-Qr?t zfyGyga@Uft8`{{NTYK6%q!7cI(>%qscb_<2&R8{f)224|HzcZ$dK$h73lmMvyow4F zeSNz(Hklb2-dNZ21SsU*HU`j>V>@HI;U^BMA93p7gZ}*bYN${DyETo0fq`5lQQt5s z8CfuI83}|qpcSk{ViG;O5#i&MC7NpCzzJ6CJg!IY-gW;@Ph|T0{W25{@XuoLM61Tq zZ?YoP3MJL&*ROX2YP+4|kG-<%4}WfGSjUT_qG>&Mp{vNv(D5Sod5-Fui-GOk0Eaj~ zPA-279)j|O$vdN-Q>jqT`S9{EJ=k%izwheR%F4>sHDK0E#T67$1;J0G=YE5#Pi*&x zv2Q40KFed}N~Tsin*#Ea6Y*!3>nj&}gR;QLp--@v8KUjY^;bS%mw#j}A-GguUCJW7 z`snU&L(?9QE!;&v<^T2Nd?FK#S9#;m1=njCi@tY{2~Yo0m+U^ron!=KCfj?D+1QfF z_l_#0>Fd9HBEyS&>g4+k^Ebuww5pk7E3wcmn>u*&l~fKEmp%Vd5|X&`kyhsuQ%_NT zQrB4~d1IzSeZS2XE3zkDeRMp(-hUt)eZx4I?b?7Y-~^PSu7Q4tTU2GGpY2MV#BDDK zI!7PC<EE6&Qprw7_qu3PsoUtJy@ct$34k93eIY4Ux-zI~J@m=PaX}=Bb3LfsLpKe6 zw8Ts5^#aAd_4=l9hYz!VI^xQ7<~u+@2@<^W3hS?xx`{2~(qaE$0|s<j>57+`h-`>s ziO6tTn(`wC&A;pyVXqr?BE0=D9bMDcR|$9Am$<uQZ@vWXe&+Wv+d}?N3ovsgs%Q#o zbdajDslL)q6}F2O^}pY5E}k)rL9@=046^Wuk=b*pjvZ0D)$V?9^XAd%75i|_-EF0{ zqwjb|jSC3YWIo=;jOo)uCVkB~^Bz=$9+w}?VGgy+0e?JS;CEAjJn_0YiqFxzt&q@t zGN`ob(JWR@p;Sfu@?tl0KT}VXVbhr1oGm96{67^y!P+^D?6p4Ib;rG^U3$>3ig8Fq z2Y18<t|^8s+^brLhHL)%`}O?-SKBLh&#rKHZ^GFHw$@K-e?FU2Rv{nO51X`~xDRCk zJg;u|(Gm_GT8JA5u9=M>5cqV@?%l&_1WgY2>De=4`Imp^lWT~?IweJP#MCjKAecKi zFwn9H)zm?IYM6Qk{0W4N4X&o#hhE_yqkPKq&2<-BZjymGW&QUrGIK0nPo4Tq#A4K% zgD;Lu9?R5Fg&Wh2nKOH~c;aooRyfdzd3$H<*x|rbFl51jdm5vbmr?9pyLvV8*n2*I zNx-x}<}22eNcC;*VT1$<U?J}TIsrm6TtBIgBVf@989$d-r1u4L@I3$@xGRaEnJzB9 zusu;J1(8!eLF%iOBOw08Tas9io0#Z|^2DQkF3UVWhVI0_pQ=KpudS68U@fD)mi2## z!=zT-G(<CiqosY33dIMiM_ApMH5ysI7x$ocCvu(R*1Yhr6Wyk@t?=_YqJ%hITq!lw zIis5Jt?_EI|1L5zl6OL=_J9EeZ`@?;4M&Y0O&6Scvp^s4hVQ|Ff;b?&Oqf1_;}6l< zLfc7YfUT1K`50Ol`oYff@>_?0?KWr@iX*nyV81bB+_>w^&)W3WF`XpjQA#q1bn@)k z@qV=><SVR=j-NWky*Gx}!TK5{*VC>S6|lym!KX1<l=7@N|1~gU*T6s+Ihq~6ZNx)j zFDfVU4*x+AjN&(9Rjn3P_-=K)XWI4<o0O#G9r@M`5<G};FbIr;8IP@W6m9nI-W4^l zVxUo<k}MAXRqAyS%+ns1W**bM#N02_BjlwcX6qjDe1<=KyZVx+(UqK>X0AZPsog9~ z`}=3D-+G`hVKZzaTm<lj;aqGWovhRRMcUxYc#c@&aXAt0KOVN(Ubn!}cA92;uvyA0 zcUulFVQLjNskNp3J&U(lO>}SoIz9exs6B}dIVNok#)}H=J8z*KB2I2>+a#|3#(KHg zdD5h1NSHI~XOKxzwgg}kT)u9?c{IRcSQIvMe6X&o2JM3>0>Jx^F2>wkT%rI)-v8s6 zVBEf_7-`E^t@;Y^C@m!g0wsPk5(Wp9eulBpargHw>kEcHmlXuia2c1zbBvv`6@*<! zj<hlD-fT?U2SB(FOnBC|2l0%F8unuGAed5RQU`%{iaxA*5w%=dFI_u~w_!$DuafQg zJlNsU$H82+#KWd|<LTdungDW?mE}(eEKh0R7T;X34r36G1Q2%@1%>Vx@`0QGaBmo_ zz;xx+ye`|!HG3F)yAlQL?e7!kUh`+Y;E7s#d+z@xQjOE5-JEjPA;WnvDX*!BoRs3T zf-7C;(>ne}ZeFzi%s|62W7hEi8+;h+U?k+psb>_QS8D6$PGRN;utgBkI$~|$MV{7_ zIWu{$RrUAZPO>YRW&#@MAYfuhFU#ej!sshnYTR(_T)1Wz0E(1_r<WItb$Q3%fibA9 z5h?K_Wr0?0i%M*ajMIN86aKsGw~T8^%|+b-5s1)-o`X15eE071qQyY_Ld{a*16<QV z;3o#qckbL-HMHVDtQmu&6mQ*CRYmjonKP4as8cQl{%u+FWT;i)aqtO+MH@UG9n#~z zq7U%>uD0)2Wv87*F5)&}4&vy6CjwY*D{Q6<cR9-(Xon$9NfW|unsqT!uvL^wYYCQq zzn5DcG4*HB*uH<u>1`DjIYZ1ExmPwmIcS%f{A(w9Hc*~f=+Wxu9qjCuf9^EVy-m8Y z)Zm%)V73!@?TXNJ6bpIm0-Hw_=wJGue*yqD9EhFwda-#G1VRm)7MYEMB?A<Os1BG- z5D$@wYXgk&G;+a;<$oI)XsA4mfaS+PU~-=w9MU)bJmCul%nD6G0Mv!@;uu2eJcu31 zo+QQh=A#ClA?L+>k3t2L=wQOKJNM=&|0{p*xS!7-%FNZp#_k{&tVXaopgb<&m2PJ@ zxbrA`P-frA^{^3=g5f~tghPi0#~nVBkdR9z8op-}wMWj)4F(6~y3O`5jPv;5tEZAf z={xK1Bux7BtVX|L6nd~)lwB$;am2b!u*q1*#N45%b{O~i9}R~~X+)cT|NaxoS}`3Y zbw>`r40fBL->+8zEMZdKQRw(XV|?X@<uyic)(r2rja-$SEpiIJ!(5+C=p01@Dwml8 z?T@a*eZ+6l<oqTZFHt*;NpXMmE#?_ZANGN}yX325c((mDPV2~fDRsD|K#fk}E09$U zYjPtQ_iC}umcg3R-=Bq&+js6v7`c?iCoCua&0ixkQhbRF-P(^WV^KK;n8jf|>FS!u zB1>+VIJVXFkrlQb1(~j0$1%{#YoPGvmLA$9F;=a<LzYbFcJ)zrafo>KY%L$pCwFt2 zziOYI?8%ILJQ&5U3p=7Yg1(*B^M6!S^yUCp1z<!RVYS@AVm)_LCYa`MYSU~g++HJ> z$hY)AaPJ!a6@Jr4FWp7jhV}}{SM(Yvo9n^%qXx6=BrTcGSic}R_@_1g_)!?!4z0<2 zC>bc_ZZnWI;s!v~j8)x1BH__M&b(jj$XfNP>&RhL^;WNHnbCG1ap{g@nW!N>%9#jT zo{?y6nq2<;`Bc5VV5wEjpizw6AdP=oNTQiDct8K~YEK%{jX@HJD?u3=-hbRHWMKif ze)g1u!}_UC0R1l>s(odsh?H#cS3TqAwle?K9okkw0BSDyv3s+`Ra``P3!-QSCWUU& zGKmX)5p5L+Ki40mkFAMY_}_W_m|bg+we1&H&=cLQU=CAkv?qSliv1xW6R^Ki)l#gP z+j=<fmKQs(FRS<NeL5}eKth7TfL9jCf=W*oQ39qs*;TBe#na-;SZkatDGsk++f<$3 z!EmBKWvA}h{fJduhcRPcdp0pk)al1aU*UzUSl#z0exG$?h7KRDR6Le$ZsnOB>t@U- zgZGR#69-4PJEkpi833Asn4f1hYK#QP30+m<cua8TxVRK_7F{|u!j`9G4Ear3aaEj= zsX^~!Dj`rvI7FU=UK#Z~aWo5@Ov4!PDEpk4oGd99ZN09o^%93Oru~<wjCdw4Qm3=; zIW91#Hil*6z#Ln$MmtWKB1)OQjs{3<+N6@;`J^jPtVG!b=OS-;hoAGm&O@d@2h_t( zH)fLdBfQ*AvOli))7<n?rD`5{z1S~{uFsqSvS{&|ke0(Dd0}i^;$c{OiX}l*8%Rw! zLu7nElWV@CN-DdYmZ`YBW(CTa%a>b-%Xo4TtQr0I-wexWHOLr`rdlo{oi#rmE!#L; z2=NBbhC)xD)SZPR3hKW^ea=Mj=QdSksZ(sTVt@ZJw;ZSWVbo5XUpQq3LYrN?cW*gX zR#9<zOfOc~JabRc?z5Bbcr<g%r5EZrQ8ZygmQ*-%r28l<OK!*r|Je6g)l|sKqm$D2 zy+5*G{`?)+yu<;le;V6h&2UCEKP9jlXxqI(em<hfpRH|_e<g@FwkO|k7ybJmUOBK6 z7xxXwpu6O=6`U8L5yM}Z@6XHv^LIBpg@bv3*&#WN<#Gk43oA00)fyYQ<J+JdoR1FW z+N#R5M`2<u*3X3`Jzk#EYm@88ok;&}7XMc44fGd?8hjYj^O>3Uc6Pz{PDu@9A@Qr+ zc2Y8BqU@DGOfp3{0#byKPsxijK%c4)c8W<(BF#bi{QCSt5kKG!4<3Ahs$}atV>~=y zQjPhk?%KEM2!NoUFi9|3j^T6!slEVObnC@P{n#JNVf@l``4~O>j7bJYMn5S!8yb;N zB`(i0*Mt>b@$KTUuCfA?jTr{g=|O@Zu4NzF`s3r{PCsgS?AK}v6ZI&^4r2O3sWaE! zKGba8HyrKGaD!=j=#bT7f-AKNs>z|-x#Y+<(3p?Gwc+zn>bX<ki<}X<kgR20lK}vu z!8Cc86bR|-+GsGSD#%N5`}X~yW@P%zcoTMW3JN=UIW$wBYikXEebXJkm54_dji48) zPgYxdJW;Y&FVn?$_eMWkPPtxDS^0-c?-6+sG)o;|fO%_b9BNe}S49*1FJ~TqngReG z(5Mx7=<s1G>UaEwq}_9CFMB*L^r573&XDU#t;%YlKu_ks-unyozehwGF31)ymTY_D ze80a>3u+o&|7ulDM{UsI%r|5ShQo&O=&YRdFkL87S-f&(*G0)(CYqwg@82sC$_uW* zE_;roVDrl)<2D3yv9Uc_seJF=gtRY|4cvichH=-fZTxd{pE$C6=si|-9<56l?Dz0U zd-3@haN6A1{R596K+DJ&=9zicnur2~`g-a>{8DGl${JJT>dRcRpLXFj*4-Z2P@RU5 z@(N0rXv3m2v?g7;c*Sh^$ZtKq!o<KJ8W+h?eaD%a_Ih?I3jObqvAu-q`uZ1cPuJ6k zn;qcVg>BnLN@b?>LjU?zpFe+w8LK#EkPCX|p}hg6Eb-B+epNH?HridD_nxny4<BV{ zh(+O9(Z#c^FJ8bU&42k6=lZ$mZi^1{T=;v$T~I1M_SDc=&Z6h-pMCxM{MFcaRY$I> z74J!Ws%is8i_MlGof&lu7Klm)IwBg_u*Ru5X}wJS2P-N20k0*#b)h)sw(-Rl28w@^ zEXnB@qFzdAo#=A_ZX}>BdHOVcG;$@vBXN6$hKakUXDh==IVOG$tHQ=sGtFAnasY@! zLZCdM8Gf#G_JETfdIvoF8o9NVP5Ml$91QBJkeL3f)@Ty4-@OA?#0;*dhM+Op1VBdn zy(XiM$gv97YAcsBHx@ZW1<jx%VSFys@-^?)yw~(lYtdHX-B+H=iod70po><lxPq~Z z?#R^2n|yZqYy>vXkIkmj%ir$i{OQG)m<iytB9W-oL4Zq=`Fm^4`XVK6#*B0~UP}2c zFWZw@Z3{1NmU_(-rf4pG{P+s}4mPA%^NOx@ii*2pW7nYrfdR<>WPe9=$!EL+!kGI& zO$}na&0ZG|PCaAe9I{|_-WG&-^|C)=jq*QyrwVGTDN<lVFbyoG9AYm<Q3g%NQ|88t z#$3u~4MQzcJ7(;BZFF^`3dVY2EA^NS$-J-(4;!Z)ll0!o^<6-hMY#rc39v;Zz=A-d zsdB}#W#r2%mo7!LofN}&mri5GTp|J^tO7emcIp521yn8(^6ZHdmtYJ}o4F4{RJDe+ z(tkbcL+-dU>@UhA(0Bhh8wYp_5^=|UM5yJ*!~~o!H&S{WAM}kbk@wDQ2fdcpj$=|$ zh2R_>kKbBT(880!;|zP%%hq>oFh>3yWa@Mg8vXV~5b5i}TenaJn|n26C1V|0U0t#= zekq=;{4850+HY_rIdjQDt5Ct4Yf|rTmVSQxlT6*D&HwciTgUXRC11>i&HoTNfBC<d za;xp=y>P=Hw6rf?OdUQ~1R6Jo)9mjoTJi2xWk-`2BPN7<_t_C0y<|izY#?X^h$zk` zRM^P4L``)_enw`dXN>Q$C~-unumcr2Y}ahDRo>X5ttbQNBO%ZzIOz6nTLPR=b%*Cp zcZp0)^!-D`=)Fe}diIQsKJ5ge@*-$Bd!#atju<;uW5{il;`za`gB{)*5+#9=il0Bf zw69MRE}|TT|6Q*Ct_RL(>P%pB_!128N(qhS&*MWO=LktGDf{u*82r=2t(4csfsDnJ z?$ds9esjx@73?@$pJ0^mkWFdV0)LAeDv+ti-~XXwdB#}Hc_;y1PxtY4)OpXUEzGEP zWfc_Y*9m0{p<-)Q#38=NaS)4aeWN1PAJ^ZGVk2hKjbeum@u}NagU3^!nR_klO;c&( zyV3g9<sV1h^5v1Yb3^gBSb=cQ!C+7Ei_W45<lH&b$eVn-x3~Nl)Ut!6U*+NX&!6|4 zFI6$*>-Nw>w<Mh`GFZm-r!Qar_vx8e2XuAbi-Qo6fWE=ZV@Qa>g^cO6*toc?QO-}g zvDZx0f>|g+xKSK>U#g<*1BPJQ5{y8~!sN>?&n{?sx=be0Cn??Kc>T|#Ws`@C1IO-k zlSYJ<+lbgVr-r=t)#MF&)V{-e8z~f<vH20N01ZgY;!roy)>6>a(n`KG00Y49U`@q; zvnX^%j`XE>=iE<NTg#-|s_DNU^DIbmta_+8kbM8c_Z7>RW7NwS(JbQ~lm%Jigy$tC zu8S9^CMG&LJC{eV4b#@qNq0V{Wo+Ez?=u#AXZ=~8tD=`6DL7wRy|`%lO@-dZ!=N;& zZZIU)yiGe%soit`!Gj(P7oMa1_<7Crz&*g@OW+0EJkgt2^EP_77cB>9=c#MvIy+~6 zeX;PQH-8Ok_MG)70*=??HN-wVTdUmF*To;(qQ4p@NCe$PiQ}pVJnTgivg$L=G9Et{ zXb!mN_>52ddQuL3LnS_f*jDoJS+=srCM9Cde?bF=`Lp5(cyqMdO>yoPQapL%l8Pql z<vNHXaf0Co0iZ{Ka;41#c}7RTgsB?+c))1!h`IMahDjoMX9HPjF5Fy?!06idhU3S# z10&)$UG8Vc4Fb7S`>@kt48O7Q*RSpuiV%CG){buhG@&U6%TZmE4@CoH(x`$rhsZS{ zt&E!9?IHCXuz8fPYC%pw)Y-yKGH~Y{X0KwG-_Lf%#mPQ2NFE`hA@P1oRFEUWzO>uE zz(Oe7e^Z;6n=ZuY*UkN?Q^wjGJR>$7RUOO5CO0BH-1)qFXLY^&5esi@RcpW8+}!+g zO|P4cKz*WC@K|Zw)k0zv7dt<dcQvZEWu!+*;`^t=QLzlkDCwg+$Nbu5Km**>lp}7s z4!coMpaZ~9fyovUD#au0YNM0srLNAELMf1RUR)9p@7FgX>HPU`g+ux0OGgX^HOrKg z-=Ue+P0GUc`ZhhrT=$=k`2Ca-_OQ@UY6oPx$!nZu=wGC6Y-prQo!i=hV?`hIs71k@ z{K(a^2-+Iot!@DDt%y9q8nQed{L`yKyDb<Fmkc6o)_vkVms#}B5Qw6!S6hE55qo=k zR(7bTPdYGyw)HaoFTOk{G`_a25?4A3!kRTdUY-8ljkm9?{OG!`=xxK*v)!RCuI%2{ zLe<@M!xZ`>s<2tD-KwWrY%iM;Wo2u-XwXc|j9Pwu?W?T(roO(5;CkWtn+uPDqHzgD ze;;4GG9j3?^`D?#n3q#{m-E^X2YSyu&7nhIxs59WL<6D8ggGu<K=Y_C4?#g_dH#IP za$A>eMKz3rNeIKdtIa*eQ8Dnap%#gs&+q<d84WMp?f4?l%U=XD9PsP8z}Q5o-RaWX z*vYW?FNf(;Zuy0!3MY>*BQR3|;z)69{~2r1IimU|Z-3!UH$p%3H`EyHG)PH9{oIcm z8Pp10p3optlU;g_kSaE$>a8VJFs6ftH)ZCV7j<Yb$@gI1h_bIA)Ys7=GV%hFO!pvH zqXe2T)F8sjgz>|<YKtiwbrp6Myk^zbWHQ|Y3=(ojsff(GtE=YvTV3Sj3e+AJCyZ|= z&jQ^w3>LLYYD2+y_mS@3?3GS6KP+|nOg{-oR*O+P{p-rNypLkgoE49V8p8PS&^_A9 z1C5QHTT_8EsvjsAty!f*h%>@3VTtjp%WLGkR6f_$9Rk5c1;N9R4SnS9r<Tgtj@YTi zxWq>MC1mC0<>6e>TmvmxVyqWx3ClBw*UM)<{bA+GXVJm46bjzYPZxJr!%d~1_&Vg< zstYN+GH+kvSHS!GJyD#I;p9Rsn-`#I{&aKNQU90&2ReNoN(b`^4^}Fyk`nZV7neWL zuWeEQK*Al3Kc_a>x#VkijolaM6&mh>dwkz?4ip@PJa9Q;pn3Mz8Wk@|EIB_G%rEy} zPR1(Fr{^v>Jyk90BIROuxHvK-WpQ(ZpU8f8$v5h$*zKRVi`w(%G3&(oGu{LKFd5M! zSW?u!Vil^tPyau~9>?Y+^}T_PeeU;uSoZa4{T5};dM=jWpe_XKV_Lv-4TFCs(62@( z9!<^{C-_kS%7(6{!p&Omqg}`cJi<prfWil&H9(UJ@L_Ch%%6!`*A4uYv~)RPBwMb& zEyHkw#`Z?%ffHiw4~aH-B&Lv0o#Nu+8lv8R`C_o7D`<O3Boj_~9sCB#Epxpo+shY% z{4h(02ipuAHA)1+nr`*%)hlXQH))r(i5nZKHK2UL3Pg1|wv+yf|K&bTEo-0Y&o*oe zjttrWeo9NvVMl<%i{_|bzkZxjQmOLSQTs8{QBsnaz6RgGUVZuiVSKHt6J-Lk^k0N8 zrL6VXT1}C<FgNdTCfI%8#*GUH-bR;F`0)9|hYJ7ob|lSYj0##7<Bt)}(|=3v+&&C` zIiUgPqOw0yljm90doUAUQU8s<UCX{i=_aL7m$Ht4293>MRh2WfHKD`9;@U9CK+U$_ zyQn}aD=H#yDKQ-5T_HKmL|jmt7@ri9dRa=GNM*dHqmZ{F@wf(Wm+#>;xbxGENrua8 z`+=r<?AZz*);#2e2r!N9yu&7>(_J-%62+;evXkuWZv5PG%t?=m!R?HSqN0$1P;{tX z%g`3ljIm&S4_@l&RZ|E%iRaHNuZ(6t$c=ZaKNQD*_&0E~34u?*<cs4zUft+@X`Z2( z_yV>KAa-fD%bmX5&BzIh0mduEj!J#$RMcGsL+L3-FMD*9u}2t4MreO?SAqHYDfe)2 zc0PE}?+UM7Y{u5DyO@)`dH&FnLy280rc!__%FvW2PMAcUfAyvmm?c{P%0>n!lq26g zH${wT6(4<pR&(qWdVE{<WxM1KWa1m52A;=RkCf)IZ0?|Xy|99Q!JBUdZACsLDbg|# zB|ox0GfmD1Ac|(>$hmw*2|gNzwNs}sG(tUl^r%)H$#ZwL@QpbD5=042UQNGKnttk3 z$ewAt{(ZLc^6~)2L_PMo++Sxfc(5pi5d^!On2FkYr?<8B!~H3E>Qd4PBkFa}f`}9p z(_TZmc<c^}(4YY7iE~Y;B_&pLTwDb$H(i_fjB9Jzp=XZa2<FMrxzg%K%+`D=d%uAG zDzD+_@s&q=VBEqc#Rh^lz#emwhDWJu|Ipq|Nc)VOj&T!av%o*PtEl**yYu|Dla`4G z?&9oxKW^0I)}QGbK_3~b$~bI-vGK`s=1ESjWpm6}EWv2C{i8)ZX)7zMnBS_T<qu08 z?d`2Tdy&e|<pR$kW?tj#iy3~z@oPZzBI!H#kXMX2mY!XUx)91+%<cmQq-}h*_t6>@ zDNGbf2;zjp*zTQiJ}o(R^0^vxS|kMW&(BpQC3Jf;^~T`5UltdI{GEUtp=1n!ViMTg z^;M+v|7iidW0uMC|100sn;>#&wT}L+Ud#lvMLzt%*FsxHH8?l3k0%fLky*+yB^jxV z&F;h@_KV{lFmvV)@+GApO{q+9UPDO0@}S*xy>GkIRofQC9FJRP3QQ*7k=+T5g5;OG z`}SPP?V!rY_c~xVc`_OkwnJpBH3ymmpjz0JJ%-p(-S<&k@AZ4}M`5N9>Z;BaTkh-E z+mfxL7zT|h?C0DZxXI;VC#oa9c;2xJ!XZZhHbYB>+!Q=hpHfTlamS^gdi+;NUrXPa zpQg2q0&1A5r^>$iICcGj=>zxz*ra8?@}kGV_=0a*;dhbLoArJS!Hn6fP6HH_d-an0 z{(){gQiB2XMZTs19=6PdVL19IBD7a~$N71D0z}*wp4Z|2Vvl_oxdwRmu;DV%<^!(t zI<rueiYZgJDUWGrr0t-FtFB=UGyCiFV{x)g`MpY15<ip|YEj7UedoEGYPdIJyBquA zz)yl6L>XFQyCeDJ$;cgp!h<!%WJalAwD5+M;pil5UM`vx?+~2CZrxf!tY`a^*T&B~ z!TjiRD5&sBOW!wCLa;w#HfG?!&T0Q0OHA~xD<4kJNSn09d~-CwVDbnh2VBFRu@@TI zOT=H7qlzkAvHrGgeK&m2csAqP-@i$}^tCh#u`(K@=Vl=}ZI-ojH@B}{K7TsttX6m? z{LB@7wRuygI_=hUwK!TKy*D~s(;==*N=8T9J7N6$>|d8&NoncylX(9(?5sO_y4Sid zeV4vJ^zc#^GnLd=Q&__~;JmSnkjL?_DEkgTIgj2TO<x8*=>i&+YyS0d7cZ_U+G#=_ z1dVRc=q(dr6>P2i+CaIhy>?A7Hqhu!(bJk7G->w@c(?0$?YZ9`o}Q;U4E&401fUD( zvS+w&n`0nsM!JBbg7m8-_dmKOq0G@=pYZ$P_;x0|_<?ge`hI-*ENvFGe|x+=&(T6v z{|asv-3RvVZG7jwC!j;U=aVSrT0~ci>0zqu2A(??964*ctxuZ6x~o6wx3tt&S~aaZ zXs_Fv+s+b0xe7I_UMQjpSVR)$GL?iIU{E||%XbzEJ&lV~@AD<)`-*Y;0|q?H@9A8` zQXhl}!Dq!KStG-<v)5AYqUxocOGhI+WXRvjRk;W$s=K{Mt7bYP2OMLZgx1rfd6^zc zU)CeGeR^U{F+4`4rvhR)7+hOf#q*^~V^<ng?0tZEjp~8%8n)SeD?2gW)VPew3_q{Z z6Bqb9!1UR_r{Z*plgh8(e(~N1`ngZ2ZfOheV>54FE8!8i`8qNN&i8>KF1j93itPnZ zbK%47tPq^M##zkv`x?a_*;OaRco*Q3xNX6vGL|O*S5FViv-WLnA#0T=Dc^h8*4)@( z|Au#%k#yFTqq}_bI~u~e!I>Vx?DsUr7g1bZpEY&rmX<@pW@u!8+oHr8K64@92ppJ> zPU`feNmr9EUhHNwEFv=U%|jiHh0J-;&IPF3uf;3k<;4{T7^MZ5TB4!+W#Z(?1;Gc* zh7O5VoQoSimX->s`9R;5r}KjqEeSmI=TRS)|I(7WFkYQ0fYG|p(+DJ87a;}!cv>2! zZs@TqE$su(Y|J%Re}5zUyJ)RozN7_hU0s|aubntCY1*_s$BQI{#8Ue5g<fj6mhYsd z0ii_xwLT!g&uP`rAw!CxS#WGZGx1_=G7TumVg2bcYL7qS&KMzQ&1bc?9um~ws93_{ z><-~5%Cf%mqcBdbA~rpE&~@ATHM=O0Fpgh)x9&{R@#EnuQ~vG}ZR3$Qfd8T8rf7V> zZjHUv_|5wUT<*MWA-<;?3zpP$4s1$+?&gneXl))IIQjI1&IPunritO<w|S$lKNDRn zm(2oWB-t4K!MlYvUWv~bQ0^$YE%HPM&$)4_9DS@QM%8rbh~@lC&`<RQeR=cdO;>}T z@JCcw_^yDn10L_Je@t*J`Pf7==^r@o5ktZtQ1lc|UWsGDS*cq_fN%C#K4Z?Df&KdV z)K`o;e#{0ImhGEwNx@Eu2UX+?Se6zsMf6X}%FNt4)z?y#O2>CKPJZYMOi#y8jF^9I zy=asXY}BcAf@=?dVkf-pf0tH=Zg_}69@W>?xdCexKL(HgtjY4WPc!!FDsc_<D(U}5 zj}H6RQ%g(h=2&av3;bQ}13uz1v-EVV?8HPqdB%*rkOor~ByPA4145S&Zps+Y)*atG zbMD+o+n-sszP=Z7bH(wg>Z<Mxl$W!8mSrdbk-T~=#wg#9)Jt5#0Pp3?aco<FgnZR! z*PcC`jo`B&>fshAh0T20lmDB=nfxs44q1cta3l3Gb{6I%ft?>O$(Tn_CS1ZrMO=&t zX9M~=$bey!&t{9QD$vk_u#Q#<1BMUxfxsjeqVQVvb-<3=*#IVlq#He7z#lmtG9HdJ z>WjiX+wrWY5LIjKLAp0|bzGFb8^w~jz}Qe&JU_OQKf@ah*eFb77S-MTEejROb#3UV z*&vDpVv$Q>y(UO5`JC|sU>qHTWvoEP)A@eF_=KD#Y{KN`aMh?;T_^kaG*Z?G0xH8# zma!}Nu;g~`Ft*)f(3<$7hIwdf5PKcLg!5(XmoIGWx<DauA@wp41Zj>%+{|M5J?&^j zEylb-()ce!np;|oMvp!_|H`bAZJJVf6cOOkr_Y@E59autn{D_wW+T5rFK`(i)cCCH z)_iXg={_W+KrC7R{e<sPdBID0Sz5aLcwNXsXH)`0HR#{XTSQvO-k_lNpZZ(3ZrgT# z($Y1%{&~DnRk<GP@5#insDbglTFE<>5D-7qXsMP+gN+k_{i)_#%M^P^7tN99C`(C6 zIh`o`lF-6^Kq*?^W;}KhajMhecS;+Tdo*ckhaOQ3ww^TUBUp)9-~Br`?Uke1MD51g z@$Vj882TU5($6(D9a0&rNEvU<JU{z-i}M*c*I>$Ja_1rP1>q}l19l+E*F`0nY-0ly zF*xe!driPLe$PkCE~n{D5h_8fvgc4y&Tce1jIy$ZnNdhZ@uX>76*z87t4GkWoE*_! z8OhVxH(|BeO#{cv`pzJ=+NfG#w>Kc>4leW6t6do`aFOgV!-P8m?73oT=qtKJM!&*a zeo)mrU1%gc)oaXTYy7b;NX(y{_-<LPKPdhybNYVBhWFUjcv))gUZ3N-`qywnL+z*2 zCp3+Ab8`~}I+m&x)BCrW1%69uzi{vN1oV-jSng$-_gOz;QO<N?_WTT23v+XGKtuFA z8#>*%q|t`PL6v<oiQ;Axw{^dw6<LPKOK_`u#HH*Ze+#(Fb(nWNYp&{F<+4&*V)XSD z!M*?iqQttRj)c%rz6Z2T-pGsk;~0G|4Q<lS|8{R^ZplYK3zsd5J(w^D%Ap4o#U8hM zYARmc^5IC&Z`0@JVOO7}zZTqlE&*uya{XVsLxO|7M?cOt>2NsMK{i$n3BfSgOo!Lk zuHVgVZ`;7YqlHW97|i;&oOJ)?OCh|l^#z@Tw3nQvYt#APwNrNQ-@inq>mm4FanF(Z zk#S7S%7&5>(M~;=o_Q%j($~}E2KNIX&mpBWV9%B^7uZIGc2^S9YkNZ-B3um4lI%B; z+Xo$m1!)ZziaCCZ_>kJ^GWT~XcV@hH_e7qaAgJ%yUnFr|l{Uf~Jq*x0W1*feE_Zuo zk9|tRw{OX%9`i>gBI6}H%{O);tFx1R!LkQPyJenu>5U(sQ0V6Kb>#9gJ&Nm*KQ*_i z(d(cFWnhEqm#4!YRTKaPsnX5*&eChG1#}{AB)-Y#8gBF1e1LDVbmys4D=<lG^p-CW zT@#ogQj#9bzd@7xi~o-9fssp@bm!)_JDVjsG&fGD8v$~B1Yi>NA*d)Dj}e)J-`vjX z#Ckc}JUNRw;fj55xSyaK0~^Y?T=`Z9#lI5HcXod$_%=E0HIE#pzI6yYmns}}(j(d~ zUeWaZd&t5}M6i^OH&dfEF%a7(U4rjT;z)x*gShP%&Yh!VvkCS#6W2aLcitSOE*%A^ zMU%5)tMmdkm4E^=h$<SwuUG-#VW23dWNFRZ^`%Se086N>fM^nnEt;g)SL__eI5Uw0 ziiiAs)nqn*0dGSb)|xKPe@{Z@ypdp!7%o#j>-o7W7%s&TMSZ|M9+|0&by(kdmsVS| zZ{w*@?FjNQ-koK~HH~*}0`x)2-%Y)M8yhuSR8$oIchmpw_bv@<{P~lX;%Qk~YwPck zdopbO5{{_dh5mrCrwB9a&BDs_rcW;Uh$;z^5S*r5)lRn_{v2C00o1B)f6!4g5{nES zLPdIUuYYb`#L#)Idi(4|S*W@B=Ez7pCnu-0jttZWyqV4f9T?w-6$cGlA16^U0c3#P zMp&)(_iw{B>FczPHVqNf<kB5GQse|OuYwnnn8-hWTsD6BqD9|v3(IMV^w^2#H785h zOvU@(dL1xQL<}Y-6(}=6B_so*#pJQWrocFI{r^ntWJ7UZoHJvFl;G;JrIWZ?{<T2^ zUF$Hz(<e{Ls&y6w3KIh3gP1pO?hBhC5GJJ0pwtEzfO%8ips%Ml7;EC^=NGdPDPK-G zaapI}@Z8*7xG_IJajYBZjGl+D;<flAKU1h7#|GYdDO2`UV_aYWGL<tSGC~eM^vEJG zTm$bmo%uB;n?e-rD5i9r?i>5bChT$jK<aXG?=b))acZo9h&h5eP7q6#rfYE}3qsqN z06|(Pz2IT|=(EL<tBF~83mzUeeFg)<pzQ@AIx9=mm6QgmN=$WfYG`c4VUWDc|7?CJ zzok~P^;-%c6gs@F2_3(V;JHC|qfkkmc7k|I3j$D5bl4(35XceI2i}vO9)|Yjh*9Jr z2so}Q9)Xud@ouG$zyEvtEzFp)m2k*B3jndW;fuC`woFNX!JgpK2<&N2&+&z@0{|_T zckJ9bf@C0yd9elHM@kA&Wp=Fdw5e0iF~ZfFj-qLk4@ar-+Dk%Db*>s=>A^|=d2Igp z&EW;sL))8t{CN3)UH5Py&YoRW6lUGDjs+&vGCpWv%`}89wOVGg{T1i(4w#^-OvuHa zdETBrEw>T(<Y(h{&g`>uq67PZN=t|L@87{6SK$r<v16OFjf;)V5|Wtr59M!|3K$h) zOSS`4*mrohie;{@c>~XgE5Qx)I)6Vzd7|E<2YVyh{gze~6@B;|L~d)W+5<m;Y%9T^ z0lJrrpFeyUT`Lm(Kn|TNWUbDo_5D5d_-mG{WdS+Upudhu!fzq3tJQey50;8bM@1#2 zIqaT?)`lOFUgJk$y3nCpt?j}DVkMqe)eD;_utFEnc}dzR!Ps&@>t0;xzJJHQn3$Sr z=Zjyw(1=DCOm(F`bm&=LYIHzUpBmmJ>FU<7!NZ3)a<*y0I5|Dc0*3i?SDD5VVvj|` z<qLRZ#4CM|L5ea~eUI`{owqfhiw%g1iBS>Er%X|}uG2ErEbIr`r(1u}0QWT_T)9b& zZ()ew&Bj@0|LgMNEd|yv`FN8x`hqLS`Atg|h#^7594?KWK4-96to;(-iTqoKM%hYF z+)#L1PxUTPwm43?YL$WzzGFvy-EDfme)Xa|vTq1LQ?hB3>G=PxNbx;rTv}3Mo>J;s zJMd@jrl#yyn>q-s<cOPhSF)z)=1nQVTsP)id+Tw64l{@^aV?U$``3(3z&0uQb$9+B zQD+{OQ~Q1KQ<_v#8A@qVA}@)QjFCu0lDSfmOrcOBnv_B$QzaQHL*@t}G@!huQc6)8 zj3vsDDEfVl_xfJH=MNXEr{|n=-}~Ns?X}h>W+e5#pt|$S8Lt58dxI30LlNrS`BjFG zzE7dLplfV=Ywd@p&C3p8=-$U3c2`wp#Drv(*o+YqNznpM-ys13rF2QCB}*D_W3#S$ zjFe<Zm6d&7z5Fh~)v)mJ-+)6LG&ITqkUR#LWoM7Iv5B~3YS%Dy@Zete&SJOxqO5FF zTT6_(qv@Krb_=H7CDFtA5|t+TXjGIPv0HG1Y{P23+lsEZg8+vLQaca5;`n7kGgdCV zXt4ctz_!%Wt0v$vkPt+Yb8s}SXY0;S`~d=Gg<AMWaOz4!c?9;V`e#wC*xKG_e{-~O znw>j)wj#A~);Z_0x9fH==dogJ-*3JFTX-5IFo*`{I6G&;ePFSGC25Y{Xc24j7~`3> zKi67ofkB=6EX5xw>_Vnzj<vJs-~At!>X0E_b4`R`a&06Y9L82wR>-_Y(5@Ce9qeN} z)plctw9P6X;rDUQ=n%3NNIbG4-#?J>_IT$NOivb^ohv0-sI4fI%t@G*7UQ_~lH;ad z9e?LXOA1I;4uiHHIs_+!v04L-jG&v$J~KyRd<P2z)4s7!MB0}tZdiCy+)5h&erwVB zTVo?KxAaSwYWusI0+Ul^`<5A0LRZ-f1bt{^a#Ykq_S=#2VhYm@Uy9|d11v_2fJu(t zV63L3Adm&%5j}IL?9Y~_WYQwuRa`=sjj+mq#O$VnZ8m{?aQw?`N1#ePme_eK%Z)}h zK8Qx)1ivlZe)BqU7$f9Q;QZMA`*&)XEu%zbx7_<KVR1V!qcfJ1R%h<xyDHl!l!1|1 znzS`}^o>_VO~iI~-zp$Q&Sh#be#%fuTT5#cc8<K`B2UlN2d*QGZK<K2K6v<EUf#Nz zCvW?3af#2`>PMUSUXHNeHpaV}6P#w+nKO0;TLfw@X!|P-V@sbsLmYeMz&tNeVhQwh zN9P+oDRmW<u}7y3_pjqj#0qZLt^%zQ;qrk$3xO;bNZ!g?x^gAQ!qiEVsK?nyTXv9< zHcFq^I7~5i6JV=OP@BZMabTRJV~1j68H5?S99xw+{Y$`aj@&qV{ygMp)5NKz#l;3O z6FFl{=KnZ<`_G0SpR_*OpAdmn)h=DW67$Wk)<YXYizW!*ywGo!kg<E6C|pA0rTN=8 zDWNUBe0^s(507FMvyPP%<y9qS(+}Fnb!3Hk`}&4!8i)2aFnE39vVRaaZxU9+030OK zXafP&ELsW9Zt8~m`dzfN6652q{YMG8as9e{?j~E4Mx(&{uU;Lt?$xxkQB?IQwe+Ej zpo1q9W%abhEAbV(&|%Pgh%73H)o62zqu`(nhpfWP-#uvLXSOoxWEzm_LkxQL5<TFb zQ<JMq(xWy6zxn*~T9<yiAPtD<;V99@a_jOc{)yF}NIV9ByfEI;(R9Fo9ZzPT9!D*$ zGy7PTo`2>i@V_a}GSNGBg!>c+>&AwRksAP!r=sIoOews7#IzbUDtUKmCQH}q(R2U( zQ0*AGGi7Iv9Lah!Cu28<Pf3iUx8W_(+*+U=DWjMRXj%TT$ZVdIQ}xZz`yO9BvXq`i zxAooP4qtL%KvWzC7Ixq6SbU4(`JoCuqCMQ26dMbF`{v+4vhl8y{u#ruJqja=K70^{ z$M-rk1C2}E{&GWdhJ(F6Q_)d;hS-kSq;9-^pfWuSOyifBs>mtkUf^KM`R$;X3(&&v zhD1x1hb@G=fn~g1AYOJK+Zc|<rn=%JwZ$D!9hW*%vMsB4lW46GGM_cUj;N*i#dk-b z0@;24H9!fYHTXJU+ioI6ykc%G<OzflKrH2^Ed(`OIzUteK|x`=$QgRF@<(GMv@R)u z5S=>+SHH--9LI6lW+dv*Ph7vQ(S2eN&XFHyO`BF#QzH&-6|(5@;0I53Hd^jmG9N&k zWV!Ad2RoUYLS5phpg#w{7DFMxJ?zd4PiXTWWuimPPC&0vSfz5i?aKo&{p#3I_vbJc za6rF(+w#S+=R`~F?yPo>(ER-%8c4%2wO9nNU_#QbBGyiemz(b7#4MY#Lw}YGDF<;t zV5W{vhyQGo`{iI`lShQ5n~i#YOIR4SxX+>3Z1#so)*e^|>5oPqMAJ|E3o5>U6$ot8 zjM7`3)GU{|xp86BU0nw*(Nu|SM-|QV^f&k2_WmJ~KVQ}l1{8CtLDLvqCj@6^ZX}H# zEx9>6_(2ZQBFm(|k<r$M`<mJ!HKUajFK5sT$33Jozl~$Ssm8gO_o4~x?Y{Mrdas22 zeMXvTf-GK;lsYIM)Y`mb%|3XfA8E09E5ElH_FyWeMpW@x&SQlv&Lj7BYK@Fjef0D~ zo;bT7y36ihP7xXs)WsH^7<{lr^%PhHS;pbfi5B)dwr}r(Z%4Oo4T1C4w|_~_l>U(% zYMydFq_q$d+M+)LGt>u5>KS<dau5(lb>O$ko?ehONu8`jeG5&jY}-0c)Fu_T#%n1l z9t@<~oJ})aTA)XR#J`WJ=~tGINPiK~9gsS^OD#6k(-RZe*|SS&vJj4QMkQmZiSp=5 zYEaF)ce2uHM5{yOVnByoyGlKRLCfszg$@oeaP);SQ>QBZiC*aBvnXv2**J7s8PU!m zSM<wxZ&Q8oFf|6L2gIcb6J!)$^n`xfQ;JU?924Wf&h_+s3o7IGfD(-a>tM>K7gsws zM{nJl?Xr;Zxn5y<{oydGZ^;hcN9fI2eu&0gQ_cAICm{R;yU(GGKe8vbH|p^DM+?D> z;`<TQAwSwr>$S~KsZTZ#NkJndo4SBDaSUdSfLWp-nD{rkwRD%6ABXj=7K936ljat8 z8hYMgP%>(@Fi3I#D7|(-hEBLfsfA^QPU5Hl^TNYpISZ6*0;m;Ap8a-6(g}CWr8QBz z=Qh1FjwYm!Syv09|IN=w50Trw`*!JP(>Vu1-PNN+gO!LESFslmge<RCL}6;VCjIuw zFW2XxQA{x96gVes#s0CTP(lIk;K8JOBQx=r&A7OU6>A){RQ7}G&ty3=iw<`5dxAzS zDbTI4nO4%u>SQSj!C$_tjys{$XAUWcAP(Gp`|h3P&uC6NAhtF~kyx1QI4e6BT5seI za_8Vv?iIGNeI!RgOC1<hfE6NbpJvERVi2s@KhRZak)wn_*t=5|M5#mRL$U)EokG*p z14~5tKa+dntdKN4mFNY}6vIh&H!%z(ff`l4nVO$>>!Nm(|33P19fY{Vsj>niL}BrX za7@ar#g<Q{U(+Oh$Ykoxoz28+QxTZ}0QGo@LfnFk`4Z;%#ftz&Jx*Q3V^T$!=HMVv zA!F&b=i^`3QzJveEwg9t;2Jp%Nf<z0c|ip<!hsGx0dKK(TAU-jAckNvHf;3hK*A=P zRB8o<?){Omqa_3vD!4=wL!1XF{9RL#5fNxQaPY+#WQ`pi1Xy6ydM8p+*rUIxA3W3M z@Z(us23_y)CD|p9Bjl5ZE@g+Tikcedph#dKu4SMNl@EtSbKUnJyRC2lq{Ll#e%|G6 zU*}9!%kL5yT3xZ2GJ_zE(R5e&-Y|ZthmIe|fVAStlh51?|3BL6Xa*WPXOK4@Id_h( z7d)f>{ri);0)}kgw(ZEpP6x{{p2Qp`5vquwi#!-GGbP2^a1URG&D$hF5!haT{%^Yr zyoKDJeSg>H{pkGYUVP~2i)2omIUA`R`QWrbc<xl$5jq3rT+l@sU}N(RX7rtXwg`t8 zq?ONj{i#1$or#aM?8^Et9*vaU6pbM4;+#S9rEIs%p!Uk#T>bw2&p_(s_H7O<E-Y-K z{)HkLx(ZK!sCt8W^6VS}4Zdw48(lyBL)^9MGn^xb_K4L7O+k3L@QzBiZoaEm;|Y70 zniUxS{n}s9^?bgUtPE|oQL&03Dgk4R91`8(e_R0C7o=kSmN+TPRVJT4tuR!jv)1t9 z=g%!@7C`6Ai9Yi24ZM4|%+6s`Pr!PnYL=1t<k!Q(;-EyWl(aN1rJ?QSx;Fr}Z=qKL zL$7w8HfhqoPoI7vMw#?KSzCU4+WO<nSiUEd`#`!qyfs5StU8Wtx$=o8=F?|VvbemS z-#Z9*gOZ3=2jM|N0RQrQasAU^ZhDv!Om(`yJXYm>i^qPONrP5W2zJ_iCutj%Z)n{H zTKb@^Gy0h^dymfuiqzupa%)r+BE&x10&BCn-1Ki+Kzc(Z<Y}S~ctj_NhA8Xw^?l=K zq(x}||GGTWm-Yq51pL6+4Vo53!8w}}6^6jdxr%cmpE|LSmAiEdSL;-AS_s>9j`AWq zGXu&gr9g(&RBKLB!`(S5{+CZG?9v&ps~mag9fj-WtqG)~RC4||Qc_ZIkKMg{`uOqT z5QSMO$eOVhI5N7g^L?+*aUXneZUn7oMXmAkUcGuA6jPxJU=KNy2IVz>i?@3V9RM6I zvV28FHP4q#Ot``Q0^+;qK+wa8%C+FGpK|6`=8w5qH}UNVgd_ymKY)OZOd*`&F9DD= z6wV)DLBfFp2u#QNo*-&vmzjG2aW+1oALbEo%<FpabDD$xX5C}x0MRb?K~T`9-ZNy3 zZde$7EK!zMUJkR35`%OMOL4?)Ra&ew{Ir3uB2QmrsZ-*xc;{SRwh#L$pD|?L(hA*4 zG8n51K9qC6hI5$)v(i-)T2Q#;0hKa(ku;{U1Do;H^XDxffrAF6u?T9G-?gAH<}$?d z-9(*^61Ww2fO8KEim>%&f*`XQ<iG@;y>Ul9E|nKI4?cQ#F9IFaZ3aJqBQxw07-)0* z&*DhlHwn=a`I9g1rfb%0?x#FNW6JpPi%85(PISS(^%!R*9#GE=1c49^umoL+Qn}?E zqeny#jP9^c%xpR+lnfd>WbAE{3mN*toue-1UeKx(5uPUsLcz0VKptnY!eWXcdcnXi z&-~O?6m!Kp%s!)W`G#}yzdNiP`B)Xm5StoK6ylnaVf9+6uIIN?z(?Lv+?)-)2Fxtv z-)^9k)knKXw|z|pmYX(Lou{KLCxJ!@GZ55$z)ehZ_Jdwkx%0_+Ul)K39$yH3LOQ)k z*RIWFAh#H@gr$dq+xm)M{AEFX&+HFaKmHF@I*$$Pnytw_rUl2c!zhHliHr=p4icon zzxF@u@s!&Z0nhH;;kCmt6*%j!aGTzI==fy3gzom4IgGfzrkWYVA+L|C{Eqn)8#VUZ z8e$Vg%L}{Fv>@a<c2r3Zkz}-uFNg|qNPmU?-YQJ<HkGNm+n;DK>ugP)5lgB`^<OBT z{9Rd2Pxga}?se(S*>SKWE!*327o?#~!WI*!HeP}4zt^d##GtzAKlh@6si|Xur~DT9 zG2o%Z|Ed8jBHTT!D`wo<jigOYO?HnGNE*&U>jN=VFF-5Wg0@X_;Et_hzUi=+*KS89 z107VzBI<*d?;qeqn$OFpI!AiWtqeLP7zc!!JI;ZFK$Ia=e~d388S374A^{p}3px0q z!;;%BGm&!2U#E@Nq`M<6r6u)VANlQIU5W$Vf#JT(R<HiT`v5YK)RqnRdUdO!sEDCC zdR)Qe$q$}AyG(}xTL##%EPWm~=pH*kTEH!mMnQHm$g=s$mvS$BXtC0>Zn{diHT*Y* zRw||knkyek3Yc3xjX7J!f})PWp}wUAQw@Be`zkxmpD$W5I6FHrF`7=gS4S7G6Cw?L z)$QMg)U@PV^pv>|0Ji;It{30A<AIUL!PaCxD|T5JN(Qe2vRM2uF66=D*49>WP6pUA zM<|VY65hW)zO)f)%yzv<K7QPjp&aDk1a|+gZ##usA!;EgR0qyDk<ZXfn5l_VgP6TS zdI6(HY{a{1g}hgj+u+`#aQjbWByHW$dYyZuMDSCPljCPXR~-$|z3$X^03*D6UC|v* zqnVJ%{A4$E+|sdbvAuG68jVVN@fKd71B`Te(V4NVds@w369<nj=@Ubj6!Aii5&-zL zK?n2M7NiA@V+l}s@qISYS|nB7ciBg5<N17ymXVf*k#j+7G=WrfOjG*n7!7k{>|BSQ z<HqIU2lwgKRCN1d-fxU9#lXNC_K2Nbe=w3(hr}9A`Nju?PX$FqDS<0MgSjK(1iMq` zwT+64Y)Ou^@cP}mbt#skAK~#n7gpDyLzUtZW^kouLqh{=9S38WOkV37t0cC#(-{y1 zmOU-DoJX_YSCaTtuXlHeq#9uUroN%!Tk22{7$I1cqb#;vzy2DOJ0S~p$xe~z>;DuI z*5A7&`R)eP2*ejK*zrg(sq{rWT9B>Qty}7;Q!Jv+I)6lH_|BcG@-nz5zqnI}gZ^|B z)Xlx-APXQ(0JTkLL>-eYgd<Q^I5?<OLEUn0KBO0u>o~?z{t=v0dsKxYf}~><s4-M( z`NSy{cK%J&P?a&OPHoN_K8wRT$K=fQ>l>)xgkW;>&HsOg-hrq#8b?2=&gih}4cEn< zxDbBdqo&K)OijkTUA!nMV8*f=Yt0*ec+-L?4Np`WLCrxyG|k?AAnupBCVkUxB2C&D z1`tdW1H+y}y?OkNnJ`-YlW*R<nV$ZQlgC7nMJ9-|p_uAetp(Jn@Y@;Uz!rB}FcDow zZ(R1gxLE4MQI00{Efr8kA8R$KL<V-9^%|>s%zLv&jP!35CX5!b^wuZQJTzzloj-Tb zL=JKH&Gg#w$%I$;2P7U<uGR<b*G15p92?DmBR7SOM+%=k3-2r;XKg9*lTh*DfQ}2i z&B~hkdIg(_c6J8McP4jQyl4?)%aw1Lo0^IP=V2;saR)iZOVDr2xye>mHRNVQ4OHf^ za88}t_MoEYk7T-#`26$m^tZTkE-~uMPt3nXul9otV*rnZEZSIu6gNNXM^u^k5w*+) zkr&FCo5g`$AFqQ9cF#{fV~}D*xG~Y=&~u6T%AW$if#Jvsbm^IQmb)K2tc>pgl%dA5 zeh0bc+{Ie>fI0zCNS!~00kZwn>^_iM(M{pD3>S?WG-+UPjW6rpzULW;<1G#sKK4qv zcCCkC;`tXYQ*KpWZvMOZ#VSq;A($Gv93@$g9!#2`psH#bOD;for%QmPIDSo_&7{Ng zCry&y;w}V}QE0Xe<cFvwBMupow~(HTgUqt3=zmav-MQTt<CF%T=8TsnaZhq*B`#}g zX`+We;@!DEeZ1GjU+SeFyJ4nQ3JC-`?%%c~cWTK`xT<b4J5QWgoG|{7guw4v+#2xW z^yxV`qLg+7@Zx_u12ucJd?00yEE{bly~Q298O`>KSFXSf?wUR<a&*WMtzk)OoAY}7 zhCjH%kHh2;Rt&^IFs0^K8ySe*^Rs9HDu|xTWlDEeeKVPmiUCnY#U@ne9DFVIvsu_f zhpIIPfz8raJeHCYdAotY2K<?2s~2<o&o71C3k+nyrkrG#c-W>-cR6EH$949s``+a> zJia^=#Y4teEZwZn-85Q$U6)}Uf~sa@jQA>gwfeNXwsQ!YcMdyYc#&qmdBC3`;bJk` z5Z`A`<6+Uj;#OPmn6<JqhIT6SrTa=^b7;?=uP{b3=H}Davi>XjiaUB#FY5QwJ)}rD z2rZD^SkY~;cU2b5BoXK$SPmM5!uBiwK)phXBwRBd-V+h_z}2fiXl-yt0-H0on8^E? zNbBi&&#x$=K8vtLt`7n^mk7+Bo_{+KajLJ(=4uKJdT7`kqv0Xnti-^+bv*XWX4>k~ z0(TmOn^B0mF%w^Q4tse!=<wMn(-*HQr6Carg4mH&tJH%~26Gp^CNdrBvzn3KD7#G7 z%AFXMXqnMC8iN`#;RONUq0HSBba4g5awZ^1)-{7J>PC0mj1KQtj{MYXiOtUU6{7L7 z*oqR%jw{jN#O}lYC0B=Lmv-fCa?9WkT>I8MQPUtW#BBDoX$*kIJHK1aos-ZC=$C_& z_c=j|!w5Z^Nxl2`SNsfNLaIaP^D8bs^kX<{;LSAM9Hp2m;xWQ5yy8t1XU&>EV+MRF zL+vG=p2w4t$j|{Mw{`nR5XdC;{6ww3;0A5=`IEQF-sgtF)2pdw_Bna7zyp#vGx=*F z49hr+$%>gdA(PJ|_zfG8;ZjQ+^mebJE#alZnQJj@*k5{0*6Cow$_2}pD+I0PhN-3x zh#W0hF6L9DEg$OZFU>haTSLpj`^be0yO<-hB%S;M*%ghH@la0@0N%Om*h>W3Z#DA| zlS$#(ZX-9gG;-bu!C-fwzVO)`QfJ^LZt-18Ac@cJy$Hk_YaG-W(^HEn^Vq)(?s)o? zbUMPPn>uAOJ#aWuRQBP6aw#{M`ykQ2;??7Xq4u=GFpmP^@D81LqR9TBMHAzZz@Ns2 zRF!yc+?W{=AuED2GywU~f?z^(tIe76im1x6@G>Vcn&Irs)FFm@EkqF^1QRXcU1O(7 z2?NaH+k7J!sHV%duVaJmZDGKsK!GoIb6hla1aF*_GJbDe6<NbUV?6hwlpr=oogT>^ zYGlb1wJ;K*#9MPc>is^s@)-RMqr{OFr}|=zBX5`_2yCuM$L^1Rg6DI6RA?7WF)OQG zNzx~I)l!u4zrw~9-x>qej>lal+1i4KxvTpTP~w7*(k)`hX`(*To@U9xl!c8gy6iGc zc=PNMhpmxm9wu5YLe3Q(0o4ad`T?S+6fRNU!tHOHKN2pG>Q<>|s*ECPd-Fg|G1oiX zP{=|!I!H-NMpjm~B^A-^R%@}4D9z5z?cn!5XJglU9>~%mORf(5cR?DG3z;1s=lQ{o z+K#KEkd>2@bW^3uYoCRRnkua4YUzk!=jEjA$54=TfJi~4kgX7QZry4NB$DQo5ZE>M z0)lp;a;+@yfm_7pxS4b3%#rId)mt3brEra8)2*l*u7~1GD76GM)p&tVI@mY5hv{3A zygQ>I2kA|ygnXEFO}`Ri-CMHpJB|r)amv!0a4(3mobJ{$FrCoP0&GkZ7I=AWq}9{b z`1n^L2S&@Z)#N$Ne;UP3{~G$nYp#uM2sv$_+TgJeWr-jd8Ksh;8y^e}!h%FoBl=xt zFXal^5B0tLC(y(m^kOWB=#+-eTWsK<cpHC(_e#qps}x%2K?z+u!!E{wRunOjX*Yym z!mRT%NXG~{V=ne9Flb>oefQydz19xbGJGcpD2vO!{j{)u)I7V(BRZ2SzRD}xXZ!gx zs}-9g6%~rrY)wMVhqc#X9=+JC(6n~Ne2<#ym#y9smeTKjyf8A|aEKy;J}}age~gUi zTzk(SC6%;X*K!*rqBJ-PD2)s@<{r*3JA}L+-S@Fv$e3>m-ZA}w5VPlnzF&CcC*|b( zR`M<EENDL3PMlbE`n~u7zdC?m{(z4b;dJHTwc&EsLn$)(X&)1-H=E6imZ?O33NG<g zft!H0Sx&(MGc(MK`Y&iSl`Py;u<`GAdXH5kTX=1)GE(-Z_-=Wqf+Ge_OEC`BIU*Lh zg|S8h2kH!8yM$u^HXzIH$jR=K+2j8E@kJCz?vETexOs;*;qN=dj*Yo47r6QF?>&4B z4^zDM*wcvGIDt-j59N*jUeF~mUHJDrP+tDlUM*6$+m?_aGeP^Xj18sv&fxC8Dx-wk zCB9-WnKFu8_RB(Vs_qsef;Sx-@CP2~oo#_~Qme++Ux)XwN|gt~v@g+L`sk4rW4|r> z3m<J#PD$PVe$an^-^K4cazt0mH%^hJh-9+=eV4OiDfWAO)C>1?f0>IwW#s65%FAkn z^po4GhW`DJTlgzW+jXCYHjCsyOf{6gfRQJiR{@1#V2NO2YDy`tEPiFDMf(;c`l7zM z{hoMD=Jy$MF_89ep^MyD>nT$j*wu`PtL+T9!eLvRb{0fBWX#$Q^biiUjtD$kPiV27 zJo)QV@w%yJq(+wnVEr<A=~AQr?vi;Kj-K=^geuz5SdiC!tY$$`MM?-CUtTM!tUUCi zSx-u0&;5e{HzFZrAe6(ao4@)56=#XB;GkMYfJ$kSq+_zsD2kG9nB;H-Rd2^|QXDU{ zc)y;M{O0VcS5<xItFg4S@YG73(NDCj6LlFuq|z*sb#hos4&2oynUqIV;oDSbzZ@~Y z39CfSZ-PqXxeyT&d9Pn3J)a07tEjF!XQA?M*}$I;{q|v=bN56xyp_;ShI@KokmQ;? z-o@HJXP~8qib@*g)aXt-fnvP6s;P;?;r=R)Rks?z9Q!SoehwVxmt;%QCr}_VGpXf@ zNv{9>E`=&-8;5%eNfG~Ti48#H#B3P>YTX5N4?Lhh(tjUaX_u~Di=RG~6rh3PUwA}Z z5(ED(mYdoJw}X{+|33K2DH}G3lh3N^L6#Is)U7S0{$BZw^^^%TPlT+(LI=)`g15TA zwEp{vPKS_sybf#YoAmC#&#-_;?|#{V!vcUyq?1Pf4FVemair&%DC$me39G7FsI`iR zUG)$2kiLE8ZcT`}ezPl%3``<3)?yC<eQx;o;JLpL)BCe~_wR?cp)HuWWzm;a5Z_ZC zkvjd0f>~=7sD9<FSB0NU9YOagTVwNk!=$A4OHaTW`}LhXT!H*SSNUc)XGgUGb<GkW za`WWy2kuy&v@`VY)7l3*Z`Qjv$<@GtmRL)R?|%EgPu!as70h=M#`KCIRghkxWOY&$ z)x4_ud*$;x-Wo=Z*murk<(z0v`gR$czl<&?y{6Mc4Cl(yZ8IVFx*VC@OMFNlf4T zY}pu9daURJOTJB0hc)EHSZ_Hqk;&lp#$i5<J9*cx-Mc4^nA17S%_L*p#HmxMiatIz zqU^zt=&ykYFwLjO(^hP5k_`$9s(e9&We+nKTdQzuqyGGLlre3M>)Pg(K0}IDTKcZ2 zO5AYoP3d5tcfK~=`QYshG9+&?@WS%)+b+H+E?&#Nq^<JbfE{2E#3c7DMb@^h?N$c8 z4t-*EY&!H%HZWUgM1U8HKr5>p79-Nb#(U(1fR=y+lO|4FTXdyav@{dks4!eCnA&5a zub&I92wi;D!^e;Rz(8h*(i6MaWT}0I4!yd(R~0e|Y6(Cv19PTgJ^k>FI-w~)%N!cy z>9c1OvHnxr3A5aO(j?Ki`Oo=QG#{+d=f<N~ZH<opk16>nCylsEmy`zVolwXWgXn-V z0J0`=$H(-azx{S$M9k5GMs&eKc$Xl7gBQuic7XPKL~<uM2?UKB-gU-%;^Oibq!~g9 z@Y;x62e6$UtNpyEK9umM&zu>#@}<Rsg-AUhKmnKguinOY!1-|v`h9tM1ZtqxmX-@< zV2`<X=ge<{{f3i%XherUK`n#s_XZl478;wI4b87-WZ*cvE~xQujwafQhA(u@^p_B5 zR_dAO+<ec1`ShYhn`@yF;4-2aBtLlJ_gVl9dIOmzXI*eC7O5ha7gDy3K(@+=`Um@` z#F-p@;pejug%1@-eR&$oR|uwfQPt$?6$PZ0nHSEjz(5H!=!V}%*dn+k4358ZkNg+D zRfO8{%MZA>oDF=He2I*-OoOJ92_A38HiP2rm>BNg`lYGqLwV|rhXCTX2C7cUxB?R4 z1D@~RNzVaFNXZ2=#sF)L^xrl61d>|R5@e&98oTV*{;YhU^%s-g(1jJ$D1kuqa_jPW za)*?mvI&3_UDNeKkCwI;&Yyi{Hn?YLnPP$OCzTD!kB;O8Y5JGH2Rg?j7Ah8p4B+AY z`x1hbjEsDF_w0fjzIBj4Dz~Rc=>fEcnjbBqZ^x@+`L@SCc-M|iC|HU^j?t1X!ynN# zBAc(+v-pmgZ%kY0F6HjsC!8pf5J1QwzH*C0ube#b;rrjbBPjpz<1NDy3G|3lx~C75 z6XYIT<47gEg_=#!{Vz~-5@q0yqBxQwnb^oRLs)OA|8p&U``;jAhQ1?9joE@1_Ur0W zMFVBFIBooK-8Gx|&t&)Wc3P5b18PldLErw^>YvYcqE44yG5(#Ly!<@CJdw9g>L6OF zr*})NrJ~1NC|3MmsQe(iqt={*?<!)^8cXZsJ3_nS4z;|%Aqa3+qFi6O<&Dj4qA25* zPh|VhRwkghP4HW#2mb=8E0J_3N6Y*^-&*izs9EiJ9v7P$7!9FUlGb3^_v3k216X{s zZsXBZb$GgblH-L<twS^h3>`Xq+C4e>zem&t*_Ht>?%z)xYAE;J*5dH2*6OFme-9ru zCJuHsGeiABYoj-38Z#N`jJc~jEwofLtE&(j@JWXeWaM}Z{yS@hG7*FW2#w@3P1Mg( z#W52E{h$x~nxrQ5%IOmyDguF(UjvogtY0o#R34e~eh8!(2)28~`y%#uu2#&qX42+) zr*p8yD)275{e(hC6|#jZrmjt`Ya^BDm)gxqawC5O*&swW9By*G`68NSprkQmBKJj! zOiWxpB;zeJRz(IOl#(wGn_8q9q)BI-SKH{x<V#Um@RdKzThT)*G^nvKx@KNWOTD?J zYS)Gy_saT?lxw*A+A85~$J>vD-{vj$;(C6+jXIF#lF*(s|5w1uBG0j9MY8S#g<Sm& zE(gR^=-WU3bA~p=x&}%JY_^Em9lmrN{cK8Y>BbolHt*e&SvhtMeB?_+k(IA*xzJC% z;--Fu>xYphPS>bieE-Q4QNsx}ivWFnmFb@Qncmf*+qV6S9<%Wt)dF{GB^oin^$JVI zLK6}0ns^aBM)v3=c-IxD0>`s?YX^W8Lv>{bynQAght3~;E6hm$!5Tsp{8Ae8Wj6zc z&JRwUketXg3D949lJD*t(IW>E$D#1io<c#O-74mFWM5(-IT<(eh=>TH2f`a7Dg7bn z3!?2=pX9<1-#8B94jiECqqd5PGQWsMVsG*Cv>+_gXo_=4HF*sAOCE)c&jmK_Cus6R zg1}=!O|YS&`?z(?7(&cY2~YLU=~}&)+mGoFm#{qe)t=3z<n+4|v{A?+(HUVjbzPnR z8cE-n=XKglO`PiBFbLC`J}0uS&(2HO!~S6fT+t9cHKc@;<Hx_$^(QlTIam9Lv~@eA zR>pfr?zk|?&)eJN{NtyI!z<xZJ)|YRlgakkZdE%(j~T)F=7xQ<7k`+lwQ8!{qR-S( znWDQXtO=sg;(vZrXd!#J;mq$tS4&qJv4e^x1$)O;vo;>ElQSjb75P;o$7+7*Qm`@o zgsq(&U2B8Ut0V;s0u`jr#`jQGX3t)P*PbbzYa$;`z4`F;{k~6VuR$ldBR4^2a}#s$ zC~+8XAXi{wjENLedarywV09EsppNcym%TGzGCE=M#EBV*E`8=9ZRAs-=<GEnHzOxI zdGY_a0DNH!mVGo%Gkddbu=GUxR8wQ6;ij&wJzwOUjasPQ4C<d#dUK-VRr0w}W3P_i z-kr3^*Slxjb|BbmOpiI#qf`Rv<9u#7tXrON^Xv5iMv^U`zfm&3ee1cvf5?sr+oPgL z?DxAB<q)#?IJlQ=y9#-maljMeYCrxrQiY=@<m!J^5*q9r#R^>Dw7z?3KPgKGP`Yu{ zLuE1^b2_8;-8)tw#BzHt94K9`c*T3qa)PI}p2HN-P|Rs2U>VSy(%0+Yh;^d#9t+N2 z9BBwJTm3gPzIWy^{IV;{o}Dtc{8bxm2`))nr>STx%v?9y!I>s=qkWj52wR%|(QBI# zp+XyGHa#$k6Or}(>{u{?aTjK;M{UQUT0LET=PrATzax3>fa<d|8z-oj^-b@+ld_f6 z05EXJ=O{@5yprQ0+;8waS6622$?A`9ngEz3vso|w$sBL(aYN3hr8RN%z+%LSD)iEJ zO|l}yx#V|yC_pruBnLu6=vHo%+pMgnrh~I_8vbHOU}J!niKikuq93`m)!DXLK{+{h z9)v3Q+b~a!B#zfY$RgJ9OXb6RL7{x^6vR{lbWLf4y-5rwPK+csET|hPvg#XVVdnX! zq2V{&7}dpkR^d=bV1SjqBu|c@PXs0G$eEg{US1!$6OraXIyui2s-uc&1FWZuhsM=s zfvlQu`1+;aki9^6YZx88IMZVI@aEw$+u&dwZyN}SgDRa21-Gu&57jNN=1-dztag2@ zoZhGg8-z4z?K@`CI%m=%N4Kh*>hPDci6-u$ph}gf_;ep`zs~UpVeAJFq?4jz<2_tO zfR;fc931p!PTewj`<>GoIy&um?YrN)jU)vh)-Gl)JP!R{y-4}O9EXY4T0{>PzW(U5 z#5RDFXW)0iTYMtePzXoVUD|-U!CVCa9VTvk`W8k0_eh(c`^jdE>ALZA$d|d1#zo2N zUa-J8#_;T*vs<&Hv1H&Jvs8{RT5@R>|I(+%44e5D;ypuXyI?_5Vqzkim`b_D&3EQr zp4J3c4PMEW&%-S&;_fc!__YMn<yW{-NBTJ7_d6z1y3VawyD*aoNn1?}e(EM;y#0J? zA(F8nz1n5bBSP|(5cnKmq>_WDm;i%{Uv7DU@w9}-=BlaDpQ0z&*aXp|B^$kSkF$U| zf4kI;ioTNDkgB6!s2%{R7lhq4eMwA#@vhY?g9+qxAng-}GiAbw-`HV7ovPZWDtUvg z)~e;+TWFpGb&|m^&}VlrgxPzR)>2S1X3=vlfTlIw!^FjXzO#e?(KRVG6)ls*s-s08 zK;A;mhnKB3hO-)17_kPt46h2P4~Gr^4I*(zx)t=Iep~k+|B&^t!B7KpJMFx}9(29a zu1fQphvIzE!#1x&_WG&Im)E0^AecsOzkVSjtYAX@g*j)?Rfw?V@fBl9{hemb@`Gz5 zp>a=3{pxt<d3N^pcoWuhI)$5e(Kj)fHg4QP4n6<L9FoAk(8s*X6$gIc1Zb?VR?J05 z{Jh33oOuG#^g^hLYX=b6-A%BqArEFrWyhEJlFy?h&ngR~^~@*!lt<HRZwn<rGiwYY z;K(7Jv;S$id=9Af-zzandz?g&@}J2hyENlMeP?^`zB8;^-E3Lc^J|y+PvwIwSWv?U zEPL96l-X{|6zL`EYHo)2U<;QG9u%znPCDmWB5CZPUZR^H14ox6Z#U{H@3c*6i#vt7 zI1Js#a{Nh-r*S?$gI=U`d8IXE(4gwAZt;zxQ7Dp`Pn!UyB3JQXgEq)nP5bup&wJJ| zu<`TIPh7E7V12}gs5`c*c8j~dJ(fcB1ZC}_kCMMd<SlU*s_hm_2{;c?ZK@8nflh%J z(;z&Fk5;7Pl{$6(`e6wPu&?P7tNXk)n1Pi0@d2|31qHjFONO<$OAE^XAsRuN7yMri zgf~sS+LCJG^jM2<lvFpx&###r1yUawn#jr;ce4C7m=8IZ*A7;__f>U0uWtu+j{P+o zwVtWeZ=Z&i)=hZt5;CK%#6N!j=1uR{AEG!DOwG*5*Y9dpTcw+{26C>txs8c3-m*S7 z$7>BjM()Cn9i1xa7v#lX)gPH9%uZTwXZV#~DAd26ENY=stt8`WJ9dm8w#INqr_B;( zd<KH$g>ip}NJQyQd96Y|0gE*_+6>$_Xj)YYHZ@aETrz_!bG>w5aYLVPyL7^1u8V@Z zP1EAs2Rx5>L^9%S=z?Xj`_#p4jny3%53gkvhnXj;w8ah`iAM5DraQRp{EkIm4^p8c zd#7a?(KqT37S3oyk6y++iymHhMg|?8Z@_I=Zd;vX76`mekx2G(6`-D5J%Zm(?2lX3 zlOzOgv4TTE@)ULooitwVx5SQbwNp)yPFQ2XxDZt!Irjj&m0n(%Yd`FUFzfbgCS#}3 z`$uY~d*@_dap^aMdJPz(9dVZb<P|Gc`1`k<nt3|RG*Kn}*hO@e2qgI50qN$rm?6-F zHm#ybG)L4FnRMAo+PRMo+O*1?9xwZNt@Vh;0_MQU;F8lgVf5?Y|8=DeZKo~DIV&`1 zy)CfTvwHsi=uggFCN1`wR7&T}Y}BX<q*uW)*EtqxaC^mXr*gA8^w^)rY+lrZKmV~v z&M0L1IJJmj4~cP;!+x$0Uo*FcESRWaRlf(|zx3(T9M3}-t%LZZM3G+9Z5^8zceY_n z>jTL!uAqTdDf`8SIIs%)a<ofAa7IQ8%w6dfDxpKa-Pzc6LLCj8F!iau6r=CML1e;E zTt0^fg^2-+j*stUY)V70pkUgP6^}{C?CdiA8Z;6-q!My&O_MmB_Wa*F5K36a9nU_L z4z~i!(f7O@_@`|c%Ef;N%k`n^-xA~OJfyv+mR7*hlMZv|#*<e5VKhJ*{7OL=8x5#? zdgHdpJ-oQHn)UJa?Y*-3bLK?Oire}vOeZ|s-z%*%*0ylBym~zzrD(U<p!*Fx?w>q- z*!9a=`VUiT9%5?xmHT3q@K{cu5ht{_J_KT6oWceCP$kYy@P0=<0b{oJ{s{~irx3YV z@UJs22c-F+1fp&7Dn%tFvFGnOeiTUsUU7R}-B1`jsHjNPnRzB47!(`IN!wWpQ&JR2 z`AXU&#R;Vn8YN>f;yzky<9(vfr_8SMZzz)VKD~ot4~>n6nPYHH5k&@P(K<grL-W;@ zP2t<XmPl|=uqhYy_}$hPHY`!4Qgp(#-P?*~5JQr07R)EVWw|_i*4xt~`)Qojh(S2r zo<DuM)-Jp2+i>}lvz9DeI4)}c;)P&i)**W<bEv}MM?cqKGm6+y$n&DPFxzxAc9c|} zpuaw9X;fqGI?H*iYYhz!)=6j9ul@1Kg~gY&xM989@LJq98oQs2vlOG=fX3Cdv!R<m z?qnkFX%1j=rXLM2Z1$Ei(+C8zTY2PrT2>^RG`>|dtEWme$?DG_1h8I`CQSvGg%O6$ zmDG}M>nO`;e0Q$VUQfPHU}(Gwv2nP6;}KoEdSg(~(3`h?yByuOMrCS?_F}2!WnET@ zGxPX`hiRJQuYUW<W9d20p&1txeZNEh3cE70OSqN8UpJe(P74+;4CnT>U0rJP(y{BG zi4_EX7JC;L!!t*6W@$M3i>AWf-i;U%ZtWs{Qe#TjdS!DYod8%{4{WzK^JC#+-JRY! zLOHOd-ezw95;7RLE#n_bFz;y*O+&ZRJhwJ!CwC*(1#SiDsUd7Elf)SRe=sZ}V7<KH zzFCZ`QN>tksSdi)@oguC6>A3(W|fqX34H<2Yr4nPAgMEUx?*Rc@Dv9;mXY$hHQ7Pi zuY(M#ilxr|``p>J-rjCSSMIo??oyo@uPk>o{PxgrnDQ*lD|v|A7zA%Hr+Vq*CDi~A z@82&udbV#z!JoahcsOZG{K)ke3r<C29Dh7B^WcDMy-iHKsZp&o&%_bqIjpZ0=9{1H z-tWj9^`>^3>|OUw>h?B03B3}0=!@O@=ltk;VoE}@=m3>JL@H@bV`((cZnm@Y!6^+D zrKPhkTn+rMZX-`vV6=ra75>7}L<0$d8;aEE`O_Ypxnb)aN^^4;iqhKmHME>ao3h__ zS|jVZRk=$f##SVFVdlpyuz8>|hx4OnZuMkR)OfXiM<h#mlgMq|r#+Vwj-;f#{`Bc_ z?-scb<$iw#K8|$k(qk}{Rr5t7pjR4zFEp<nITAee1jM8u>Kl;mmKI3=Y;uk!He5qP zG%4ijWs|K?Hor*7<4=@}R~L7V;nuNqA+sEZX10Tks6AxKw1m4+<fM_=_10LKy->)) z?~-?Z=f#%GH92!rVQQFvllyReZ5PFXxQ0eJ&6`L0w>23m0B+`Rqfz?*DEhh@bsyR5 z*RNkk1T>MI<Aggo>P0VkO(;ccV(R`Fu@f7XzMMuwXJ0v`)mz_{pJ!K)M?g&I(PJ2e zXK1KoTRnF%sptbVA<N$-8O|GxZ!ZH`Xx=!1^e0VjQ9?^=D~2cx`;;0=4q?>4zZYI3 zJmCiEM?TkD5`WD!jTf!aVqTd_&2OWH0gZ9R%M6u)r%7_FDAio~^x&etuV+76kY?d4 zH9|Ue`;#~Ola3xOJY>w}j|Y8>ZTOHgK$`rb;O+d?G@aA5{ng&*-(BV9B_+@lsCji@ z=gz4C%LAZSuVjSV#Zk`2qhnn!pE|WHpvQ8cO9G3F>D%@z+HQKG&BJHTnzcZ^nLP(C z`7!8&r^zo$%L{(Gr#4@#uBsaI@h8R#LKcAHAjSGW+SQOc%F{(XLW33)7Yiy~eaNa; zmOC=HBU)zFAkMdtRY#N7B_K7qx>$A4m{f&_cn#c)VXS9qr30XmezTbEz<b@;@aa>f zR)Dw!F3H~3ziJD#nP5Y0;G4&IATbD=ZhbJ}9*e<Ehsqp2e2oKKow}W)U`RKVtpRvy z-no0<z7?NOLI?8WhsJ=fZE?pz;x8wwR-YDG$O8v@rb~*nogdtKz{9!vBkyAGyDGyN z2NYoA>-gOYLk$a!hi69Nfcuv_g(nSRC!txaE=Dv90*79C&ui@22M%P*4K7J5OHzho zMH!%fc-WfbH<L+iBHZIh?cO=S{&X>y+1VIm|K?!oROLDSzEA_9ClH+(o0946n4=>e z`itz6ai!A{O%@khM`=aw+}YgNIOpn0Ew!ub;KMd+ceu7>GgOb{&AxW2GwK-c$?3e+ zoD?{%TU+j2>XCpR8qO)5CmKvonEhRp+?t5q9F~`%%V`IV;>r-Wp**r!cnh2Gg$rxp zw33gkV;D!0r+lnOHVmeVE6)4vg3?JbdO6igvh3QL#R(w`sn$G;?5|wBNDlts(IYL4 zETNOWIJ5fYSe80y2{|5a=ztZE?O(L6f}U}bz9|H%PCBF8pc(nM0uIox1;}c5EK@e_ z9LrPmblPyYT6M}L4x_`}vpdPllW1RG`$5&XTUl{&I=VNGB{GKQo%7O{I0Vpmy4V4_ zZ+7!(aQI;;1k)C3Nz}DxOTXiiGN;xNvMK96Kw(8wy+BXDt;pQQaoV&cpDUk@&3In| z#Ch}P$#F^j`e=fgRv4YleN#h3TJv+^3n%}A($ddwdoLR}V+t9O4#b&9usb1NAsM(3 z{^0y@6O&zc7x<QG8>=0*GramETy^}3vbfQkhBv7mJ8^>fEwpO>Ed4yYRHk8=Ur!5h zF2pDM098l=Sm3Zhn3u(Hn4A~XIwZ5tkMDEYVxiMu!S%81P0h_$E?btPS-m5xv^2KQ z7N6{rk}HoECmj}9X69D|n5BgGAdhLi$GjU^;fcmQMaK_PFG5k3STPF%qgpHHmYPFd zUvR@&OX~OzV7W{L*<N5ztgg3-zAJKv=`_f(egQpDFzcG1W0*B;<VnZAJidMf!x^4; z!$*hy-Ivq-qwYv4`rywfKm$RX#W&LI!n$z>qvcHt0xGVpu_@Tn7Pj+cK()a;<UDmP z7c8SqC)wFaiF_bF(%Rx-?XvN9Te=lBcBf8&G$tOSd-tyO8!}%{U;k_S^BZ3?;+ori zstAKi%O?lO9os#zm-Y3FvwE40pL_mtz`)YSdAH{Om}eaO;Ihly`U$oUy_RqHI+ik{ zmy@+Y`PHR?L7BJL1-^T1m%8-0>6`CuxeMQJdc6K{Y1GpBYaWY89Z-HYr_|4Io-=jP zj`q0~Um*0*%*1T3rMH1+-J4ryz;#6p@OPKqYwET{L=1f=n>r&V(5W~MwJrIINAsnz z-3KVQsN?+)YRJZT+HGboUK}i9+tMY0dLQm;b?;ts@SbVdfvt)Q47Z+-xpm0q{;NJ8 zYRij*!FN!c4`__2e)kTe&lBPfzii&I*Q<TS=e585riVgAvvqau#MII#IxJadH!4M- z6ra*y(%X^WPSJVtvuTf`P=O|X>YcBvshL3Nh1cY0Itou*(=~<ab2`vE<e*p6(Rnfu zU@#q>&l-)ult-^#xxxtiRR%e)C+0thpf$?emGzcJMn%1De=*VZNpf3{2?zEb?g(QY za|!ruyUN`k=H`yGw~wwoeG=4QZC$Z#OP`T*KZl<?sZo;Z*oOc+xNfIw-;H+%I`V|^ zi2+<5P}d;)ba%f?v4yx&0H<T1IdA1k<J$%I@8j2;@NH+zSRx$uye!TW-8W!g&{65b zwo~pPoXkPu&h83XJUHM(ba^Jw(_kf5>qp>*9V6@hSw93sn9;2x#VA#q%#)&w9o{xV z$-e6RBHF?@;<PM_2uz)aI1A!Q>eYR8x)^*gq2$ZnDU<j2M;kz^x;B;yA^*-DYtJ>R z0#8w#uNtQw*s+Jh1}c|d_d*JGKJ01r+dy4i9bj-vcsOS<w{=s#Q$KGI-orsKdslku zbV;r8w!j`V$!}b5{Yi^{u2R0d0?dS5S13p+bauU;T>QZpjfRG$($;LZT|J6P5}_B9 z&rft2mBqv&Rw6QzWgaV@GRmMY6IWpOCb%YXxfnKLMHqkc>=0z%yy3DECgzH5Z2hLC zif1GcR&ktBUuFhH%tkwb_X9~E4BG-tr%gECAtaMNw=L|2q=)>{ZO8v)@BW~^$lOgp z$o2HuvttvmKg!#o$;LCdbhuOT7N2V`;f(z$B9iYu_-m&4xdX0o<S$6iC5t86-K4%{ zJ+<X%kJ^C#miqZiozC@sE5ukv@TN84Yu-^Q0xf3mORl2~ikOHH{ww)TY3bE-=cY!L z)bD2&ZR_tJuRxn)${VrY245Nwzv-}q8{S4VQj1ru!8Z=PI(|o4MTHAFdjGb(ylU_K zl-X;?KQp1q0GOSh;T`g;On1}_`m0l1o!@JcgG^}1fEdUR7R7bAz1v3mmf4+FRmR7$ zPkMfzW1avgz9dBZ(tzmP>Rsz+w)92}OZ)!l536hL^gQTXrzk}*p0c6h#?ZO_6Yphd zjM1=8b#3x^rV;<hRuJ9Xx^HJ}K=wd~>C;!QTW3FU;*!Tb?Vc8~<NlK}Y#weFf<-C` z6Mg#e3*9=^dRqYK6uXA-t3j~u7)~$#lAnKi%Vg_ieWRg1b$nUvHNA@w`s!-PV8*Vu z>|Ew0K8zppd8pB~%ad0`>0R9i00KxSK4!?h<ghsnj{pyn|LE>A0;{8L1@=6D>Qs%| zYKwzl-2Zw_j*E|<%Q}?$bp!tf959D|u|NH03Y1YE4m+YM_8YA{P{)fem#?EAhZ0P( zmT?dN0lvLl9FDHq<Lz2Lq50g3zR~it83S9|Vr(}9U_Ssjj`HbeZ;Dblio*dR^amb1 zmJOMhUZCW#t=|U4luhnESeRYqnb^3?CO+r(?=cM{`n7I$9oBPaW3UVON=U$oi@Au0 z$eDf((mlMNg}Sw{?A9WLjDWXhh=G6U2cU36HgU17Y|M)2{ItaHQ&#smQaO^r<YDd2 z8P1>B$_W}ef}-}wIY-7x^sw;<<<scnAq3;xfY+yEp0rrKgU$|4*dqkzR-;ah-!L=f z^l6c|6EaXg-fHlu?>Ui*&$}(r++##US~NIbQf&=AZ%Fq$KIfP2e(rUJoF89L-x^1{ z9%Q?7AKRulN`4=>v;U_74+c$knlxz}waD4C1D2ixyw+J?p7m7sWIWE|z1!9$?%i7) zH&eFmQ8Ju5$=pJ@CRIf~WnHn+-~m0y-g5fz+t(8DH+Q2tBn5m{<+Iv21?8RbFLyqE z^k`q%10{&LL^y>X!I+WnDU-NCUCJ$|Q<C&pzoE8Pzu-_GN7B5nOq#9>Q^XGj)!W69 z*^vwmBZ4UDjJ6wKaP{}y<r9~6Kw`zCn(pX$e_$;S>Dck(OsgXP6ll#$=>6p>rfg>h z>F4oLzd!0*l5gKk4wCB9D8XHW3q|@A@0z1y)3<WLeAT1Jj+uEqzd(hL06WC>eN9a- z=31ou>^~147%p3vsMS+rwTNP~;jO$m+{j?wDcIKjsnKMp3Thk=zfZ%3xFJiY<DX(S zfWZ|P#7ET1^sy1xw8-}#HW+Ih*5#tbi;FlyN$PQ$q)qN}v8C@I%;{))5MrLHtM5QO z9aj4K{j1xz^Y<0*vMyey@-%Myo(*4@Y!bb_%nh^e+`DHyKQnG#4d^k$(4dsn%~1mf zC_kSRmM4wyP22+U^*XlQB69H#Z29`c@@H?4Y2x5;%{gHa^QqcJeWlX#nGOy<zP?1f z>kpNle{XI^o}sqH=Nl;j;Ie7#&AqB$2GNp8_MGzcguQ2iZ}qGFE_JUM9~!fH^XC3R zhmJi$EO5H_#L&8W%ja={;osjn{PWN0|8&E!)<aTW=jj9)^kyuwvi>9_sGo1OPOa*k z`|R1iN1jD54i|t=(Pnv7KET-c`20~1x?&bW)FpqK7O-@EKmZ~`XHO@;`@t3L?W;)= zH!%Jnueq_|dq3Z-Pc)n$qI>umPhbY}wr%puesHQVf+dzLWBRJ=`FlwX)0dY{ZCQ08 z=63lD10F;jQTrKG#lmh6uez}f4YFeveMVb8{tybmhI-i`-|=y-fj`4PmZg}*<zHVa z8SZf^k{#rrKuf`ma<b(>>K&({Q{oOEK8ylYOs;x+RQ!ZGZ+6MkeZlzzLpQjmf;bU6 z(AM4kC{?E8?2P4#X{A%TjM<+Xh0-pz7#r%iIB~G%?bQ<EkLV&H5ZKZa2YjUNxpgZL z-q6?j6RN8!hDearGH~9<+Z&!!t=jJR5X$lcbFY~+l}zb!1;<jLg1UFqUYXPmRCSNe zXPPBdzA<#IUu#pm>q`1cjk&QK7{s>Yd~^NR;>pU_wyA3W!*qxd8}eRHIWWZ5P3bv= z0PK#i_M2z^&QaRos<^4yW&Iw+YUOnBv%T7YKT%oc6nTO84B168b`sqFuJ0e~kC=FP zbjY!eK=VcyGPa#z9U%=aez0V)a~;jP;y{6ktjMAQ0{#?1iz-xCTsCL>TiA@pQ2piQ z<vD7un)umq*`>J;GzWW3#Q9z7?OCR5E{Kj@Awjjli^#8*F{NKY{N&@iQe&-^p6@HW zCOL6?Eisz2HGAORrfYuuoP2wyCn$q~iU3ds-!Km*f8iR&=%2$u8aypk!F1z@{MpLw zMoV8$xR^TrYhSTf0-EC3=ZQhB98;dhExf&v8>ypn7$M%YJ`&x_R`wf#6Au>bR0%XB z?+xrpVhP>uW*4=gQHsxx&G*ay6YO&FjO1mfOh|7u*cSO^8Gq<_8;_5=impl#Uz=)e z;uF8g3miNS4l3VEiuoS0j78TX_RjeJsUl${Y3awO#}u}N%s=)&F2K#~BQoi0wJ%?~ zRR8qY_C^aU?P#0N-L`V%g5>*-p4ol78O?Fp%&-?UIxH9B4;(B%ALrbp@Xd0!Q76Uc z`ySnghsL&(97N~&$pN$N&F9{J7hMV)8}skqKYHsJtHf;3pqMuYtq)k)ZXR-(cJw&U zcOUkiBHP_13-rWP(3GL-#lia@CpUgxyS(_#QrHPFpT~cmahev|>q$H3;gxy^<ZRiE zR6D)x3lJkhj0tz0_(__AeDkdg4J(<C+9Uj;%HNNd`S|b0*D~;o$hEpJIZ3u~aim-9 zOPQ2EZoQXx$p1L9RVbjdM7jf5G=26dn&!K+q87eVA_qhhE_kn9n=+z%v9iXOlh8u< z+)oLVpdeq#zWsLY<CFv0`8|8JSyg`@y{J<}E~RRx%POUus|?7h+`3(J!mXOrt2+6? zE^}|qpq@T;=8VDb9UY%;6ybo(z~2Y%Wz~&4kVGMLa@bZo-QM2WeMaD2OSf67WKR0k ztDg&#Bl@>@n$&r7w(eCwpVud&_RP}OLdTwE?Ya?dJ)f=XtxL0K&K&<aZe;ZfNKTVD zVCmb$lsVlnC~_P)f<rbTff1^^AD$aN42@Fv?Y%dya=j<}5w*4H$dLzs)rWC*(*~vi zIz*;KsJ`)rQ?MTX07@<W*?m^7rzfD6@$cfaIsC=m)^`1`Z$>*p3hy#6l8{70VXbVa zM$X>pH@U-{?8UG4%^-mSS$LJUFan*IkzUYqU>}TryxQjGE1xFoue0j40JFNMrKN<{ z%<ypO+ZQlN1TzD7CtvsaV<hN8`Od4w9&}QQxiD?U3`KnH8T4^GtiL@pjeZvmR)5_` z0#H&i$;6X`96}0<if;RE)i3S07+YQUCH_%NLP9I<0Uhsoxw#?4Ttg?e`}XmZ0P{Gn zK~UrD?zd?nZ9r8qv7aYFo2URr^7GfPFA8`9z!}F71AdTU%q1Ej++^FvO>|s_L7yZ! z{HX%`M~oB)7DzgF*{IKO4`k%W94_H>(BsF}1NEo%?d~Q-gyhwVqsS{`w<uek6lD`D zpU&RU;a1an^%UPx@&eWW^9&!+Bk1yF(Q$D!a~}R2M^PuDRzH86iVC;tYAW~a&(BNz z>GuF`fvcolyjY_~1q#jAV$>+eVyENNp5*~paMNUExBGmgS&dRzBnWX~fz?o|XyPIo zH&9DHBGwQuu0{{fI^Goc^Gz%kG9&~J3OH7^^8KlPRr9c0rWfZw)P;N<2FN!oVaWIc ztD&OJIy-OQo;}G(GOn4li%F)7%WuxW1w8|3E@O~NV`%pVAAFB;tG!8B^wX5X5xW7S zi@Q8(Avh}fu0?eh?+7M1n*i0uC;IsS5kkV0+^jHRXV0bhDG|V~CoOxv?$xGJv;rZv z?Y(_BcMAFTsa`Uez7H?3-t}G{9(P`);0z0ycz{Z@s2ajiYMTRe*9K8G5WS(ltvF24 z<Ma^x5}N!+Hq9S#O#yw+$y2BP9VpIp-?L}=pM)}ImHDRG>wRg*?{O|ovQvYGzUwL~ zrH`CHZ$Ii_`&-ALI}{~%iNdM_MHEah89X@YtpimW&p-9nlSe;Wkkt;3w+mTV=5>Vz z@{ENml~_#pS%oyhKVrEpGWU$BzJI^4;C}kqoU5vOValq9yPn6GMeedY1;uFpMqOc7 z_$WA7Ybio$+lpf6PX+U4)IUz<{zKv_qKX``%W#+5lY8ASF{%yT$5XBGMIXyAPxiDa zD0xS&#pIPweGhmd%(rZBGp%sY-2lq0jbC^>gPV9|qw)B9(gO>(nKNcI+L%r3xc%;6 zbMyUmMg}|6KU@*}NV_!*3m2r6I@)cRSG#x|enBoSiJ$r^kD3sz{m9M4zdiBM3(}@@ z{_lI8Z7u{G22C)Uxl`F{Vt2e074}YxP5n8+%~C&1*=m7m{sFoK^bgibkBcoyv|%NK zd>`Dq*Lt1q6d-h)MAzdppEF<peSd|+kVl+zVL?U@EGVpDj2CikqUR?-+ldkK)(M<{ z(<A0F0y1#(<jl*T0w+-NVOp}nrNS25%=H(qTP)c`^n=p%VQ11(2>WgDUau!FIY3%* z<y>b|0VT$RkCKB=N;5}Gv@)>l@XD>WZ+dgR10VKVQf13e8BH6BuYIlLj=t61enTP{ zDInCeB|E~k<HYB*brm*%9x5r~88yu8w%OSmn~Lw<GsK|A*SB->Iq8adj0F-~o#G=P zgrW;vYg0Ic&_}g&V#K!N@gvq5`*xK7*6AXejr4Sp0*eB$BCR0V_Z`z#XZ{%wUXp|_ z!`g@f50HkoeG8nnm-q*z`u^@^0Jz{(;oNs(4PrjgBx2Q?kU6`SY17>Q^{4go{R2<& zMWO-T23~4QvPPr!=C{XxW^#k1gE_3G_qheCAQ8;*)Kt1`zY%d-sQUc*JYInVH{#n1 zH{<3i&kojqTrpG-A(FwGrt$sPvXF}7H{}1j7E1E&d6%6ovX&GDXyHfB)iyz6p?PLI zV27~}B@cRst}W^iiywS>Hw?uVTt3}QSp9)$IXxE!A~J+XGsd5rLO%86!Gk^dMo){1 zBv8rn8WWXE&yWLHN*-?FbS4pnRQ)ld0o$>pS;y7o=!{I?Oc00xXCuY^q6fews(8<w zNikFbinxF1E+`njNvH2mj`Gb+JIpuf4ToZdr}@nC%_k0z3YhRIdeXtJpQoWWq=P?m z!*~6#U3WNK=($T|*<1epw&HQWf*d+yg^e?`5l<HH??31u51M|kz_d<0Qu{aU>y{E{ z^8#JKVXLrd^{WwUe#t5?*SMWMPxQXd9RcO?RJ_(KS^!M&PDo4?$KRp6?#X=XVV66$ z{@NsxAt2iETGlSjnmajjnxmr=#GLg#yL2gPe9SW^-Q+{<INx5M>cjaAtCCm7zq+i+ zl9Nrz2Zwq+XKs5MJjHvncgDua>4oiTF~KHD*{WvGU6nWd`<5Aa1#zG~z1!Kmi1l3w zG{5tEt~skxSvsCC-|2I<zK};OHc=<-W1BA1<V^4%Ilse*{I^jhGoEfc5229rVgGdT z-O6Rk?Dx2a|L_%WX_LG5-?#X&Poa)x3kkWf1hyVDU?&3uK0>56eXOZibO{6v8W8t- ze%Uv21DOQ`#ty-I_7t%YL2MIrdh=!m2^g2>MfK<)P*_7yT4wjPVfLr`l`pRB7>Pab zn}M5ym3h{-@B&|toi(cjQj_MIiR0FP0~6y+^0-un&1!KupX=zAcbq!yZC^VJu;Ioe zUz*Q%MO*%XEc~JJW-CR2L>12wy2oz0ZrqOD!#GUIf#IT5h<*oBva&QO+fUm(OR!;R zE2A~Vy4>5Mr_h4SFB4GplbNv^O8Tq6ZUXn@{mi*@uaRL02(o;AeAu~fn*0f_uA?qg zjufjLYCui~0wYlz#7gqmwQr{>Spa_v@)N}yxdF2V+`eQ5r0U0!o_zk?S+oqGPT!O( zTasXdL4_cYTU|yLjduRa7fBJpMhajnL!_0vFFe&)wrJ6_vra>W#&6&D?%9LpDl$5H zRm+&d^+N^@{LCc_S+|FZ^IGuKBHe-ZKiOoZ_=x-n!VH(T5KvQq>2|<ZqXV(!sLId< z<D;X7G4(j!qJ<t5&C8U6{QQ%g`@@H$Z<)g*4IL<O`;r{Iy!tQQ-v6I}#Q9-HWMBZ5 z-@z+bM?j4ABW77^gV?~qG>C3*sqGwcmOu?#Z2l$B9Ucp8#2a|;_WL%Nq*CUfiK1~3 zG>Oxn=cugz2ETyFq$rb{muKVVNOPT!VQqb<{m&0eJQ&}G@8IeSKSLoUrpp9V&cy^= z+sOBz6JpW6xEZi+(;CgKeS24I#90eV4QX?9+Eo!cfvB!-;YWnUr2$e{9>Fg<w48wu z14%q%dZ@SHFeW-o&|4sOlAyfl)miOfGC2vQoun|>b4Kuu8?CrJ@F1<mjk|ro2J29< zhu%1yySlPXB7pVP(y7D~z3k8nzFd)DLLwJpATN-mlP+wasmCB*-og4+<eT56>@kVp zY&Rg3FV^_0%LpLRgv)I&L;O)bP&=knN{TV!Cx$9g7iX?rn-07xIA?f|^%!0oJzX6A zmap|^kIgmbPuPG-WMyX`y(MLPZk9w94dPC(9kio|F1)9Bz0!y`nHcA-tu=IIPeENn z16<11!+7$PDZTR^$D7)`R#McC&a;$=&O4o&Dj{%~{nD86vlVje(9EcEl12cYzNu=_ z+%vO1D4%Jbq>3*52A#PP+eU^R{;saLCBOB0`~75|tn#wm=g(Mf<C~AlxcwI_{tH2> zI&Z~OcH+jrC#hc3R_&KhH*#J<;%p;*J~qSB>TEt?f<VyEc_oao#f$S?6P1NPl53}{ zD^WtZ(`Xo=UKKQB)~wwh9+D<u5oSGGUG8%Cr~f8%@5!OWkagJ@Xd9Yb&YP4A1TvCM z<f;k+_A8>@pLkAb^^%T#&^rV!L6N$Q)!Fd$FMX{h1~ZZz9`DKCv=V3)KnA&X_^>Mr zef!-cqx5!0h!RzW;N`>hiq*M<WqM?wboY|>V=(1Ggd=I>y*EKS>YyNf)nL)0H>Ahc zlgFHVmNjyl@(PN0i0Cwygeu1P_WIg)Zd2^-NTz+~h&^LQBNXvL@n~{_p-@)#li)RR z;zS{MWySUN8#dsD?fTl5ll*txvwz^1Qj#uP4;hs1G%Hwa{s6oQcp%Sobkuj6JZTc7 z^8B!6(35&9MLe7&FMz&NT2WOK)(v}eIBlm>fqO(Bpwa2rFFm3m_@cZVncMc(EqVrf zG!8AF??pe@Z}sZke{U&nXB~ne^UJRSqw4l^@=L@a(Run>8%giST`@E;z^qZB?a{yY z?~B^ok7K@^hMQ*T()6RFf<l)b4+$p{V`k5e9sbWc5^Yi{K}4t6S}D6((@eP<J)e%X zZWI7N(}YOVFNW1%%-3?6QN1A_*HA1>$JlZyze6CgU-mX(>#j2~B^hdD8LWeesjI`v z@nJi_A+RS;Y-Lqug9d`sA%nt7+Ml1dwhr63ZzeYvtqS3^<pvuZp1c?to}*UbAz(Di zmjR(*<%Ek))Qc{aK}XPyjl#3wDFV$g#W}fvGoVl0OO77Ey+BTADrL%0DCxM&QBaKg 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 b8XG4c9u}Wh6Y#XFz}GahS*F)b>^%Pm--IL{ literal 0 HcmV?d00001 diff --git a/docs/en/calculators/par/theorie_suractif.md b/docs/en/calculators/par/theorie_suractif.md new file mode 100644 index 000000000..b5cb6167d --- /dev/null +++ b/docs/en/calculators/par/theorie_suractif.md @@ -0,0 +1,77 @@ +# Passe à ralentisseurs à fonds suractif + + + +*Extrait de Larinier, 2002[^1]* + +## Lois hydrauliques issues des abaques + +Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(q^*\) : + +$$ q^* = \dfrac{Q/L}{\sqrt{2g}a^{1,5}} $$ + + à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + + + +*Abaques d'une passe à ralentisseurs à fond suractif pour une pente de 10% (Extrait de Larinier, 2002[^1])* + + + +*Abaques d'une passe à ralentisseurs à fond suractif pour une pente de 15% (Extrait de Larinier, 2002[^1])* + +Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). + +On a donc : + +$$ ha/a = a_2(S) q^{*2} + a_1(S) q^* + a_0(S) $$ + +$$a_2(S) = - 0.354624S - 0.0153156$$ + +$$a_1(S) = 0.514953S + 1.25460$$ + +$$a_0(S) = - 2.22434S + 0.596682$$ + +Et : + +$$ h/a = b_2(S) q^{*2} + b_1(S) q^* + b_0 $$ + +$$b_2(S) = - 0.559218S + 0.000504060$$ + +$$b_1(S) = 1.15807S + 1.07554$$ + +$$b_0(S) = - 2.62712S + 0.601348$$ + +## Calcul de \(ha\), \(h\) et \(Q\) + +On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(q^*\) : + +$$ ha = a \left( a_2 (q^*)^2 + a_1 q^* + a_0 \right)$$ + +$$ h = a \left( b_2 (q^*)^2 + b_1 q^* + b_0 \right)$$ + +En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: + +$$ q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/a)}}{2 a_2}$$ + +Et on a enfin : + +$$ Q = L q^* \sqrt{g} a^{1,5} $$ + +Les limites de calcul de \(q^*\), \(ha/a\) et \(h/a\) sont fixées à partir des extrémités des courbes des abaques. + +## Vitesse débitante + +La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : + +$$ V = \dfrac{Q}{A_w} $$ + +pour les passes à ralentisseurs à fond suractif en utilisation les notations du schéma ci-dessus, on aura : + +$$ A_w = h \times L$$ + +## Cote de radier amont \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} + \frac{2.6 a S - a}{\sqrt{1 + S^2}} $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). diff --git a/docs/en/calculators/par/theorie_suractif_schema.png b/docs/en/calculators/par/theorie_suractif_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..53898288de611721cfc3fa08d5a8cd5a34f6521b GIT binary patch literal 75501 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�L_5a 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 WzxeqQmlXM+h*xkxn178jD(hF@G_TzN literal 0 HcmV?d00001 -- GitLab From bf9d84acddf561d6734e6f70c336b4a2ec9142f1 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 14 Aug 2020 15:47:07 +0200 Subject: [PATCH 076/101] Update translation for jalhyd#216 --- src/locale/messages.en.json | 58 +++++++++++++++---------------------- src/locale/messages.fr.json | 58 +++++++++++++++---------------------- 2 files changed, 46 insertions(+), 70 deletions(-) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index b4b6e6ca1..cecb243f9 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -631,48 +631,36 @@ "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "None of the aprons is crossable", "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "Crossable width %width% m is lower than the width of a block pattern %patternWidth% m", - "WARNING_VERIF_MRC_VMAX_APRON_N": "Apron #%N%: maximum speed %V% too high (maximum: %maxV%)", - "WARNING_VERIF_MRC_PVMAX_APRON_N": "Apron #%N%: dissipated power %PV% too high (maximum: %maxPV%)", - "WARNING_VERIF_MRC_YMIN_APRON_N": "Apron #%N%: water level %Y% too low (minimum: %minY%)", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Maximum speed %V% too high (maximum: %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Water level %Y% too low (minimum: %minY%)", "INFO_VERIF_MRC_CROSSABLE_WIDTH": "Maximum crossable width is %width% m", "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", - "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%N%: diving jet not supported", - "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall: diving jet not supported", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Wall #%NC%, structure #%NS%: diving jet not supported", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Downwall, structure #%NS%: diving jet not supported", - "ERROR_VERIF_PAB_DHMAX": "Wall #%N%: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_DW": "Downwall: fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", - "ERROR_VERIF_PAB_DHMAX_JET_DW":"Downwall: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET": "Wall #%N%: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET_DW": "Downwall: fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", - "ERROR_VERIF_PAB_BMIN": "Wall #%NC%, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", - "ERROR_VERIF_PAB_BMIN_DW": "Downwall, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", - "WARNING_VERIF_PAB_BMIN": "Wall #%NC%, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", - "WARNING_VERIF_PAB_BMIN_DW": "Downwall, structure #%NS%: slot/weir width %L% too low (minimum: %minB%)", - "ERROR_VERIF_PAB_LMIN": "Wall #%N%: basin length %LB% too low (minimum for surface jet: %minLBS%, minimum for diving jet: %minLBS%)", - "ERROR_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", - "WARNING_VERIF_PAB_LMIN_JET": "Wall #%N%: basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", - "WARNING_VERIF_PAB_HMIN": "Wall #%NC%, structure #%NS%: head on weir %h1% too low (minimum: %minH%)", - "WARNING_VERIF_PAB_HMIN_DW": "Downwall, structure #%NS%: head on weir %h1% too low (minimum: %minH%)", - "ERROR_VERIF_PAB_SMIN": "Wall #%NC%, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", - "ERROR_VERIF_PAB_SMIN_DW": "Downwall, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", - "WARNING_VERIF_PAB_SMIN": "Wall #%NC%, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", - "WARNING_VERIF_PAB_SMIN_DW": "Downwall, structure #%NS%: orifice surface %S% is too low (minimum: %minS%)", - "ERROR_VERIF_PAB_YMOY": "Wall #%N%: basin depth %PB% too low (minimum for surface jet: %minPBS%, minimum for diving jet: %minPBP%)", - "ERROR_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", - "WARNING_VERIF_PAB_YMOY_JET": "Wall #%N%: basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", - "ERROR_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", - "WARNING_VERIF_PAB_YMOY_2_DH": "Wall #%N%: basin depth %PB% lower than 2x fall %DH%", - "ERROR_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% too high (maximum: %maxPV%)", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Diving jet not supported", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Diving jet not supported", + "ERROR_VERIF_PAB_DHMAX": "Fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Slot/weir width %L% too low (minimum: %minB%)", + "WARNING_VERIF_PAB_BMIN": "Slot/weir width %L% too low (minimum: %minB%)", + "ERROR_VERIF_PAB_LMIN": "Basin length %LB% too low (minimum for surface jet: %minLBS%, minimum for diving jet: %minLBS%)", + "ERROR_VERIF_PAB_LMIN_JET": "Basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", + "WARNING_VERIF_PAB_LMIN_JET": "Basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", + "WARNING_VERIF_PAB_HMIN": "Head on weir %h1% too low (minimum: %minH%)", + "ERROR_VERIF_PAB_SMIN": "Orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN": "Orifice surface %S% is too low (minimum: %minS%)", + "ERROR_VERIF_PAB_YMOY": "Basin depth %PB% too low (minimum for surface jet: %minPBS%, minimum for diving jet: %minPBP%)", + "ERROR_VERIF_PAB_YMOY_JET": "Basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", + "WARNING_VERIF_PAB_YMOY_JET": "Basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Basin depth %PB% lower than 2x fall %DH%", + "WARNING_VERIF_PAB_YMOY_2_DH": "Basin depth %PB% lower than 2x fall %DH%", + "ERROR_VERIF_PAB_PVMAX": "Dissipated power %PV% too high (maximum: %maxPV%)", "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", "ERROR_VERIF_PAR_SLOPE": "Slope %S% too high (maximum: %maxS%)", "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", - "WARNING_VERIF_PAB_PVMAX": "Wall #%N%: dissipated power %PV% very high (recommanded: %maxPV%)", - "WARNING_VERIF_PAB_ORIFICE": "Wall #%NC%, structure #%NS%: uninsured passage over an orifice", - "WARNING_VERIF_PAB_ORIFICE_DW": "Downwall, structure #%NS%: uninsured passage over an orifice", + "WARNING_VERIF_PAB_PVMAX": "Dissipated power %PV% very high (recommanded: %maxPV%)", + "WARNING_VERIF_PAB_ORIFICE": "Uninsured passage over an orifice", "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index d24d53920..df635cb26 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -634,49 +634,37 @@ "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable %width% m est inférieure à la largeur d'un motif de blocs %patternWidth% m", - "WARNING_VERIF_MRC_VMAX_APRON_N": "Radier n°%N% : vitesse maximale %V% trop élevée (maximum : %maxV%)", - "WARNING_VERIF_MRC_PVMAX_APRON_N": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%) dans le radier %N%", - "WARNING_VERIF_MRC_YMIN_APRON_N": "Radier n°%N% : tirant d'eau %Y% insuffisant (minimum : %minY%)", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", "INFO_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable maximale est %width% m", "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", - "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%N% : jet plongeant non supporté", - "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval : jet plongeant non supporté", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Cloison n°%NC%, ouvrage n°%NS% : jet plongeant non supporté", - "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED_DW": "Cloison aval, ouvrage n°%NS% : jet plongeant non supporté", - "ERROR_VERIF_PAB_DHMAX": "Cloison n°%N% : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_DW": "Cloison aval : chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", - "ERROR_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", - "ERROR_VERIF_PAB_DHMAX_JET_DW":"Cloison aval : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET": "Cloison n°%N% : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", - "WARNING_VERIF_PAB_DHMAX_JET_DW": "Cloison aval : chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", - "ERROR_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "ERROR_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "WARNING_VERIF_PAB_BMIN": "Cloison n°%NC%, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "WARNING_VERIF_PAB_BMIN_DW": "Cloison aval, ouvrage n°%NS% : largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", - "ERROR_VERIF_PAB_LMIN": "Cloison n°%N% : longueur de bassin %LB% insuffisante (minimum pour jet de surface : %minLBS%, minimum pour jet plongeant : %minLBP%)", - "ERROR_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", - "WARNING_VERIF_PAB_LMIN_JET": "Cloison n°%N% : longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", - "WARNING_VERIF_PAB_HMIN": "Cloison n°%NC%, ouvrage n°%NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", - "WARNING_VERIF_PAB_HMIN_DW": "Cloison aval, ouvrage n°%NS% : charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", - "ERROR_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "ERROR_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "WARNING_VERIF_PAB_SMIN": "Cloison n°%NC%, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "WARNING_VERIF_PAB_SMIN_DW": "Cloison aval, ouvrage n°%NS% : surface de l'orifice %S% insuffisante (minimum : %minS%)", - "ERROR_VERIF_PAB_YMOY": "Cloison n°%N% : profondeur de bassin %PB% insuffisante (minimum pour jet de surface : %minPBS%, minimum pour jet plongeant : %minPBP%)", - "ERROR_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", - "WARNING_VERIF_PAB_YMOY_JET": "Cloison n°%N% : profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", - "ERROR_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", - "WARNING_VERIF_PAB_YMOY_2_DH": "Cloison n°%N% : profondeur de bassin %PB% inférieure à 2x la chute %DH%", - "ERROR_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% trop élevée (maximum : %maxPV%)", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Jet plongeant non supporté", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Jet plongeant non supporté", + "ERROR_VERIF_PAB_DHMAX": "Chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "WARNING_VERIF_PAB_BMIN": "Largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "ERROR_VERIF_PAB_LMIN": "Longueur de bassin %LB% insuffisante (minimum pour jet de surface : %minLBS%, minimum pour jet plongeant : %minLBP%)", + "ERROR_VERIF_PAB_LMIN_JET": "Longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", + "WARNING_VERIF_PAB_LMIN_JET": "Longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", + "WARNING_VERIF_PAB_HMIN": "Charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "ERROR_VERIF_PAB_SMIN": "Surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_SMIN": "Surface de l'orifice %S% insuffisante (minimum : %minS%)", + "ERROR_VERIF_PAB_YMOY": "Profondeur de bassin %PB% insuffisante (minimum pour jet de surface : %minPBS%, minimum pour jet plongeant : %minPBP%)", + "ERROR_VERIF_PAB_YMOY_JET": "Profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", + "WARNING_VERIF_PAB_YMOY_JET": "Profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "WARNING_VERIF_PAB_YMOY_2_DH": "Profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "ERROR_VERIF_PAB_PVMAX": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%)", "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", "ERROR_VERIF_PAR_SLOPE": "La pente %S% m est trop élevée (maximum : %maxS% m)", "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", - "WARNING_VERIF_PAB_PVMAX": "Cloison n°%N% : puissance dissipée %PV% très élevée (recommandée : %maxPV%)", - "WARNING_VERIF_PAB_ORIFICE": "Cloison n°%NC%, ouvrage n°%NS% : franchissement non assuré sur un orifice", - "WARNING_VERIF_PAB_ORIFICE_DW": "Cloison aval, ouvrage n°%NS% : franchissement non assuré sur un orifice", + "WARNING_VERIF_PAB_PVMAX": "Puissance dissipée %PV% très élevée (recommandée : %maxPV%)", + "WARNING_VERIF_PAB_ORIFICE": "Franchissement non assuré sur un orifice", "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", "ERROR_VERIF_SPECIES_NUB_KO": "FORM_ID_%uid% : franchissement impossible", -- GitLab From 0764c538032035367055bc3eded6efe80cd247ca Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Mon, 24 Aug 2020 13:26:42 +0200 Subject: [PATCH 077/101] Fix #443 - translate PAR doc into english --- docs/en/calculators/par/calage.md | 48 +++++++++--------- docs/en/calculators/par/formules.md | 50 +++++++++---------- docs/en/calculators/par/simulation.md | 36 +++++++------- docs/en/calculators/par/theorie_fatou.md | 54 ++++++++++----------- docs/en/calculators/par/theorie_mixte.md | 44 ++++++++--------- docs/en/calculators/par/theorie_plans.md | 54 ++++++++++----------- docs/en/calculators/par/theorie_suractif.md | 44 ++++++++--------- docs/fr/calculators/par/calage.md | 2 +- docs/fr/calculators/par/theorie_plans.md | 6 +-- docs/fr/calculators/par/theorie_suractif.md | 2 +- mkdocs-en.yml | 6 +-- 11 files changed, 173 insertions(+), 173 deletions(-) diff --git a/docs/en/calculators/par/calage.md b/docs/en/calculators/par/calage.md index 905f051dc..ed209ce6e 100644 --- a/docs/en/calculators/par/calage.md +++ b/docs/en/calculators/par/calage.md @@ -1,38 +1,38 @@ -# Calage d'une passe à ralentisseurs +# Baffle fishway (or humpback fishway) setup -Ce module permet de dimensionner une passe à ralentisseur. Les types de passes à ralentisseurs supportés sont: +This module allows to dimension a baffle fishway. Supported baffle fishway types are: -- [passes à ralentisseurs plans](theorie_plans.md) ; -- [passes à ralentisseurs "Fatou"](theorie_fatou.md) ; -- [passes à ralentisseurs à fonds suractifs](theorie_suractif.md) ; -- [passes à ralentisseurs mixtes](theorie_mixte.md). +- [plane baffles (Denil) fishway](theorie_plans.md); +- ["Fatou" baffle fishway](theorie_fatou.md); +- [superactive baffles fishway](theorie_suractif.md); +- [mixed / chevron baffles fishway](theorie_mixte.md). -Voir [l'ensemble des formules utilisées pour les passes à ralentisseurs](formules.md). +See [all the formulas used for baffle fishways](formules.md). -## Calage hydraulique de la passe +## Hydraulic setup -L'outil permet de calculer l'une des valeurs suivantes : +This tool allows to calculate one of the following values: -- le débit passant dans la passe (m<sup>3</sup>/s) ; -- la charge en amont de la passe (m) ; -- la largeur de la passe (m) pour les types ralentisseurs plans et Fatou . +- flow through the pass (m<sup>3</sup>/s); +- upstream head (m); +- pass width (m) for plane and Fatou types. -Compte tenu des paramètres obligatoires suivants : +Given the following mandatory parameters: -- le type de passe (Plans, Fatou, fonds suractifs ou mixtes) ; -- [la pente (m/m)](../hsl/pente.md). +- pass type (Plane, Fatou, superactive, mixed); +- [slope (m/m)](../hsl/pente.md). -Le paramètre "Espacement entre les ralentisseurs (m)" est facultatif. S'il n'est pas renseigné, Sa valeur standard est alors calculée. S'il est fourni, si sa valeur s'écarte de plus de 10% de la valeur standard, une erreur est générée. +Parameter "Space between baffles (m)" is optional. When not given, its standard value is calculated. When given, if its value deviates by more than 10% from standard value, an error is generated. -## Calage altimétrique de la passe +## Altimetric setup -Les paramètres de calage altimétriques (cote de l'eau amont et cote de l'eau aval) sont facultatifs et permettent de calculer: +Altimetric setup parameters (upstream water level and downstream water level) are optional and allow to calculate: -- la longueur longitudinale et au fil de l'eau de la passe -- le nombre de ralentisseurs -- les cotes de radier et de déversement à l'amont et à l'aval de la passe -- les cotes d'arase des murs latéraux à l'amont de la passe. +- pass length in horizontal projection and following the slope +- number of baffles +- apron and spilling elevations, upstream and downstream +- rake height of upstream side walls -## Génération d'un module de simulation de passe à ralentisseurs +## Generating a baffle fishway simulation module -Les résultats d'une passe calée en altimétrie peuvent servir à générer un module de [simulation de passe à ralentisseurs](simulation.md) à l'aide du bouton ad hoc. \ No newline at end of file +Results of an altimetrically setup pass may be used to generate a [baffle fishway simulation](simulation.md) module, using the ad hoc button. \ No newline at end of file diff --git a/docs/en/calculators/par/formules.md b/docs/en/calculators/par/formules.md index fea7ece75..43a97f534 100644 --- a/docs/en/calculators/par/formules.md +++ b/docs/en/calculators/par/formules.md @@ -1,56 +1,56 @@ -# Formules de calcul des passes à ralentisseurs +# Baffle fishways (or humpback fishways) calculation formulas -Pour le calcul de : +For calculation of: -- la charge amont \(ha\) ; -- la hauteur d'eau dans la passe \(h\) ; -- du débit \(Q\) ; -- de la vitesse débitante \(V\) ; -- la cote de radier amont \(Z_{r1}\) ; -- la cote d'arase minimale des murs latéraux \(Z_m\) +- upstream head \(ha\); +- water level in the pass \(h\); +- flow \(Q\); +- flow velocity \(V\); +- upstream apron elevation \(Z_{r1}\); +- minimal rake height of upstream side walls \(Z_m\) -Se référer aux formules propres à chaque type de passe à ralentisseurs: +Refer to the formulas specific to each baffle fishway type: -- [passes à ralentisseurs plans](theorie_plans.md) ; -- [passes à ralentisseurs "Fatou"](theorie_fatou.md) ; -- [passes à ralentisseurs à fonds suractifs](theorie_suractif.md) ; -- [passes à ralentisseurs mixtes](theorie_mixte.md). +- [plane baffles (Denil) fishway](theorie_plans.md); +- ["Fatou" baffle fishway](theorie_fatou.md); +- [superactive baffles fishway](theorie_suractif.md); +- [mixed / chevron baffles fishway](theorie_mixte.md). -## Cote de l'eau à l'amont de la passe \(Z_1\) +## Upstream water elevation \(Z_1\) $$Z_{1} = Z_{d1} + h_a$$ -Avec \(Z_{d1}\) la cote de déversement du premier ralentisseur amont, \(h_a\) la charge amont. +With \(Z_{d1}\) the spilling elevation of the first upstream baffle, \(h_a\) the upstream head. -## Longueur de la passe +## Pass length -La longueur de la passe le long d'une ligne d'eau parallèle à la pente de la passe \(L_w\) est égale à +Pass length along a water line parallel to the pass slope \(L_w\) equals $$L_w = (Z_1 - Z_2)\dfrac{\sqrt{1 + S^2}}{S}$$ -avec \(Z_1\) et \(Z_2\) les cotes de l'eau à l'amont et l'aval de la passe, \(S\) la pente. +with \(Z_1\) and \(Z_2\) the upstream and downstream water elevations, \(S\) the slope. -La longueur de la passe le long de la pente \(L_S\) doit être un multiple de la longueur entre les ralentisseurs \(P\) arrondi à l'entier supérieur : +Pass length along the slope \(L_S\) must be a multiple of the length between two baffles \(P\) rounded to the greater integer: $$L_S = \lceil (L_w - \epsilon) / P \rceil \times P $$ -Avec \(\epsilon\) = 1 mm pour laisser une marge avant le rajout d'un ralentisseur supplémentaire. +With \(\epsilon\) = 1 mm to leave a margin before adding an extra baffle. -La projection horizontale de la longueur de la passe \(L_h\) est alors égale à : +Horizontal projection of the pass length \(L_h\) thus equals: $$L_h = \dfrac{L_S}{\sqrt{1 + S^2}} $$ -## Nombre de ralentisseurs \(N_b\) +## Number of baffles \(N_b\) -Pour les types plans et Fatou : +For plane and Fatou types: $$N_b = L_S / P + 1$$ -Pour les types à fonds suractifs et mixtes : +For superactive and mixed types: $$N_b = L_S / P$$ -## Cotes de radier à l'aval \(Z_{r2}\) et de déversement à l'aval \(Z_{d2}\) +## Downstream apron \(Z_{r2}\) and spilling \(Z_{d2}\) elevations: $$Z_{r2} = Z_{r1} - \dfrac{L_S \times S}{\sqrt{1 + S^2}}$$ diff --git a/docs/en/calculators/par/simulation.md b/docs/en/calculators/par/simulation.md index d6005c233..37708677a 100644 --- a/docs/en/calculators/par/simulation.md +++ b/docs/en/calculators/par/simulation.md @@ -1,26 +1,26 @@ -# Simulation d'une passe à ralentisseurs +# Baffle fishway (or humpback fishway) simulation -Ce module permet de calculer différentes conditions hydrauliques sur une passe à ralentisseur dont la géométrie est connue. Cette géométrie provient de mesures topographiques ou du [résultat d'un calage de passe à ralentisseurs](calage.md). +This module allows to calculate different hydraulic conditions on a baffle fishway with a known geometry. This geometry may come from topographical measurements or from the [result of a baffle fishway setup](calage.md). -Les types de passes à ralentisseurs supportés sont: +Supported baffle fishway types are: -- [passes à ralentisseurs plans](theorie_plans.md) ; -- [passes à ralentisseurs "Fatou"](theorie_fatou.md) ; -- [passes à ralentisseurs à fonds suractifs](theorie_suractif.md) ; -- [passes à ralentisseurs mixtes](theorie_mixte.md). +- [plane baffles (Denil) fishway](theorie_plans.md); +- ["Fatou" baffle fishway](theorie_fatou.md); +- [superactive baffles fishway](theorie_suractif.md); +- [mixed / chevron baffles fishway](theorie_mixte.md). -Voir [l'ensemble des formules utilisées pour les passes à ralentisseurs](formules.md). +See [all the formulas used for baffle fishways](formules.md). -L'outil permet de calculer l'une des valeurs suivantes : +This tool allows to calculate one of the following values: -- le débit passant dans la passe (m<sup>3</sup>/s) ; -- la cote de l'eau en amont de la passe (m) ; -- la cote de déversement en amont de la passe (m). +- flow through the pass (m<sup>3</sup>/s); +- upstream water elevation (m); +- upstream spilling elevation (m). -Compte tenu des paramètres obligatoires suivants : +Given the following mandatory parameters: -- le type de passe (Plans, Fatou, fonds suractifs ou mixtes) ; -- [la pente (m/m)](../hsl/pente.md) ; -- la largeur de la passe (m) ; -- la cote de déversement ou la cote de radier à l'amont (m) ; -- la cote de déversement ou la cote de radier à l'aval (m) . +- pass type (Plane, Fatou, superactive, mixed); +- [slope (m/m)](../hsl/pente.md). +- pass width (m); +- upstream spilling or apron elevation (m); +- downstream spilling or apron elevation (m). diff --git a/docs/en/calculators/par/theorie_fatou.md b/docs/en/calculators/par/theorie_fatou.md index d8948bfc4..162db8256 100644 --- a/docs/en/calculators/par/theorie_fatou.md +++ b/docs/en/calculators/par/theorie_fatou.md @@ -1,34 +1,34 @@ -# Passe à ralentisseurs "Fatou" +# "Fatou" baffle fiwhway -## Caractéristiques géométriques +## Geometrical characteristics - + -*Extrait de Larinier, 2002[^1]* +*Excerpt fromLarinier, 2002[^1]* -## Lois hydrauliques issues des abaques +## Hydraulic laws given by abacuses -Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(Q^*\) : +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(Q^*\): $$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ - à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + to upstream head \(ha\) and the average water level in the pass \(h\) : - + -*Abaques d'une passe à ralentisseurs Fatou pour une pente de 10% (Extrait de Larinier, 2002[^1])* +*Abacuses of a Fatou baffle fishway for a slope of 10% (Excerpt fromLarinier, 2002[^1])* - + -*Abaques d'une passe à ralentisseurs Fatou pour une pente de 15% (Extrait de Larinier, 2002[^1])* +*Abacuses of a Fatou baffle fishway for a slope of 15% (Excerpt fromLarinier, 2002[^1])* - + -*Abaques d'une passe à ralentisseurs Fatou pour une pente de 20% (Extrait de Larinier, 2002[^1])* +*Abacuses of a Fatou baffle fishway for a slope of 20% (Excerpt fromLarinier, 2002[^1])* -Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. -On a donc : +We thus have: $$ ha/L = a_2(S) Q^{*2} + a_1(S) Q^* + a_0(S) $$ @@ -38,7 +38,7 @@ $$a_1(S) = 302.623S^2 - 106.203S + 13.2957$$ $$a_0(S) = 15.8096S^2 - 5.19282S + 0.465827$$ -Et : +And: $$ h/L = b_2(S) Q^{*2} + b_1(S) Q^* + b_0 $$ @@ -48,43 +48,43 @@ $$b_1(S) = 42.4113S^2 - 24.4941S + 8.84146$$ $$b_0(S) = - 3.56494S^2 + 0.450262S + 0.0407576$$ -## Calcul de \(ha\), \(h\) et \(Q\) +## Calculation of \(ha\), \(h\) and \(Q\) -On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : +We can then use those coefficients to calculate \(ha\), \(h\) and \(Q^*\): $$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ $$ h = L \left( b_2 (Q^*)^2 + b_1 Q^* + b_0 \right)$$ -En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: +Using the positive inverse function, depending on \(ha/L\), we get: $$ Q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/L)}}{2 a_2}$$ -Et on a enfin : +And we finally have: $$ Q = Q^* \sqrt{g} L^{2,5} $$ -Les limites de calcul de \(Q^*\), \(ha/L\) et \(h/L\) sont fixées à partir des extrémités des courbes des abaques. +Calculation limitations of \(Q^*\), \(ha/L\) and \(h/L\) are determined based on the extremities of the abacuses curves. -## Vitesse débitante +## Flow velocity -La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : $$ V = \dfrac{Q}{A_w} $$ -pour les passes à ralentisseurs Fatou en utilisation les notations du schéma ci-dessus, on aura : +for Fatou baffle fishways using the notation of the schema above, we have: $$ A_w = B \times h $$ -Ce qui donne avec les proportions standards : +Which gives with standard proportions: $$ A_w = 0.6hL $$ -## Cote de radier amont \(Z_{r1}\) +## Upstream apron elevation \(Z_{r1}\) $$ Z_{r1} = Z_{d1} + \frac{0.3 S - 0.2}{\sqrt{1 + S^2}} $$ -## Cote d'arase minimale des murs latéraux \(Z_m\) +## Minimal rake height of upstream side walls \(Z_m\) $$ Z_m = Z_{r1} + \frac{4 L}{3 \sqrt{1 + S^2}} $$ diff --git a/docs/en/calculators/par/theorie_mixte.md b/docs/en/calculators/par/theorie_mixte.md index b9c77c510..8c06d11ec 100644 --- a/docs/en/calculators/par/theorie_mixte.md +++ b/docs/en/calculators/par/theorie_mixte.md @@ -1,28 +1,28 @@ -# Passe à ralentisseurs mixte ou à chevrons +# Mixed / chevron baffles fishway - + -*Extrait de Larinier, 2002[^1]* +*Excerpt from Larinier, 2002[^1]* -## Lois hydrauliques issues des abaques +## Hydraulic laws given by abacuses -Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(q^*\) : +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(q^*\) : $$ q^* = \dfrac{Q/L}{\sqrt{2g}a^{1,5}} $$ - à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + to upstream head \(ha\) and the average water level in the pass \(h\) : - + -*Abaques d'une passe à ralentisseurs mixte pour une pente de 10% (Extrait de Larinier, 2002[^1])* +*Abacuses of a mixed / chevron baffles fishway for a slope of 10% (Excerpt from Larinier, 2002[^1])* - + -*Abaques d'une passe à ralentisseurs mixte pour une pente de 15% (Extrait de Larinier, 2002[^1])* +*Abacuses of a mixed / chevron baffles fishway for a slope of 15% (Excerpt from Larinier, 2002[^1])* -Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. -On a donc : +We thus have: $$ ha/a = a_2(S) q^{*2} + a_1(S) q^* + a_0(S) $$ @@ -32,7 +32,7 @@ $$a_1(S) = - 2.47998S + 1.25363$$ $$a_0(S) = 5.02138S + 0.709434$$ -Et : +And: $$ h/a = b_2(S) q^{*2} + b_1(S) q^* + b_0 $$ @@ -42,35 +42,35 @@ $$b_1(S) = 0.176261S + 0.661656$$ $$b_0(S) = - 4.97686S + 1.30546$$ -## Calcul de \(ha\), \(h\) et \(Q\) +## Calculation of \(ha\), \(h\) and \(Q\) -On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(q^*\) : +We can then use those coefficients to calculate \(ha\), \(h\) and \(q^*\): $$ ha = a \left( a_2 (q^*)^2 + a_1 q^* + a_0 \right)$$ $$ h = a \left( b_2 (q^*)^2 + b_1 q^* + b_0 \right)$$ -En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: +Using the positive inverse function, depending on \(ha/L\), we get: $$ q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/a)}}{2 a_2}$$ -Et on a enfin : +And we finally have: $$ Q = L q^* \sqrt{g} a^{1,5} $$ -Les limites de calcul de \(q^*\), \(ha/a\) et \(h/a\) sont fixées à partir des extrémités des courbes des abaques. +Calculation limitations of \(q^*\), \(ha/a\) and \(h/a\) are determined based on the extremities of the abacuses curves. -## Vitesse débitante +## Flow velocity -La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : $$ V = \dfrac{Q}{A_w} $$ -pour les passes à ralentisseurs mixte en utilisation les notations du schéma ci-dessus, on aura : +for mixed / chevron baffles fishways using the notation of the schema above, we have: $$ A_w = h \times L$$ -## Cote de radier amont \(Z_{r1}\) +## Upstream apron elevation \(Z_{r1}\) $$ Z_{r1} = Z_{d1} + \frac{3 a S - a}{\sqrt{1 + S^2}} $$ diff --git a/docs/en/calculators/par/theorie_plans.md b/docs/en/calculators/par/theorie_plans.md index c6905b2ef..6dd081beb 100644 --- a/docs/en/calculators/par/theorie_plans.md +++ b/docs/en/calculators/par/theorie_plans.md @@ -1,34 +1,34 @@ -# Passe à ralentisseurs plans (Denil) +# Plane baffles (Denil) fishway -## Caractéristiques géométriques +## Geometrical characteristics - + -*Extrait de Larinier, 2002[^1]* +*Excerpt from Larinier, 2002[^1]* -## Lois hydrauliques issues des abaques +## Hydraulic laws given by abacuses -Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(Q^*\) : +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(Q^*\): $$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ - à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + to upstream head \(ha\) and the average water level in the pass \(h\) : - + -*Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 10% (Extrait de Larinier, 2002[^1])* +*Abacuses of a plane baffles (Denil) fishway for a slope of 10% (Excerpt from Larinier, 2002[^1])* - + -*Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 15% (Extrait de Larinier, 2002[^1])* +*Abacuses of a plane baffles (Denil) fishway for a slope of 15% (Excerpt from Larinier, 2002[^1])* - + -*Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 20% (Extrait de Larinier, 2002[^1])* +*Abacuses of a plane baffles (Denil) fishway for a slope of 20% (Excerpt from Larinier, 2002[^1])* -Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. -On a donc : +We thus have: $$ ha/L = a_2(S) Q^{*2} + a_1(S) Q^* + a_0(S) $$ @@ -38,7 +38,7 @@ $$a_1(S) = - 184.043S^2 + 59.7073S - 0.530737$$ $$a_0(S) = 15.2115S^2 - 5.22606S + 0.633654$$ -Et : +And: $$ h/L = b_2(S) Q^{*2} + b_1(S) Q^* + b_0 $$ @@ -48,43 +48,43 @@ $$b_1(S) = - 139.382S^2 + 47.2186S + 0.0547598$$ $$b_0(S) = 16.7218S^2 - 6.09624S + 0.834851$$ -## Calcul de \(ha\), \(h\) et \(Q\) +## Calculation of \(ha\), \(h\) and \(Q\) -On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : +We can then use those coefficients to calculate \(ha\), \(h\) and \(Q^*\): $$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ $$ h = L \left( b_2 (Q^*)^2 + b_1 Q^* + b_0 \right)$$ -En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: +Using the positive inverse function, depending on \(ha/L\), we get: $$ Q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/L)}}{2 a_2}$$ -Et on a enfin : +And we finally have: $$ Q = Q^* \sqrt{g} L^{2,5} $$ -Les limites de calcul de \(Q^*\), \(ha/L\) et \(h/L\) sont fixées à partir des extrémités des courbes des abaques. +Calculation limitations of \(Q^*\), \(ha/L\) and \(h/L\) are determined based on the extremities of the abacuses curves. -## Vitesse débitante +## Flow velocity -La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : $$ V = \dfrac{Q}{A_w} $$ -pour les passes à ralentisseurs plans en utilisation les notations du schéma ci-dessus, on aura : +for plane baffles fishways using the notation of the schema above, we have: $$ A_w = B \times \left( h - \dfrac{C+D}{2} \sin(45°) \right)$$ -Ce qui donne avec les proportions standards : +Which gives with standard proportions: $$ A_w = L \left(0.583 h - 0.146L \right) $$ -## Cote de radier amont \(Z_{r1}\) +## Upstream apron elevation \(Z_{r1}\) $$ Z_{r1} = Z_{d1} - D \sin(45° + \arctan(S)) $$ -## Cote d'arase minimale des murs latéraux \(Z_m\) +## Minimal rake height of upstream side walls \(Z_m\) $$ Z_m = Z_{r1} + - H_{min} \sin(45° + \arctan(S)) $$ diff --git a/docs/en/calculators/par/theorie_suractif.md b/docs/en/calculators/par/theorie_suractif.md index b5cb6167d..31fcf38ec 100644 --- a/docs/en/calculators/par/theorie_suractif.md +++ b/docs/en/calculators/par/theorie_suractif.md @@ -1,28 +1,28 @@ -# Passe à ralentisseurs à fonds suractif +# Superactive baffles fishway - + -*Extrait de Larinier, 2002[^1]* +*Excerpt from Larinier, 2002[^1]* -## Lois hydrauliques issues des abaques +## Hydraulic laws given by abacuses -Les expériences effectuées par Larinier, 2002[^1] ont permis d'établir des abaques permettant de relier le débit adimensionnel \(q^*\) : +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(q^*\) : $$ q^* = \dfrac{Q/L}{\sqrt{2g}a^{1,5}} $$ - à la charge amont \(ha\) et le niveau d'eau moyen dans la passe \(h\) : + to upstream head \(ha\) and the average water level in the pass \(h\) : - + -*Abaques d'une passe à ralentisseurs à fond suractif pour une pente de 10% (Extrait de Larinier, 2002[^1])* +*Abacuses of a superactive baffles fishway for a slope of 10% (Excerpt from Larinier, 2002[^1])* - + -*Abaques d'une passe à ralentisseurs à fond suractif pour une pente de 15% (Extrait de Larinier, 2002[^1])* +*Abacuses of a superactive baffles fishway for a slope of 15% (Excerpt from Larinier, 2002[^1])* -Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. -On a donc : +We thus have: $$ ha/a = a_2(S) q^{*2} + a_1(S) q^* + a_0(S) $$ @@ -32,7 +32,7 @@ $$a_1(S) = 0.514953S + 1.25460$$ $$a_0(S) = - 2.22434S + 0.596682$$ -Et : +And: $$ h/a = b_2(S) q^{*2} + b_1(S) q^* + b_0 $$ @@ -42,35 +42,35 @@ $$b_1(S) = 1.15807S + 1.07554$$ $$b_0(S) = - 2.62712S + 0.601348$$ -## Calcul de \(ha\), \(h\) et \(Q\) +## Calculation of \(ha\), \(h\) and \(Q\) -On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(q^*\) : +We can then use those coefficients to calculate \(ha\), \(h\) and \(q^*\): $$ ha = a \left( a_2 (q^*)^2 + a_1 q^* + a_0 \right)$$ $$ h = a \left( b_2 (q^*)^2 + b_1 q^* + b_0 \right)$$ -En utilisant la fonction inverse positive en fonction de \(ha/L\), on obtient: +Using the positive inverse function, depending on \(ha/L\), we get: $$ q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/a)}}{2 a_2}$$ -Et on a enfin : +And we finally have: $$ Q = L q^* \sqrt{g} a^{1,5} $$ -Les limites de calcul de \(q^*\), \(ha/a\) et \(h/a\) sont fixées à partir des extrémités des courbes des abaques. +Calculation limitations of \(q^*\), \(ha/a\) and \(h/a\) are determined based on the extremities of the abacuses curves. -## Vitesse débitante +## Flow velocity -La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement compte tenu de la section d'écoulement \(A_w\) au droit du ralentisseur : +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : $$ V = \dfrac{Q}{A_w} $$ -pour les passes à ralentisseurs à fond suractif en utilisation les notations du schéma ci-dessus, on aura : +for superactive baffles fishways using the notation of the schema above, we have: $$ A_w = h \times L$$ -## Cote de radier amont \(Z_{r1}\) +## Upstream apron elevation \(Z_{r1}\) $$ Z_{r1} = Z_{d1} + \frac{2.6 a S - a}{\sqrt{1 + S^2}} $$ diff --git a/docs/fr/calculators/par/calage.md b/docs/fr/calculators/par/calage.md index 905f051dc..85c66ef92 100644 --- a/docs/fr/calculators/par/calage.md +++ b/docs/fr/calculators/par/calage.md @@ -22,7 +22,7 @@ Compte tenu des paramètres obligatoires suivants : - le type de passe (Plans, Fatou, fonds suractifs ou mixtes) ; - [la pente (m/m)](../hsl/pente.md). -Le paramètre "Espacement entre les ralentisseurs (m)" est facultatif. S'il n'est pas renseigné, Sa valeur standard est alors calculée. S'il est fourni, si sa valeur s'écarte de plus de 10% de la valeur standard, une erreur est générée. +Le paramètre "Espacement entre les ralentisseurs (m)" est facultatif. S'il n'est pas renseigné, sa valeur standard est alors calculée. S'il est fourni, si sa valeur s'écarte de plus de 10% de la valeur standard, une erreur est générée. ## Calage altimétrique de la passe diff --git a/docs/fr/calculators/par/theorie_plans.md b/docs/fr/calculators/par/theorie_plans.md index c6905b2ef..83f5b528d 100644 --- a/docs/fr/calculators/par/theorie_plans.md +++ b/docs/fr/calculators/par/theorie_plans.md @@ -26,7 +26,7 @@ $$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ *Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 20% (Extrait de Larinier, 2002[^1])* -Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). +Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous la forme de polynômes dépendant de la pente \(S\). On a donc : @@ -50,7 +50,7 @@ $$b_0(S) = 16.7218S^2 - 6.09624S + 0.834851$$ ## Calcul de \(ha\), \(h\) et \(Q\) -On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : +On peut ensuite utiliser ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : $$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ @@ -72,7 +72,7 @@ La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement $$ V = \dfrac{Q}{A_w} $$ -pour les passes à ralentisseurs plans en utilisation les notations du schéma ci-dessus, on aura : +pour les passes à ralentisseurs plans en utilisant les notations du schéma ci-dessus, on aura : $$ A_w = B \times \left( h - \dfrac{C+D}{2} \sin(45°) \right)$$ diff --git a/docs/fr/calculators/par/theorie_suractif.md b/docs/fr/calculators/par/theorie_suractif.md index b5cb6167d..ed3cc6233 100644 --- a/docs/fr/calculators/par/theorie_suractif.md +++ b/docs/fr/calculators/par/theorie_suractif.md @@ -1,4 +1,4 @@ -# Passe à ralentisseurs à fonds suractif +# Passe à ralentisseurs à fond suractif  diff --git a/mkdocs-en.yml b/mkdocs-en.yml index 88e7fd794..5cad58607 100644 --- a/mkdocs-en.yml +++ b/mkdocs-en.yml @@ -65,9 +65,9 @@ nav: - calculators/pam/macrorugo_complexe.md - calculators/pam/concentration.md - Humpback fishways: - - calculators/par/calage.md - - calculators/par/simulation.md - - calculators/par/formules.md + - Baffle fishway setup: calculators/par/calage.md + - Baffle fishway simulation: calculators/par/simulation.md + - Baffle fishways formulas: calculators/par/formules.md - calculators/par/theorie_plans.md - calculators/par/theorie_fatou.md - calculators/par/theorie_suractif.md -- GitLab From 9b989d8dd14eba632901def31a2475bb8e64807d Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 11:09:24 +0200 Subject: [PATCH 078/101] Work on #436 - cordova: add debug messages to updates lookup move icon files into right folder fix language code detection for more than 2 letters codes --- src/app/services/internationalisation.service.ts | 3 ++- src/{ => assets/icons}/android-chrome-192x192.png | Bin src/{ => assets/icons}/android-chrome-512x512.png | Bin src/{ => assets/icons}/apple-touch-icon.png | Bin src/{ => assets/icons}/favicon-16x16.png | Bin src/{ => assets/icons}/favicon-32x32.png | Bin src/index.html | 13 ++++++++----- 7 files changed, 10 insertions(+), 6 deletions(-) rename src/{ => assets/icons}/android-chrome-192x192.png (100%) rename src/{ => assets/icons}/android-chrome-512x512.png (100%) rename src/{ => assets/icons}/apple-touch-icon.png (100%) rename src/{ => assets/icons}/favicon-16x16.png (100%) rename src/{ => assets/icons}/favicon-32x32.png (100%) diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index d8ddcb808..14df03969 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -55,11 +55,12 @@ export class I18nService extends Observable implements Observer { /** * Defines the current language code from its ISO 639-1 code (2 characters) or locale code * (ex: "fr", "en", "fr_FR", "en-US") - * @see this.languageCodeFromLocaleCode() * * @param code ISO 639-1 language code */ public setLanguage(code: string) { + // ensure 2-letter language code + code = code.substring(0, 2); // is language supported ? if (! Object.keys(this._availableLanguages).includes(code)) { throw new Error(`LANGUAGE_UNSUPPORTED "${code}"`); diff --git a/src/android-chrome-192x192.png b/src/assets/icons/android-chrome-192x192.png similarity index 100% rename from src/android-chrome-192x192.png rename to src/assets/icons/android-chrome-192x192.png diff --git a/src/android-chrome-512x512.png b/src/assets/icons/android-chrome-512x512.png similarity index 100% rename from src/android-chrome-512x512.png rename to src/assets/icons/android-chrome-512x512.png diff --git a/src/apple-touch-icon.png b/src/assets/icons/apple-touch-icon.png similarity index 100% rename from src/apple-touch-icon.png rename to src/assets/icons/apple-touch-icon.png diff --git a/src/favicon-16x16.png b/src/assets/icons/favicon-16x16.png similarity index 100% rename from src/favicon-16x16.png rename to src/assets/icons/favicon-16x16.png diff --git a/src/favicon-32x32.png b/src/assets/icons/favicon-32x32.png similarity index 100% rename from src/favicon-32x32.png rename to src/assets/icons/favicon-32x32.png diff --git a/src/index.html b/src/index.html index 55f7c5833..24fc414e2 100644 --- a/src/index.html +++ b/src/index.html @@ -6,11 +6,11 @@ <meta charset="utf-8"> <title>Cassiopée</title> - <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> - <link rel="icon" type="image/png" sizes="512x512" href="/android-chrome-512x512.png"> - <link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png"> - <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> - <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> + <link rel="apple-touch-icon" sizes="180x180" href="assets/icons/apple-touch-icon.png"> + <link rel="icon" type="image/png" sizes="512x512" href="assets/icons/android-chrome-512x512.png"> + <link rel="icon" type="image/png" sizes="192x192" href="assets/icons/android-chrome-192x192.png"> + <link rel="icon" type="image/png" sizes="32x32" href="assets/icons/favicon-32x32.png"> + <link rel="icon" type="image/png" sizes="16x16" href="assets/icons/favicon-16x16.png"> <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#ffffff"> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -231,6 +231,7 @@ * at the root of the directory (ex: "fr.irstea.cassiopee_4.5.0_amd64.deb") */ const lookForUpdates = function() { + console.log("looking for updates"); // Web update resources root directory const URL = "https://cassiopee.g-eau.fr/cassiopee-releases/"; @@ -238,6 +239,7 @@ let version = "4.4.2"; // debug cordova.getAppVersion.getVersionNumber((versionNumber) => { version = versionNumber; + console.log("current version", version); // fetch releases information const options = { method: 'get', @@ -246,6 +248,7 @@ cordova.plugin.http.sendRequest(URL + "releases.json", options, (response) => { var data = JSON.parse(response.data); // This is the resultant JSON in useful form // alert(`Youpi ! ${response.status} version=${version}, latest=${data.latest}, comp=${semverCompare(data.latest, version)}`); + console.log("latest version", data !== undefined ? data.latest : "err"); // compare current version to latest version if (data.latest && semverCompare(data.latest, version) == 1) { // get download link for latest version, depending on platform -- GitLab From ca7517a2331c59cd758e01f3276e345e6d88d3fb Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 11:39:24 +0200 Subject: [PATCH 079/101] Update to Angular 10 --- browserslist => .browserslistrc | 0 angular.json | 2 +- e2e/tsconfig.e2e.json | 2 +- package-lock.json | 4363 ++++++++++++++++++------------- package.json | 48 +- src/tsconfig.app.json | 2 +- src/tsconfig.spec.json | 2 +- tsconfig.base.json | 26 + tsconfig.json | 37 +- tslint.json | 3 + 10 files changed, 2568 insertions(+), 1917 deletions(-) rename browserslist => .browserslistrc (100%) create mode 100644 tsconfig.base.json diff --git a/browserslist b/.browserslistrc similarity index 100% rename from browserslist rename to .browserslistrc diff --git a/angular.json b/angular.json index c422f278e..cb5b49b6a 100644 --- a/angular.json +++ b/angular.json @@ -163,7 +163,7 @@ "schematics": { "@schematics/angular:component": { "prefix": "app", - "styleext": "scss" + "style": "scss" }, "@schematics/angular:directive": { "prefix": "app" diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json index 801a822f4..6841529a9 100644 --- a/e2e/tsconfig.e2e.json +++ b/e2e/tsconfig.e2e.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/e2e", "baseUrl": "./", diff --git a/package-lock.json b/package-lock.json index 60a0a4bbe..b67aec276 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,99 +11,101 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.901.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.5.tgz", - "integrity": "sha512-VO+8qBkaq54xAjdtvhEhQ86gZxS0V1wC9hGblw3O+XXri/euHky4811B2BbEylPy8/kRy5sUYcuwcyZrVxJ2TQ==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1000.7.tgz", + "integrity": "sha512-6pa98C5i+OrBumWobEjjGAeVNbv8m3h3LQQnXtihv9tjxCWceg25jtDhaNzeS6L8D/NsBnVb61MhTaOKUj7kUA==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.5", - "rxjs": "6.5.4" - }, - "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } + "@angular-devkit/core": "10.0.7", + "rxjs": "6.5.5" } }, "@angular-devkit/build-angular": { - "version": "0.901.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.5.tgz", - "integrity": "sha512-XottEBXE7cmkx6LPu33lXJCSAlxFkIu2ErWvV1oy+La6aZEuoJVntxzIKLprJmTiiD/4IDDQLWwp4m+EC96kyg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.901.5", - "@angular-devkit/build-optimizer": "0.901.5", - "@angular-devkit/build-webpack": "0.901.5", - "@angular-devkit/core": "9.1.5", - "@babel/core": "7.9.0", - "@babel/generator": "7.9.3", - "@babel/preset-env": "7.9.0", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1000.7.tgz", + "integrity": "sha512-EeA+X+pu4w8Io+SpmKBkvVUxuhzgcwaRBi42lKM3D4ot0MtrsSJi6E40t5E/Km6kohibRkDBYY32uT0eG4WHsw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1000.7", + "@angular-devkit/build-optimizer": "0.1000.7", + "@angular-devkit/build-webpack": "0.1000.7", + "@angular-devkit/core": "10.0.7", + "@babel/core": "7.9.6", + "@babel/generator": "7.9.6", + "@babel/plugin-transform-runtime": "7.9.6", + "@babel/preset-env": "7.9.6", + "@babel/runtime": "7.9.6", "@babel/template": "7.8.6", "@jsdevtools/coverage-istanbul-loader": "3.0.3", - "@ngtools/webpack": "9.1.5", - "ajv": "6.12.0", - "autoprefixer": "9.7.4", - "babel-loader": "8.0.6", + "@ngtools/webpack": "10.0.7", + "ajv": "6.12.3", + "autoprefixer": "9.8.0", + "babel-loader": "8.1.0", "browserslist": "^4.9.1", - "cacache": "15.0.0", + "cacache": "15.0.3", "caniuse-lite": "^1.0.30001032", "circular-dependency-plugin": "5.2.0", - "copy-webpack-plugin": "5.1.1", + "copy-webpack-plugin": "6.0.3", "core-js": "3.6.4", - "css-loader": "3.5.1", + "css-loader": "3.5.3", "cssnano": "4.1.10", "file-loader": "6.0.0", "find-cache-dir": "3.3.1", "glob": "7.1.6", - "jest-worker": "25.1.0", + "jest-worker": "26.0.0", "karma-source-map-support": "1.4.0", - "less": "3.11.1", - "less-loader": "5.0.0", - "license-webpack-plugin": "2.1.4", + "less-loader": "6.1.0", + "license-webpack-plugin": "2.2.0", "loader-utils": "2.0.0", "mini-css-extract-plugin": "0.9.0", "minimatch": "3.0.4", - "open": "7.0.3", + "open": "7.0.4", "parse5": "4.0.0", - "postcss": "7.0.27", + "pnp-webpack-plugin": "1.6.4", + "postcss": "7.0.31", "postcss-import": "12.0.1", "postcss-loader": "3.0.0", - "raw-loader": "4.0.0", + "raw-loader": "4.0.1", "regenerator-runtime": "0.13.5", + "resolve-url-loader": "3.1.1", "rimraf": "3.0.2", - "rollup": "2.1.0", - "rxjs": "6.5.4", - "sass": "1.26.3", + "rollup": "2.10.9", + "rxjs": "6.5.5", + "sass": "1.26.5", "sass-loader": "8.0.2", - "semver": "7.1.3", + "semver": "7.3.2", "source-map": "0.7.3", - "source-map-loader": "0.2.4", - "speed-measure-webpack-plugin": "1.3.1", - "style-loader": "1.1.3", + "source-map-loader": "1.0.0", + "source-map-support": "0.5.19", + "speed-measure-webpack-plugin": "1.3.3", + "style-loader": "1.2.1", "stylus": "0.54.7", "stylus-loader": "3.0.2", - "terser": "4.6.10", - "terser-webpack-plugin": "2.3.5", + "terser": "4.7.0", + "terser-webpack-plugin": "3.0.1", "tree-kill": "1.2.2", - "webpack": "4.42.0", + "webpack": "4.43.0", "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.10.3", + "webpack-dev-server": "3.11.0", "webpack-merge": "4.2.2", "webpack-sources": "1.4.3", - "webpack-subresource-integrity": "1.4.0", + "webpack-subresource-integrity": "1.4.1", "worker-plugin": "4.0.3" }, "dependencies": { + "@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -112,45 +114,16 @@ "uri-js": "^4.2.2" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, "core-js": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "glob": { @@ -167,24 +140,6 @@ "path-is-absolute": "^1.0.0" } }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "regenerator-runtime": { "version": "0.13.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", @@ -200,36 +155,16 @@ "glob": "^7.1.3" } }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "terser": { - "version": "4.6.10", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz", - "integrity": "sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -244,124 +179,57 @@ "dev": true } } - }, - "webpack-dev-server": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", - "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.6", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } } } }, "@angular-devkit/build-optimizer": { - "version": "0.901.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.5.tgz", - "integrity": "sha512-xmAMvLMSa8BvqlZ0wsC37Qop/7/pEaQRKLeowC3CCI3jiYDF10Tihar+Hjc04NVSal8ZBP9/+Gp3Yr0x61HcFA==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.7.tgz", + "integrity": "sha512-7vnj++astDMnsTPEiXgpXCTwo/zbFmJadKTIlHoU9VHxQNwSfPwSCtPuPlxynquJu5zxhs24CNUBLXXH8z9ztQ==", "dev": true, "requires": { "loader-utils": "2.0.0", "source-map": "0.7.3", - "tslib": "1.11.1", - "typescript": "3.6.5", + "tslib": "2.0.0", "webpack-sources": "1.4.3" }, "dependencies": { "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "typescript": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.5.tgz", - "integrity": "sha512-BEjlc0Z06ORZKbtcxGrIvvwYs5hAnuo6TKdNFL55frVDlB+na3z5bsLhFaIxmT+dPWgBIjMo6aNnTOgHHmHgiQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.901.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.5.tgz", - "integrity": "sha512-4HHOFFRu3yUBe0otaDHh4PID99XvnBJj7hYzvbB5BvP0ULif4/W0aoU2STnern4lH4pJmrtqYawBZ84ETXN/Ag==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1000.7.tgz", + "integrity": "sha512-+QYsEBcpZGVFFwrIlfH/NbChVdfIlnxtoTPjjR7xI5DOgl57sb79hOo4Ev0mPkbbgfn5tjSHvE3rmVQmlYqzcg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.5", - "@angular-devkit/core": "9.1.5", - "rxjs": "6.5.4" - }, - "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } + "@angular-devkit/architect": "0.1000.7", + "@angular-devkit/core": "10.0.7", + "rxjs": "6.5.5" } }, "@angular-devkit/core": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.5.tgz", - "integrity": "sha512-i0BJ6Ad3bcDE6e4Ev9Flbw7P0bz9p94FDVfEOPGBTrbJQZSqOm3CqaH2y5LGfl7acSPUi54hK481h1QRUFBkTQ==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.7.tgz", + "integrity": "sha512-pXaZgsQ8LHpRx4QGAUYDE8GwBQLAtoqPh6oUCwRJwBExm5rl13OGPTBWewHiq0ysV/SnFXvOjxwAaHQvC1AgZw==", "dev": true, "requires": { - "ajv": "6.12.0", + "ajv": "6.12.3", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", - "rxjs": "6.5.4", + "rxjs": "6.5.5", "source-map": "0.7.3" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -371,9 +239,9 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-json-stable-stringify": { @@ -381,45 +249,35 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true - }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } } } }, "@angular-devkit/schematics": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.5.tgz", - "integrity": "sha512-nkNiGrVl7xLaYYj/oT1wOBowa4Driv2f4abn78AJI/pd/EXA45G/rI9gO/kEG8lHn+FAMQedaywX9N4JDOxCGg==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.7.tgz", + "integrity": "sha512-eyyYPgpjtr3h7WbnNbkDubJ/p+8TgKU6abWd+NmBfTvyeHrpVFUYZabNRcdXwUDSVzfTQKdmLynIkESj/KROrg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.5", - "ora": "4.0.3", - "rxjs": "6.5.4" + "@angular-devkit/core": "10.0.7", + "ora": "4.0.4", + "rxjs": "6.5.5" + } + }, + "@angular/animations": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.0.12.tgz", + "integrity": "sha512-SnY25jLtAkH0jZAH1vhnGUsIb/qeMvnO379gMdVTtRR2mMqQnyz+d4IwRd7qOb2gYVSKiXQOEiLFV8TGJbx5mQ==", + "requires": { + "tslib": "^2.0.0" }, "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" } } }, - "@angular/animations": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.6.tgz", - "integrity": "sha512-7Pp7aqNNcH4fu1BnOVpvqJJHjE7RZ5K1oD396OWCh35pgpLowLSpFjhbVhzGrcAuxHyKnnHSX3etLn2hDaHxmQ==" - }, "@angular/cdk": { "version": "9.2.3", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.3.tgz", @@ -437,31 +295,31 @@ } }, "@angular/cli": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.5.tgz", - "integrity": "sha512-Decn0p+s0SLc5p2GN7k8dUrOY43hBuCz8PxueW0gEln7NjlpdmHk+6JQn0ZRl2/2Dbk+eTGzPXyCxGwqsW3jjw==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.0.7.tgz", + "integrity": "sha512-o7aLZ5tIndtWodAGjG58XoKqaQMRyTwxad7s/6LGulH/XPo0v7Nk6f+yopKe2HnZJaIh7sVLaBAUxEvp9F1vaQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.5", - "@angular-devkit/core": "9.1.5", - "@angular-devkit/schematics": "9.1.5", - "@schematics/angular": "9.1.5", - "@schematics/update": "0.901.5", + "@angular-devkit/architect": "0.1000.7", + "@angular-devkit/core": "10.0.7", + "@angular-devkit/schematics": "10.0.7", + "@schematics/angular": "10.0.7", + "@schematics/update": "0.1000.7", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.1.1", "ini": "1.3.5", "inquirer": "7.1.0", "npm-package-arg": "8.0.1", - "npm-pick-manifest": "6.0.0", - "open": "7.0.3", + "npm-pick-manifest": "6.1.0", + "open": "7.0.4", "pacote": "9.5.12", "read-package-tree": "5.3.1", "rimraf": "3.0.2", - "semver": "7.1.3", + "semver": "7.3.2", "symbol-observable": "1.2.0", "universal-analytics": "0.4.20", - "uuid": "7.0.2" + "uuid": "8.1.0" }, "dependencies": { "ansi-colors": { @@ -548,12 +406,12 @@ "dev": true }, "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" } }, "inquirer": { @@ -584,18 +442,18 @@ "dev": true }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "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": "^3.0.2" + "yallist": "^4.0.0" } }, "ms": { @@ -622,9 +480,9 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "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" @@ -656,9 +514,9 @@ "dev": true }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "string-width": { @@ -697,33 +555,53 @@ "dev": true }, "uuid": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", - "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.1.0.tgz", + "integrity": "sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==", "dev": true }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "@angular/common": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.6.tgz", - "integrity": "sha512-L9vw//wE+8QcSArOA411uJ68znnszCiPrbzSBV0BRZeadc7X68MwANA9qjtiTWZx5Xh9pNfHHwsCUyv2lUeinQ==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.12.tgz", + "integrity": "sha512-nIWXeLEWU3v4/GprKUtucFoVwNWpoD9DL1RWvOkyXT3tXm/Z8zGwXGKPJ13O2p6E22nChx3GauLKjSUmg1SWww==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/compiler": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.6.tgz", - "integrity": "sha512-tHOQEjWuWqSkrk6/vI6BK7uJnpAyFajCXPW37rH5xspF/aMbetrpoOiGBNUQg/HLaFh04nOAnnFntjLkW0ooaA==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.0.12.tgz", + "integrity": "sha512-g7BBC69/LW8Qd98IKL+YAY8vSJyc1WHuMejdMq56hU4h8FzLUKJZeKfsDe9MbiIqoPr9DWcDu4dtcg/g4Rc5/w==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/compiler-cli": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.6.tgz", - "integrity": "sha512-1b7m9tvSQJE4y95wNCdi34MORcsmXPC1vaylYlzChVM2et9Y2eKHYcRs+4g329j66irLBGpS/7cgTT2pgJ+IbA==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.0.12.tgz", + "integrity": "sha512-biFAxoQKxARpu/PMs8McS5flaPTnAFQ6y/xbBg8ItstzxdTjyuQSuYdvgK48Vd0c8eRv8mEgne3f/Cf7U43nDA==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -737,6 +615,7 @@ "semver": "^6.3.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", + "tslib": "^2.0.0", "yargs": "15.3.0" }, "dependencies": { @@ -871,6 +750,12 @@ "ansi-regex": "^5.0.0" } }, + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "dev": true + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -914,9 +799,19 @@ } }, "@angular/core": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.6.tgz", - "integrity": "sha512-iXgPh5DebLwkMzLtQ6WKiv/mo4hpwMOwYex3O4F2CKToR2tKPnXbV5WC/ADGm0XYXiocSKQPiyL4ZrUjVeKEqA==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.0.12.tgz", + "integrity": "sha512-qwnZ95HtWH2PBZs93iTXa9fvYCg203c/CnbzHNfMTZXcwaEBEEA7nuUBmjQt+VA8ib2BjO8CkepLNJI0pgo29w==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/flex-layout": { "version": "9.0.0-beta.29", @@ -924,14 +819,24 @@ "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==" }, "@angular/forms": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.6.tgz", - "integrity": "sha512-3KiFjLDipZVgS5rfnZ8EoKlkUokOR8dmuw2xdjKHgzflWFFeuaY9ZtQgjZGw9/jkwWlc9P38BOSEHbK8NakdDw==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.0.12.tgz", + "integrity": "sha512-otFD0ASqD1RMlpnI1OGHCSSDBRsnnz+/Hp5TV7TzqqIsyN9n0SyRw1/ZHMTNLx9JQf+QWhq2pXOOGBYqSiG54Q==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/language-service": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.6.tgz", - "integrity": "sha512-pB18hVoAbIuk1Wus8ur7yUxSukfPR4pCXiOfbxDQ94qlCzLAzIwXbaNV4erpBfL/fUKxMY3h8RrVt0dfm6M5RQ==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.0.12.tgz", + "integrity": "sha512-zsEzFu5D1Wm14we625R5IsvYKxuLxCE0VkZVVB402vJFImJNUNrXt/prY5mEnqePnK8fAjJLtJfpn64q8IWXBg==", "dev": true }, "@angular/material": { @@ -940,19 +845,49 @@ "integrity": "sha512-QJltLNp8a/eoozPgkFLISEWgdlX9q9+fZaLJ8c9tHEp2IT5sFYBFHf8dPl0pUyxgOXkS/0HD43I1qki71/T7Kw==" }, "@angular/platform-browser": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.6.tgz", - "integrity": "sha512-ebQhbT0Z55vwlQwAY4+s3Bcf1Q4wEN5Yk43iCuVt4g2kFkg09UP0z8aYtbuh7VQDyv/W4TTIGX8smGBWstoedQ==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.0.12.tgz", + "integrity": "sha512-w6R81GGgYS+l221yvibomkf0gQTaiontBLzafJXHyHWIXd1A3oVAaNfLzVpHy5kAfd1YruExRJOjDZ6T4iIfyA==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/platform-browser-dynamic": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.6.tgz", - "integrity": "sha512-7AL3hWu4oY0LRiMS9ZEFXPW2uqybWcVNFDHjPp3UwsDIT4+sW3DIm8P+UvAOFkkRwaHpPDqm4chTTiAHygC/1Q==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.12.tgz", + "integrity": "sha512-izNbYVJiJOT90+Up58Y+E6WHP3CdrS94CZpFwkJFFgRfHu7uKvNrFnB3EkDr5+Lw+RZ8RN5O7QRzUPtG//AGEQ==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/router": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.6.tgz", - "integrity": "sha512-Oz4nVQUR6t68DSzZuSrVaqrzmA7/0PIEi0sc85CE+UuOEoAqGMwN0NdQYizFT62WZ16DRI/1tZ+TTWvdmpEv8w==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.0.12.tgz", + "integrity": "sha512-utBfsIiVsFNydGtJexvEskYYgQXAd4+1KVxr5wVfND+AfV9EjC7YhMNdySq72ZRNrtQDpDpSlTHvoz5iVeEraw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@babel/code-frame": { "version": "7.5.5", @@ -964,30 +899,30 @@ } }, "@babel/compat-data": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.6.tgz", - "integrity": "sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", "dev": true, "requires": { - "browserslist": "^4.11.1", + "browserslist": "^4.12.0", "invariant": "^2.2.4", "semver": "^5.5.0" } }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", + "@babel/generator": "^7.9.6", "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -999,21 +934,21 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } @@ -1051,12 +986,12 @@ } }, "@babel/generator": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz", - "integrity": "sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1071,226 +1006,453 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-compilation-targets": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz", - "integrity": "sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.9.6", - "browserslist": "^4.11.1", + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", - "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" } }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } } }, "@babel/helpers": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", - "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } } }, "@babel/highlight": { @@ -1313,101 +1475,102 @@ } }, "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", + "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz", - "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -1447,12 +1610,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -1483,328 +1646,340 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", - "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", - "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", - "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", - "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz", - "integrity": "sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", - "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz", + "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz", + "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", "@babel/helper-module-imports": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", "@babel/plugin-proposal-async-generator-functions": "^7.8.3", @@ -1812,7 +1987,7 @@ "@babel/plugin-proposal-json-strings": "^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", "@babel/plugin-proposal-optional-chaining": "^7.9.0", "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", @@ -1829,9 +2004,9 @@ "@babel/plugin-transform-async-to-generator": "^7.8.3", "@babel/plugin-transform-block-scoped-functions": "^7.8.3", "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-classes": "^7.9.5", "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", "@babel/plugin-transform-dotall-regex": "^7.8.3", "@babel/plugin-transform-duplicate-keys": "^7.8.3", "@babel/plugin-transform-exponentiation-operator": "^7.8.3", @@ -1839,14 +2014,14 @@ "@babel/plugin-transform-function-name": "^7.8.3", "@babel/plugin-transform-literals": "^7.8.3", "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", "@babel/plugin-transform-modules-umd": "^7.9.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", "@babel/plugin-transform-new-target": "^7.8.3", "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-parameters": "^7.9.5", "@babel/plugin-transform-property-literals": "^7.8.3", "@babel/plugin-transform-regenerator": "^7.8.7", "@babel/plugin-transform-reserved-words": "^7.8.3", @@ -1857,8 +2032,8 @@ "@babel/plugin-transform-typeof-symbol": "^7.8.4", "@babel/plugin-transform-unicode-regex": "^7.8.3", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", "levenary": "^1.1.1", @@ -1907,21 +2082,21 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } @@ -1929,50 +2104,49 @@ } }, "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", + "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", "dev": true, "requires": { - "@babel/types": "^7.9.6", + "@babel/types": "^7.11.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } @@ -1986,6 +2160,12 @@ "ms": "^2.1.1" } }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2001,14 +2181,22 @@ } }, "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@braintree/sanitize-url": { @@ -2479,25 +2667,32 @@ } }, "@ngtools/webpack": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.5.tgz", - "integrity": "sha512-6VzmlXRnf7phwLOiy0WrxHFHD5TuNQgVVpD/VFkZjtCTOsZyGQYGVPfaqxvn13M4Mm8bjrN4mk06VowCFm2oHw==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.0.7.tgz", + "integrity": "sha512-yUjTDOgsuEJEtsyqb78jDm3Keo18x6j1AjmZUEeiCxShX2pBQTfErmxtBqxPUAkLa/gD7Wkf5cZM+3xcYyShRg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.5", + "@angular-devkit/core": "10.0.7", "enhanced-resolve": "4.1.1", - "rxjs": "6.5.4", + "rxjs": "6.5.5", "webpack-sources": "1.4.3" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" }, "dependencies": { - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true } } }, @@ -2507,49 +2702,76 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, "@schematics/angular": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.5.tgz", - "integrity": "sha512-kMscfnwd9TGLo8V+dE/Pzu4wNxZej/6F6z5XzMOQVFTbL+RqMDvtkHf9CarhiKBd5ogm4npfKV8ToNTUecFJkA==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.0.7.tgz", + "integrity": "sha512-0SljGZjA68tOsn7OIps79lTy9Y96OZglLnBqO6pSLlmCkGMbjFY2ssKQXJzwR0jJ5+TWBjWjpn2U5mir4yzOuQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.5", - "@angular-devkit/schematics": "9.1.5" + "@angular-devkit/core": "10.0.7", + "@angular-devkit/schematics": "10.0.7" } }, "@schematics/update": { - "version": "0.901.5", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.5.tgz", - "integrity": "sha512-JmB+AuU6C9eM8x/CxeBEDigRuypzuWx7gnloK9D5i2gP9r39clFNtWT7eM3YW3kl4uyEMzrQHx6esMWNUScVBw==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1000.7.tgz", + "integrity": "sha512-KEOtKu95np+jVxxs/JCQ8UNQ0v21BSZKe0sb+D/Nk3XVPMHXDS3ZvcavDh5OXGC2GucbZHkD2UNvEPTEHpLxMg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.5", - "@angular-devkit/schematics": "9.1.5", + "@angular-devkit/core": "10.0.7", + "@angular-devkit/schematics": "10.0.7", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^8.0.0", "pacote": "9.5.12", - "rxjs": "6.5.4", - "semver": "7.1.3", + "rxjs": "6.5.5", + "semver": "7.3.2", "semver-intersect": "1.4.0" }, "dependencies": { "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" } }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "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": "^3.0.2" + "yallist": "^4.0.0" } }, "npm-package-arg": { @@ -2563,25 +2785,16 @@ "validate-npm-package-name": "^3.0.0" } }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -2660,6 +2873,12 @@ "@types/jasmine": "*" } }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, "@types/marked": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.7.2.tgz", @@ -2688,9 +2907,9 @@ "integrity": "sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==" }, "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, "@types/selenium-webdriver": { @@ -2711,9 +2930,9 @@ "integrity": "sha512-hkgzYF+qnIl8uTO8rmUSVSfQ8BIfMXC4yJAF4n8BE758YsKBZvFC4NumnAegj7KmylP0liEZNpb9RRGFMbFejA==" }, "@types/webpack-sources": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", - "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", + "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", "dev": true, "requires": { "@types/node": "*", @@ -2745,178 +2964,177 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -2948,6 +3166,12 @@ "through": ">=2.2.7 <3" } }, + "abab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", + "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -2994,6 +3218,53 @@ "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==", "dev": true }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, "adler-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", @@ -3004,9 +3275,9 @@ } }, "adm-zip": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", - "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true }, "after": { @@ -3034,9 +3305,9 @@ } }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "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", @@ -3333,9 +3604,9 @@ } }, "app-root-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", - "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", "dev": true }, "aproba": { @@ -3369,6 +3640,12 @@ "commander": "^2.11.0" } }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -3465,49 +3742,32 @@ } }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" } }, "assert-plus": { @@ -3633,18 +3893,18 @@ "dev": true }, "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", - "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", "dev": true, "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" } }, "aws-sign2": { @@ -3669,15 +3929,16 @@ } }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" }, "dependencies": { "find-cache-dir": { @@ -3932,9 +4193,9 @@ } }, "bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", "dev": true }, "body-parser": { @@ -4279,27 +4540,28 @@ }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, "browserify-sign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.1.0.tgz", - "integrity": "sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.2", + "elliptic": "^6.5.3", "inherits": "^2.0.4", "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0" + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "dependencies": { "inherits": { @@ -4318,6 +4580,12 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "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 } } }, @@ -4331,15 +4599,15 @@ } }, "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", + "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001111", + "electron-to-chromium": "^1.3.523", + "escalade": "^3.0.2", + "node-releases": "^1.1.60" } }, "browserstack": { @@ -4526,12 +4794,12 @@ "dev": true }, "cacache": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.0.tgz", - "integrity": "sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.3.tgz", + "integrity": "sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==", "dev": true, "requires": { - "chownr": "^1.1.2", + "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "glob": "^7.1.4", "infer-owner": "^1.0.4", @@ -4541,12 +4809,12 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.2", "mkdirp": "^1.0.3", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", + "move-file": "^2.0.0", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", + "rimraf": "^3.0.2", "ssri": "^8.0.0", - "tar": "^6.0.1", + "tar": "^6.0.2", "unique-filename": "^1.1.1" }, "dependencies": { @@ -4579,6 +4847,15 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "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" + } + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -4712,9 +4989,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001055", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001055.tgz", - "integrity": "sha512-MbwsBmKrBSKIWldfdIagO5OJWZclpJtS4h0Jrk/4HFrXJxTdVdH23Fd+xCiHriVGvYcWyW8mR/CPsYajlH8Iuw==", + "version": "1.0.30001117", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001117.tgz", + "integrity": "sha512-4tY0Fatzdx59kYjQs+bNxUwZB03ZEBgVmJ1UkFPz/Q8OLiUUbjct2EdpnXj0fvFTPej2EkbPIG0w8BWsjAyk1Q==", "dev": true }, "canonical-path": { @@ -4958,9 +5235,9 @@ } }, "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, "chrome-trace-event": { @@ -4970,6 +5247,14 @@ "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "chromium-pickle-js": { @@ -5060,9 +5345,9 @@ } }, "cli-spinners": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", - "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", + "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==", "dev": true }, "cli-width": { @@ -5083,45 +5368,29 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -5169,29 +5438,40 @@ "integrity": "sha512-3Jfe6ZmmGzvdQWFo3MUzobn3WdX++jc3Tj0rsviJWYPnP7NGMFEE4qheNeOXeJgB1TTgxYT8XuNvhS/u596yGg==", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "codelyzer": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.2.tgz", - "integrity": "sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.0.tgz", + "integrity": "sha512-edJIQCIcxD9DhVSyBEdJ38AbLikm515Wl91t5RDGNT88uA6uQdTm4phTWfn9JhzAI8kXNUcfYyAE90lJElpGtA==", "dev": true, "requires": { - "app-root-path": "^2.2.1", + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", "aria-query": "^3.0.0", "axobject-query": "2.0.2", "css-selector-tokenizer": "^0.7.1", "cssauron": "^1.4.0", "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", "semver-dsl": "^1.0.1", "source-map": "^0.5.7", - "sprintf-js": "^1.1.2" + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" }, "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5203,6 +5483,12 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -5348,6 +5634,15 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, "compressible": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", @@ -5545,57 +5840,85 @@ "dev": true }, "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz", + "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==", "dev": true, "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", + "cacache": "^15.0.4", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "webpack-log": "^2.0.0" + "p-limit": "^3.0.1", + "schema-utils": "^2.7.0", + "serialize-javascript": "^4.0.0", + "webpack-sources": "^1.4.3" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" } }, "glob": { @@ -5612,6 +5935,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -5621,87 +5953,86 @@ "is-extglob": "^2.1.1" } }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "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": "^3.0.2" + "yallist": "^4.0.0" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "p-try": "^2.0.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "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": { - "figgy-pudding": "^3.5.1" + "glob": "^7.1.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -6339,19 +6670,19 @@ } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } @@ -6477,9 +6808,9 @@ } }, "css-loader": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.1.tgz", - "integrity": "sha512-0G4CbcZzQ9D1Q6ndOfjFuMDo8uLYMu5vc9Abs5ztyHcKvmil6GJrMiNjzzi3tQvUF+mVRuDg7bE6Oc0Prolgig==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", + "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -6493,7 +6824,7 @@ "postcss-modules-scope": "^2.2.0", "postcss-modules-values": "^3.0.0", "postcss-value-parser": "^4.0.3", - "schema-utils": "^2.6.5", + "schema-utils": "^2.6.6", "semver": "^6.3.0" }, "dependencies": { @@ -6559,14 +6890,13 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", - "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "requires": { "cssesc": "^3.0.0", - "fastparse": "^1.1.2", - "regexpu-core": "^4.6.0" + "fastparse": "^1.1.2" } }, "css-tree": { @@ -7046,6 +7376,17 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, "date-format": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", @@ -7383,9 +7724,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } @@ -7878,9 +8219,9 @@ } }, "electron-to-chromium": { - "version": "1.3.432", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.432.tgz", - "integrity": "sha512-/GdNhXyLP5Yl2322CUX/+Xi8NhdHBqL6lD9VJVKjH6CjoPGakvwZ5CpKgj/oOlbzuWWjOvMjDw1bBuAIRCNTlw==", + "version": "1.3.545", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.545.tgz", + "integrity": "sha512-+0R/i17u5E1cwF3g0W8Niq3UUKTUMyyT4kLkutZUHG8mDNvFsAckK3HIanzGVtixe3b6rknD8k7gHiR6nKFkgg==", "dev": true }, "elementtree": { @@ -7899,9 +8240,9 @@ } }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -7914,9 +8255,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } @@ -7940,12 +8281,23 @@ "dev": true }, "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "end-of-stream": { @@ -8226,6 +8578,12 @@ "ext": "^1.1.2" } }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -8352,9 +8710,9 @@ "dev": true }, "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "eventsource": { @@ -8848,6 +9206,15 @@ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -9884,9 +10251,9 @@ "dev": true }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stream": { @@ -10014,17 +10381,145 @@ } }, "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "good-listener": { @@ -10822,12 +11317,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -10982,9 +11471,9 @@ "dev": true }, "is-docker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", - "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", "dev": true }, "is-extendable": { @@ -11466,9 +11955,9 @@ "dev": true }, "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.0.0.tgz", + "integrity": "sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==", "dev": true, "requires": { "merge-stream": "^2.0.0", @@ -11600,9 +12089,9 @@ } }, "jszip": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.4.0.tgz", - "integrity": "sha512-gZAOYuPl4EhPTXT0GjhI3o+ZAz3su6EhLrKUoAivcKqyqC7laS5JEv4XWZND9BgcDcF83vI85yGbDmDR6UhrIg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", "dev": true, "requires": { "lie": "~3.3.0", @@ -11881,9 +12370,9 @@ } }, "karma-jasmine": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", - "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.3.1.tgz", + "integrity": "sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ==", "dev": true, "requires": { "jasmine-core": "^3.5.0" @@ -11948,79 +12437,72 @@ "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "less": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", - "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==", + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", + "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", "dev": true, "requires": { - "clone": "^2.1.2", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", + "make-dir": "^2.1.0", "mime": "^1.4.1", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", - "request": "^2.83.0", + "native-request": "^1.0.5", "source-map": "~0.6.0", "tslib": "^1.10.0" }, "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, "less-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", - "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.1.0.tgz", + "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", "dev": true, "requires": { - "clone": "^2.1.1", - "loader-utils": "^1.1.0", - "pify": "^4.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "clone": "^2.1.2", + "less": "^3.11.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" } }, "leven": { @@ -12049,9 +12531,9 @@ } }, "license-webpack-plugin": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz", - "integrity": "sha512-1Xq72fmPbTg5KofXs+yI5L4QqPFjQ6mZxoeI6D7gfiEDOtaEIk6PGrdLaej90bpDqKNHNxlQ/MW4tMAL6xMPJQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", @@ -12279,6 +12761,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -12444,6 +12932,12 @@ "y18n": "^4.0.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -12484,21 +12978,6 @@ } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -12584,17 +13063,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", @@ -12696,9 +13164,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } @@ -12849,9 +13317,9 @@ "dev": true }, "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -12884,18 +13352,18 @@ } }, "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" } }, "minizlib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", - "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { "minipass": "^3.0.0", @@ -13008,6 +13476,23 @@ "run-queue": "^1.0.3" } }, + "move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ==", + "dev": true, + "requires": { + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -13074,6 +13559,13 @@ "to-regex": "^3.0.1" } }, + "native-request": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.7.tgz", + "integrity": "sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==", + "dev": true, + "optional": true + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -13131,6 +13623,13 @@ "integrity": "sha512-t0aO4X8rqesLqypU8ZK2W7xGVbpi/z7u/Xg7qhnLoKVauI29NFzdKxV2oaYZmpkxIpgdbLSsIfklkjgxIM0IFA==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "nice-try": { @@ -13199,13 +13698,22 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } } } }, "node-releases": { - "version": "1.1.55", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz", - "integrity": "sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==", + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", "dev": true }, "nopt": { @@ -13317,9 +13825,9 @@ } }, "npm-pick-manifest": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", - "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", + "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", "dev": true, "requires": { "npm-install-checks": "^4.0.0", @@ -13328,21 +13836,21 @@ }, "dependencies": { "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" } }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "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": "^3.0.2" + "yallist": "^4.0.0" } }, "npm-package-arg": { @@ -13363,17 +13871,17 @@ "dev": true }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "npm-registry-fetch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.4.tgz", - "integrity": "sha512-6jb34hX/iYNQebqWUHtU8YF6Cjb1H6ouTFPClYsyiW6lpFkljTpdeftm53rRojtja1rKAvKNIIiTS5Sjpw4wsA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -13432,12 +13940,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -13498,6 +14000,12 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==" }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -13530,22 +14038,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -13566,24 +14074,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -13616,22 +14124,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -13652,24 +14160,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -13735,9 +14243,9 @@ } }, "open": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", - "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -13785,9 +14293,9 @@ } }, "ora": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", - "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", + "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -13857,9 +14365,9 @@ "dev": true }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "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" @@ -13915,17 +14423,6 @@ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-name": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", @@ -13956,24 +14453,12 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", @@ -13993,9 +14478,9 @@ } }, "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "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" @@ -14122,6 +14607,12 @@ } } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "fs-minipass": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", @@ -14259,14 +14750,13 @@ } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -14378,9 +14868,9 @@ } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -14543,6 +15033,15 @@ "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==", "dev": true }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, "portfinder": { "version": "1.0.26", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", @@ -14578,9 +15077,9 @@ "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", + "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -14597,9 +15096,9 @@ } }, "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.3.tgz", + "integrity": "sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA==", "dev": true, "requires": { "postcss": "^7.0.27", @@ -14929,15 +15428,34 @@ } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "postcss-modules-scope": { @@ -15257,12 +15775,6 @@ "clipboard": "^2.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -15281,16 +15793,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "~2.0.3" - } - }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -15349,9 +15851,9 @@ } }, "protractor": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz", - "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", "dev": true, "requires": { "@types/q": "^0.0.32", @@ -15367,8 +15869,8 @@ "selenium-webdriver": "3.6.0", "source-map-support": "~0.4.0", "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.0.6", - "yargs": "^12.0.5" + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" }, "dependencies": { "@types/q": { @@ -15522,9 +16024,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } @@ -15713,35 +16215,13 @@ } }, "raw-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.0.tgz", - "integrity": "sha512-iINUOYvl1cGEmfoaLjnZXt4bKfT2LJnZZib5N/LLyAphC+Dd11vNP9CNVb38j+SAJpFI1uo8j9frmih53ASy7Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", + "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" } }, "rc": { @@ -15911,13 +16391,12 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -15930,6 +16409,12 @@ "safe-regex": "^1.1.0" } }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "dev": true + }, "regexpu-core": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", @@ -16044,9 +16529,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { @@ -16085,6 +16570,78 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -16133,6 +16690,36 @@ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, "rfdc": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", @@ -16200,9 +16787,9 @@ "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==" }, "rollup": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.1.0.tgz", - "integrity": "sha512-gfE1455AEazVVTJoeQtcOq/U6GSxwoj4XPSWVsuWmgIxj7sBQNLDOSA82PbdMe+cP8ql8fR1jogPFe8Wg8g4SQ==", + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.10.9.tgz", + "integrity": "sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -16226,6 +16813,12 @@ "is-promise": "^2.1.0" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -16246,6 +16839,13 @@ "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "safe-buffer": { @@ -16278,9 +16878,9 @@ } }, "sass": { - "version": "1.26.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.3.tgz", - "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==", + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.5.tgz", + "integrity": "sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" @@ -16320,9 +16920,9 @@ } }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "semver": { @@ -16349,19 +16949,20 @@ "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -16371,9 +16972,9 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true } } @@ -16567,10 +17168,13 @@ } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -16942,16 +17546,6 @@ } } }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, "sockjs-client": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", @@ -17045,34 +17639,32 @@ "dev": true }, "source-map-loader": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", - "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.0.tgz", + "integrity": "sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg==", "dev": true, "requires": { - "async": "^2.5.0", - "loader-utils": "^1.1.0" + "data-urls": "^2.0.0", + "iconv-lite": "^0.5.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6", + "source-map": "^0.6.0" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "iconv-lite": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", "dev": true, "requires": { - "minimist": "^1.2.0" + "safer-buffer": ">= 2.1.2 < 3" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -17224,9 +17816,9 @@ } }, "speed-measure-webpack-plugin": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", - "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", + "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", "dev": true, "requires": { "chalk": "^2.0.1" @@ -17495,28 +18087,35 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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 }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -17547,98 +18146,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -17659,100 +18182,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -17774,22 +18221,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -17810,24 +18257,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -17882,35 +18329,13 @@ "dev": true }, "style-loader": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", - "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.6.4" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" } }, "stylehacks": { @@ -18101,9 +18526,9 @@ } }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", "dev": true }, "domutils": { @@ -18184,25 +18609,19 @@ } }, "tar": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", - "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^3.0.0", - "minizlib": "^2.1.0", + "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -18310,77 +18729,22 @@ } }, "terser-webpack-plugin": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", - "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz", + "integrity": "sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw==", "dev": true, "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^25.1.0", - "p-limit": "^2.2.2", - "schema-utils": "^2.6.4", - "serialize-javascript": "^2.1.2", + "cacache": "^15.0.3", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.0.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", "source-map": "^0.6.1", - "terser": "^4.4.3", + "terser": "^4.6.13", "webpack-sources": "^1.4.3" }, "dependencies": { - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -18390,38 +18754,31 @@ "p-try": "^2.0.0" } }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, "terser": { - "version": "4.6.13", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", - "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } }, @@ -18584,6 +18941,15 @@ } } }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, "traverse": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", @@ -18628,6 +18994,12 @@ "yn": "3.1.1" } }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, "ts-simple-ast": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/ts-simple-ast/-/ts-simple-ast-12.4.0.tgz", @@ -18682,6 +19054,12 @@ "slash": "^1.0.0" } }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, "typescript": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", @@ -18691,9 +19069,9 @@ } }, "tslib": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz", - "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" }, "tslint": { "version": "6.1.2", @@ -18714,6 +19092,14 @@ "semver": "^5.3.0", "tslib": "^1.10.0", "tsutils": "^2.29.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "tsutils": { @@ -18723,6 +19109,14 @@ "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "tty-browserify": { @@ -18817,9 +19211,9 @@ } }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", "dev": true }, "ua-parser-js": { @@ -19350,12 +19744,20 @@ "dev": true }, "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } } }, "util-deprecate": { @@ -19386,22 +19788,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -19422,24 +19824,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -19535,14 +19937,162 @@ "dev": true }, "watchpack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "requires": { - "chokidar": "^2.1.8", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" }, "dependencies": { "chokidar": { @@ -19550,6 +20100,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, + "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -19569,7 +20120,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -19601,17 +20153,23 @@ "selenium-webdriver": "^3.0.1" } }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, "webpack": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", - "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", @@ -19622,20 +20180,20 @@ "loader-utils": "^1.2.3", "memory-fs": "^0.4.1", "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "neo-async": "^2.6.1", "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.0", + "watchpack": "^1.6.1", "webpack-sources": "^1.4.1" }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -19667,10 +20225,16 @@ "y18n": "^4.0.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "find-cache-dir": { @@ -19748,9 +20312,9 @@ } }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "pify": { @@ -19792,16 +20356,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -20124,9 +20688,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true } } @@ -20150,9 +20714,9 @@ } }, "webpack-subresource-integrity": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.0.tgz", - "integrity": "sha512-GB1kB/LwAWC3CxwcedGhMkxGpNZxSheCe1q+KJP1bakuieAdX/rGHEcf5zsEzhKXpqsGqokgsDoD9dIkr61VDQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz", + "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==", "dev": true, "requires": { "webpack-sources": "^1.3.0" @@ -20175,6 +20739,23 @@ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.0.tgz", + "integrity": "sha512-Sl4svq71j4kzaFD13uxkVl2AIsbj/xwp8NTM1VMhFRyNT1ZMTWaV6+Pva0fQs7y8+cAEPrDGfCAFLvJejhT79g==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, "when": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", @@ -20372,33 +20953,48 @@ } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "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": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "color-convert": { + "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": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "color-name": "~1.1.4" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" } } } @@ -20509,29 +21105,64 @@ "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "cliui": "^4.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index a7b29cd94..dc27d4dd7 100644 --- a/package.json +++ b/package.json @@ -36,17 +36,17 @@ }, "private": true, "dependencies": { - "@angular/animations": "^9.1.6", + "@angular/animations": "^10.0.12", "@angular/cdk": "^9.2.3", - "@angular/common": "^9.1.6", - "@angular/compiler": "^9.1.6", - "@angular/core": "^9.1.6", + "@angular/common": "^10.0.12", + "@angular/compiler": "^10.0.12", + "@angular/core": "^10.0.12", "@angular/flex-layout": "^9.0.0-beta.29", - "@angular/forms": "^9.1.6", + "@angular/forms": "^10.0.12", "@angular/material": "^9.2.3", - "@angular/platform-browser": "^9.1.6", - "@angular/platform-browser-dynamic": "^9.1.6", - "@angular/router": "^9.1.6", + "@angular/platform-browser": "^10.0.12", + "@angular/platform-browser-dynamic": "^10.0.12", + "@angular/router": "^10.0.12", "@types/pako": "^1.0.1", "@types/sprintf-js": "^1.1.2", "angular2-chartjs": "^0.5.1", @@ -79,37 +79,37 @@ "rxjs": "^6.5.5", "screenfull": "^5.0.2", "svg-pan-zoom": "^3.6.1", - "tslib": "^1.11.2", + "tslib": "^2.0.0", "xlsx": "^0.16.0", "zone.js": "^0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.901.5", - "@angular/cli": "^9.1.5", - "@angular/compiler-cli": "^9.1.6", - "@angular/language-service": "^9.1.6", + "@angular-devkit/build-angular": "^0.1000.7", + "@angular/cli": "^10.0.7", + "@angular/compiler-cli": "^10.0.12", + "@angular/language-service": "^10.0.12", "@compodoc/compodoc": "^1.1.11", "@types/file-saver": "^2.0.1", "@types/jasmine": "^3.5.10", "@types/jasminewd2": "^2.0.8", "@types/node": "^13.13.5", - "codelyzer": "^5.2.2", + "codelyzer": "^6.0.0", "cordova": "^9.0.0", "electron": "^8.2.5", "electron-builder": "^22.6.0", "fs-extra": "^9.0.0", - "jasmine-core": "^3.5.0", - "jasmine-spec-reporter": "^5.0.2", - "karma": "^5.0.5", - "karma-chrome-launcher": "^3.1.0", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~5.0.0", + "karma-chrome-launcher": "~3.1.0", "karma-cli": "~2.0.0", - "karma-coverage-istanbul-reporter": "^3.0.2", - "karma-jasmine": "^3.1.1", - "karma-jasmine-html-reporter": "^1.5.3", - "protractor": "^5.4.4", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~3.3.0", + "karma-jasmine-html-reporter": "^1.5.0", + "protractor": "~7.0.0", "ts-node": "^8.10.1", - "tslint": "^6.1.2", - "typescript": "~3.7.5", + "tslint": "~6.1.0", + "typescript": "~3.9.7", "webpack-dev-server": "^3.11.0" }, "cordova": { diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json index 9234a4d85..4b005758f 100644 --- a/src/tsconfig.app.json +++ b/src/tsconfig.app.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/app", "baseUrl": "./", diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index c89454bef..b019e30f9 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/spec", "baseUrl": "./", diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 000000000..c7b9c9822 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,26 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "downlevelIteration": true, + "importHelpers": true, + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ], + "module": "es2020", + "baseUrl": "./" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index c7818722c..26abde9a1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,26 +1,17 @@ +/* + This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience. + It is not intended to be used to perform a compilation. + + To learn more about this file see: https://angular.io/config/solution-tsconfig. +*/ { - "compileOnSave": false, - "compilerOptions": { - "downlevelIteration": true, - "importHelpers": true, - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "target": "es2015", - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "es2017", - "dom" - ], - "module": "esnext", - "baseUrl": "./" - }, - "include": [ - "src/**/*.ts" + "files": [], + "references": [ + { + "path": "./src/tsconfig.app.json" + }, + { + "path": "./src/tsconfig.spec.json" + } ] } \ No newline at end of file diff --git a/tslint.json b/tslint.json index 71feb2734..d3695322d 100644 --- a/tslint.json +++ b/tslint.json @@ -11,6 +11,9 @@ "check-space" ], "curly": true, + "deprecation": { + "severity": "warning" + }, "eofline": true, "forin": false, "import-blacklist": [ -- GitLab From 4bee45019eb56c9bde3744a0df5d77a9189d2fbb Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 11:40:46 +0200 Subject: [PATCH 080/101] Update Angular-Material --- package-lock.json | 18 +++++++++++------- package.json | 4 ++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b67aec276..f036b3f80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -279,11 +279,12 @@ } }, "@angular/cdk": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.3.tgz", - "integrity": "sha512-tQr/yt8GNGsZ/DTT+PMq7XdRmL56hwVCyf8F12JQAawutSLfTfMb+S1lpN7L/0Pb/L5JBuCfG2HmXK7vHo02gw==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-10.1.3.tgz", + "integrity": "sha512-xMV1M41mfuaQod4rtAG/duYiWffGIC2C87E1YuyHTh8SEcHopGVRQd2C8PWH+iwinPbes7AjU1uzCEvmOYikrA==", "requires": { - "parse5": "^5.0.0" + "parse5": "^5.0.0", + "tslib": "^2.0.0" }, "dependencies": { "parse5": { @@ -840,9 +841,12 @@ "dev": true }, "@angular/material": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.3.tgz", - "integrity": "sha512-QJltLNp8a/eoozPgkFLISEWgdlX9q9+fZaLJ8c9tHEp2IT5sFYBFHf8dPl0pUyxgOXkS/0HD43I1qki71/T7Kw==" + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-10.1.3.tgz", + "integrity": "sha512-6ygbCVcejFydmZUlOcNreiWQTvL4kOrEp/M51DV70hqffTnxajCzaRe2MQhxisENB/bR8mtMvf8YY3Rsys/HCw==", + "requires": { + "tslib": "^2.0.0" + } }, "@angular/platform-browser": { "version": "10.0.12", diff --git a/package.json b/package.json index dc27d4dd7..62a9aa747 100644 --- a/package.json +++ b/package.json @@ -37,13 +37,13 @@ "private": true, "dependencies": { "@angular/animations": "^10.0.12", - "@angular/cdk": "^9.2.3", + "@angular/cdk": "^10.1.3", "@angular/common": "^10.0.12", "@angular/compiler": "^10.0.12", "@angular/core": "^10.0.12", "@angular/flex-layout": "^9.0.0-beta.29", "@angular/forms": "^10.0.12", - "@angular/material": "^9.2.3", + "@angular/material": "^10.1.3", "@angular/platform-browser": "^10.0.12", "@angular/platform-browser-dynamic": "^10.0.12", "@angular/router": "^10.0.12", -- GitLab From 487433b7b0837199b4a63a2a86177c29f6a5400b Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 11:45:03 +0200 Subject: [PATCH 081/101] Update dependencies --- package-lock.json | 3136 +++++++++++++++++++++++---------------------- package.json | 46 +- 2 files changed, 1596 insertions(+), 1586 deletions(-) diff --git a/package-lock.json b/package-lock.json index f036b3f80..fb7616752 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,23 @@ "requires": { "@angular-devkit/core": "10.0.7", "rxjs": "6.5.5" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "@angular-devkit/build-angular": { @@ -155,6 +172,15 @@ "glob": "^7.1.3" } }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", @@ -179,6 +205,12 @@ "dev": true } } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -211,6 +243,23 @@ "@angular-devkit/architect": "0.1000.7", "@angular-devkit/core": "10.0.7", "rxjs": "6.5.5" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "@angular-devkit/core": { @@ -249,6 +298,21 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -261,6 +325,23 @@ "@angular-devkit/core": "10.0.7", "ora": "4.0.4", "rxjs": "6.5.5" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "@angular/animations": { @@ -815,9 +896,12 @@ } }, "@angular/flex-layout": { - "version": "9.0.0-beta.29", - "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-9.0.0-beta.29.tgz", - "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==" + "version": "10.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-10.0.0-beta.32.tgz", + "integrity": "sha512-JvuY4dUoy5jyCTIrFiq7n30Znakh1pD3nbg0h0hs2r3t1OiDQb0ZSI1wcumosG/vYHsuJQTuNhbfaIZzA1x8nA==", + "requires": { + "tslib": "^2.0.0" + } }, "@angular/forms": { "version": "10.0.12", @@ -894,12 +978,12 @@ } }, "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { @@ -1460,22 +1544,14 @@ } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } } }, "@babel/parser": { @@ -2390,9 +2466,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "loglevel": { @@ -2509,9 +2585,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -2521,9 +2597,9 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true } } @@ -2539,9 +2615,9 @@ } }, "@electron/get": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.10.0.tgz", - "integrity": "sha512-hlueNXU51c3CwQjBw/i5fwt+VfQgSQVUTdicpCHkhEjNZaa4CXJ5W1GaxSwtLE2dvRmAHjpIjUMHTqJ53uojfg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", + "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -2670,6 +2746,23 @@ "glob-to-regexp": "^0.3.0" } }, + "@netflix/nerror": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", + "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", + "requires": { + "assert-plus": "^1.0.0", + "extsprintf": "^1.4.0", + "lodash": "^4.17.15" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + } + } + }, "@ngtools/webpack": { "version": "10.0.7", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.0.7.tgz", @@ -2680,13 +2773,29 @@ "enhanced-resolve": "4.1.1", "rxjs": "6.5.5", "webpack-sources": "1.4.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.3", "run-parallel": "^1.1.9" @@ -2695,8 +2804,7 @@ "@nodelib/fs.stat": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" } } }, @@ -2710,7 +2818,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.3", "fastq": "^1.6.0" @@ -2789,12 +2896,27 @@ "validate-npm-package-name": "^3.0.0" } }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -2843,9 +2965,9 @@ "dev": true }, "@types/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==", "dev": true, "requires": { "@types/node": "*" @@ -2863,9 +2985,9 @@ } }, "@types/jasmine": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.10.tgz", - "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.13.tgz", + "integrity": "sha512-bVSrTEWdCNH2RHN+E0QlEr4pGPMRA6puKOmL/X13ZeZmUS0q12ZR1rkB9PVvJSX0zi/OXrMDNvUai+PC380+rQ==", "dev": true }, "@types/jasminewd2": { @@ -2884,9 +3006,9 @@ "dev": true }, "@types/marked": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.7.2.tgz", - "integrity": "sha512-A3EDyNaq6OCcpaOia2HQ/tu2QYt8DKuj4ExP21VU3cU3HTo2FLslvbqa2T1vux910RHvuSVqpwKnnykSFcRWOA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-1.1.0.tgz", + "integrity": "sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw==" }, "@types/minimatch": { "version": "3.0.3", @@ -2900,9 +3022,9 @@ "integrity": "sha512-13gmo3M2qVvjQrWNseqM3+cR6S2Ss3grbR2NZltgMq94wOwqJYQdgn8qzwDshzgXqMlSUtyPZjysImmktu22ew==" }, "@types/node": { - "version": "13.13.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", - "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==", + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.0.tgz", + "integrity": "sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==", "dev": true }, "@types/pako": { @@ -2953,9 +3075,9 @@ } }, "@types/yargs": { - "version": "15.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", - "integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -3519,32 +3641,32 @@ "dev": true }, "app-builder-bin": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.8.tgz", - "integrity": "sha512-ni3q7QTfQNWHNWuyn5x3FZu6GnQZv+TFnfgk5++svqleKEhHGqS1mIaKsh7x5pBX6NFXU3/+ktk98wA/AW4EXw==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.9.tgz", + "integrity": "sha512-NSjtqZ3x2kYiDp3Qezsgukx/AUzKPr3Xgf9by4cYt05ILWGAptepeeu0Uv+7MO+41o6ujhLixTou8979JGg2Kg==", "dev": true }, "app-builder-lib": { - "version": "22.6.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.6.0.tgz", - "integrity": "sha512-ky2aLYy92U+Gh6dKq/e8/bNmCotp6/GMhnX8tDZPv9detLg9WuBnWWi1ktBPlpbl1DREusy+TIh+9rgvfduQoA==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.8.0.tgz", + "integrity": "sha512-RGaIRjCUrqkmh6QOGsyekQPEOaVynHfmeh8JZuyUymFYUOFdzBbPamkA2nhBVBTkkgfjRHsxK7LhedFKPzvWEQ==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@develar/schema-utils": "~2.6.5", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.6.0", - "builder-util-runtime": "8.7.0", + "builder-util": "22.8.0", + "builder-util-runtime": "8.7.2", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", - "ejs": "^3.1.2", - "electron-publish": "22.6.0", - "fs-extra": "^9.0.0", - "hosted-git-info": "^3.0.4", + "ejs": "^3.1.3", + "electron-publish": "22.8.0", + "fs-extra": "^9.0.1", + "hosted-git-info": "^3.0.5", "is-ci": "^2.0.0", "isbinaryfile": "^4.0.6", - "js-yaml": "^3.13.1", + "js-yaml": "^3.14.0", "lazy-val": "^1.0.4", "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", @@ -3563,28 +3685,29 @@ "ms": "^2.1.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" } }, - "isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { - "yallist": "^3.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "ms": { @@ -3598,12 +3721,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } }, @@ -3692,11 +3809,6 @@ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -3777,8 +3889,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -3887,8 +3998,7 @@ "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==" }, "atob": { "version": "2.1.2", @@ -4105,9 +4215,9 @@ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, "basic-auth": { @@ -4150,9 +4260,9 @@ } }, "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==" + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, "big.js": { "version": "5.2.2", @@ -4396,11 +4506,11 @@ } }, "bplist-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", - "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "requires": { - "big-integer": "^1.6.7" + "big-integer": "^1.6.44" } }, "brace-expansion": { @@ -4664,22 +4774,22 @@ "dev": true }, "builder-util": { - "version": "22.6.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.6.0.tgz", - "integrity": "sha512-jgdES2ExJYkuXC3DEaGAjFctKNA81C4QDy8zdoc+rqdSqheTizuDNtZg02uMFklmUES4V4fggmqds+Y7wraqng==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.8.0.tgz", + "integrity": "sha512-H80P1JzVy3TGpi63x81epQDK24XalL034+jAZlrPb5IhLtYmnNNdxCCAVJvg3VjSISd73Y71O+uhqCxWpqbPHw==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@types/debug": "^4.1.5", - "@types/fs-extra": "^8.1.0", - "app-builder-bin": "3.5.8", + "@types/fs-extra": "^9.0.1", + "app-builder-bin": "3.5.9", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.7.0", - "chalk": "^4.0.0", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", "debug": "^4.1.1", - "fs-extra": "^9.0.0", + "fs-extra": "^9.0.1", "is-ci": "^2.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^3.14.0", "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.3.7" @@ -4696,9 +4806,9 @@ } }, "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -4723,12 +4833,28 @@ "ms": "^2.1.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "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 }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4747,9 +4873,9 @@ } }, "builder-util-runtime": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.0.tgz", - "integrity": "sha512-G1AqqVM2vYTrSFR982c1NNzwXKrGLQjVjaZaWQdn4O6Z3YKjdMDofw88aD9jpyK9ZXkrCxR0tI3Qe9wNbyTlXg==", + "version": "8.7.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.2.tgz", + "integrity": "sha512-xBqv+8bg6cfnzAQK1k3OGpfaHg+QkPgIgpEkXNhouZ0WiUkyZCftuRc2LYzQrLucFywpa14Xbc6+hTbpq83yRA==", "dev": true, "requires": { "debug": "^4.1.1", @@ -5004,12 +5130,6 @@ "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", "dev": true }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -5017,12 +5137,11 @@ "dev": true }, "cfb": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.4.tgz", - "integrity": "sha512-rwFkl3aFO3f+ljR27YINwC0x8vPjyiEVbYbrTCKzspEf7Q++3THdfHVgJYNUbxNcupJECrLX+L40Mjm9hm/Bgw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz", + "integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==", "requires": { "adler-32": "~1.2.0", - "commander": "^2.16.0", "crc-32": "~1.2.0", "printj": "~1.1.2" } @@ -5082,9 +5201,9 @@ } }, "chartjs-plugin-zoom": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-0.7.5.tgz", - "integrity": "sha512-OGVQXlw5meOD7ac+CBNO7yKg4Tk06eBb5LUIgpK/qgv7SjVB/89pWMQY3pxWnzCMI8FsoV3iTKQ2ZCOvh4+q6w==", + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-0.7.7.tgz", + "integrity": "sha512-8fOHPPiZTT2+K0w278TQWYs/DtPg06s1OpTqdXxPpdfH7QQbl6Io/WuE1FjPehDWVCxpe3tSTts+dPbxgq2Z5g==", "requires": { "hammerjs": "^2.0.8" } @@ -5361,9 +5480,9 @@ "dev": true }, "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "optional": true, "requires": { "good-listener": "^1.2.2", @@ -5493,6 +5612,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true } } }, @@ -5601,25 +5726,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "requires": { - "is-obj": "^1.0.0" - } - } - } - }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -5707,6 +5813,43 @@ "make-dir": "^1.0.0", "pkg-up": "^2.0.0", "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } } }, "config-chain": { @@ -5721,17 +5864,17 @@ } }, "configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, "requires": { - "dot-prop": "^4.1.0", + "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" } }, "connect": { @@ -6042,516 +6185,720 @@ } }, "cordova": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cordova/-/cordova-9.0.0.tgz", - "integrity": "sha512-zWEPo9uGj9KNcEhU2Lpo3r4HYK21tL+at496N2LLnuCWuWVndv6QWed8+EYl/08rrcNshrEtfzXj9Ux6vQm2PQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cordova/-/cordova-10.0.0.tgz", + "integrity": "sha512-00wMcj3X9ILhKtvRG2iEwO2qly4B+vgXFhH4WhVepWg2UVbD1opl1q9jSZ+j2AaI/vsBWW8e6M2M5FAHasnuWw==", "dev": true, "requires": { - "configstore": "^4.0.0", - "cordova-common": "^3.1.0", - "cordova-lib": "^9.0.0", + "configstore": "^5.0.1", + "cordova-common": "^4.0.2", + "cordova-create": "^3.0.0", + "cordova-lib": "^10.0.0", "editor": "^1.0.0", - "insight": "^0.10.1", - "loud-rejection": "^2.0.0", - "nopt": "^4.0.1", - "update-notifier": "^2.5.0" + "execa": "^4.0.3", + "fs-extra": "^9.0.1", + "insight": "^0.10.3", + "loud-rejection": "^2.2.0", + "nopt": "^4.0.3", + "semver": "^7.3.2", + "systeminformation": "^4.26.10", + "update-notifier": "^4.1.0" }, "dependencies": { - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "string-width": "^2.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", "dev": true, "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "npm-run-path": { + "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": { - "ci-info": "^1.5.0" + "path-key": "^3.0.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "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 }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "shebang-command": { + "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": { - "package-json": "^4.0.0" + "shebang-regex": "^3.0.0" } }, - "loud-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.1.0.tgz", - "integrity": "sha512-g/6MQxUXYHeVqZ4PGpPL1fS1fOvlXoi7bay0pizmjAd/3JhyXwxzwrnr74yzdmhuerlslbRJ3x7IOXzFz0cE5w==", + "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 + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.2" + "isexe": "^2.0.0" } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, + } + } + }, + "cordova-android": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.0.0.tgz", + "integrity": "sha512-2ZEgApK4LPMYW0zh/mLAH3CabzCaKE0yxQTzA2wTf0Eo2HHTJnRtDCf9spGf3nPOkubyXS6+pvzz5QzNHpVTqQ==", + "requires": { + "android-versions": "^1.5.0", + "cordova-common": "^4.0.1", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "nopt": "^4.0.3", + "properties-parser": "^0.3.1", + "which": "^2.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "requires": { - "rc": "^1.0.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "ansi-regex": "^3.0.0" + "path-key": "^3.0.0" } }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - } + "shebang-regex": "^3.0.0" } }, - "url-parse-lax": { + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "universalify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { - "prepend-http": "^1.0.1" + "isexe": "^2.0.0" } } } }, - "cordova-android": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.1.0.tgz", - "integrity": "sha512-eAY6g9q3raJ4P03wNdSWC5MOW1EfxoomWNXsPhi7T6Q9yAqmxqn0sLEUjLL1Ib0LCH3nKQWBXdxapQ5LgbHu+g==", - "requires": { - "android-versions": "^1.4.0", - "compare-func": "^1.3.2", - "cordova-common": "^3.2.0", - "nopt": "^4.0.1", - "properties-parser": "^0.3.1", - "q": "^1.5.1", - "shelljs": "^0.5.3" - }, - "dependencies": { - "cordova-common": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.1.tgz", - "integrity": "sha512-xg0EnjnA6EipxXG8cupdlYQYeDA6+ghbN+Pjq88xN1LInwP6Bo7IyGBdSV5QnfjOvzShF9BBwSxBAv0FOO0C2Q==", - "requires": { - "ansi": "^0.3.1", - "bplist-parser": "^0.1.0", - "cross-spawn": "^6.0.5", - "elementtree": "0.1.7", - "endent": "^1.1.1", - "fs-extra": "^8.0.0", - "glob": "^7.1.2", - "minimatch": "^3.0.0", - "plist": "^3.0.1", - "q": "^1.4.1", - "strip-bom": "^3.0.0", - "underscore": "^1.8.3", - "which": "^1.3.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - } - } - }, "cordova-app-hello-world": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-4.0.0.tgz", - "integrity": "sha512-hTNYHUJT5YyMa1cQQE1naGyU6Eh5D5Jl33sMnCh3+q15ZwWTL/TOy3k8+mUvjTp8bwhO5eECGKULYoVO+fp9ZA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-5.0.0.tgz", + "integrity": "sha512-5My01wsYoeYwS0f/t5Ck52xPm0+2zYJ0SlvxG9vUsndDGtgiP6t/G8upPgWcyDRRz7Rs/50yZuOntmHqmJxccQ==", "dev": true }, "cordova-common": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.1.0.tgz", - "integrity": "sha512-J2MM1ioyLlBYdwdXH40OZL4hN7XEBOfurddKYifF4aTkb2PkbeM+KVORt53eyU+8ScA0QmRLuTG0EM55eLms0A==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", + "integrity": "sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q==", "requires": { + "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", - "bplist-parser": "^0.1.0", - "cross-spawn": "^6.0.5", - "elementtree": "0.1.7", - "endent": "^1.1.1", - "fs-extra": "^7.0.0", - "glob": "^7.1.2", - "minimatch": "^3.0.0", + "bplist-parser": "^0.2.0", + "cross-spawn": "^7.0.1", + "elementtree": "^0.1.7", + "endent": "^1.4.1", + "fast-glob": "^3.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", "plist": "^3.0.1", - "q": "^1.4.1", - "strip-bom": "^3.0.0", - "underscore": "^1.8.3", - "which": "^1.3.0" + "q": "^1.5.1", + "read-chunk": "^3.2.0", + "strip-bom": "^4.0.0", + "underscore": "^1.9.2" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "fs-extra": { + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "to-regex-range": "^5.0.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" } }, - "strip-bom": { + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } } } }, "cordova-create": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-2.0.0.tgz", - "integrity": "sha512-72CaGg/7x+tiZlzeXKQXLTc8Jh4tbwLdu4Ib97kJ6+R3bcew/Yv/l2cVA2E0CaCuOCtouTqwi+YLcA2I4dPFTQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-3.0.0.tgz", + "integrity": "sha512-WxZRTnt5RHxSAB9urnHFUtVBcIe1YjR4sfwHLsxakNoKkFhcie3HrV5QmNBgRQ5DkxmanRN3VSx4OrPVsNmAaQ==", "dev": true, "requires": { - "cordova-app-hello-world": "^4.0.0", - "cordova-common": "^3.1.0", - "cordova-fetch": "^2.0.0", - "fs-extra": "^7.0.1", - "import-fresh": "^3.0.0", - "is-url": "^1.2.4", - "isobject": "^3.0.1", + "cordova-app-hello-world": "^5.0.0", + "cordova-common": "^4.0.1", + "cordova-fetch": "^3.0.0", + "fs-extra": "^9.0.0", + "globby": "^11.0.0", + "import-fresh": "^3.2.1", + "isobject": "^4.0.0", + "npm-package-arg": "^8.0.1", "path-is-inside": "^1.0.2", - "tmp": "0.0.33", + "tmp": "^0.2.1", "valid-identifier": "0.0.2" }, "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "lru-cache": "^6.0.0" } }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true + }, + "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" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "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" + } } } }, "cordova-fetch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-2.0.1.tgz", - "integrity": "sha512-q21PeobERzE3Drli5htcl5X9Mtfvodih5VkqIwdRUsjDBCPv+I6ZonRjYGbNnXhYrYx7dm0m0j/7/Smf6Av3hg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-3.0.0.tgz", + "integrity": "sha512-N6mB/1GD8BNclxnfO85E4/s46nEJjIxYeJYHRGi6MjofhigJ3NlGwTCslbTcq8IOYEh0RdoA0mS4W2jA5UcWeQ==", "dev": true, "requires": { - "cordova-common": "^3.1.0", - "fs-extra": "^7.0.1", - "npm-package-arg": "^6.1.0", - "pify": "^4.0.1", - "resolve": "^1.10.0", - "semver": "^5.6.0", - "which": "^1.3.1" + "cordova-common": "^4.0.0", + "fs-extra": "^9.0.0", + "npm-package-arg": "^8.0.1", + "pify": "^5.0.0", + "resolve": "^1.15.1", + "semver": "^7.1.3", + "which": "^2.0.2" }, "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "lru-cache": "^6.0.0" + } + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" } }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true + }, + "which": { + "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" + } } } }, "cordova-lib": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-9.0.1.tgz", - "integrity": "sha512-P9nQhq91gLOyKZkamvKNzzK89gLDpq8rKue/Vu7NUSgNzhPkiWW0w+6VRTbj/9QGVM9w2uDVhB9c9f6rrTXzCw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-10.0.0.tgz", + "integrity": "sha512-azU/WH0x/3fQg33tU5bKCtj+Weh/bHelz9FWCVdXqVOHXmjzbi3p6p61z5Si967Tfh3TkmHRrodNxS0ovZ7iFQ==", "dev": true, "requires": { - "cordova-common": "^3.1.0", - "cordova-create": "^2.0.0", - "cordova-fetch": "^2.0.0", - "cordova-serve": "^3.0.0", - "dep-graph": "1.1.0", - "detect-indent": "^5.0.0", + "cordova-common": "^4.0.2", + "cordova-fetch": "^3.0.0", + "cordova-serve": "^4.0.0", + "dep-graph": "^1.1.0", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", "elementtree": "^0.1.7", - "fs-extra": "^7.0.1", - "globby": "^9.1.0", - "indent-string": "^3.2.0", + "execa": "^4.0.3", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", "init-package-json": "^1.10.3", - "md5-file": "^4.0.0", - "read-chunk": "^3.1.0", - "semver": "^5.6.0", - "shebang-command": "^1.2.0", - "underscore": "^1.9.1" + "md5-file": "^5.0.0", + "pify": "^5.0.0", + "semver": "^7.3.2", + "stringify-package": "^1.0.1", + "write-file-atomic": "^3.0.3" }, "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true + "cross-spawn": { + "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", + "which": "^2.0.1" + } }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "npm-run-path": { + "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" + } + }, + "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 }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "slash": { + "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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" + } + }, + "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 + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", "dev": true + }, + "which": { + "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" + } } } }, "cordova-plugin-advanced-http": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-2.4.1.tgz", - "integrity": "sha512-6G8MTy/d02jE6n3Y9CVyCtD5hZGiBb+/dR2AIzhKN1RGGz38g1D2C8yE4MqHRvnmry6k/KHQWT1MsHNXrjouXQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-3.0.1.tgz", + "integrity": "sha512-7P3ZoSvxvYZXNYsygkxrUIw+pnzsCVvQgRsm26XhymNqqmD9yZIcF878p6wfFVQfLzf5iRHQRwgAMcrcm+cnow==" }, "cordova-plugin-app-version": { "version": "0.1.9", @@ -6574,9 +6921,9 @@ "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA==" }, "cordova-plugin-file-opener2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-file-opener2/-/cordova-plugin-file-opener2-3.0.1.tgz", - "integrity": "sha512-Esj7f1mRj19Mj+M2xQphw88zZ/zA9RfljTfahHf5xIKhtoB4Nf1DRbohOiT6z/AHg18EugN9H2g2jiwcBTkRRA==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cordova-plugin-file-opener2/-/cordova-plugin-file-opener2-3.0.4.tgz", + "integrity": "sha512-bd1aCx62X2RwpC+KUiuB7quoxL/8RnPMEJU7x38Tvs+cUGLWBvsmR9+/LqGBsSns2CIqgnJ34TW0Vazoqu7Ieg==" }, "cordova-plugin-local-notification": { "version": "0.9.0-beta.2", @@ -6589,16 +6936,71 @@ "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" }, "cordova-serve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cordova-serve/-/cordova-serve-3.0.0.tgz", - "integrity": "sha512-h479g/5a0PXn//yiFuMrD5MDEbB+mtihNkWcE6uD/aCh/6z0FRZ9sWH3NfZbHDB+Bp1yGLYsjbH8LZBL8KOQ0w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cordova-serve/-/cordova-serve-4.0.0.tgz", + "integrity": "sha512-gzTLeBQzNP8aM/nG0/7sSfICfNazUgwvEU2kiDaybbYXmxwioo2v96h4tzE0XOyA64beyYwAyRYEEqWA4AMZjw==", "dev": true, "requires": { - "chalk": "^2.4.1", - "compression": "^1.6.0", - "express": "^4.13.3", - "opn": "^5.3.0", - "which": "^1.3.0" + "chalk": "^3.0.0", + "compression": "^1.7.4", + "express": "^4.17.1", + "open": "^7.0.3", + "which": "^2.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "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" + } + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "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" + } + } } }, "core-js": { @@ -6691,15 +7093,6 @@ } } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -6731,6 +7124,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -6765,9 +7159,9 @@ "dev": true }, "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, "css": { @@ -7392,9 +7786,9 @@ } }, "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", "dev": true }, "debug": { @@ -7450,7 +7844,8 @@ "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true }, "deep-extend": { "version": "0.6.0", @@ -7501,6 +7896,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -7546,11 +7942,6 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, "del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -7682,6 +8073,18 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", @@ -7735,36 +8138,43 @@ } } }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, "dmg-builder": { - "version": "22.6.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.6.0.tgz", - "integrity": "sha512-rJxuGhHIpcuDGBtWZMM8aLxkbZNgYO2MO5dUerDIBXebhX1K8DA23iz/uZ8ahcRNgWEv57b8GDqJbXKEfr5T0A==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.8.0.tgz", + "integrity": "sha512-orePWjcrl97SYLA8F/6UUtbXJSoZCYu5KOP1lVqD4LOomr8bjGDyEVYZmZYcg5WqKmXucdmO6OpqgzH/aRMMuA==", "dev": true, "requires": { - "app-builder-lib": "22.6.0", - "builder-util": "22.6.0", - "fs-extra": "^9.0.0", - "iconv-lite": "^0.5.1", - "js-yaml": "^3.13.1", + "app-builder-lib": "22.8.0", + "builder-util": "22.8.0", + "fs-extra": "^9.0.1", + "iconv-lite": "^0.6.2", + "js-yaml": "^3.14.0", "sanitize-filename": "^1.6.3" }, "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "iconv-lite": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.1.tgz", - "integrity": "sha512-ONHr16SQvKZNSqjQT9gy5z24Jw+uqfO02/ngBSBoqChZ+W8qXX7GPRa1RoUnzGADw8K63R1BXUMzarCVQBpY8Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" } } } @@ -7854,12 +8264,12 @@ "dev": true }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { @@ -7930,18 +8340,18 @@ "dev": true }, "ejs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.2.tgz", - "integrity": "sha512-zFuywxrAWtX5Mk2KAuoJNkXXbfezpNA0v7i+YC971QORguPekpjpAgeOv99YWSdKXwj7JxI2QAWDeDkE8fWtXw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", "dev": true, "requires": { "jake": "^10.6.1" } }, "electron": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.5.tgz", - "integrity": "sha512-LxSCUwmlfJtRwthd3ofpYaZ+1C2hQSW8Ep1DD9K3VbnDItO+kb3t1z35daJgAab78j54aOwo9gMxJtvU0Ftj6w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-10.0.0.tgz", + "integrity": "sha512-0XX/LqYAHHCSbfLjUk9VRDPOeYjDPEzA9i7F50AqpEpFIWR2bp++0S0beRANUpPdkvtBDp+0R6vHV3iXPvuKyA==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -7950,27 +8360,27 @@ }, "dependencies": { "@types/node": { - "version": "12.12.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.37.tgz", - "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==", + "version": "12.12.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz", + "integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==", "dev": true } } }, "electron-builder": { - "version": "22.6.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.6.0.tgz", - "integrity": "sha512-aLHlB6DTfjJ3MI4AUIFeWnwIozNgNlbOk2c2sTHxB10cAKp0dBVSPZ7xF5NK0uwDhElvRzJQubnHtJD6zKg42Q==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.8.0.tgz", + "integrity": "sha512-dUv4F3srJouqxhWivtKqSoQP4Df6vYgjooGdzms+iYMTFi9f0b4LlEbr7kgsPvte8zAglee7VOGOODkCRJDkUQ==", "dev": true, "requires": { - "@types/yargs": "^15.0.4", - "app-builder-lib": "22.6.0", + "@types/yargs": "^15.0.5", + "app-builder-lib": "22.8.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.6.0", - "builder-util-runtime": "8.7.0", - "chalk": "^4.0.0", - "dmg-builder": "22.6.0", - "fs-extra": "^9.0.0", + "builder-util": "22.8.0", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", + "dmg-builder": "22.8.0", + "fs-extra": "^9.0.1", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", "read-config-file": "6.0.0", @@ -7979,195 +8389,66 @@ "yargs": "^15.3.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "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" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "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 - }, - "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 - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "color-convert": { + "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": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "color-name": "~1.1.4" } }, - "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" - } + "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 }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "has-flag": "^4.0.0" } } } }, "electron-publish": { - "version": "22.6.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.6.0.tgz", - "integrity": "sha512-+v05SBf9qR7Os5au+fifloNHy5QxHQkUGudBj68YaTb43Pn37UkwRxSc49Lf13s4wW32ohM45g8BOVInPJEdnA==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.8.0.tgz", + "integrity": "sha512-uM0Zdi9hUqqGOrPj478v7toTvV1Kgto1w11rIiI168batiXAJvNLD8VZRfehOrZT0ibUyZlw8FtxoGCrjyHUOw==", "dev": true, "requires": { - "@types/fs-extra": "^8.1.0", + "@types/fs-extra": "^9.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.6.0", - "builder-util-runtime": "8.7.0", - "chalk": "^4.0.0", - "fs-extra": "^9.0.0", + "builder-util": "22.8.0", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", + "fs-extra": "^9.0.1", "lazy-val": "^1.0.4", - "mime": "^2.4.4" + "mime": "^2.4.6" }, "dependencies": { "ansi-styles": { @@ -8181,9 +8462,9 @@ } }, "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -8206,9 +8487,9 @@ "dev": true }, "mime": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", - "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, "supports-color": { @@ -8272,6 +8553,11 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "emoji-toolkit": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-6.0.1.tgz", + "integrity": "sha512-QZZq0beHg753JxcBt89UBFqzwYNuMtXhNO+jY3viSAndewmn9biTE5glaro1RA0uWJ4hKqw4k1Mboe1M6sGkMA==" + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -8308,102 +8594,112 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, "requires": { "once": "^1.4.0" } }, "endent": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/endent/-/endent-1.3.0.tgz", - "integrity": "sha512-C8AryqPPwtydqcpO5AF6k9Bd1EpFkQtvsefJqS3y3n8TG13Jy63MascDxTOULZYqrUde+dK6BjNc6LIMr3iI2A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", + "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==", "requires": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.3" + "objectorarray": "^1.0.4" } }, "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", + "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", "dev": true, "requires": { "accepts": "~1.3.4", - "base64id": "1.0.0", + "base64id": "2.0.0", "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "dev": true } } }, "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", + "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", "dev": true, "requires": { - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "~3.3.1", + "ws": "~6.1.0", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" }, "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } } } }, "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", "dev": true, "requires": { "after": "0.8.2", @@ -8466,29 +8762,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -8708,9 +8981,9 @@ } }, "eventemitter3": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.1.tgz", - "integrity": "sha512-MnI0l35oYL2C/c80rjJN7qu50MDx39yYE7y7oYck2YA3v+y7EaAenY8IU8AP4d1RWqE8VAKWFGSh3rfP87ll3g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.5.tgz", + "integrity": "sha512-QR0rh0YiPuxuDQ6+T9GAO/xWTExXpxIes1Nl9RykNGTnE1HJmkuEfxJH9cubjIOQZ/GH4qNBR4u8VSHaKiWs4g==", "dev": true }, "events": { @@ -9214,7 +9487,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -9431,30 +9703,10 @@ } }, "follow-redirects": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", - "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "dev": true }, "fontkit": { "version": "1.8.0", @@ -9542,14 +9794,6 @@ } } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -9622,10 +9866,9 @@ } }, "fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "dev": true, + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -9634,16 +9877,14 @@ }, "dependencies": { "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "jsonfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", - "dev": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^1.0.0" @@ -9652,8 +9893,7 @@ "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" } } }, @@ -10234,7 +10474,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "genfun": { "version": "5.0.0", @@ -10261,10 +10502,12 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } }, "get-value": { "version": "2.0.6", @@ -10285,6 +10528,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10322,19 +10566,19 @@ "dev": true }, "global-agent": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.8.tgz", - "integrity": "sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", + "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", "dev": true, "optional": true, "requires": { - "boolean": "^3.0.0", - "core-js": "^3.6.4", + "boolean": "^3.0.1", + "core-js": "^3.6.5", "es6-error": "^4.1.1", - "matcher": "^2.1.0", - "roarr": "^2.15.2", - "semver": "^7.1.2", - "serialize-error": "^5.0.0" + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" }, "dependencies": { "semver": { @@ -10346,15 +10590,6 @@ } } }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -10568,7 +10803,8 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "graphlibrary": { "version": "2.2.0", @@ -10636,6 +10872,7 @@ "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" } @@ -10681,7 +10918,8 @@ "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, "has-value": { "version": "1.0.0", @@ -10921,9 +11159,9 @@ "dev": true }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -11008,6 +11246,11 @@ } } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -11194,9 +11437,9 @@ } }, "inquirer": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", - "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -11205,7 +11448,7 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", @@ -11220,10 +11463,10 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "string-width": { @@ -11396,11 +11639,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -11447,7 +11685,8 @@ "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true }, "is-descriptor": { "version": "0.1.6", @@ -11489,8 +11728,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -11507,16 +11745,6 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -11556,9 +11784,10 @@ } }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true }, "is-path-cwd": { "version": "1.0.0", @@ -11599,26 +11828,6 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -11639,12 +11848,6 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -11664,6 +11867,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, "requires": { "has-symbols": "^1.0.0" } @@ -11683,12 +11887,6 @@ "unc-path-regex": "^0.1.2" } }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -11779,21 +11977,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -11880,9 +12063,9 @@ } }, "jake": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.6.1.tgz", - "integrity": "sha512-pHUK3+V0BjOb1XSi95rbBksrMdIqLVC9bJqDnshVyleYsET3H0XAq+3VB2E3notcYvv4wRdRHn13p7vobG+wfQ==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", "dev": true, "requires": { "async": "0.9.x", @@ -11938,9 +12121,9 @@ } }, "jasmine-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", - "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", "dev": true }, "jasmine-spec-reporter": { @@ -12070,6 +12253,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -12105,53 +12289,37 @@ } }, "karma": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.5.tgz", - "integrity": "sha512-Q4Su7kNwkTgqS+KbSCYgH0p4a/0JIxVLyp7qKNV7vgPNhIF4kIoh0GlUfMKpw67BrR3hgPQSJoxgF7xnzUtPpg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.1.1.tgz", + "integrity": "sha512-xAlOr5PMqUbiKXSv5PCniHWV3aiwj6wIZ0gUVcwpTCPVQm/qH2WAMFWxtnpM6KJqhkRWrIpovR4Rb0rn8GtJzQ==", "dev": true, "requires": { - "body-parser": "^1.16.1", + "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.0.0", - "colors": "^1.1.0", - "connect": "^3.6.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "flatted": "^2.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^4.0.2", - "lodash": "^4.17.14", - "log4js": "^4.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "socket.io": "2.1.1", - "source-map": "^0.6.1", - "tmp": "0.0.33", - "ua-parser-js": "0.7.21", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "flatted": "^2.0.2", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.15", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^2.3.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" + }, + "dependencies": { "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -12161,24 +12329,16 @@ "fill-range": "^7.0.1" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "requires": { - "color-name": "~1.1.4" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" } }, "fill-range": { @@ -12190,26 +12350,24 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "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==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "is-number": { @@ -12218,66 +12376,40 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "mime": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", - "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "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": { - "p-limit": "^2.2.0" + "glob": "^7.1.3" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "rimraf": "^3.0.0" } }, "to-regex-range": { @@ -12288,46 +12420,6 @@ "requires": { "is-number": "^7.0.0" } - }, - "wrap-ansi": { - "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", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -12361,9 +12453,9 @@ } }, "karma-coverage-istanbul-reporter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.2.tgz", - "integrity": "sha512-pg23tKKF867UIJUIZF252cNbiBnuMIPOMkeiULzjysr9K267Js2O/SoQBL1PCPctJVzvhOkE47yQPUKrWtyl6w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", @@ -12374,18 +12466,18 @@ } }, "karma-jasmine": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.3.1.tgz", - "integrity": "sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", "dev": true, "requires": { - "jasmine-core": "^3.5.0" + "jasmine-core": "^3.6.0" } }, "karma-jasmine-html-reporter": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.3.tgz", - "integrity": "sha512-ci0VrjuCaFj+9d1tYlTE3KIPUCp0rz874zWWU3JgCMqGIyw5ke+BXWFPOAGAqUdCJcrMwneyvp1zFXA74MiPUA==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "dev": true }, "karma-source-map-support": { @@ -12398,9 +12490,9 @@ } }, "katex": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz", - "integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz", + "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==", "requires": { "commander": "^2.19.0" } @@ -12743,9 +12835,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -12787,16 +12879,16 @@ } }, "log4js": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", - "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", "dev": true, "requires": { - "date-format": "^2.0.0", + "date-format": "^3.0.0", "debug": "^4.1.1", - "flatted": "^2.0.0", + "flatted": "^2.0.1", "rfdc": "^1.1.4", - "streamroller": "^1.0.6" + "streamroller": "^2.2.4" }, "dependencies": { "debug": { @@ -12837,6 +12929,16 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.2.0.tgz", + "integrity": "sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.2" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -12849,13 +12951,12 @@ "dev": true }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "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": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, "lunr": { @@ -12880,12 +12981,20 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^3.0.0" + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "make-error": { @@ -13010,19 +13119,19 @@ "dev": true }, "matcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.1.0.tgz", - "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, "optional": true, "requires": { - "escape-string-regexp": "^2.0.0" + "escape-string-regexp": "^4.0.0" }, "dependencies": { "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "optional": true } @@ -13039,9 +13148,9 @@ "integrity": "sha512-n4xZJ+cw7o01YOSVhxxjyOmibqBPCi+XTDof4siq78QWMx7Fxjzgb/mxMUEElMzTDodMV7ENIMsjREOSldOQPw==" }, "md5-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-4.0.0.tgz", - "integrity": "sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", "dev": true }, "md5.js": { @@ -13103,8 +13212,7 @@ "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==" }, "merge2": { "version": "1.2.3", @@ -13199,8 +13307,7 @@ "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==" }, "mimic-response": { "version": "1.0.1", @@ -13532,9 +13639,9 @@ } }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "nan": { @@ -13594,20 +13701,22 @@ "integrity": "sha512-MKawthAXawXZ+pcJS6/dGuwGDunM4yuUpjLjmFlRW3pr+BbWoUFVtFNxdcf1490FkYEsLC9sfEcZ4iQkmsI8sg==" }, "ngx-markdown": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-9.0.0.tgz", - "integrity": "sha512-wcXMxA4Skgk9SzhfDRjihap/Kjq17jmMQiE/Ccp0bNibGaDgS5DbZiPBlMNLkp669UvjY9wVuxE4NuDtmQHS9w==", - "requires": { - "@types/marked": "^0.7.2", - "katex": "^0.11.0", - "marked": "^0.8.0", - "prismjs": "^1.16.0" + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-10.1.1.tgz", + "integrity": "sha512-bUVgN6asb35d5U4xM5CNfo7pSpuwqJSdTgK0PhNZzLiaiyPIK2owtLF6sWGhxTThJu+LngJPjj4MQ+AFe/s8XQ==", + "requires": { + "@types/marked": "^1.1.0", + "emoji-toolkit": "^6.0.1", + "katex": "^0.12.0", + "marked": "^1.1.0", + "prismjs": "^1.20.0", + "tslib": "^2.0.0" }, "dependencies": { "marked": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz", - "integrity": "sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", + "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==" } } }, @@ -13639,7 +13748,8 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "no-case": { "version": "2.3.2", @@ -13721,9 +13831,9 @@ "dev": true }, "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -14002,7 +14112,8 @@ "object-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==" + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true }, "object-path": { "version": "0.11.4", @@ -14193,12 +14304,9 @@ } }, "objectorarray": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", - "integrity": "sha512-kPoflSYkAf/Onvjr4ZLaq37vDuOXjVzfwLCRuORRzYGdXkHa/vacPT0RgR+KmtkwOYFcxTMM62BRrZk8GGKHjw==", - "requires": { - "tape": "^4.8.0" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", + "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==" }, "obuf": { "version": "1.1.2", @@ -14230,20 +14338,11 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - } + "mimic-fn": "^2.1.0" } }, "open": { @@ -14460,8 +14559,7 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { "version": "2.2.1", @@ -14502,8 +14600,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-json": { "version": "6.5.0", @@ -14840,12 +14937,14 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -15762,9 +15861,9 @@ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" }, "primeng": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.6.tgz", - "integrity": "sha512-RGVTkXwHTb7609zTU/uJFYdbJV124kOwrMiwnHjFn6UkwmS3yTX0Kkr21v8KOTJqsKLq3OWVYhkOwvUklipAAg==" + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.1.3.tgz", + "integrity": "sha512-5+XGWrLNYToMIXR/r+sMcGAgz/rSYjo6Ms8rygV5uuLmHNB+mXpaRxMCajKSnmVFLZPeyATtVRm9RcA4Y/VizQ==" }, "printj": { "version": "1.1.2", @@ -15772,9 +15871,9 @@ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, "prismjs": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.19.0.tgz", - "integrity": "sha512-IVFtbW9mCWm9eOIaEkNyo2Vl4NnEifis2GQ7/MLRG5TQe6t+4Sj9J5QWI9i3v+SS43uZBlCAOn+zYTVYQcPXJw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz", + "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==", "requires": { "clipboard": "^2.0.0" } @@ -16001,12 +16100,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -16039,7 +16132,6 @@ "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" @@ -16278,7 +16370,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "dev": true, "requires": { "pify": "^4.0.1", "with-open-file": "^0.1.6" @@ -16287,8 +16378,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, @@ -16433,16 +16523,6 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, "registry-url": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", @@ -16663,6 +16743,23 @@ "requires": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } } }, "restructure": { @@ -16674,14 +16771,6 @@ "browserify-optional": "^1.0.0" } }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "requires": { - "through": "~2.3.4" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -16697,8 +16786,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rework": { "version": "1.0.1", @@ -16808,20 +16896,16 @@ } } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" }, "run-queue": { "version": "1.0.3", @@ -16838,9 +16922,9 @@ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", "requires": { "tslib": "^1.9.0" }, @@ -17068,15 +17152,6 @@ "dev": true, "optional": true }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, "semver-dsl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", @@ -17162,13 +17237,22 @@ } }, "serialize-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", - "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "dev": true, "optional": true, "requires": { - "type-fest": "^0.8.0" + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true + } } }, "serialize-javascript": { @@ -17291,6 +17375,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -17298,18 +17383,13 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shelljs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-swizzle": { "version": "0.2.2", @@ -17459,27 +17539,33 @@ } }, "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", "dev": true, "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", + "debug": "~4.1.0", + "engine.io": "~3.4.0", "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -17490,56 +17576,96 @@ "dev": true }, "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", "has-binary2": "~1.0.2", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", + "socket.io-parser": "~3.3.0", "to-array": "0.1.4" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } } } }, "socket.io-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", "dev": true, "requires": { "component-emitter": "1.2.1", - "debug": "~3.1.0", + "debug": "~4.1.0", "isarray": "2.0.1" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "isarray": { @@ -17547,6 +17673,12 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -17853,9 +17985,9 @@ "dev": true }, "ssf": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz", - "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", "requires": { "frac": "~1.1.2" } @@ -18044,38 +18176,48 @@ "dev": true }, "streamroller": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", - "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", "dev": true, "requires": { - "async": "^2.6.2", - "date-format": "^2.0.0", - "debug": "^3.2.6", - "fs-extra": "^7.0.1", - "lodash": "^4.17.14" + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" }, "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -18129,16 +18271,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" - } - }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -18298,6 +18430,12 @@ "safe-buffer": "~5.1.0" } }, + "stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -18308,9 +18446,9 @@ } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" }, "strip-css-comments": { "version": "3.0.0", @@ -18326,6 +18464,11 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "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==" + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -18553,65 +18696,18 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, + "systeminformation": { + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.27.1.tgz", + "integrity": "sha512-l321lB8PDyuAmLRALsjq11gLIXUepz2pDNaQoqYtd04g0pu/arw4aAQ0T05IgRSmZLHYq5jd6WmmpIBs1EO5AQ==", + "dev": true + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tape": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.10.2.tgz", - "integrity": "sha512-mgl23h7W2yuk3N85FOYrin2OvThTYWdwbk6XQ1pr2PMJieyW2FM/4Bu/+kD/wecb3aZ0Enm+Syinyq467OPq2w==", - "requires": { - "deep-equal": "~1.0.1", - "defined": "~1.0.0", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.4", - "has": "~1.0.3", - "inherits": "~2.0.3", - "minimist": "~1.2.0", - "object-inspect": "~1.6.0", - "resolve": "~1.10.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.1.2", - "through": "~2.3.8" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" - }, - "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, "tar": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", @@ -18669,43 +18765,6 @@ } } }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, "terser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.1.tgz", @@ -18789,7 +18848,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.5", @@ -18813,12 +18873,6 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -18986,9 +19040,9 @@ "integrity": "sha512-ikUlS+/BcImLhNYyIgZcEmq4byc31QpC+46/6Jm5ECWkVFhf8SM2Fp/0pMVXPX6vk45SMCwrP4Taxucne8I0VA==" }, "ts-node": { - "version": "8.10.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz", - "integrity": "sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz", + "integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==", "dev": true, "requires": { "arg": "^4.1.0", @@ -19078,9 +19132,9 @@ "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" }, "tslint": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.2.tgz", - "integrity": "sha512-UyNrLdK3E0fQG/xWNqAFAC5ugtFyPO4JJR1KyyfQAyzR8W0fTRrC91A8Wej4BntFzcvETdCSDa/4PnNYJQLYiA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -19094,7 +19148,7 @@ "mkdirp": "^0.5.3", "resolve": "^1.3.2", "semver": "^5.3.0", - "tslib": "^1.10.0", + "tslib": "^1.13.0", "tsutils": "^2.29.0" }, "dependencies": { @@ -19247,12 +19301,6 @@ } } }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -19260,9 +19308,9 @@ "dev": true }, "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==" }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", @@ -19381,12 +19429,12 @@ } }, "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "^2.0.0" } }, "universal-analytics": { @@ -19420,7 +19468,8 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "unix-crypt-td-js": { "version": "1.1.4", @@ -19480,12 +19529,6 @@ } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -20770,6 +20813,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -20780,48 +20824,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "windows-release": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", @@ -20881,10 +20883,9 @@ } }, "with-open-file": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.6.tgz", - "integrity": "sha512-SQS05JekbtwQSgCYlBsZn/+m2gpn4zWsqpCYIrCHva0+ojXcnmUEPsBN6Ipoz3vmY/81k5PvYEWSxER2g4BTqA==", - "dev": true, + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", + "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", "requires": { "p-finally": "^1.0.0", "p-try": "^2.1.0", @@ -20894,8 +20895,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, @@ -20904,6 +20904,11 @@ "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -21009,14 +21014,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { @@ -21029,15 +21035,15 @@ } }, "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, "xlsx": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.0.tgz", - "integrity": "sha512-W/LQZjh6o7WDGmCIUXp2FUPSej2XRdaiTgZN31Oh68JlL7jpm796p3eI5zOpphYNT12qkgnXYaCysAsoiyZvOQ==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.6.tgz", + "integrity": "sha512-iAPNt15C2umCx7Q6h9owZvNHRYVOImLp7Mc00uA4UhJvzjfM1OV3V7TgBXIHuawGF1G6GLXZr/r75e5jsiBefg==", "requires": { "adler-32": "~1.2.0", "cfb": "^1.1.4", @@ -21045,8 +21051,9 @@ "commander": "~2.17.1", "crc-32": "~1.2.0", "exit-on-epipe": "~1.0.1", - "ssf": "~0.10.3", - "wmf": "~1.0.1" + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" }, "dependencies": { "commander": { @@ -21080,9 +21087,9 @@ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" }, "xmlhttprequest-ssl": { "version": "1.5.5", @@ -21103,9 +21110,9 @@ "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yargs": { @@ -21196,9 +21203,12 @@ "dev": true }, "zone.js": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.1.tgz", + "integrity": "sha512-KcZawpmVgS+3U2rzKTM6fLKaCX1QDv3//NxiSOOsqpQY/r5hl+xpYikPwY93Sp7CAB+J5mZJpb/YubxEYLGK5g==", + "requires": { + "tslib": "^2.0.0" + } } } } diff --git a/package.json b/package.json index 62a9aa747..820f8804e 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@angular/common": "^10.0.12", "@angular/compiler": "^10.0.12", "@angular/core": "^10.0.12", - "@angular/flex-layout": "^9.0.0-beta.29", + "@angular/flex-layout": "^10.0.0-beta.32", "@angular/forms": "^10.0.12", "@angular/material": "^10.1.3", "@angular/platform-browser": "^10.0.12", @@ -51,14 +51,14 @@ "@types/sprintf-js": "^1.1.2", "angular2-chartjs": "^0.5.1", "angular2-hotkeys": "^2.2.0", - "chartjs-plugin-zoom": "^0.7.5", - "cordova-android": "^8.1.0", - "cordova-plugin-advanced-http": "^2.4.1", + "chartjs-plugin-zoom": "^0.7.7", + "cordova-android": "^9.0.0", + "cordova-plugin-advanced-http": "^3.0.1", "cordova-plugin-app-version": "^0.1.9", "cordova-plugin-badge": "^0.8.8", "cordova-plugin-device": "^2.0.3", "cordova-plugin-file": "^6.0.2", - "cordova-plugin-file-opener2": "^3.0.1", + "cordova-plugin-file-opener2": "^3.0.4", "cordova-plugin-local-notification": "^0.9.0-beta.2", "cordova-plugin-whitelist": "^1.3.4", "core-js": "^3.6.5", @@ -69,19 +69,19 @@ "mathjax": "^2.7.8", "mermaid": "~8.3.1", "ngx-konami": "^1.7.1", - "ngx-markdown": "^9.0.0", + "ngx-markdown": "^10.1.1", "ngx-material-file-input": "^2.1.1", "ngx-matomo": "^0.1.4", "ngx-webstorage-service": "^4.1.0", "pako": "^1.0.11", - "primeng": "^9.0.6", + "primeng": "^9.1.3", "roboto-fontface": "^0.10.0", - "rxjs": "^6.5.5", + "rxjs": "^6.6.2", "screenfull": "^5.0.2", "svg-pan-zoom": "^3.6.1", "tslib": "^2.0.0", - "xlsx": "^0.16.0", - "zone.js": "^0.10.3" + "xlsx": "^0.16.6", + "zone.js": "^0.11.1" }, "devDependencies": { "@angular-devkit/build-angular": "^0.1000.7", @@ -90,25 +90,25 @@ "@angular/language-service": "^10.0.12", "@compodoc/compodoc": "^1.1.11", "@types/file-saver": "^2.0.1", - "@types/jasmine": "^3.5.10", + "@types/jasmine": "^3.5.13", "@types/jasminewd2": "^2.0.8", - "@types/node": "^13.13.5", + "@types/node": "^14.6.0", "codelyzer": "^6.0.0", - "cordova": "^9.0.0", - "electron": "^8.2.5", - "electron-builder": "^22.6.0", - "fs-extra": "^9.0.0", - "jasmine-core": "~3.5.0", + "cordova": "^10.0.0", + "electron": "^10.0.0", + "electron-builder": "^22.8.0", + "fs-extra": "^9.0.1", + "jasmine-core": "^3.6.0", "jasmine-spec-reporter": "~5.0.0", - "karma": "~5.0.0", + "karma": "^5.1.1", "karma-chrome-launcher": "~3.1.0", "karma-cli": "~2.0.0", - "karma-coverage-istanbul-reporter": "~3.0.2", - "karma-jasmine": "~3.3.0", - "karma-jasmine-html-reporter": "^1.5.0", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-jasmine": "^4.0.1", + "karma-jasmine-html-reporter": "^1.5.4", "protractor": "~7.0.0", - "ts-node": "^8.10.1", - "tslint": "~6.1.0", + "ts-node": "^9.0.0", + "tslint": "^6.1.3", "typescript": "~3.9.7", "webpack-dev-server": "^3.11.0" }, -- GitLab From 6c22d72e30d0661e1d402c9a95c24d2b7db4e7c7 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 12:33:00 +0200 Subject: [PATCH 082/101] Update mermaid --- package-lock.json | 253 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 117 insertions(+), 138 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb7616752..07c9e6b81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -981,7 +981,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -1168,7 +1167,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.10.4", "@babel/template": "^7.10.4", @@ -1179,7 +1177,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -1188,7 +1185,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", @@ -1199,7 +1195,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/parser": "^7.10.4", @@ -1212,7 +1207,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, "requires": { "@babel/types": "^7.10.4" } @@ -1443,7 +1437,6 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dev": true, "requires": { "@babel/types": "^7.11.0" } @@ -1451,8 +1444,7 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/helper-wrap-function": { "version": "7.10.4", @@ -1547,7 +1539,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", @@ -1557,8 +1548,7 @@ "@babel/parser": { "version": "7.11.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", - "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==", - "dev": true + "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.10.5", @@ -2187,7 +2177,6 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/generator": "^7.11.0", @@ -2204,7 +2193,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -2213,7 +2201,6 @@ "version": "7.11.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", - "dev": true, "requires": { "@babel/types": "^7.11.0", "jsesc": "^2.5.1", @@ -2224,7 +2211,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", @@ -2235,7 +2221,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -2243,20 +2228,17 @@ "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -2264,7 +2246,6 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2274,8 +2255,7 @@ "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" } } }, @@ -3587,7 +3567,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" }, @@ -3596,7 +3575,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -3604,8 +3582,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" } } }, @@ -4042,6 +4019,29 @@ "ast-types-flow": "0.0.7" } }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -5150,7 +5150,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5161,7 +5160,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -7478,9 +7476,9 @@ } }, "d3": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.15.1.tgz", - "integrity": "sha512-Xu9gT6Lm0jH3wWJJSRomFwqnGGi3YAfWIfxNFl4++YVgYOjo3F8V2idAG3nJBgpZOkD0/RHPZX6F4k6tzgOvYw==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", "requires": { "d3-array": "1", "d3-axis": "1", @@ -7526,9 +7524,9 @@ "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" }, "d3-brush": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.5.tgz", - "integrity": "sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", "requires": { "d3-dispatch": "1", "d3-drag": "1", @@ -7552,9 +7550,9 @@ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, "d3-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.0.tgz", - "integrity": "sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "d3-contour": { "version": "1.3.2", @@ -7589,14 +7587,14 @@ } }, "d3-ease": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.6.tgz", - "integrity": "sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" }, "d3-fetch": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.1.2.tgz", - "integrity": "sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", "requires": { "d3-dsv": "1" } @@ -7613,14 +7611,14 @@ } }, "d3-format": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz", - "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==" + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" }, "d3-geo": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.11.9.tgz", - "integrity": "sha512-9edcH6J3s/Aa3KJITWqFJbyB/8q3mMlA9Fi7z6yy+FAYMnRaxmC7jBhUnsINxVWD14GmqX3DK8uk7nV6/Ekt4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", "requires": { "d3-array": "1" } @@ -7681,9 +7679,9 @@ } }, "d3-selection": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.1.tgz", - "integrity": "sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" }, "d3-shape": { "version": "1.3.7", @@ -7699,9 +7697,9 @@ "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" }, "d3-time-format": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz", - "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", "requires": { "d3-time": "1" } @@ -7741,22 +7739,24 @@ "d3-transition": "1" } }, - "dagre-d3-renderer": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/dagre-d3-renderer/-/dagre-d3-renderer-0.5.8.tgz", - "integrity": "sha512-XH2a86isUHRxzIYbjQVEuZtJnWEufb64H5DuXIUmn8esuB40jgLEbUUclulWOW62/ZoXlj2ZDyL8SJ+YRxs+jQ==", + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", "requires": { - "dagre-layout": "^0.8.8", - "lodash": "^4.17.5" + "graphlib": "^2.1.8", + "lodash": "^4.17.15" } }, - "dagre-layout": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dagre-layout/-/dagre-layout-0.8.8.tgz", - "integrity": "sha512-ZNV15T9za7X+fV8Z07IZquUKugCxm5owoiPPxfEx6OJRD331nkiIaF3vSt0JEY5FkrY0KfRQxcpQ3SpXB7pLPQ==", + "dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", "requires": { - "graphlibrary": "^2.2.0", - "lodash": "^4.17.5" + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" } }, "damerau-levenshtein": { @@ -8732,6 +8732,14 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "entity-decode": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entity-decode/-/entity-decode-2.0.2.tgz", + "integrity": "sha512-5CCY/3ci4MC1m2jlumNjWd7VBFt4VfFnmSqSNmVcXq4gxM3Vmarxtt+SvmBnzwLS669MWdVuXboNVj1qN2esVg==", + "requires": { + "he": "^1.1.1" + } + }, "env-paths": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", @@ -8876,13 +8884,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escaper": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/escaper/-/escaper-2.5.3.tgz", - "integrity": "sha512-QGb9sFxBVpbzMggrKTX0ry1oiI4CSDAl9vIL702hzl1jGW8VZs7qfqTRX7WDOjoNDoEVGcEtu1ZOQgReSfT2kQ==" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.1", @@ -8916,6 +8918,11 @@ "estraverse": "^4.1.1" } }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", @@ -10606,8 +10613,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { "version": "1.0.1", @@ -10806,12 +10812,12 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, - "graphlibrary": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/graphlibrary/-/graphlibrary-2.2.0.tgz", - "integrity": "sha512-XTcvT55L8u4MBZrM37zXoUxsgxs/7sow7YSygd9CIwfWTVO8RVu7AYXhhCiTuFEf+APKgx6Jk4SuQbYR0vYKmQ==", + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "hammerjs": { @@ -10912,8 +10918,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.0", @@ -11828,11 +11833,6 @@ "isobject": "^3.0.1" } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -12171,8 +12171,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.13.1", @@ -12201,8 +12200,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-buffer": { "version": "3.0.0", @@ -12506,6 +12504,11 @@ "json-buffer": "3.0.0" } }, + "khroma": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-1.1.0.tgz", + "integrity": "sha512-aTO+YX22tYOLEQJYFiatAj1lc5QZ+H5sHWFRBWNCiKwc5NWNUJZyeSeiHEPeURJ2a1GEVYcmyMUwGjjLe5ec5A==" + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -13221,21 +13224,22 @@ "dev": true }, "mermaid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.3.1.tgz", - "integrity": "sha512-s3+IQJqpd++hplyz1DVmA68d1ZTUqr1R21EeQldPNtSpRwLuODqI0BxQAt0bI5oiet07lelqfs3FW4ewtIhfKQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.7.0.tgz", + "integrity": "sha512-SkinxAY3sIdML+o5U4U7rQEIa628OEywEw+pfhc3wSVDFqLk2XNdX2j3YmkyCw3Kcbp9BXar533ei+/saYBs5g==", "requires": { "@braintree/sanitize-url": "^3.1.0", + "babel-eslint": "^10.1.0", "d3": "^5.7.0", - "dagre-d3-renderer": "^0.5.8", - "dagre-layout": "^0.8.8", - "graphlibrary": "^2.2.0", + "dagre": "^0.8.4", + "dagre-d3": "^0.6.4", + "entity-decode": "^2.0.2", + "graphlib": "^2.1.7", "he": "^1.2.0", - "lodash": "^4.17.11", + "khroma": "^1.1.0", "minify": "^4.1.1", "moment-mini": "^2.22.1", - "prettier": "^1.18.2", - "scope-css": "^1.2.1" + "stylis": "^3.5.2" } }, "methods": { @@ -14943,8 +14947,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-to-regexp": { "version": "0.1.7", @@ -15855,11 +15858,6 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" - }, "primeng": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.1.3.tgz", @@ -17081,16 +17079,6 @@ "get-assigned-identifiers": "^1.1.0" } }, - "scope-css": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/scope-css/-/scope-css-1.2.1.tgz", - "integrity": "sha512-UjLRmyEYaDNiOS673xlVkZFlVCtckJR/dKgr434VMm7Lb+AOOqXKdAcY7PpGlJYErjXXJzKN7HWo4uRPiZZG0Q==", - "requires": { - "escaper": "^2.5.3", - "slugify": "^1.3.1", - "strip-css-comments": "^3.0.0" - } - }, "screenfull": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.0.2.tgz", @@ -17414,11 +17402,6 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "slugify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.0.tgz", - "integrity": "sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ==" - }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", @@ -18450,14 +18433,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" }, - "strip-css-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-css-comments/-/strip-css-comments-3.0.0.tgz", - "integrity": "sha1-elYl7/iisibPiUehElTaluE9rok=", - "requires": { - "is-regexp": "^1.0.0" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -18524,6 +18499,11 @@ } } }, + "stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" + }, "stylus": { "version": "0.54.7", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", @@ -18924,8 +18904,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", diff --git a/package.json b/package.json index 820f8804e..efc799d43 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "jalhyd": "file:../jalhyd", "material-design-icons": "^3.0.1", "mathjax": "^2.7.8", - "mermaid": "~8.3.1", + "mermaid": "^8.7.0", "ngx-konami": "^1.7.1", "ngx-markdown": "^10.1.1", "ngx-material-file-input": "^2.1.1", -- GitLab From deed3b2a5901485709b44c2ae1531702c7f3f455 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 14:04:01 +0200 Subject: [PATCH 083/101] Restore electron icon --- electron/icon.png | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/icon.png b/electron/icon.png index 78fc8b7be..eb1f1a84f 120000 --- a/electron/icon.png +++ b/electron/icon.png @@ -1 +1 @@ -../src/android-chrome-512x512.png \ No newline at end of file +../src/assets/icons/android-chrome-512x512.png \ No newline at end of file -- GitLab From c20128d48168b8f5c9be04bd9a0e3229ee73c121 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 15:44:03 +0200 Subject: [PATCH 084/101] Fix #416 - update to MathJax 3 --- docs/mathjax.config.js | 12 ++++++++++++ mkdocs-en.yml | 5 ++++- mkdocs-fr.yml | 5 ++++- package-lock.json | 6 +++--- package.json | 2 +- scripts/mkdocs-postprocess.js | 9 ++++----- 6 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 docs/mathjax.config.js diff --git a/docs/mathjax.config.js b/docs/mathjax.config.js new file mode 100644 index 000000000..14555b581 --- /dev/null +++ b/docs/mathjax.config.js @@ -0,0 +1,12 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; \ No newline at end of file diff --git a/mkdocs-en.yml b/mkdocs-en.yml index 5cad58607..0278e599d 100644 --- a/mkdocs-en.yml +++ b/mkdocs-en.yml @@ -10,12 +10,15 @@ theme: language: 'en' use_directory_urls: false extra_javascript: - - ../javascripts/mathjax/MathJax.js?config=TeX-AMS_CHTML + - ../javascripts/mathjax.config.js + - ../javascripts/mathjax/tex-mml-chtml.js - ../javascripts/matomo-tracking.js markdown_extensions: - mdx_math - footnotes - codehilite + - pymdownx.arithmatex: + generic: true nav: - Presentation of Cassiopée: - index.md diff --git a/mkdocs-fr.yml b/mkdocs-fr.yml index f7ac501cd..6b0870d90 100644 --- a/mkdocs-fr.yml +++ b/mkdocs-fr.yml @@ -10,12 +10,15 @@ theme: language: 'fr' use_directory_urls: false extra_javascript: - - ../javascripts/mathjax/MathJax.js?config=TeX-AMS_CHTML + - ../javascripts/mathjax.config.js + - ../javascripts/mathjax/tex-mml-chtml.js - ../javascripts/matomo-tracking.js markdown_extensions: - mdx_math - footnotes - codehilite + - pymdownx.arithmatex: + generic: true nav: - Présentation de Cassiopée: - index.md diff --git a/package-lock.json b/package-lock.json index 07c9e6b81..16fb374d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13146,9 +13146,9 @@ "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" }, "mathjax": { - "version": "2.7.8", - "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-2.7.8.tgz", - "integrity": "sha512-n4xZJ+cw7o01YOSVhxxjyOmibqBPCi+XTDof4siq78QWMx7Fxjzgb/mxMUEElMzTDodMV7ENIMsjREOSldOQPw==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-3.0.5.tgz", + "integrity": "sha512-9M7VulhltkD8sIebWutK/VfAD+m+6BIFqfpjDh9Pz/etoKUtjO6UMnOhUcDmNl6iApE8C9xrUmaMyNZkZAlrMw==" }, "md5-file": { "version": "5.0.0", diff --git a/package.json b/package.json index efc799d43..465906635 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "he": "^1.2.0", "jalhyd": "file:../jalhyd", "material-design-icons": "^3.0.1", - "mathjax": "^2.7.8", + "mathjax": "^3.0.5", "mermaid": "^8.7.0", "ngx-konami": "^1.7.1", "ngx-markdown": "^10.1.1", diff --git a/scripts/mkdocs-postprocess.js b/scripts/mkdocs-postprocess.js index fcb2b04eb..5e4cc9e6f 100644 --- a/scripts/mkdocs-postprocess.js +++ b/scripts/mkdocs-postprocess.js @@ -16,10 +16,9 @@ fs.emptyDirSync(destPath); fs.ensureDirSync(destPathMJ + "/fonts/HTML-CSS/TeX/", { recursive: true }); // copy required files only -fs.copySync("node_modules/mathjax/MathJax.js", destPathMJ + "/MathJax.js"); -fs.copySync("node_modules/mathjax/config", destPathMJ + "/config"); -fs.copySync("node_modules/mathjax/jax", destPathMJ + "/jax"); -fs.copySync("node_modules/mathjax/fonts/HTML-CSS/TeX/woff", destPathMJ + "/fonts/HTML-CSS/TeX/woff"); -fs.copySync("node_modules/mathjax/fonts/HTML-CSS/TeX/otf", destPathMJ + "/fonts/HTML-CSS/TeX/otf"); +fs.copySync("node_modules/mathjax/es5/tex-mml-chtml.js", destPathMJ + "/tex-mml-chtml.js"); +fs.copySync("node_modules/mathjax/es5/output/chtml/fonts", destPathMJ + "/output/chtml/fonts"); + +fs.copySync("docs/mathjax.config.js", destPath + "/mathjax.config.js"); fs.copySync("docs/matomo-tracking.js", destPath + "/matomo-tracking.js"); -- GitLab From eab3c3afc65fd911057e102fba4b88bc164ce2a9 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 16:46:02 +0200 Subject: [PATCH 085/101] Fix #181 - prevent setting param to Calc mode when it would trigger a links loop --- .../param-field-line.component.html | 2 +- .../param-field-line.component.ts | 24 +++++++++++++++++++ src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/app/components/param-field-line/param-field-line.component.html b/src/app/components/param-field-line/param-field-line.component.html index 07d31672d..1143ac972 100644 --- a/src/app/components/param-field-line/param-field-line.component.html +++ b/src/app/components/param-field-line/param-field-line.component.html @@ -38,7 +38,7 @@ </mat-button-toggle> <mat-button-toggle class="radio_cal" value="radio_cal" *ngIf="hasRadioCal()" (click)="onRadioClick('cal')" - [checked]="isRadioCalChecked"> + [checked]="isRadioCalChecked" [disabled]="isRadioCalDisabled" [title]="radioCalTitle"> <span fxHide.xxs>{{ uitextParamCalculer }}</span> <span fxHide.gt-xxs>C</span> </mat-button-toggle> diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index 0fd0a4eb2..22b7a92ad 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -199,6 +199,30 @@ export class ParamFieldLineComponent implements OnChanges { return ret; } + /** + * Returns true if setting this parameter to Calc mode leads to a links loop + */ + public get isRadioCalDisabled(): boolean { + // find all Nubs that have to be calculated for this one to run + const nub = this.param.paramDefinition.originNub; + const requiredNubs = nub.getRequiredNubsDeep(); + // if one of those Nubs depends on the parameter we're about to set + // to Calc mode, then we shouldn't do so + for (const r of requiredNubs) { + if (r.dependsOnParameter(this.param.paramDefinition)) { + return true; + } + } + return false; + } + + public get radioCalTitle(): string { + if (this.isRadioCalDisabled) { + return this.intlService.localizeText("INFO_PARAMFIELD_CANNOT_CALC_LINKS_LOOP"); + } + return ""; + } + public onRadioClick(option: string) { const oldValue = this.param.valueMode; switch (option) { diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index cecb243f9..e5991f549 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -454,6 +454,7 @@ "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Boundary conditions", "INFO_PARAMFIELD_CALCULATED": "Calculated", "INFO_PARAMFIELD_CALCULATION_FAILED": "Calculation failed", + "INFO_PARAMFIELD_CANNOT_CALC_LINKS_LOOP": "This parameter cannot be calculated (links loop)", "INFO_PARAMFIELD_CHART_SELECT_X_AXIS": "Variable for X axis", "INFO_PARAMFIELD_CHART_SELECT_Y_AXIS": "Variable for Y axis", "INFO_PARAMFIELD_CHART_TYPE_HISTOGRAM": "Histogram", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index df635cb26..cae8286ea 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -455,6 +455,7 @@ "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Conditions aux limites", "INFO_PARAMFIELD_CALCULATED": "Calculé", "INFO_PARAMFIELD_CALCULATION_FAILED": "Échec du calcul", + "INFO_PARAMFIELD_CANNOT_CALC_LINKS_LOOP": "Ce paramètre ne peut être calculé (boucle dans les liens)", "INFO_PARAMFIELD_CHART_SELECT_X_AXIS": "Variable en abscisse", "INFO_PARAMFIELD_CHART_SELECT_Y_AXIS": "Variable en ordonnée", "INFO_PARAMFIELD_CHART_TYPE_HISTOGRAM": "Histogramme", -- GitLab From 995803cbf7690198310971e53cc3fe6cba724b66 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 28 Aug 2020 14:08:01 +0200 Subject: [PATCH 086/101] Restore icons for electron Linux --- src/android-chrome-192x192.png | Bin 0 -> 5978 bytes src/android-chrome-512x512.png | Bin 0 -> 16420 bytes src/apple-touch-icon.png | Bin 0 -> 5580 bytes src/favicon-16x16.png | Bin 0 -> 713 bytes src/favicon-32x32.png | Bin 0 -> 1064 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/android-chrome-192x192.png create mode 100644 src/android-chrome-512x512.png create mode 100644 src/apple-touch-icon.png create mode 100644 src/favicon-16x16.png create mode 100644 src/favicon-32x32.png diff --git a/src/android-chrome-192x192.png b/src/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..2444e0b43af884eeed39e250a3a14d0fe6c8ea24 GIT binary patch literal 5978 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 XS_;^Sf^ZVX1fZ_0qg1BwCg}eFL{UJ6 literal 0 HcmV?d00001 diff --git a/src/android-chrome-512x512.png b/src/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..67c7918826dd586f53aab4da6d7dbfe3ea96937a GIT binary patch literal 16420 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 literal 0 HcmV?d00001 diff --git a/src/apple-touch-icon.png b/src/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a140909ce69acde63e07fc47d7ca9571717c89 GIT binary patch literal 5580 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 literal 0 HcmV?d00001 diff --git a/src/favicon-16x16.png b/src/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..2927e70d491b99063f6bdcd58f26b41f35cd18fd GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a><Y92N-PcV32|kxY5*d3hZd8h zSqxT<t_6z?<7YwyWdr)AtUbkS*Q{ExNu_KfhkLi{`ul7y?V5Evq|=rNdUfA=@~(dF z0fmA!Qi%&T9J*04eGj{R^SPVPt7q+#N?LID>ARJCuQJ=W=yx7ub#4!;TKVPMFTM8t zN+s(hQx`i{tvi0@F>k;`jhbz2Ze8ZnPFu}6&*j~B?ZN9!M{mhwEn~86TE6@8<TWS% z|Nn1mu`LYfV2+X?zu-$RKKy+3`{&F4yLS%&#Tb*k-CfMw_jg<baySb-B8!1ynIOz~ zP2^`ZP>{XE)7O>#F}oz6C7;6dE<2!5fv1aOh{WaOgaj8x9-bZ<jfRPhox;8iGrOfj z8(Q1NLmMXc$1{XBI0ta}Iz+gH_{2B~DJrPyDywO$^9v?4?sRqx<n+*5z2T7TvQ@_p zE?l?pB%An!OV=)5z5G1E-Qw<n3nwI!G(=|1IF#e~nS0lF#`l(7U1`BjB!G6SmbgZg zq$HN4S|t~y0x1R~14Bz)19M#?(-1=wD^qhTLlbQSBP#=goEh96C>nC}Q!>*kachu0 zy7>!GgCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UTt3o15f)dLW3X1a6 zGILTDN-7Id6*3D-k{K8(<~;ty!%-Nfp>fLp^cl~mK@7~w+<M8}!pg$llSP<?6<iuj y4yQ0HZw^s7edEfBBWI4t9AQ7*;IY6<kKvWLV96&Z)2To!7(8A5T-G@yGywp_-u;CD literal 0 HcmV?d00001 diff --git a/src/favicon-32x32.png b/src/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..42b848cb12a2ccce719aac65f869238a167c5303 GIT binary patch literal 1064 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+0817mi8PlzjnRRa=gWUzvu z1_o;|vTBeG=qsJFOVq1t;kFC^|Nrk=dekX*;m(tHj1y;axOMRcOw#W>Xw-L<*}lbX z-F@F(F9gG;D;BKv-Tl&H##tuYCg)YRMPuj4WG%N_bOmT8qjjU@%yZJ|OIRFQS)JN? zmK}Tb{_E;}SJ~~Gt<vW%-f^*M-a!tB7W0(Z$!#08n|3*^yv5_%{^9eFsu_EY5@*IX ztuyXF=DGEWxNrB2^=BBY>We4uynOfNgq0^)Y?~&oI`Q=NC!LsStaeRY&aGS?J!+Mk zQ#&^O`u+FIw_m=c%N&>A6pEN};_4H{qIGO89o)YCERL<7TONDwc+TO`EfzoDb?rT~ zsi%}fC(Yh;cJi8&V&2_4Eql~!wi-`3rqjHe$*!5(r%$0^4PVd{w+#<m*4`D3otx6W z>GQXrk6(VYNS$NUdxX)t;nUZj+mGMo^z6Cu@b#R{=hh#*K6mpuA&<_4EeayQ_~0rD z@(W&m{?6-17oL22e^aC>bt_PmG0EHAg<oP9!%ZNEv%n*=n1O-m5(qO+YC9PP6l5>) z^mS!_%r41iDY$li`)Qyac25__5R22v2?<BIB_t$veqeH|(nxsp?BUVX4Kw@W8P+q2 zIVvU!{>c*%6+XV+!70c~YQKI;%F_?p6T&Bi9+Bts+H^{*LUhHdmDvyYJ$-d^Wn%@L z{qG+Tn9ZbIS67!T%o=Q5Tvx}P!==;6wPsCfZcgJCSuxgcF?@Y~=M?sF?_VwL6n1@X zx2Ua|t<ByCIr;MO_GTrlTK_gN8f??HuUD{ktKyi{dd#Q5L&1JOAA4KVg$*A#1Y{*e zWrd~1&v(vTB$OiDcx!UX(n-NPHmL2qV&c2*3(w6nI!_857;jqcto-SDFlL8{h{&hU z;-ZUNRk$=BKG%PGX!(J)YxXd$XUduAI+4lgraZ&pId-3)I%Q4)hLUQDYeY#(Vo9o1 za#1RfVlXl=wA3{)*EKQ?F*LC<HMcS}*ETS+GBAiO5WI?_AvZrIGp!Q01|8j%nLrJa zARB`7(@M${i&7cN%ggmL^RkPR6AM!H@{7`Ezq647DhjU(i6{w5ELSKf%1_J8NmVGR zEJ#(zEGS84V5pe$_!AFDVVH)-DgV=FJf8+JFe`KGC36ca3wuu%VHQ?!X)rmQ!mPYG sMB(&}D<_VeIU;j}{d9xJ0xvy=SK@*tpPWpm0<B>1boFyt=akR{0ObFlPyhe` literal 0 HcmV?d00001 -- GitLab From e9c25833c9fb3187d48e4cf58891cd65d88a02b0 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 1 Sep 2020 16:59:28 +0200 Subject: [PATCH 087/101] Fix #446 - bugs in Bief when generating sections --- .../calculator.component.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 8a328a71e..cca7416dd 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -712,7 +712,11 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe if (bief.prms.Z1 === bief.calculatedParam) { return this.hasResults && ! bief.result.hasErrorMessages(); } else { - return true; + // check that linked values are available, if any + return ( + (bief.prms.Z1.valueMode !== ParamValueMode.LINK || bief.prms.Z1.referencedValue.isDefined()) + && (bief.prms.ZF1.valueMode !== ParamValueMode.LINK || bief.prms.ZF1.referencedValue.isDefined()) + ); } } @@ -721,7 +725,11 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe if (bief.prms.Z2 === bief.calculatedParam) { return this.hasResults && ! bief.result.hasErrorMessages(); } else { - return true; + // check that linked values are available, if any + return ( + (bief.prms.Z2.valueMode !== ParamValueMode.LINK || bief.prms.Z2.referencedValue.isDefined()) + && (bief.prms.ZF2.valueMode !== ParamValueMode.LINK || bief.prms.ZF2.referencedValue.isDefined()) + ); } } @@ -812,7 +820,12 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe // do not link Y and If && ! [ "If", "Y" ].includes(p.symbol) ) { - p.defineReference(bief.section, p.symbol); + const bP = bief.section.getParameter(p.symbol); + if (bP.valueMode === ParamValueMode.LINK) { + p.defineReference(bP.referencedValue.nub, p.symbol); + } else { + p.defineReference(bief.section, p.symbol); + } } } -- GitLab From bad48106b5549cac35954f3924dec09fd6874900 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 09:40:32 +0200 Subject: [PATCH 088/101] Fix #428 - search engine above calculators list --- .../calculator-list.component.html | 16 ++++++-- .../calculator-list.component.scss | 13 +++++++ .../calculator-list.component.ts | 39 +++++++++++++++++-- 3 files changed, 62 insertions(+), 6 deletions(-) diff --git a/src/app/components/calculator-list/calculator-list.component.html b/src/app/components/calculator-list/calculator-list.component.html index 904c6d994..755776307 100644 --- a/src/app/components/calculator-list/calculator-list.component.html +++ b/src/app/components/calculator-list/calculator-list.component.html @@ -1,6 +1,16 @@ +<div id="header-search"> + <form id="search-modules"> + <mat-form-field> + <mat-icon matPrefix>search</mat-icon> + <input type="search" matInput name="searchTerms" [(ngModel)]="searchTerms" (input)="filterItems()" + (keydown.escape)="resetSearch()"> + </mat-form-field> + </form> +</div> + <div class="container" fxLayout="row wrap" fxLayoutAlign="space-evenly stretch" (konami)="onKC()"> - <mat-card class="welcome-card" *ngIf="nbOpenCalculators === 0"> + <mat-card class="welcome-card" *ngIf="nbOpenCalculators === 0 && searchTerms === ''"> <mat-card-header> <mat-card-title>{{ uitextWelcomeTitle }}</mat-card-title> @@ -16,7 +26,7 @@ </mat-card> - <mat-card *ngFor="let theme of items" class="compute-nodes-theme"> + <mat-card *ngFor="let theme of filteredItems" class="compute-nodes-theme"> <mat-card-header> <mat-card-title>{{ theme.title }}</mat-card-title> @@ -44,7 +54,7 @@ </mat-card> - <mat-card class="examples-card" *ngIf="nbOpenCalculators === 0"> + <mat-card class="examples-card" *ngIf="nbOpenCalculators === 0 && searchTerms === ''"> <mat-card-header> <mat-card-title>{{ uitextExamplesTitle }}</mat-card-title> diff --git a/src/app/components/calculator-list/calculator-list.component.scss b/src/app/components/calculator-list/calculator-list.component.scss index 0ad0e0313..665a2b38c 100644 --- a/src/app/components/calculator-list/calculator-list.component.scss +++ b/src/app/components/calculator-list/calculator-list.component.scss @@ -60,3 +60,16 @@ a.load-example { cursor: pointer; padding-top: 1px; } + +#header-search { + width: 100%; + text-align: center; + + mat-form-field { + width: 280px; + + mat-icon { + vertical-align: bottom; + } + } +} diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index e3c286fbe..51c7563a5 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -22,8 +22,14 @@ import { ApplicationSetupService } from "../../services/app-setup.service"; styleUrls: ["./calculator-list.component.scss"] }) export class CalculatorListComponent implements OnInit { + private _items: any[]; + public filteredItems: any[]; + + /** what is typed into the search field in the nav bar */ + public searchTerms: string; + constructor( @Inject(forwardRef(() => AppComponent)) private appComponent: AppComponent, private router: Router, @@ -33,6 +39,8 @@ export class CalculatorListComponent implements OnInit { ) { ServiceFactory.i18nService.addObserver(this); ServiceFactory.applicationSetupService.addObserver(this); + + this.searchTerms = ""; } /** triggered on init */ @@ -104,6 +112,9 @@ export class CalculatorListComponent implements OnInit { } // else the only remaining calculator was "Structure", the one we don't want } } + + // at first there is no filter, initialize anyway + this.filterItems(); } public create(t: CalculatorType) { @@ -159,8 +170,30 @@ export class CalculatorListComponent implements OnInit { return Session.getInstance().getNumberOfNubs(); } - public get items() { - return this._items; + public resetSearch() { + this.searchTerms = ""; + this.filterItems(); + } + + /** + * Returns calculators grouped by themes, filtered by the search + * terms entered in the navbar's search field in AppComponent + */ + public filterItems() { + if (this.searchTerms === "") { + this.filteredItems = this._items; + } else { + this.filteredItems = JSON.parse(JSON.stringify(this._items)); + // filter items based on parent component's search field + for (const i of this.filteredItems) { + i.calculators = i.calculators.filter((c) => { + return (c.label.toLowerCase().includes(this.searchTerms.toLowerCase())); + }); + } + this.filteredItems = this.filteredItems.filter((i) => { + return (i.calculators.length > 0); + }); + } } /** @@ -226,7 +259,7 @@ export class CalculatorListComponent implements OnInit { } public onKC() { - for (const i of this.items) { + for (const i of this._items) { const img = [ "assets/images/themes/sp.jpg", "assets/images/themes/autres.jpg" ]; const idx = Math.floor(Math.random() * 2); i.image.path = img[idx]; -- GitLab From 035545b45b57807e30500242bf27955cfef80c4f Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 25 Aug 2020 15:07:47 +0200 Subject: [PATCH 089/101] Update #428 : better search engine multiple terms search: all terms must match added empty descriptions in language files for each module --- .../calculator-list.component.html | 3 ++ .../calculator-list.component.ts | 30 ++++++++++++++++++- src/app/services/formulaire.service.ts | 8 +++++ src/locale/messages.en.json | 29 ++++++++++++++++++ src/locale/messages.fr.json | 29 ++++++++++++++++++ 5 files changed, 98 insertions(+), 1 deletion(-) diff --git a/src/app/components/calculator-list/calculator-list.component.html b/src/app/components/calculator-list/calculator-list.component.html index 755776307..7a948010e 100644 --- a/src/app/components/calculator-list/calculator-list.component.html +++ b/src/app/components/calculator-list/calculator-list.component.html @@ -6,6 +6,9 @@ (keydown.escape)="resetSearch()"> </mat-form-field> </form> + <div *ngIf="filteredItems.length === 0"> + {{ uitextSearchNoResult }} + </div> </div> <div class="container" fxLayout="row wrap" fxLayoutAlign="space-evenly stretch" (konami)="onKC()"> diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index 51c7563a5..1e05c7b1e 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -70,6 +70,7 @@ export class CalculatorListComponent implements OnInit { item.calculators.push({ type: calcType, label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(calcType), + description: ServiceFactory.formulaireService.getLocalisedDescriptionFromCalculatorType(calcType), buttonId: "create-calc-" + calcType }); // mark as used @@ -187,7 +188,7 @@ export class CalculatorListComponent implements OnInit { // filter items based on parent component's search field for (const i of this.filteredItems) { i.calculators = i.calculators.filter((c) => { - return (c.label.toLowerCase().includes(this.searchTerms.toLowerCase())); + return this.searchMatches(c.label) || this.searchMatches(c.description); }); } this.filteredItems = this.filteredItems.filter((i) => { @@ -196,6 +197,29 @@ export class CalculatorListComponent implements OnInit { } } + /** + * Returns true if given str matches this.searchTerms: all terms (separated + * by " ") must match, in any order + */ + private searchMatches(str: string): boolean { + let ok = false; + let terms = this.searchTerms.split(" "); + terms = terms.filter( + (item, index) => item !== "" && terms.indexOf(item) === index // deduplicate and remove "" + ); + if (terms.length > 1) { + // all terms must match + ok = terms.every((t) => { + return str.toLowerCase().includes(t.toLowerCase()); + }); + } else if (terms.length > 0) { + ok = (str.toLowerCase().includes(terms[0].toLowerCase())); + } else { + ok = true; + } + return ok; + } + /** * IMPORTANT: keep in sync with app/examples folder contents */ @@ -258,6 +282,10 @@ export class CalculatorListComponent implements OnInit { return ServiceFactory.i18nService.localizeText("INFO_EXAMPLES_SUBTITLE"); } + public get uitextSearchNoResult() { + return ServiceFactory.i18nService.localizeText("INFO_SEARCH_NO_RESULT"); + } + public onKC() { for (const i of this._items) { const img = [ "assets/images/themes/sp.jpg", "assets/images/themes/autres.jpg" ]; diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 89653c92f..d4cdb6ef2 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -146,6 +146,14 @@ export class FormulaireService extends Observable { return this._intlService.localizeText(`INFO_${sCalculator}_TITRE`); } + /** + * Retourne la description du type de module de calcul, dans la langue en cours + */ + public getLocalisedDescriptionFromCalculatorType(type: CalculatorType) { + const sCalculator: string = CalculatorType[type].toUpperCase(); + return this._intlService.localizeText(`INFO_${sCalculator}_DESCRIPTION`); + } + /** * Retourne le titre cour du type de module de calcul, dans la langue en cours * (pour les titres d'onglets par défaut) diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index e5991f549..529148f6d 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -82,19 +82,25 @@ "INFO_CALCULATOR_SAVE": "Save", "INFO_CALCULATOR_USED_BY": "Used by", "INFO_CALCULATOR_VALEURS": "Values", + "INFO_BIEF_DESCRIPTION": "", "INFO_BIEF_TITRE_COURT": "Reach", "INFO_BIEF_TITRE": "Up/downstream elevations of a reach", + "INFO_CLOISONS_DESCRIPTION": "", "INFO_CLOISONS_TITRE_COURT": "Cross walls", "INFO_CLOISONS_TITRE": "Fish ladder: Cross walls", "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "The following modules depend on the one you are closing:", "INFO_CLOSE_DIALOGUE_TEXT": "Warning ! Parameters and results of this module will be lost.", "INFO_CLOSE_DIALOGUE_TITRE": "Closing calculation module", "INFO_CONCENTRATIONBLOCS_TITRE": "Blocks concentration", + "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "", "INFO_CONCENTRATIONBLOCS_TITRE_COURT": "Blocks conc.", + "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "", "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Distrib.", "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Distributor pipe", + "INFO_COURBEREMOUS_DESCRIPTION": "", "INFO_COURBEREMOUS_TITRE_COURT": "Backwater", "INFO_COURBEREMOUS_TITRE": "Backwater curves", + "INFO_DEVER_DESCRIPTION": "", "INFO_DEVER_TITRE_COURT": "Free weir", "INFO_DEVER_TITRE": "Free flow weir stage-discharge laws", "INFO_DIAGRAM_SOLVEUR_FINDS": "finds", @@ -206,8 +212,10 @@ "INFO_FIELDSET_MOVE_DOWN": "Move down", "INFO_FIELDSET_MOVE_LEFT": "Move left", "INFO_FIELDSET_MOVE_RIGHT": "Move right", + "INFO_GRILLE_DESCRIPTION": "", "INFO_GRILLE_TITRE_COURT": "Grid", "INFO_GRILLE_TITRE": "Loss of charge, water grid", + "INFO_JET_DESCRIPTION": "", "INFO_JET_TITRE_COURT": "Jet", "INFO_JET_TITRE": "Jet trajectory and impact", "INFO_WALL_ADDED": "1 wall added", @@ -221,6 +229,7 @@ "INFO_JET_TITRE_TRAJECTOIRE": "Trajectory", "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectory and water elevation", "INFO_JET_FOND": "Bottom", + "INFO_LECHAPTCALMON_DESCRIPTION": "", "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.", "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon", "INFO_LIB_ABSCISSE": "Abscissa (m)", @@ -375,16 +384,19 @@ "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", "INFO_LOG_HIDE_DETAILS": "hide details", "INFO_LOG_SHOW_DETAILS": "show details", + "INFO_MACRORUGO_DESCRIPTION": "", "INFO_MACRORUGO_TITRE_COURT": "Rock-ramp", "INFO_MACRORUGO_TITRE": "Rock-ramp fishpasses", "INFO_MENU_DIAGRAM_TITLE": "Modules diagram", "INFO_MACRORUGOCOMPOUND_TITRE": "Compound rock-ramp fishpasses", + "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "", "INFO_MACRORUGOCOMPOUND_TITRE_COURT": "Compound RR", "INFO_MACRORUGOCOMPOUND_LINCL": "Lateral inclination (m/m): ", "INFO_ONLY_Q_MAY_VARY": "Only flow may vary", "INFO_ONLY_Z1_Q_MAY_VARY": "Only upstream elevation and flow may vary", "INFO_Z1_Z2_MUST_BE_DEFINED": "Upstream and downstream elevations must be defined", "INFO_PENTE_TITRE": "Slope", + "INFO_PENTE_DESCRIPTION": "", "INFO_PENTE_TITRE_COURT": "Slope", "INFO_MENU_EMPTY_SESSION_TITLE": "New session", "INFO_MENU_HELP_TITLE": "Help", @@ -432,23 +444,31 @@ "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Regulated notch (Villemonte)", "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Notch (Villemonte)", "INFO_PARAMETRES_FIXES": "All parameters must be fixed", + "INFO_PAB_DESCRIPTION": "", "INFO_PAB_TITRE_COURT": "Fish ladder", "INFO_PAB_TITRE": "Fish ladder", "INFO_PAB_TITRE_PROFIL": "Fish ladder longitudinal profile", "INFO_PAB_TABLE": "Fish ladder geometry", + "INFO_PABCHUTE_DESCRIPTION": "", "INFO_PABCHUTE_TITRE_COURT": "FL: fall", "INFO_PABCHUTE_TITRE": "Fish ladder: fall", + "INFO_PABDIMENSIONS_DESCRIPTION": "", "INFO_PABDIMENSIONS_TITRE_COURT": "FL: dimensions", "INFO_PABDIMENSIONS_TITRE": "Fish ladder: dimensions", + "INFO_PABNOMBRE_DESCRIPTION": "", "INFO_PABNOMBRE_TITRE_COURT": "FL: number", "INFO_PABNOMBRE_TITRE": "Fish ladder: number of falls", + "INFO_PABPUISSANCE_DESCRIPTION": "", "INFO_PABPUISSANCE_TITRE_COURT": "FL: diss. power", "INFO_PABPUISSANCE_TITRE": "Fish ladder: dissipated power", + "INFO_PARALLELSTRUCTURE_DESCRIPTION": "", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "// structures", "INFO_PARALLELSTRUCTURE_TITRE": "Parallel structures", "INFO_PAR_TITRE": "Humpback fishway: setup", + "INFO_PAR_DESCRIPTION": "", "INFO_PAR_TITRE_COURT": "HF: setup", "INFO_PARSIMULATION_TITRE": "Humpback fishway: simulation", + "INFO_PARSIMULATION_DESCRIPTION": "", "INFO_PARSIMULATION_TITRE_COURT": "HF: simulation", "INFO_PARAMFIELD_AWAITING_CALCULATION": "Awaiting calculation", "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Boundary conditions", @@ -492,6 +512,7 @@ "INFO_QUICKNAV_INPUT": "input", "INFO_QUICKNAV_RESULTS": "results", "WARNING_PROBLEMS_ENCOUNTERED": "Problems occurred during calculation (info: %info%, warning: %warning%, error: %error%)", + "INFO_REGIMEUNIFORME_DESCRIPTION": "", "INFO_REGIMEUNIFORME_TITRE_COURT": "Uniform flow", "INFO_REGIMEUNIFORME_TITRE": "Uniform flow calculation", "INFO_REMOUS_CALCUL_FLUVIAL": "Downstream boundary condition >= Critical elevation: calculation of subcritical part from downstream", @@ -511,6 +532,8 @@ "INFO_REPORT_BUG_SUBJECT": "Issue report", "INFO_REQUIRES": "requires", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Export as XLSX", + "INFO_SEARCH_NO_RESULT": "No result", + "INFO_SECTIONPARAMETREE_DESCRIPTION": "", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Param. section", "INFO_SECTIONPARAMETREE_TITRE": "Parametric section", "INFO_SELECT_MULTIPLE_AND_OTHER": "other", @@ -533,8 +556,10 @@ "INFO_SNACKBAR_RESULTS_INVALIDATED": "Results invalidated for", "INFO_SNACKBAR_SETTINGS_SAVED": "Settings saved on this device", "INFO_SOLVEUR_TITRE": "Multimodule solver", + "INFO_SOLVEUR_DESCRIPTION": "", "INFO_SOLVEUR_TITRE_COURT": "Solver", "INFO_SPP_TITRE": "Sum and product of powers", + "INFO_SPP_DESCRIPTION": "", "INFO_SPP_TITRE_COURT": "SPP", "INFO_THEME_CREDITS": "Credit", "INFO_THEME_DEVALAISON_TITRE": "Downstream migration", @@ -570,8 +595,10 @@ "INFO_EXAMPLES_TITLE": "Examples", "INFO_EXAMPLES_SUBTITLE": "Load standard examples", "INFO_YAXB_TITRE": "Linear function", + "INFO_YAXB_DESCRIPTION": "", "INFO_YAXB_TITRE_COURT": "Linear f.", "INFO_TRIGO_TITRE": "Trigonometric function", + "INFO_TRIGO_DESCRIPTION": "", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", "INFO_VERIF_OK": "Crossing criteria are met for all species", "INFO_VERIF_VARYING_OK": "Crossing criteria are met for all species and all pass modalities", @@ -579,8 +606,10 @@ "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", + "INFO_VERIFICATEUR_DESCRIPTION": "", "INFO_VERIFICATEUR_TITRE_COURT": "Verification", "INFO_ESPECE_TITRE": "Fish species characteristics", + "INFO_ESPECE_DESCRIPTION": "", "INFO_ESPECE_TITRE_COURT": "Species", "WARNING_WARNINGS_ABSTRACT": "%nb% warnings occurred during calculation", "ERROR_JET_SUBMERGED_NO_SOLUTION": "There is no solution", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index cae8286ea..f89b6fa41 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -82,19 +82,25 @@ "INFO_CALCULATOR_SAVE": "Enregistrer", "INFO_CALCULATOR_USED_BY": "Utilisé par", "INFO_CALCULATOR_VALEURS": "Valeurs", + "INFO_BIEF_DESCRIPTION": "", "INFO_BIEF_TITRE_COURT": "Bief", "INFO_BIEF_TITRE": "Cotes amont/aval d'un bief", + "INFO_CLOISONS_DESCRIPTION": "", "INFO_CLOISONS_TITRE_COURT": "Cloisons", "INFO_CLOISONS_TITRE": "Passe à bassins : Cloisons", "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :", "INFO_CLOSE_DIALOGUE_TEXT": "Attention ! Les paramètres et résultats du module de calcul seront perdus.", "INFO_CLOSE_DIALOGUE_TITRE": "Fermeture du module de calcul", "INFO_CONCENTRATIONBLOCS_TITRE": "Concentration de blocs", + "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "", "INFO_CONCENTRATIONBLOCS_TITRE_COURT": "Conc. blocs", + "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "", "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Conduite distri.", "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Conduite distributrice", + "INFO_COURBEREMOUS_DESCRIPTION": "", "INFO_COURBEREMOUS_TITRE_COURT": "Remous", "INFO_COURBEREMOUS_TITRE": "Courbes de remous", + "INFO_DEVER_DESCRIPTION": "", "INFO_DEVER_TITRE_COURT": "Déver. dénoyés", "INFO_DEVER_TITRE": "Lois de déversoirs dénoyés", "INFO_DIAGRAM_SOLVEUR_FINDS": "trouve", @@ -206,8 +212,10 @@ "INFO_FIELDSET_MOVE_DOWN": "Déplacer vers le bas", "INFO_FIELDSET_MOVE_LEFT": "Déplacer vers la gauche", "INFO_FIELDSET_MOVE_RIGHT": "Déplacer vers la droite", + "INFO_GRILLE_DESCRIPTION": "", "INFO_GRILLE_TITRE_COURT": "Grille", "INFO_GRILLE_TITRE": "Perte de charge, grille de prise d'eau", + "INFO_JET_DESCRIPTION": "", "INFO_JET_TITRE_COURT": "Jet", "INFO_JET_TITRE": "Trajectoire et impact d'un jet", "INFO_WALL_ADDED": "1 cloison ajoutée", @@ -221,6 +229,7 @@ "INFO_JET_TITRE_TRAJECTOIRE": "Trajectoire", "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectoire et cote de l'eau", "INFO_JET_FOND": "Fond", + "INFO_LECHAPTCALMON_DESCRIPTION": "", "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.", "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon", "INFO_LIB_ABSCISSE": "Abscisse (m)", @@ -376,16 +385,19 @@ "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", "INFO_LOG_HIDE_DETAILS": "masquer les details", "INFO_LOG_SHOW_DETAILS": "montrer les details", + "INFO_MACRORUGO_DESCRIPTION": "", "INFO_MACRORUGO_TITRE_COURT": "Macro-rugo.", "INFO_MACRORUGO_TITRE": "Passe à macro-rugosités", "INFO_MENU_DIAGRAM_TITLE": "Diagramme des modules", "INFO_MACRORUGOCOMPOUND_TITRE": "Passe à macro-rugosités complexe", + "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "", "INFO_MACRORUGOCOMPOUND_TITRE_COURT": "M-Rugo complexe", "INFO_MACRORUGOCOMPOUND_LINCL": "Dévers latéral (m/m) :", "INFO_ONLY_Q_MAY_VARY": "Seul le débit peut varier", "INFO_ONLY_Z1_Q_MAY_VARY": "Seuls la cote amont et le débit peuvent varier", "INFO_Z1_Z2_MUST_BE_DEFINED": "Les cotes amont et aval doivent être définies", "INFO_PENTE_TITRE": "Pente", + "INFO_PENTE_DESCRIPTION": "", "INFO_PENTE_TITRE_COURT": "Pente", "INFO_MENU_EMPTY_SESSION_TITLE": "Nouvelle session", "INFO_MENU_HELP_TITLE": "Aide", @@ -433,23 +445,31 @@ "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Échancrure régulée (Villemonte)", "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Échancrure (Villemonte)", "INFO_PARAMETRES_FIXES": "Tous les paramètres doivent être fixés", + "INFO_PAB_DESCRIPTION": "", "INFO_PAB_TITRE_COURT": "PAB", "INFO_PAB_TITRE": "Passe à bassins", "INFO_PAB_TITRE_PROFIL": "Profil en long de la passe", "INFO_PAB_TABLE": "Géométrie de la passe", + "INFO_PABCHUTE_DESCRIPTION": "", "INFO_PABCHUTE_TITRE_COURT": "PAB : chute", "INFO_PABCHUTE_TITRE": "Passe à bassins : chute", + "INFO_PABDIMENSIONS_DESCRIPTION": "", "INFO_PABDIMENSIONS_TITRE_COURT": "PAB : dimensions", "INFO_PABDIMENSIONS_TITRE": "Passe à bassins : dimensions", + "INFO_PABNOMBRE_DESCRIPTION": "", "INFO_PABNOMBRE_TITRE_COURT": "PAB : nombre", "INFO_PABNOMBRE_TITRE": "Passe à bassins : nombre de chutes", + "INFO_PABPUISSANCE_DESCRIPTION": "", "INFO_PABPUISSANCE_TITRE_COURT": "PAB : puissance", "INFO_PABPUISSANCE_TITRE": "Passe à bassins : puissance dissipée", + "INFO_PARALLELSTRUCTURE_DESCRIPTION": "", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "Ouvrages", "INFO_PARALLELSTRUCTURE_TITRE": "Lois d'ouvrages", "INFO_PAR_TITRE": "Passe à ralentisseurs : calage", + "INFO_PAR_DESCRIPTION": "", "INFO_PAR_TITRE_COURT": "PAR : calage", "INFO_PARSIMULATION_TITRE": "Passe à ralentisseurs : simulation", + "INFO_PARSIMULATION_DESCRIPTION": "", "INFO_PARSIMULATION_TITRE_COURT": "PAR : simulation", "INFO_PARAMFIELD_AWAITING_CALCULATION": "En attente de calcul", "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Conditions aux limites", @@ -493,6 +513,7 @@ "INFO_QUICKNAV_INPUT": "données", "INFO_QUICKNAV_RESULTS": "résultats", "WARNING_PROBLEMS_ENCOUNTERED": "Des problèmes sont survenus durant le calcul (info : %info%, avertissement : %warning%, erreur : %error%)", + "INFO_REGIMEUNIFORME_DESCRIPTION": "", "INFO_REGIMEUNIFORME_TITRE_COURT": "R. uniforme", "INFO_REGIMEUNIFORME_TITRE": "Régime uniforme", "INFO_REMOUS_CALCUL_FLUVIAL": "Condition limite aval >= Hauteur critique : calcul de la partie fluviale à partir de l'aval", @@ -512,6 +533,8 @@ "INFO_REPORT_BUG_SUBJECT": "Rapport d'erreur", "INFO_REQUIRES": "dépend de", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Exporter en XLSX", + "INFO_SEARCH_NO_RESULT": "Aucun résultat", + "INFO_SECTIONPARAMETREE_DESCRIPTION": "", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Sec. param.", "INFO_SECTIONPARAMETREE_TITRE": "Section paramétrée", "INFO_SELECT_MULTIPLE_AND_OTHER": "autre", @@ -534,8 +557,10 @@ "INFO_SNACKBAR_RESULTS_INVALIDATED": "Résultats invalidés pour", "INFO_SNACKBAR_SETTINGS_SAVED": "Paramètres enregistrés sur cet appareil", "INFO_SOLVEUR_TITRE": "Solveur multimodule", + "INFO_SOLVEUR_DESCRIPTION": "", "INFO_SOLVEUR_TITRE_COURT": "Solveur", "INFO_SPP_TITRE": "Somme et produit de puissances", + "INFO_SPP_DESCRIPTION": "", "INFO_SPP_TITRE_COURT": "SPP", "INFO_THEME_CREDITS": "Crédit", "INFO_THEME_DEVALAISON_TITRE": "Dévalaison", @@ -571,8 +596,10 @@ "INFO_EXAMPLES_TITLE": "Exemples", "INFO_EXAMPLES_SUBTITLE": "Charger des exemples types", "INFO_YAXB_TITRE": "Fonction affine", + "INFO_YAXB_DESCRIPTION": "", "INFO_YAXB_TITRE_COURT": "F. affine", "INFO_TRIGO_TITRE": "Fonction trigonométrique", + "INFO_TRIGO_DESCRIPTION": "", "INFO_TRIGO_TITRE_COURT": "F. trigo.", "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", "INFO_VERIF_VARYING_OK": "Les critères de franchissement sont remplis pour toutes les espèces et toutes les modalités de la passe", @@ -581,8 +608,10 @@ "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", + "INFO_VERIFICATEUR_DESCRIPTION": "", "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", "INFO_ESPECE_TITRE": "Caractéristiques d'une espèce", + "INFO_ESPECE_DESCRIPTION": "", "INFO_ESPECE_TITRE_COURT": "Espèce", "WARNING_WARNINGS_ABSTRACT": "%nb% avertissements rencontrés lors du calcul", "ERROR_JET_SUBMERGED_NO_SOLUTION": "Il n'y a pas de solution", -- GitLab From 88daccb93eeced6a82a306323bd89348ea6c4bd9 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Mon, 31 Aug 2020 14:36:36 +0200 Subject: [PATCH 090/101] Update #428 toggle search field by clicking a search icon in the nav bar use flex for search field --- src/app/app.component.html | 6 ++++- src/app/app.component.scss | 9 +++++++ src/app/app.component.ts | 6 ++++- src/app/app.module.ts | 1 + .../calculator-list.component.html | 26 +++++++++---------- .../calculator-list.component.scss | 7 ++--- .../calculator-list.component.ts | 23 +++++++++++++--- src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 1 + 9 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index 352b05627..50e2060eb 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -47,10 +47,14 @@ </div> </div> - <button *ngIf="currentRoute != '/list'" mat-icon-button id="new-calculator" routerLink="/list" + <button *ngIf="! currentRoute.includes('/list')" mat-icon-button id="new-calculator" routerLink="/list" [title]="uitextSidenavNewCalc" (click)="sidenav.close()"> <mat-icon>add_box</mat-icon> </button> + <button *ngIf="currentRoute === '/list'" mat-icon-button id="enable-search" routerLink="/list/search" + [title]="uitextSearch" (click)="sidenav.close()"> + <mat-icon>search</mat-icon> + </button> <a *ngIf="enableHeaderDoc" target="_blank" id="header-doc" [href]="docIndexPath" [title]="uitextSidenavHelp" (click)="sidenav.close()"> <mat-icon>help</mat-icon> diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 38eeabc95..aa8b9e502 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -76,6 +76,15 @@ button:focus { } } +#enable-search { + margin-right: .5em; + + mat-icon { + font-weight: bold; + font-size: 2em; + } +} + #header-doc { color: white; transform: scale(1.4); diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 01ddce6dd..6cbd0887f 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -327,6 +327,10 @@ export class AppComponent implements OnInit, OnDestroy, Observer { return this.intlService.localizeText("INFO_MENU_SELECT_CALC"); } + public get uitextSearch() { + return this.intlService.localizeText("INFO_MENU_RECHERCHE_MODULES"); + } + public getCalculatorLabel(t: CalculatorType) { return decodeHtml(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); } @@ -405,7 +409,7 @@ export class AppComponent implements OnInit, OnDestroy, Observer { } public get enableHeaderDoc(): boolean { - return this.currentRoute === "/list" && this._calculators.length === 0; + return this.currentRoute.includes("/list") && this._calculators.length === 0; } public get enableSaveSessionMenu(): boolean { diff --git a/src/app/app.module.ts b/src/app/app.module.ts index ca149bc7e..8ed21e343 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -117,6 +117,7 @@ import { import { ImmediateErrorStateMatcher } from "./formulaire/immediate-error-state-matcher"; const appRoutes: Routes = [ + { path: "list/search", component: CalculatorListComponent }, { path: "list", component: CalculatorListComponent }, { path: "calculator/:uid", component: GenericCalculatorComponent }, { path: "setup", component: ApplicationSetupComponent }, diff --git a/src/app/components/calculator-list/calculator-list.component.html b/src/app/components/calculator-list/calculator-list.component.html index 7a948010e..2cdafcee5 100644 --- a/src/app/components/calculator-list/calculator-list.component.html +++ b/src/app/components/calculator-list/calculator-list.component.html @@ -1,18 +1,18 @@ -<div id="header-search"> - <form id="search-modules"> - <mat-form-field> - <mat-icon matPrefix>search</mat-icon> - <input type="search" matInput name="searchTerms" [(ngModel)]="searchTerms" (input)="filterItems()" - (keydown.escape)="resetSearch()"> - </mat-form-field> - </form> - <div *ngIf="filteredItems.length === 0"> - {{ uitextSearchNoResult }} - </div> -</div> - <div class="container" fxLayout="row wrap" fxLayoutAlign="space-evenly stretch" (konami)="onKC()"> + <div id="header-search" *ngIf="enableSearch"> + <form id="search-modules"> + <mat-form-field> + <mat-icon matPrefix>search</mat-icon> + <input type="search" matInput name="searchTerms" [(ngModel)]="searchTerms" (input)="filterItems()" + (keydown.escape)="resetSearch()" autofocus #searchField> + </mat-form-field> + </form> + <div *ngIf="filteredItems.length === 0"> + {{ uitextSearchNoResult }} + </div> + </div> + <mat-card class="welcome-card" *ngIf="nbOpenCalculators === 0 && searchTerms === ''"> <mat-card-header> diff --git a/src/app/components/calculator-list/calculator-list.component.scss b/src/app/components/calculator-list/calculator-list.component.scss index 665a2b38c..5be9933b4 100644 --- a/src/app/components/calculator-list/calculator-list.component.scss +++ b/src/app/components/calculator-list/calculator-list.component.scss @@ -62,11 +62,12 @@ a.load-example { } #header-search { - width: 100%; - text-align: center; + flex: 0 1 100%; + padding: 0 4em; + min-width: 420px; mat-form-field { - width: 280px; + width: 100%; mat-icon { vertical-align: bottom; diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index 1e05c7b1e..8bb4597b1 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -1,5 +1,5 @@ -import { Component, OnInit, Inject, forwardRef } from "@angular/core"; -import { Router } from "@angular/router"; +import { Component, OnInit, Inject, forwardRef, ElementRef, ViewChild } from "@angular/core"; +import { Router, ActivatedRoute } from "@angular/router"; import { CalculatorType, EnumEx, Session } from "jalhyd"; @@ -27,20 +27,37 @@ export class CalculatorListComponent implements OnInit { public filteredItems: any[]; + /** enable search only if /list/search route was called */ + private enableSearch = false; + /** what is typed into the search field in the nav bar */ public searchTerms: string; + @ViewChild("searchField") + private searchField: ElementRef; + constructor( @Inject(forwardRef(() => AppComponent)) private appComponent: AppComponent, private router: Router, private httpService: HttpService, private intlService: I18nService, - private appSetupService: ApplicationSetupService + private appSetupService: ApplicationSetupService, + public route: ActivatedRoute ) { ServiceFactory.i18nService.addObserver(this); ServiceFactory.applicationSetupService.addObserver(this); this.searchTerms = ""; + + this.route.url.subscribe(params => { + if (params.length > 1 && params[1].path === "search") { + this.enableSearch = true; + // focus the new Field + setTimeout(() => { + this.searchField.nativeElement.focus(); + }, 0); + } + }); } /** triggered on init */ diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 529148f6d..9d8b2407b 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -402,6 +402,7 @@ "INFO_MENU_HELP_TITLE": "Help", "INFO_MENU_LOAD_SESSION_TITLE": "Load session", "INFO_MENU_NOUVELLE_CALC": "New calculation module", + "INFO_MENU_RECHERCHE_MODULES": "Search modules", "INFO_MENU_REPORT_BUG": "Report an issue", "INFO_MENU_RESTORE_DEFAULT_SETTINGS": "Default settings", "INFO_MENU_SAVE_SESSION_TITLE": "Save session", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index f89b6fa41..87d77cd15 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -403,6 +403,7 @@ "INFO_MENU_HELP_TITLE": "Aide", "INFO_MENU_LOAD_SESSION_TITLE": "Charger une session", "INFO_MENU_NOUVELLE_CALC": "Nouveau module de calcul", + "INFO_MENU_RECHERCHE_MODULES": "Rechercher des modules", "INFO_MENU_REPORT_BUG": "Signaler un problème", "INFO_MENU_RESTORE_DEFAULT_SETTINGS": "Paramètres par défaut", "INFO_MENU_SAVE_SESSION_TITLE": "Enregistrer la session", -- GitLab From 65e1d79c546ed6175f703f22137cfc69d992dd28 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Mon, 31 Aug 2020 14:48:56 +0200 Subject: [PATCH 091/101] Fix visibility in component --- src/app/components/calculator-list/calculator-list.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index 8bb4597b1..ed2710834 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -28,7 +28,7 @@ export class CalculatorListComponent implements OnInit { public filteredItems: any[]; /** enable search only if /list/search route was called */ - private enableSearch = false; + public enableSearch = false; /** what is typed into the search field in the nav bar */ public searchTerms: string; -- GitLab From 48af0be7e2553b92ea9657a4363c11fcef467195 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 09:37:55 +0200 Subject: [PATCH 092/101] Fix #447 - NaN in param "a" when generating simulation from chevron PAR --- src/app/components/generic-calculator/calculator.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index cca7416dd..dd4e31e8a 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -949,7 +949,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe ZD1: pres.ZD1, ZR2: pres.ZR2, ZD2: pres.ZD2, - a: pres.a + a: pcal.a.hasMultipleValues ? pcal.a.getInferredValuesList(s)[i] : pcal.a.V, }); } }); @@ -969,7 +969,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe ZD1: pres.ZD1, ZR2: pres.ZR2, ZD2: pres.ZD2, - a: pres.a + a: pcal.a.V }); } } -- GitLab From 44044b58765d15290d18022bcfe154b17b23f8eb Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@irstea.fr> Date: Wed, 2 Sep 2020 14:50:09 +0200 Subject: [PATCH 093/101] feat: Add module description + Corrections in English documentation Refs #428 --- docs/en/calculators/hsl/courbe_remous.md | 4 +- .../hyd_en_charge/lechapt-calmon.md | 4 +- docs/en/calculators/par/calage.md | 2 +- docs/en/calculators/par/formules.md | 2 +- docs/en/calculators/par/simulation.md | 2 +- docs/en/calculators/verif/par.md | 8 +-- docs/en/calculators/verif/principe.md | 2 +- mkdocs-en.yml | 4 +- src/app/calculators/espece/en.json | 2 +- src/locale/messages.en.json | 62 +++++++++---------- src/locale/messages.fr.json | 54 ++++++++-------- 11 files changed, 73 insertions(+), 73 deletions(-) diff --git a/docs/en/calculators/hsl/courbe_remous.md b/docs/en/calculators/hsl/courbe_remous.md index 774c3bb63..1c14104f9 100644 --- a/docs/en/calculators/hsl/courbe_remous.md +++ b/docs/en/calculators/hsl/courbe_remous.md @@ -20,8 +20,8 @@ The integration of the equation can be done by one of the following methods: [Ru Depending on the flow regime, the calculation can be carried out: - * from downstream to upstream for the river regime with definition of a downstream boundary condition. - * from upstream to downstream for torrential regime with definition of an upstream boundary condition + * from downstream to upstream for subcritical flow with definition of a downstream boundary condition. + * from upstream to downstream for supercritical flow with definition of an upstream boundary condition If we take the example of a rectangular channel, [the proposed scilab code example for solving an ordinary differential equation](../../methodes_numeriques/euler_explicite.md) is amended as follows: diff --git a/docs/en/calculators/hyd_en_charge/lechapt-calmon.md b/docs/en/calculators/hyd_en_charge/lechapt-calmon.md index 4f42f1ab6..9cbdc07a2 100644 --- a/docs/en/calculators/hyd_en_charge/lechapt-calmon.md +++ b/docs/en/calculators/hyd_en_charge/lechapt-calmon.md @@ -1,6 +1,6 @@ # Lechapt and Calmon -Loss of charge in a circular pipe: Lechapt and Calmon abacus +Headloss in a circular pipe: Lechapt and Calmon abacus Lechapt and Calmon formula is based on adjustements of [Cyril Frank Colebrook formula](https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae#Colebrook%E2%80%93White_equation): @@ -8,7 +8,7 @@ $$J=L.Q^M.D^{-N}$$ With: -- \(J\): loss of charge in mm/m or m/km; +- \(J\): headloss in mm/m or m/km; - \(Q\): flow in L/s; - \(D\): pipe diameter in m; - \(L\), \(M\) and \(N\) coefficients depending on roughness {ϵ}. diff --git a/docs/en/calculators/par/calage.md b/docs/en/calculators/par/calage.md index ed209ce6e..470f20091 100644 --- a/docs/en/calculators/par/calage.md +++ b/docs/en/calculators/par/calage.md @@ -1,4 +1,4 @@ -# Baffle fishway (or humpback fishway) setup +# Baffle fishway (or baffle fishway) setup This module allows to dimension a baffle fishway. Supported baffle fishway types are: diff --git a/docs/en/calculators/par/formules.md b/docs/en/calculators/par/formules.md index 43a97f534..fd947ba79 100644 --- a/docs/en/calculators/par/formules.md +++ b/docs/en/calculators/par/formules.md @@ -1,4 +1,4 @@ -# Baffle fishways (or humpback fishways) calculation formulas +# Baffle fishways (or baffle fishways) calculation formulas For calculation of: diff --git a/docs/en/calculators/par/simulation.md b/docs/en/calculators/par/simulation.md index 37708677a..2bf0901af 100644 --- a/docs/en/calculators/par/simulation.md +++ b/docs/en/calculators/par/simulation.md @@ -1,4 +1,4 @@ -# Baffle fishway (or humpback fishway) simulation +# Baffle fishway (or baffle fishway) simulation This module allows to calculate different hydraulic conditions on a baffle fishway with a known geometry. This geometry may come from topographical measurements or from the [result of a baffle fishway setup](calage.md). diff --git a/docs/en/calculators/verif/par.md b/docs/en/calculators/verif/par.md index 7a2462687..9340ef55d 100644 --- a/docs/en/calculators/verif/par.md +++ b/docs/en/calculators/verif/par.md @@ -1,12 +1,12 @@ -# Crossability verification: Humpback fishways (simulation) +# Crossability verification: Baffle fishways (simulation) ## Criteria ### Incompatible and discouraged species -Species groups 3a, 3b and 7b are discouraged for crossing humpback fishways. This leads to a warning, but does not make the pass not crossable. +Species groups 3a, 3b and 7b are discouraged for crossing baffle fishways. This leads to a warning, but does not make the pass not crossable. -Species groups 8a, 8b, 8c, 8d, 9a, 9b and 10 are unable to cross humpback fishways. +Species groups 8a, 8b, 8c, 8d, 9a, 9b and 10 are unable to cross baffle fishways. ### Minimum water level \(YMinPB\) and \(YMinSB\), in m @@ -33,4 +33,4 @@ From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. | 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.25 | 0.15 | | 7b | River lamprey (Lampetra fluviatilis) | 0.1 | 0.1 | -Table: List of predefined values for crossing criteria of a humpback fishway +Table: List of predefined values for crossing criteria of a baffle fishway diff --git a/docs/en/calculators/verif/principe.md b/docs/en/calculators/verif/principe.md index 6313c5cce..a26143330 100644 --- a/docs/en/calculators/verif/principe.md +++ b/docs/en/calculators/verif/principe.md @@ -3,7 +3,7 @@ This module allows to verify the capacity of different fish species to cross the following types of fish passes: - [fish ladders](pab.md) -- [humpback fishways](par.md) +- [baffle fishways](par.md) - [rock-ramp fishpasses](macrorugo.md) ## Principle diff --git a/mkdocs-en.yml b/mkdocs-en.yml index 0278e599d..dc49d2d43 100644 --- a/mkdocs-en.yml +++ b/mkdocs-en.yml @@ -67,7 +67,7 @@ nav: - calculators/pam/macrorugo_theorie.md - calculators/pam/macrorugo_complexe.md - calculators/pam/concentration.md - - Humpback fishways: + - Baffle fishways: - Baffle fishway setup: calculators/par/calage.md - Baffle fishway simulation: calculators/par/simulation.md - Baffle fishways formulas: calculators/par/formules.md @@ -78,7 +78,7 @@ nav: - Crossability verification: - Principle: calculators/verif/principe.md - Fish ladders: calculators/verif/pab.md - - Humpback fishways: calculators/verif/par.md + - Baffle fishways: calculators/verif/par.md - Rock-ramp fishpasses: calculators/verif/macrorugo.md - Predefined species: calculators/verif/especes_predefinies.md - Downstream migration: diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json index ec2bfea67..f88069bf4 100644 --- a/src/app/calculators/espece/en.json +++ b/src/app/calculators/espece/en.json @@ -3,7 +3,7 @@ "fs_param_pab_s": "Fish ladders, surface jets or orifices", "fs_param_pab_p": "Fish ladders, diving jets", "fs_param_pam": "Rock-ramp fishpasses", - "fs_param_par": "Humpback fishways", + "fs_param_par": "Baffle fishways", "select_divingjetsupported": "Diving jets support", diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 9d8b2407b..073d7138d 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -82,25 +82,25 @@ "INFO_CALCULATOR_SAVE": "Save", "INFO_CALCULATOR_USED_BY": "Used by", "INFO_CALCULATOR_VALEURS": "Values", - "INFO_BIEF_DESCRIPTION": "", + "INFO_BIEF_DESCRIPTION": "open channel canal flow backwater curve", "INFO_BIEF_TITRE_COURT": "Reach", "INFO_BIEF_TITRE": "Up/downstream elevations of a reach", - "INFO_CLOISONS_DESCRIPTION": "", + "INFO_CLOISONS_DESCRIPTION": "step slot weir", "INFO_CLOISONS_TITRE_COURT": "Cross walls", "INFO_CLOISONS_TITRE": "Fish ladder: Cross walls", "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "The following modules depend on the one you are closing:", "INFO_CLOSE_DIALOGUE_TEXT": "Warning ! Parameters and results of this module will be lost.", "INFO_CLOSE_DIALOGUE_TITRE": "Closing calculation module", "INFO_CONCENTRATIONBLOCS_TITRE": "Blocks concentration", - "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "", + "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "rock ramp fish pass", "INFO_CONCENTRATIONBLOCS_TITRE_COURT": "Blocks conc.", - "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "", + "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "flow Blasius", "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Distrib.", "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Distributor pipe", - "INFO_COURBEREMOUS_DESCRIPTION": "", + "INFO_COURBEREMOUS_DESCRIPTION": "open channel regime flow subcritical supercritical hydraulic jump", "INFO_COURBEREMOUS_TITRE_COURT": "Backwater", "INFO_COURBEREMOUS_TITRE": "Backwater curves", - "INFO_DEVER_DESCRIPTION": "", + "INFO_DEVER_DESCRIPTION": "slot threshold approach speed head hydraulic", "INFO_DEVER_TITRE_COURT": "Free weir", "INFO_DEVER_TITRE": "Free flow weir stage-discharge laws", "INFO_DIAGRAM_SOLVEUR_FINDS": "finds", @@ -212,10 +212,10 @@ "INFO_FIELDSET_MOVE_DOWN": "Move down", "INFO_FIELDSET_MOVE_LEFT": "Move left", "INFO_FIELDSET_MOVE_RIGHT": "Move right", - "INFO_GRILLE_DESCRIPTION": "", + "INFO_GRILLE_DESCRIPTION": "downstream migration trashrack conventional oriented inclined", "INFO_GRILLE_TITRE_COURT": "Grid", "INFO_GRILLE_TITRE": "Loss of charge, water grid", - "INFO_JET_DESCRIPTION": "", + "INFO_JET_DESCRIPTION": "downstream migration ichthyocompatible water intakes for small hydroelectric power plants ballistics", "INFO_JET_TITRE_COURT": "Jet", "INFO_JET_TITRE": "Jet trajectory and impact", "INFO_WALL_ADDED": "1 wall added", @@ -229,7 +229,7 @@ "INFO_JET_TITRE_TRAJECTOIRE": "Trajectory", "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectory and water elevation", "INFO_JET_FOND": "Bottom", - "INFO_LECHAPTCALMON_DESCRIPTION": "", + "INFO_LECHAPTCALMON_DESCRIPTION": "pipe flow circular headloss", "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.", "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon", "INFO_LIB_ABSCISSE": "Abscissa (m)", @@ -384,19 +384,19 @@ "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", "INFO_LOG_HIDE_DETAILS": "hide details", "INFO_LOG_SHOW_DETAILS": "show details", - "INFO_MACRORUGO_DESCRIPTION": "", + "INFO_MACRORUGO_DESCRIPTION": "natural block", "INFO_MACRORUGO_TITRE_COURT": "Rock-ramp", "INFO_MACRORUGO_TITRE": "Rock-ramp fishpasses", "INFO_MENU_DIAGRAM_TITLE": "Modules diagram", "INFO_MACRORUGOCOMPOUND_TITRE": "Compound rock-ramp fishpasses", - "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "", + "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "natural multiple inclined block aprons", "INFO_MACRORUGOCOMPOUND_TITRE_COURT": "Compound RR", "INFO_MACRORUGOCOMPOUND_LINCL": "Lateral inclination (m/m): ", "INFO_ONLY_Q_MAY_VARY": "Only flow may vary", "INFO_ONLY_Z1_Q_MAY_VARY": "Only upstream elevation and flow may vary", "INFO_Z1_Z2_MUST_BE_DEFINED": "Upstream and downstream elevations must be defined", "INFO_PENTE_TITRE": "Slope", - "INFO_PENTE_DESCRIPTION": "", + "INFO_PENTE_DESCRIPTION": "open-channel flow drop", "INFO_PENTE_TITRE_COURT": "Slope", "INFO_MENU_EMPTY_SESSION_TITLE": "New session", "INFO_MENU_HELP_TITLE": "Help", @@ -445,31 +445,31 @@ "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Regulated notch (Villemonte)", "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Notch (Villemonte)", "INFO_PARAMETRES_FIXES": "All parameters must be fixed", - "INFO_PAB_DESCRIPTION": "", + "INFO_PAB_DESCRIPTION": "basins", "INFO_PAB_TITRE_COURT": "Fish ladder", "INFO_PAB_TITRE": "Fish ladder", "INFO_PAB_TITRE_PROFIL": "Fish ladder longitudinal profile", "INFO_PAB_TABLE": "Fish ladder geometry", - "INFO_PABCHUTE_DESCRIPTION": "", + "INFO_PABCHUTE_DESCRIPTION": "basins", "INFO_PABCHUTE_TITRE_COURT": "FL: fall", "INFO_PABCHUTE_TITRE": "Fish ladder: fall", - "INFO_PABDIMENSIONS_DESCRIPTION": "", + "INFO_PABDIMENSIONS_DESCRIPTION": "basins", "INFO_PABDIMENSIONS_TITRE_COURT": "FL: dimensions", "INFO_PABDIMENSIONS_TITRE": "Fish ladder: dimensions", - "INFO_PABNOMBRE_DESCRIPTION": "", + "INFO_PABNOMBRE_DESCRIPTION": "basins", "INFO_PABNOMBRE_TITRE_COURT": "FL: number", "INFO_PABNOMBRE_TITRE": "Fish ladder: number of falls", - "INFO_PABPUISSANCE_DESCRIPTION": "", + "INFO_PABPUISSANCE_DESCRIPTION": "basins", "INFO_PABPUISSANCE_TITRE_COURT": "FL: diss. power", "INFO_PABPUISSANCE_TITRE": "Fish ladder: dissipated power", - "INFO_PARALLELSTRUCTURE_DESCRIPTION": "", + "INFO_PARALLELSTRUCTURE_DESCRIPTION": "orifice gate weir threshold free flow submerged discharge stage-discharge", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "// structures", "INFO_PARALLELSTRUCTURE_TITRE": "Parallel structures", - "INFO_PAR_TITRE": "Humpback fishway: setup", - "INFO_PAR_DESCRIPTION": "", + "INFO_PAR_TITRE": "Baffle fishway: setup", + "INFO_PAR_DESCRIPTION": "planes Denil Fatou superactive mixte chevrons canoe", "INFO_PAR_TITRE_COURT": "HF: setup", - "INFO_PARSIMULATION_TITRE": "Humpback fishway: simulation", - "INFO_PARSIMULATION_DESCRIPTION": "", + "INFO_PARSIMULATION_TITRE": "Baffle fishway: simulation", + "INFO_PARSIMULATION_DESCRIPTION": "planes Denil Fatou superactive mixte chevrons canoe", "INFO_PARSIMULATION_TITRE_COURT": "HF: simulation", "INFO_PARAMFIELD_AWAITING_CALCULATION": "Awaiting calculation", "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Boundary conditions", @@ -513,7 +513,7 @@ "INFO_QUICKNAV_INPUT": "input", "INFO_QUICKNAV_RESULTS": "results", "WARNING_PROBLEMS_ENCOUNTERED": "Problems occurred during calculation (info: %info%, warning: %warning%, error: %error%)", - "INFO_REGIMEUNIFORME_DESCRIPTION": "", + "INFO_REGIMEUNIFORME_DESCRIPTION": "open-channel flow normal depth", "INFO_REGIMEUNIFORME_TITRE_COURT": "Uniform flow", "INFO_REGIMEUNIFORME_TITRE": "Uniform flow calculation", "INFO_REMOUS_CALCUL_FLUVIAL": "Downstream boundary condition >= Critical elevation: calculation of subcritical part from downstream", @@ -534,7 +534,7 @@ "INFO_REQUIRES": "requires", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Export as XLSX", "INFO_SEARCH_NO_RESULT": "No result", - "INFO_SECTIONPARAMETREE_DESCRIPTION": "", + "INFO_SECTIONPARAMETREE_DESCRIPTION": "open-channel canal rectangular circular trapezoidal depth head normal critical conjugate corresponding subcritical supercritical Froude", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Param. section", "INFO_SECTIONPARAMETREE_TITRE": "Parametric section", "INFO_SELECT_MULTIPLE_AND_OTHER": "other", @@ -560,7 +560,7 @@ "INFO_SOLVEUR_DESCRIPTION": "", "INFO_SOLVEUR_TITRE_COURT": "Solver", "INFO_SPP_TITRE": "Sum and product of powers", - "INFO_SPP_DESCRIPTION": "", + "INFO_SPP_DESCRIPTION": "plus times", "INFO_SPP_TITRE_COURT": "SPP", "INFO_THEME_CREDITS": "Credit", "INFO_THEME_DEVALAISON_TITRE": "Downstream migration", @@ -577,8 +577,8 @@ "INFO_THEME_OUTILS_MATHEMATIQUES_DESCRIPTION": "Miscellaneous generic mathematical tools", "INFO_THEME_PASSE_A_BASSIN_DESCRIPTION": "Tools for sizing a fish pass made with pools also called fish steps", "INFO_THEME_PASSE_A_BASSIN_TITRE": "Fish ladder", - "INFO_THEME_PASSE_A_RALENTISSEURS_TITRE": "Humpback fishway", - "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Humpback fishway", + "INFO_THEME_PASSE_A_RALENTISSEURS_TITRE": "Baffle fishway", + "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Baffle fishway", "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Tools for sizing a natural fish pass also called macroroughness pass or rock-ramp fish pass", "INFO_THEME_PASSE_NATURELLE_TITRE": "Natural pass", "INFO_THEME_VERIFICATION_DESCRIPTION": "Tools for verifying fish passes crossing capabilities by different fish species", @@ -596,10 +596,10 @@ "INFO_EXAMPLES_TITLE": "Examples", "INFO_EXAMPLES_SUBTITLE": "Load standard examples", "INFO_YAXB_TITRE": "Linear function", - "INFO_YAXB_DESCRIPTION": "", + "INFO_YAXB_DESCRIPTION": "addition plus subtraction minus multiplication division", "INFO_YAXB_TITRE_COURT": "Linear f.", "INFO_TRIGO_TITRE": "Trigonometric function", - "INFO_TRIGO_DESCRIPTION": "", + "INFO_TRIGO_DESCRIPTION": "cosinus sinus tangent arc", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", "INFO_VERIF_OK": "Crossing criteria are met for all species", "INFO_VERIF_VARYING_OK": "Crossing criteria are met for all species and all pass modalities", @@ -607,10 +607,10 @@ "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", - "INFO_VERIFICATEUR_DESCRIPTION": "", + "INFO_VERIFICATEUR_DESCRIPTION": "ichtyocompatible", "INFO_VERIFICATEUR_TITRE_COURT": "Verification", "INFO_ESPECE_TITRE": "Fish species characteristics", - "INFO_ESPECE_DESCRIPTION": "", + "INFO_ESPECE_DESCRIPTION": "ichtyocompatible", "INFO_ESPECE_TITRE_COURT": "Species", "WARNING_WARNINGS_ABSTRACT": "%nb% warnings occurred during calculation", "ERROR_JET_SUBMERGED_NO_SOLUTION": "There is no solution", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 87d77cd15..58d8ec44e 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -82,25 +82,25 @@ "INFO_CALCULATOR_SAVE": "Enregistrer", "INFO_CALCULATOR_USED_BY": "Utilisé par", "INFO_CALCULATOR_VALEURS": "Valeurs", - "INFO_BIEF_DESCRIPTION": "", + "INFO_BIEF_DESCRIPTION": "Hydraulique à surface libre courbe de remous amont aval canal chenal régime écoulement fluvial torrentiel", "INFO_BIEF_TITRE_COURT": "Bief", "INFO_BIEF_TITRE": "Cotes amont/aval d'un bief", - "INFO_CLOISONS_DESCRIPTION": "", + "INFO_CLOISONS_DESCRIPTION": "poisson échelle échancrure fente", "INFO_CLOISONS_TITRE_COURT": "Cloisons", "INFO_CLOISONS_TITRE": "Passe à bassins : Cloisons", "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :", "INFO_CLOSE_DIALOGUE_TEXT": "Attention ! Les paramètres et résultats du module de calcul seront perdus.", "INFO_CLOSE_DIALOGUE_TITRE": "Fermeture du module de calcul", "INFO_CONCENTRATIONBLOCS_TITRE": "Concentration de blocs", - "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "", + "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "passe macro rugosités naturelle poisson", "INFO_CONCENTRATIONBLOCS_TITRE_COURT": "Conc. blocs", - "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "", + "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "hydraulique en charge Blasius", "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Conduite distri.", "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Conduite distributrice", - "INFO_COURBEREMOUS_DESCRIPTION": "", + "INFO_COURBEREMOUS_DESCRIPTION": "hydraulique à surface libre régime écoulement fluvial torrentiel ressaut", "INFO_COURBEREMOUS_TITRE_COURT": "Remous", "INFO_COURBEREMOUS_TITRE": "Courbes de remous", - "INFO_DEVER_DESCRIPTION": "", + "INFO_DEVER_DESCRIPTION": "seuil vitesse d'approche charge hydraulique", "INFO_DEVER_TITRE_COURT": "Déver. dénoyés", "INFO_DEVER_TITRE": "Lois de déversoirs dénoyés", "INFO_DIAGRAM_SOLVEUR_FINDS": "trouve", @@ -212,10 +212,10 @@ "INFO_FIELDSET_MOVE_DOWN": "Déplacer vers le bas", "INFO_FIELDSET_MOVE_LEFT": "Déplacer vers la gauche", "INFO_FIELDSET_MOVE_RIGHT": "Déplacer vers la droite", - "INFO_GRILLE_DESCRIPTION": "", + "INFO_GRILLE_DESCRIPTION": "dévalaison plan orientée inclinée conventionnelle centrale hydroélectrique", "INFO_GRILLE_TITRE_COURT": "Grille", "INFO_GRILLE_TITRE": "Perte de charge, grille de prise d'eau", - "INFO_JET_DESCRIPTION": "", + "INFO_JET_DESCRIPTION": "dévalaison prises d'eau icthyocompatibles centrale hydroélectrique balistique", "INFO_JET_TITRE_COURT": "Jet", "INFO_JET_TITRE": "Trajectoire et impact d'un jet", "INFO_WALL_ADDED": "1 cloison ajoutée", @@ -229,7 +229,7 @@ "INFO_JET_TITRE_TRAJECTOIRE": "Trajectoire", "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectoire et cote de l'eau", "INFO_JET_FOND": "Fond", - "INFO_LECHAPTCALMON_DESCRIPTION": "", + "INFO_LECHAPTCALMON_DESCRIPTION": "Hydraulique en charge conduite colebrook", "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.", "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon", "INFO_LIB_ABSCISSE": "Abscisse (m)", @@ -385,19 +385,19 @@ "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", "INFO_LOG_HIDE_DETAILS": "masquer les details", "INFO_LOG_SHOW_DETAILS": "montrer les details", - "INFO_MACRORUGO_DESCRIPTION": "", + "INFO_MACRORUGO_DESCRIPTION": "poisson naturelle bloc", "INFO_MACRORUGO_TITRE_COURT": "Macro-rugo.", "INFO_MACRORUGO_TITRE": "Passe à macro-rugosités", "INFO_MENU_DIAGRAM_TITLE": "Diagramme des modules", "INFO_MACRORUGOCOMPOUND_TITRE": "Passe à macro-rugosités complexe", - "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "", + "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "poisson naturelle bloc radiers multiples incliné", "INFO_MACRORUGOCOMPOUND_TITRE_COURT": "M-Rugo complexe", "INFO_MACRORUGOCOMPOUND_LINCL": "Dévers latéral (m/m) :", "INFO_ONLY_Q_MAY_VARY": "Seul le débit peut varier", "INFO_ONLY_Z1_Q_MAY_VARY": "Seuls la cote amont et le débit peuvent varier", "INFO_Z1_Z2_MUST_BE_DEFINED": "Les cotes amont et aval doivent être définies", "INFO_PENTE_TITRE": "Pente", - "INFO_PENTE_DESCRIPTION": "", + "INFO_PENTE_DESCRIPTION": "hydraulique à surface libre dénivelé", "INFO_PENTE_TITRE_COURT": "Pente", "INFO_MENU_EMPTY_SESSION_TITLE": "Nouvelle session", "INFO_MENU_HELP_TITLE": "Aide", @@ -446,31 +446,31 @@ "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Échancrure régulée (Villemonte)", "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Échancrure (Villemonte)", "INFO_PARAMETRES_FIXES": "Tous les paramètres doivent être fixés", - "INFO_PAB_DESCRIPTION": "", + "INFO_PAB_DESCRIPTION": "poisson échelle", "INFO_PAB_TITRE_COURT": "PAB", "INFO_PAB_TITRE": "Passe à bassins", "INFO_PAB_TITRE_PROFIL": "Profil en long de la passe", "INFO_PAB_TABLE": "Géométrie de la passe", - "INFO_PABCHUTE_DESCRIPTION": "", + "INFO_PABCHUTE_DESCRIPTION": "échelle poisson", "INFO_PABCHUTE_TITRE_COURT": "PAB : chute", "INFO_PABCHUTE_TITRE": "Passe à bassins : chute", - "INFO_PABDIMENSIONS_DESCRIPTION": "", + "INFO_PABDIMENSIONS_DESCRIPTION": "échelle poisson", "INFO_PABDIMENSIONS_TITRE_COURT": "PAB : dimensions", "INFO_PABDIMENSIONS_TITRE": "Passe à bassins : dimensions", - "INFO_PABNOMBRE_DESCRIPTION": "", + "INFO_PABNOMBRE_DESCRIPTION": "échelle poisson", "INFO_PABNOMBRE_TITRE_COURT": "PAB : nombre", "INFO_PABNOMBRE_TITRE": "Passe à bassins : nombre de chutes", - "INFO_PABPUISSANCE_DESCRIPTION": "", + "INFO_PABPUISSANCE_DESCRIPTION": "échelle poisson", "INFO_PABPUISSANCE_TITRE_COURT": "PAB : puissance", "INFO_PABPUISSANCE_TITRE": "Passe à bassins : puissance dissipée", - "INFO_PARALLELSTRUCTURE_DESCRIPTION": "", + "INFO_PARALLELSTRUCTURE_DESCRIPTION": "orifice vanne seuil déversoir noyé dénoyé débit", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "Ouvrages", "INFO_PARALLELSTRUCTURE_TITRE": "Lois d'ouvrages", "INFO_PAR_TITRE": "Passe à ralentisseurs : calage", - "INFO_PAR_DESCRIPTION": "", + "INFO_PAR_DESCRIPTION": "plans Denil Fatou fonds suractifs mixte chevrons canoë", "INFO_PAR_TITRE_COURT": "PAR : calage", "INFO_PARSIMULATION_TITRE": "Passe à ralentisseurs : simulation", - "INFO_PARSIMULATION_DESCRIPTION": "", + "INFO_PARSIMULATION_DESCRIPTION": "plans Denil Fatou fonds suractifs mixte chevrons canoë", "INFO_PARSIMULATION_TITRE_COURT": "PAR : simulation", "INFO_PARAMFIELD_AWAITING_CALCULATION": "En attente de calcul", "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Conditions aux limites", @@ -514,7 +514,7 @@ "INFO_QUICKNAV_INPUT": "données", "INFO_QUICKNAV_RESULTS": "résultats", "WARNING_PROBLEMS_ENCOUNTERED": "Des problèmes sont survenus durant le calcul (info : %info%, avertissement : %warning%, erreur : %error%)", - "INFO_REGIMEUNIFORME_DESCRIPTION": "", + "INFO_REGIMEUNIFORME_DESCRIPTION": "hydraulique à surface libre hauteur normale", "INFO_REGIMEUNIFORME_TITRE_COURT": "R. uniforme", "INFO_REGIMEUNIFORME_TITRE": "Régime uniforme", "INFO_REMOUS_CALCUL_FLUVIAL": "Condition limite aval >= Hauteur critique : calcul de la partie fluviale à partir de l'aval", @@ -535,7 +535,7 @@ "INFO_REQUIRES": "dépend de", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Exporter en XLSX", "INFO_SEARCH_NO_RESULT": "Aucun résultat", - "INFO_SECTIONPARAMETREE_DESCRIPTION": "", + "INFO_SECTIONPARAMETREE_DESCRIPTION": "hydraulique à surface libre canal chenal bief rectangulaire circulaire puissance trapézoïdale périmètre charge mouillée rugosité hauteur charge critique normal conjuguée correspondante fluvial torrentiel Froude", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Sec. param.", "INFO_SECTIONPARAMETREE_TITRE": "Section paramétrée", "INFO_SELECT_MULTIPLE_AND_OTHER": "autre", @@ -561,7 +561,7 @@ "INFO_SOLVEUR_DESCRIPTION": "", "INFO_SOLVEUR_TITRE_COURT": "Solveur", "INFO_SPP_TITRE": "Somme et produit de puissances", - "INFO_SPP_DESCRIPTION": "", + "INFO_SPP_DESCRIPTION": "plus fois", "INFO_SPP_TITRE_COURT": "SPP", "INFO_THEME_CREDITS": "Crédit", "INFO_THEME_DEVALAISON_TITRE": "Dévalaison", @@ -597,10 +597,10 @@ "INFO_EXAMPLES_TITLE": "Exemples", "INFO_EXAMPLES_SUBTITLE": "Charger des exemples types", "INFO_YAXB_TITRE": "Fonction affine", - "INFO_YAXB_DESCRIPTION": "", + "INFO_YAXB_DESCRIPTION": "addition plus soustraction moins multiplication division", "INFO_YAXB_TITRE_COURT": "F. affine", "INFO_TRIGO_TITRE": "Fonction trigonométrique", - "INFO_TRIGO_DESCRIPTION": "", + "INFO_TRIGO_DESCRIPTION": "cosinus sinus tangente arc", "INFO_TRIGO_TITRE_COURT": "F. trigo.", "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", "INFO_VERIF_VARYING_OK": "Les critères de franchissement sont remplis pour toutes les espèces et toutes les modalités de la passe", @@ -609,10 +609,10 @@ "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", - "INFO_VERIFICATEUR_DESCRIPTION": "", + "INFO_VERIFICATEUR_DESCRIPTION": "ichtyocompatible", "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", "INFO_ESPECE_TITRE": "Caractéristiques d'une espèce", - "INFO_ESPECE_DESCRIPTION": "", + "INFO_ESPECE_DESCRIPTION": "ichtyocompatible", "INFO_ESPECE_TITRE_COURT": "Espèce", "WARNING_WARNINGS_ABSTRACT": "%nb% avertissements rencontrés lors du calcul", "ERROR_JET_SUBMERGED_NO_SOLUTION": "Il n'y a pas de solution", -- GitLab From e249e30629b87c33d27c33109013d488cb4bfaad Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 16:13:25 +0200 Subject: [PATCH 094/101] Search engine: also search in short title #428 --- .../components/calculator-list/calculator-list.component.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index ed2710834..6dc05bea1 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -87,6 +87,7 @@ export class CalculatorListComponent implements OnInit { item.calculators.push({ type: calcType, label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(calcType), + shortLabel: ServiceFactory.formulaireService.getLocalisedShortTitleFromCalculatorType(calcType), description: ServiceFactory.formulaireService.getLocalisedDescriptionFromCalculatorType(calcType), buttonId: "create-calc-" + calcType }); @@ -121,6 +122,8 @@ export class CalculatorListComponent implements OnInit { unusedTheme.calculators.push({ type: t, label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(t), + shortLabel: ServiceFactory.formulaireService.getLocalisedShortTitleFromCalculatorType(t), + description: ServiceFactory.formulaireService.getLocalisedDescriptionFromCalculatorType(t), buttonId: "create-calc-" + t }); } @@ -205,7 +208,7 @@ export class CalculatorListComponent implements OnInit { // filter items based on parent component's search field for (const i of this.filteredItems) { i.calculators = i.calculators.filter((c) => { - return this.searchMatches(c.label) || this.searchMatches(c.description); + return this.searchMatches(c.label) || this.searchMatches(c.shortLabel) || this.searchMatches(c.description); }); } this.filteredItems = this.filteredItems.filter((i) => { -- GitLab From e43ac26bd25cf7ce50be7061022063a98c50f0b1 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Mon, 31 Aug 2020 11:21:28 +0200 Subject: [PATCH 095/101] =?UTF-8?q?Work=20on=20#223=20=E2=88=92=20enhance?= =?UTF-8?q?=20translation=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../calculator.component.ts | 2 - .../formulaire/definition/form-definition.ts | 20 +--- .../formulaire/elements/fieldset-container.ts | 10 -- src/app/formulaire/elements/fieldset.ts | 16 ---- .../formulaire/elements/formulaire-element.ts | 6 +- src/app/formulaire/elements/select-field.ts | 6 +- src/app/services/formulaire.service.ts | 94 ++----------------- .../services/internationalisation.service.ts | 73 ++++++++++++-- 8 files changed, 85 insertions(+), 142 deletions(-) diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index dd4e31e8a..92462013f 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -433,8 +433,6 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe this.setForm(this.formulaireService.getFormulaireFromId(uid)); this.resultsComponent.formulaire = this._formulaire; this._calculatorNameComponent.model = this._formulaire; - // reload localisation in all cases - this.formulaireService.loadUpdateFormulaireLocalisation(this._formulaire); // call Form init hook this._formulaire.onCalculatorInit(); break; diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 140741beb..e0c346cf8 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -52,12 +52,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs /** fichier de configuration */ private _jsonConfig: {}; - /** clé-valeurs du fichier de localisation spécifique à ce module */ - private _specificLocalisation: StringMap; - - /** ISO 639-1 language code of the current language (to avoid unnecessary localisation reload) */ - private _currentLanguage: string; - /** copy of options.resultsHelp read by FormDefinition.parseOptions() */ public helpLinks: { [key: string]: string }; @@ -79,14 +73,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs return this._calculateDisabled; } - public get specificLocalisation() { - return this._specificLocalisation; - } - - public get currentLanguage() { - return this._currentLanguage; - } - public get calculatorType(): CalculatorType { const props = this._currentNub === undefined ? this.defaultProperties : (this._currentNub.properties as Props).props; return props["calcType"]; @@ -424,11 +410,9 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } } - public updateLocalisation(localisation: StringMap, lang: string) { - this._specificLocalisation = localisation; - this._currentLanguage = lang; + public updateLocalisation(lang: string) { for (const fe of this.topFormElements) { - fe.updateLocalisation(localisation); + fe.updateLocalisation(); } } diff --git a/src/app/formulaire/elements/fieldset-container.ts b/src/app/formulaire/elements/fieldset-container.ts index 1c31212da..96f719fcf 100644 --- a/src/app/formulaire/elements/fieldset-container.ts +++ b/src/app/formulaire/elements/fieldset-container.ts @@ -1,15 +1,12 @@ import { FormulaireElement } from "./formulaire-element"; import { FieldSet } from "./fieldset"; import { FieldsetTemplate } from "./fieldset-template"; -import { StringMap } from "../../stringmap"; import { FormulaireNode } from "./formulaire-node"; import { Nub } from "jalhyd"; export class FieldsetContainer extends FormulaireElement { private _templates: FieldsetTemplate[]; - private _localisation: StringMap; - public title: string; constructor(parent: FormulaireNode) { @@ -109,11 +106,4 @@ export class FieldsetContainer extends FormulaireElement { } } } - - public updateLocalisation(loc: StringMap = this._localisation) { - this._localisation = loc; - if (loc !== undefined) { - super.updateLocalisation(loc); - } - } } diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index f9063cb45..dce1e17d4 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -11,7 +11,6 @@ import { FormulaireElement } from "./formulaire-element"; import { Field } from "./field"; import { SelectField } from "./select-field"; import { NgParameter, ParamRadioConfig } from "./ngparam"; -import { StringMap } from "../../stringmap"; import { FieldsetContainer } from "./fieldset-container"; import { SelectFieldCustom } from "./select-field-custom"; import { FormulaireFixedVar } from "../definition/form-fixedvar"; @@ -22,9 +21,6 @@ export class FieldSet extends FormulaireElement implements Observer { /** Nub associé */ private _nub: Nub; - /** dictionnaire de traduction */ - private _localisation: StringMap; - /** fichier de configuration */ private _jsonConfig: {}; @@ -203,18 +199,6 @@ export class FieldSet extends FormulaireElement implements Observer { this.clearKids(); } - public updateLocalisation(loc?: StringMap) { - if (! loc) { - loc = this._localisation; - } else { - this._localisation = loc; - } - - if (loc) { - super.updateLocalisation(loc); - } - } - /** * Reloads the model values and properties, and reloads localisation strings */ diff --git a/src/app/formulaire/elements/formulaire-element.ts b/src/app/formulaire/elements/formulaire-element.ts index 95c14c76d..79a4899ea 100644 --- a/src/app/formulaire/elements/formulaire-element.ts +++ b/src/app/formulaire/elements/formulaire-element.ts @@ -71,13 +71,13 @@ export abstract class FormulaireElement extends FormulaireNode { * @param loc calculator-specific localised messages map * @param key Element label key */ - public updateLocalisation(loc: StringMap, key?: string) { + public updateLocalisation(key?: string) { if (!key) { key = this._confId; } - this._label = this.intlService.localizeText(key, loc); + this._label = this.intlService.localizeText(key); for (const f of this.getKids()) { - f.updateLocalisation(loc); + f.updateLocalisation(); } } diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 9be231395..4f7196cf6 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -110,13 +110,13 @@ export class SelectField extends Field { }, this); } - public updateLocalisation(loc: StringMap) { - super.updateLocalisation(loc); + public updateLocalisation() { + super.updateLocalisation(); for (const e of this._entries) { // some Select fields already have a translated label at this time; translate others if (e.label === undefined) { const aId = e.id.split("_"); - e.label = ServiceFactory.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`, loc); + e.label = ServiceFactory.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`); } } } diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index d4cdb6ef2..78c74c8a7 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -26,7 +26,6 @@ import { FormulaireDefinition } from "../formulaire/definition/form-definition"; import { FormulaireElement } from "../formulaire/elements/formulaire-element"; import { InputField } from "../formulaire/elements/input-field"; import { SelectField } from "../formulaire/elements/select-field"; -import { StringMap } from "../stringmap"; import { FormulaireSectionParametree } from "../formulaire/definition/form-section-parametree"; import { FormulaireCourbeRemous } from "../formulaire/definition/form-courbe-remous"; import { FormulaireParallelStructure } from "../formulaire/definition/form-parallel-structures"; @@ -52,8 +51,10 @@ export class FormulaireService extends Observable { private _currentFormId: string = null; - /** to avoid loading language files multiple times */ - private _languageCache = {}; + public static getConfigPathPrefix(ct: CalculatorType): string { + const ctName = CalculatorType[ct].toLowerCase(); + return "app/calculators/" + ctName + "/"; + } constructor( private i18nService: I18nService, @@ -66,84 +67,16 @@ export class FormulaireService extends Observable { this._formulaires = []; } - private get _intlService(): I18nService { - return this.i18nService; - } - - private get _httpService(): HttpService { - return this.httpService; - } - public get formulaires(): FormulaireDefinition[] { return this._formulaires; } - public get languageCache() { - return this._languageCache; - } - - /** - * Loads the localisation file dedicated to calculator type ct; tries the current - * language then the fallback language; uses cache if available - */ - public loadLocalisation(calc: CalculatorType): Promise<any> { - const lang = this._intlService.currentLanguage; - return this.loadLocalisationForLang(calc, lang).then((localisation) => { - return localisation as StringMap; - }).catch((e) => { - console.error(e); - // try default lang (the one in the config file) ? - const fallbackLang = this.appSetupService.fallbackLanguage; - if (lang !== fallbackLang) { - console.error(`trying fallback language: ${fallbackLang}`); - return this.loadLocalisationForLang(calc, fallbackLang); - } - }); - } - - /** - * Loads the localisation file dedicated to calculator type ct for language lang; - * keeps it in cache for subsequent calls () - */ - private loadLocalisationForLang(calc: CalculatorType, lang: string): Promise<any> { - const ct = String(calc); - // already in cache ? - if (Object.keys(this._languageCache).includes(ct) && Object.keys(this._languageCache[calc]).includes(lang)) { - return new Promise((resolve) => { - resolve(this._languageCache[ct][lang]); - }); - } else { - const f: string = this.getConfigPathPrefix(calc) + lang + ".json"; - return this._httpService.httpGetRequestPromise(f).then((localisation) => { - this._languageCache[ct] = this._languageCache[ct] || {}; - this._languageCache[ct][lang] = localisation; - return localisation as StringMap; - }).catch((e) => { - throw new Error(`LOCALISATION_FILE_NOT_FOUND "${f}"`); - }); - } - } - - /** - * Loads localisation file corresponding to current language then updates all form strings, - * only if form language was not already set to current language - */ - public loadUpdateFormulaireLocalisation(f: FormulaireDefinition): Promise<FormulaireDefinition> { - const requiredLang = this._intlService.currentLanguage; - if (requiredLang !== f.currentLanguage) { - return this.loadLocalisation(f.calculatorType).then(localisation => { - f.updateLocalisation(localisation, requiredLang); - return f; - }); - } - } - /** * Retourne le titre complet du type de module de calcul, dans la langue en cours */ public getLocalisedTitleFromCalculatorType(type: CalculatorType) { const sCalculator: string = CalculatorType[type].toUpperCase(); - return this._intlService.localizeText(`INFO_${sCalculator}_TITRE`); + return this.intlService.localizeText(`INFO_${sCalculator}_TITRE`); } /** @@ -163,7 +96,7 @@ export class FormulaireService extends Observable { type = CalculatorType[type]; } const sCalculator: string = type.toUpperCase(); - return this._intlService.localizeText(`INFO_${sCalculator}_TITRE_COURT`); + return this.intlService.localizeText(`INFO_${sCalculator}_TITRE_COURT`); } /** @@ -174,7 +107,7 @@ export class FormulaireService extends Observable { public expandVariableName(calcType: CalculatorType, symbol: string): string { let s = ""; // language cache… - let langCache = this.languageCache; + let langCache = this.i18nService.languageCache; if (langCache && langCache[calcType]) { langCache = langCache[calcType]; // …for target Nub type } @@ -207,7 +140,7 @@ export class FormulaireService extends Observable { */ public expandVariableNameAndUnit(calcType: CalculatorType, symbol: string, forceUnit?: string): string { let s = this.expandVariableName(calcType, symbol); - let langCache = this.languageCache; // language cache… + let langCache = this.i18nService.languageCache; // language cache… if (langCache && langCache[calcType]) { langCache = langCache[calcType]; // …for target Nub type } @@ -282,8 +215,8 @@ export class FormulaireService extends Observable { } public loadConfig(ct: CalculatorType): Promise<any> { - const f: string = this.getConfigPathPrefix(ct) + "config.json"; - return this._httpService.httpGetRequestPromise(f); + const f: string = FormulaireService.getConfigPathPrefix(ct) + "config.json"; + return this.httpService.httpGetRequestPromise(f); } private newFormulaire(ct: CalculatorType): FormulaireDefinition { @@ -530,11 +463,6 @@ export class FormulaireService extends Observable { } } - public getConfigPathPrefix(ct: CalculatorType): string { - const ctName = CalculatorType[ct].toLowerCase(); - return "app/calculators/" + ctName + "/"; - } - /** * Supprime le formulaire ciblé, et demande à JaLHyd d'effacer son Nub de la Session * @param uid formulaire à supprimer @@ -632,8 +560,6 @@ export class FormulaireService extends Observable { if (nn.meta && nn.meta.title) { title = nn.meta.title; } - // pre-fill language cache (for LinkedValues labels for ex.) - await this.loadLocalisation(nn.nub.calcType); await this.createFormulaire(nn.nub.calcType, nn.nub, title); // await guarantees loading order } // apply settings diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 14df03969..26d2cecce 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -7,6 +7,7 @@ import { ApplicationSetupService } from "./app-setup.service"; import { HttpService } from "./http.service"; import { fv, decodeHtml } from "../util"; import { ServiceFactory } from "./service-factory"; +import { FormulaireService } from "./formulaire.service"; @Injectable() export class I18nService extends Observable implements Observer { @@ -23,6 +24,9 @@ export class I18nService extends Observable implements Observer { /** localized messages in fallback language (the one in the config file) */ private _fallbackMessages: StringMap; + /** to avoid loading language files multiple times */ + private _languageCache = {}; + constructor( private applicationSetupService: ApplicationSetupService, private httpService: HttpService @@ -52,6 +56,10 @@ export class I18nService extends Observable implements Observer { return this._Messages; } + public get languageCache() { + return this._languageCache; + } + /** * Defines the current language code from its ISO 639-1 code (2 characters) or locale code * (ex: "fr", "en", "fr_FR", "en-US") @@ -69,12 +77,64 @@ export class I18nService extends Observable implements Observer { if (this._currentLanguage !== code) { this._currentLanguage = code; this._Messages = undefined; - // reload all messages + // reload all messages: global lang files, plus lang files for all calculators ! const that = this; - this.httpGetMessages(code).then((res: any) => { - that._Messages = res; - // propagate language change to all application - that.notifyObservers(undefined); + console.log("> promise.all !"); + const promisesList: Promise<any>[] = []; + for (const ct in CalculatorType) { + const calcType = Number(ct); + if (!isNaN(calcType)) { + promisesList.push(this.loadLocalisation(calcType).catch((err) => { /* silent fail */ })); + } + } + Promise.all(promisesList).then(() => { + console.log(">> get global messages !"); + this.httpGetMessages(code).then((res: any) => { + that._Messages = res; + // propagate language change to all application + that.notifyObservers(undefined); + }); + }); + } + } + + /** + * Loads the localisation file dedicated to calculator type ct; tries the current + * language then the fallback language; uses cache if available + */ + public loadLocalisation(calc: CalculatorType): Promise<any> { + const lang = this.currentLanguage; + return this.loadLocalisationForLang(calc, lang).then((localisation) => { + return localisation as StringMap; + }).catch((e) => { + // try default lang (the one in the config file) ? + const fallbackLang = this.applicationSetupService.fallbackLanguage; + if (lang !== fallbackLang) { + console.error(`localisation for ${CalculatorType[calc]} not found, trying fallback language: ${fallbackLang}`); + return this.loadLocalisationForLang(calc, fallbackLang); + } + }); + } + + /** + * Loads the localisation file dedicated to calculator type ct for language lang; + * keeps it in cache for subsequent calls () + */ + private loadLocalisationForLang(calc: CalculatorType, lang: string): Promise<any> { + const ct = String(calc); + // already in cache ? + if (Object.keys(this._languageCache).includes(ct) && Object.keys(this._languageCache[calc]).includes(lang)) { + return new Promise((resolve) => { + resolve(this._languageCache[ct][lang]); + }); + } else { + const f: string = FormulaireService.getConfigPathPrefix(calc) + lang + ".json"; + return this.httpService.httpGetRequestPromise(f).then((localisation) => { + this._languageCache[ct] = this._languageCache[ct] || {}; + this._languageCache[ct][lang] = localisation; + return localisation as StringMap; + }).catch((e) => { + throw new Error(`LOCALISATION_FILE_NOT_FOUND "${f}"`); }); } } @@ -285,7 +345,8 @@ export class I18nService extends Observable implements Observer { // interface Observer /** - * Should only be triggered once at app startup, when setup service tries loading language + * Should only be triggered once at app startup, when setup service tries loading language, + * then everytime language is changed through Preferences screen * @param sender should always be ApplicationSetupService * @param data object { * action: should always be "languagePreferenceChanged" -- GitLab From 670edfcb7f75cb87b082c4a083add011c372720b Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Tue, 1 Sep 2020 11:17:00 +0200 Subject: [PATCH 096/101] Fix #223 - enhance translation system --- src/app/calculators/courberemous/en.json | 2 +- src/app/calculators/jet/en.json | 2 +- .../calculator.component.ts | 2 + .../formulaire/elements/formulaire-element.ts | 14 ++--- src/app/formulaire/elements/select-field.ts | 41 +++++++++------ src/app/services/formulaire.service.ts | 52 +++++++++++++++++-- .../services/internationalisation.service.ts | 13 ++--- 7 files changed, 87 insertions(+), 39 deletions(-) diff --git a/src/app/calculators/courberemous/en.json b/src/app/calculators/courberemous/en.json index f965d3e9f..c238adfb5 100644 --- a/src/app/calculators/courberemous/en.json +++ b/src/app/calculators/courberemous/en.json @@ -53,7 +53,7 @@ "TARGET_Hsc": "Critical head (m)", "TARGET_B": "Surface width (m)", "TARGET_P": "Wetted perimeter (m)", - "TARGET_S": "Wetted area (m2)", + "TARGET_S": "Wet surface (m2)", "TARGET_R": "Hydraulic radius (m)", "TARGET_V": "Average speed (m/s)", "TARGET_Fr": "Froude number", diff --git a/src/app/calculators/jet/en.json b/src/app/calculators/jet/en.json index c8342e323..32cc2afed 100644 --- a/src/app/calculators/jet/en.json +++ b/src/app/calculators/jet/en.json @@ -9,7 +9,7 @@ "ZF": "Bottom elevation", "H": "Fall height", "Y": "Depth", - "YH": "Depth/height ration", + "YH": "Depth/height ratio", "t": "Flight time", "Vx": "Horizontal speed at impact", "Vz": "Vertical speed at impact", diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 92462013f..b662a5000 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -433,6 +433,8 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe this.setForm(this.formulaireService.getFormulaireFromId(uid)); this.resultsComponent.formulaire = this._formulaire; this._calculatorNameComponent.model = this._formulaire; + // reload localisation in all cases (it does not eat bread) + this.formulaireService.updateFormulaireLocalisation(this._formulaire); // call Form init hook this._formulaire.onCalculatorInit(); break; diff --git a/src/app/formulaire/elements/formulaire-element.ts b/src/app/formulaire/elements/formulaire-element.ts index 79a4899ea..579b62648 100644 --- a/src/app/formulaire/elements/formulaire-element.ts +++ b/src/app/formulaire/elements/formulaire-element.ts @@ -1,8 +1,7 @@ import { FormulaireNode } from "./formulaire-node"; -import { StringMap } from "../../stringmap"; -import { I18nService } from "../../services/internationalisation.service"; import { ServiceFactory } from "../../services/service-factory"; import { FormulaireDefinition } from "../definition/form-definition"; +import { FormulaireService } from "../../services/formulaire.service"; /** * élément (enfant) du formulaire : fieldset, input, container, ... @@ -18,7 +17,7 @@ export abstract class FormulaireElement extends FormulaireNode { */ protected _label: string; - private intlService: I18nService; + private formulaireService: FormulaireService; public static removePrefix(s: string, prefix: string): string { if (s.startsWith(prefix)) { @@ -30,7 +29,7 @@ export abstract class FormulaireElement extends FormulaireNode { constructor(parent: FormulaireNode) { super(parent); this._isDisplayed = true; - this.intlService = ServiceFactory.i18nService; + this.formulaireService = ServiceFactory.formulaireService; } get isDisplayed(): boolean { @@ -71,11 +70,8 @@ export abstract class FormulaireElement extends FormulaireNode { * @param loc calculator-specific localised messages map * @param key Element label key */ - public updateLocalisation(key?: string) { - if (!key) { - key = this._confId; - } - this._label = this.intlService.localizeText(key); + public updateLocalisation() { + this._label = this.formulaireService.localizeText(this._confId, this.parentForm.currentNub.calcType); for (const f of this.getKids()) { f.updateLocalisation(); } diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 4f7196cf6..0884f2564 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -10,7 +10,6 @@ import { import { Field } from "./field"; import { SelectEntry } from "./select-entry"; -import { StringMap } from "../../stringmap"; import { FormulaireNode } from "./formulaire-node"; import { FormulaireDefinition } from "../definition/form-definition"; import { ServiceFactory } from "../../services/service-factory"; @@ -113,10 +112,29 @@ export class SelectField extends Field { public updateLocalisation() { super.updateLocalisation(); for (const e of this._entries) { - // some Select fields already have a translated label at this time; translate others - if (e.label === undefined) { + if (this.source === "solveur_targetted_result") { + // @WARNING clodo hack for Solveur + // 1. calculated param + const nub: Nub = (this.parentForm as FormulaireDefinition).currentNub; + const ntc = (nub as Solveur).nubToCalculate; + if (e.value !== undefined && ntc !== undefined) { + if (e.value === "" && ntc.calculatedParam !== undefined) { + const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, ntc.calculatedParam.symbol); + e.label = `${varName} (${ntc.calculatedParam.symbol})`; + } else { + // 2. extra results + const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, e.value); + e.label = `${varName} (${e.value})`; + } + } + } else { + // general case const aId = e.id.split("_"); - e.label = ServiceFactory.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`); + const trad = ServiceFactory.formulaireService.localizeText( + `${aId[1].toUpperCase()}_${aId[2]}`, + this.parentForm.currentNub.calcType + ); + e.label = trad; } } } @@ -155,25 +173,16 @@ export class SelectField extends Field { // driven by string[], not enum case "solveur_targetted_result": + // @WARNING for localisation, @see hack in this.updateLocalisation() // 1. calculated param const ntc = (nub as Solveur).nubToCalculate; if (ntc !== undefined && ntc.calculatedParam !== undefined) { // some nubs have no calculatedParam, for ex. SectionParam - const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, ntc.calculatedParam.symbol); - this.addEntry(new SelectEntry( - this._entriesBaseId + "none", - "", - `${varName} (${ntc.calculatedParam.symbol})` - )); + this.addEntry(new SelectEntry(this._entriesBaseId + "none", "")); } // 2. extra results if (ntc !== undefined && ntc.resultsFamilies !== undefined) { for (const er of Object.keys(ntc.resultsFamilies)) { - const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, er); - const e: SelectEntry = new SelectEntry( - this._entriesBaseId + er, - er, - `${varName} (${er})` - ); + const e: SelectEntry = new SelectEntry(this._entriesBaseId + er, er); this.addEntry(e); } } diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 78c74c8a7..4a3e78aea 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -99,6 +99,51 @@ export class FormulaireService extends Observable { return this.intlService.localizeText(`INFO_${sCalculator}_TITRE_COURT`); } + /** + * Forces update of all form strings in given Formulaire, with current language + */ + public updateFormulaireLocalisation(f: FormulaireDefinition) { + const requiredLang = this.intlService.currentLanguage; + f.updateLocalisation(requiredLang); + } + + + /** + * Tente de trouver une traduction pour textKey dans les fichiers de langues + * spécifiques du module de calcul en cours, dans la langue en cours, puis + * dans la langue par défaut; si aucune traduction n'est trouvée, demande au + * service i18n de rechercher dans les fichiers de langues globaux + * @param textKey la clé du texte à traduire + */ + public localizeText(textKey: string, ct: CalculatorType): string { + const calcType = /* this.currentForm?.currentNub?.calcType || */ ct; + if (calcType !== undefined) { + // throw new Error("FormulaireService.localizeText(): cannot find CalculatorType for current form's Nub"); + let langCache = this.i18nService.languageCache; + if (langCache && langCache[calcType]) { + langCache = langCache[calcType]; // …for target Nub type + } + // try current language + if ( + langCache + && langCache[this.intlService.currentLanguage] + && langCache[this.intlService.currentLanguage][textKey] !== undefined + ) { + return langCache[this.intlService.currentLanguage][textKey]; + + } else if ( // try calculator type specific translation, but for default language + langCache + && langCache[this.appSetupService.fallbackLanguage] + && langCache[this.appSetupService.fallbackLanguage][textKey] !== undefined + ) { + return langCache[this.appSetupService.fallbackLanguage][textKey]; + + } + } + // fallback to global (not calculator type specific) translation system + return this.i18nService.localizeText(textKey); + } + /** * Returns variable name from symbol * @param calcType @@ -115,7 +160,7 @@ export class FormulaireService extends Observable { langCache = langCache[this.intlService.currentLanguage]; // … for current language } if (langCache && langCache[symbol] !== undefined) { - s = this.intlService.localizeText(symbol, langCache); + s = this.localizeText(symbol, calcType); } else { // is symbol of the form ouvrages[i]… ? const re = /([A-Z,a-z]+)\[(\d+)\]\.(.+)/; @@ -169,7 +214,7 @@ export class FormulaireService extends Observable { } else { const unitKey = "UNIT_" + symbolBase; if (langCache && langCache[unitKey] !== undefined) { - unit = this.intlService.localizeText(unitKey, langCache); + unit = this.localizeText(unitKey, calcType); } } } @@ -295,8 +340,7 @@ export class FormulaireService extends Observable { const f: FormulaireDefinition = this.newFormulaire(ct); this._formulaires.push(f); // Charge la configuration dépendamment du type - const prom: Promise<any> = this.loadConfig(ct); - return prom.then(s => { + return this.loadConfig(ct).then(s => { f.preparseConfig(s); // Associe le Nub fourni (chargement de session / duplication de module), sinon en crée un nouveau diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 26d2cecce..ed8011d09 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -79,7 +79,6 @@ export class I18nService extends Observable implements Observer { this._Messages = undefined; // reload all messages: global lang files, plus lang files for all calculators ! const that = this; - console.log("> promise.all !"); const promisesList: Promise<any>[] = []; for (const ct in CalculatorType) { const calcType = Number(ct); @@ -88,7 +87,6 @@ export class I18nService extends Observable implements Observer { } } Promise.all(promisesList).then(() => { - console.log(">> get global messages !"); this.httpGetMessages(code).then((res: any) => { that._Messages = res; // propagate language change to all application @@ -174,16 +172,15 @@ export class I18nService extends Observable implements Observer { * * @param textKey id du texte (ex: "ERROR_PARAM_NULL") */ - public localizeText(textKey: string, msg?: StringMap) { - const messages = msg || this._Messages; - if (! messages) { + public localizeText(textKey: string) { + if (! this._Messages) { return `*** messages not loaded: ${this._currentLanguage} ***`; } - if (messages[textKey] !== undefined) { - return decodeHtml(messages[textKey]); + if (this._Messages[textKey] !== undefined) { + return decodeHtml(this._Messages[textKey]); } else { // try general message - if (msg !== undefined && this._Messages["INFO_LIB_" + textKey.toUpperCase()] !== undefined) { + if (this._Messages !== undefined && this._Messages["INFO_LIB_" + textKey.toUpperCase()] !== undefined) { return decodeHtml(this._Messages["INFO_LIB_" + textKey.toUpperCase()]); } if (!isDevMode()) { -- GitLab From ff4d2345866eae831db407cf1759f2e8cba32d9c Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 12:52:33 +0200 Subject: [PATCH 097/101] Update #223 : remove unused fallback language loading mechanism --- src/app/services/formulaire.service.ts | 8 ----- .../services/internationalisation.service.ts | 32 +++---------------- 2 files changed, 4 insertions(+), 36 deletions(-) diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 4a3e78aea..30c065f96 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -130,14 +130,6 @@ export class FormulaireService extends Observable { && langCache[this.intlService.currentLanguage][textKey] !== undefined ) { return langCache[this.intlService.currentLanguage][textKey]; - - } else if ( // try calculator type specific translation, but for default language - langCache - && langCache[this.appSetupService.fallbackLanguage] - && langCache[this.appSetupService.fallbackLanguage][textKey] !== undefined - ) { - return langCache[this.appSetupService.fallbackLanguage][textKey]; - } } // fallback to global (not calculator type specific) translation system diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index ed8011d09..96da8821b 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -21,9 +21,6 @@ export class I18nService extends Observable implements Observer { /** localized messages */ private _Messages: StringMap; - /** localized messages in fallback language (the one in the config file) */ - private _fallbackMessages: StringMap; - /** to avoid loading language files multiple times */ private _languageCache = {}; @@ -36,10 +33,6 @@ export class I18nService extends Observable implements Observer { fr: "Français", en: "English" }; - // load fallback language messages once for all - this.httpGetMessages(this.applicationSetupService.fallbackLanguage).then((res: any) => { - this._fallbackMessages = res; - }); // add language preferences observer this.applicationSetupService.addObserver(this); } @@ -97,20 +90,14 @@ export class I18nService extends Observable implements Observer { } /** - * Loads the localisation file dedicated to calculator type ct; tries the current - * language then the fallback language; uses cache if available + * Loads the localisation file dedicated to calculator type ct; uses cache if available */ public loadLocalisation(calc: CalculatorType): Promise<any> { const lang = this.currentLanguage; return this.loadLocalisationForLang(calc, lang).then((localisation) => { return localisation as StringMap; }).catch((e) => { - // try default lang (the one in the config file) ? - const fallbackLang = this.applicationSetupService.fallbackLanguage; - if (lang !== fallbackLang) { - console.error(`localisation for ${CalculatorType[calc]} not found, trying fallback language: ${fallbackLang}`); - return this.loadLocalisationForLang(calc, fallbackLang); - } + return ""; }); } @@ -120,12 +107,8 @@ export class I18nService extends Observable implements Observer { */ private loadLocalisationForLang(calc: CalculatorType, lang: string): Promise<any> { const ct = String(calc); - // already in cache ? - if (Object.keys(this._languageCache).includes(ct) && Object.keys(this._languageCache[calc]).includes(lang)) { - return new Promise((resolve) => { - resolve(this._languageCache[ct][lang]); - }); - } else { + // if not already in cache + if (! Object.keys(this._languageCache).includes(ct) || ! Object.keys(this._languageCache[calc]).includes(lang)) { const f: string = FormulaireService.getConfigPathPrefix(calc) + lang + ".json"; return this.httpService.httpGetRequestPromise(f).then((localisation) => { this._languageCache[ct] = this._languageCache[ct] || {}; @@ -165,7 +148,6 @@ export class I18nService extends Observable implements Observer { * In production mode, looks in different messages collections : * 1. ${msg} if provided * 2. messages for current language - * 3. messages for fallback language * * In dev mode, looks only in 1. if provided, else only in 2. which makes missing * translations easier to detect @@ -183,12 +165,6 @@ export class I18nService extends Observable implements Observer { if (this._Messages !== undefined && this._Messages["INFO_LIB_" + textKey.toUpperCase()] !== undefined) { return decodeHtml(this._Messages["INFO_LIB_" + textKey.toUpperCase()]); } - if (!isDevMode()) { - // try fallback language before giving up - if (this._fallbackMessages[textKey] !== undefined) { - return decodeHtml(this._fallbackMessages[textKey]); - } - } return `*** message not found: ${textKey} ***`; } } -- GitLab From c7bed423a6f71e694ac7fd88722fc642fc063d01 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 15:26:42 +0200 Subject: [PATCH 098/101] Update translations and check-translations script --- scripts/check-translations.js | 86 ++++++++++++++++++- src/app/calculators/bief/en.json | 2 +- src/app/calculators/cloisons/en.json | 3 - src/app/calculators/lechaptcalmon/en.json | 6 +- src/app/calculators/lechaptcalmon/fr.json | 7 +- src/app/calculators/pabpuissance/en.json | 1 - src/app/calculators/par/en.json | 4 - src/app/calculators/parsimulation/en.json | 4 - src/app/calculators/sectionparametree/en.json | 1 - src/locale/messages.en.json | 8 ++ src/locale/messages.fr.json | 6 ++ 11 files changed, 106 insertions(+), 22 deletions(-) diff --git a/scripts/check-translations.js b/scripts/check-translations.js index 8beb57298..4143d689e 100644 --- a/scripts/check-translations.js +++ b/scripts/check-translations.js @@ -1,7 +1,24 @@ 'use strict'; +/** + * 1) Reads Message enum in jalhyd, and for every message code in it, checks + * that there is a translation in each nghyd's locale/*.json file (ie. for + * every language) + * + * 2) For every nghyd calculator, checks that the translated keys are the same + * in all language files + */ + const fs = require('fs'); +/* IMPORTANT: during step 2, will look for those languages codes only */ +const expectedLanguages = [ "fr", "en" ]; + +// total errors +let nbErr = 0; + +// ---- 1. JaLHyd messages ---- + // read and transform JaLHyd message file const jalhydMessagesPath = "../jalhyd/src/util/message.ts"; let jm = fs.readFileSync(jalhydMessagesPath, "utf-8"); @@ -17,10 +34,12 @@ jm = jm.replace(/\/\/.+/g, ""); jm = jm.replace(/[ \t]+/g, ""); // remove line breaks jm = jm.replace(/\n/g, ""); + // split on ";" const messages = jm.split(","); -// console.log(messages); +// remove import on 1st line (wtf) @clodo +messages[0] = messages[0].substring(24); // read every language file const localePath = "src/locale"; @@ -30,15 +49,76 @@ for (let i = 0; i < localeDir.length; i++) { const res = localeFile.match(/^messages\.([a-z]{2})\.json$/); if (res) { const lang = res[1]; - console.log("Loading translations for language [" + lang + "]"); + console.log("Loading global translations for language [" + lang + "]"); const langFilePath = localePath + '/' + localeFile; - let translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); + const translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); // console.log(translations); // check against JaLHyd messages list for (const mess of messages) { if (! translations.includes(mess)) { console.log(" missing message in [" + lang + "] translation: " + mess); + nbErr++; } } } } + +// ---- 2. calculators localisation ---- + +// find every calculator folder +const calculatorsPath = "src/app/calculators"; +const calculatorsDir = fs.readdirSync(calculatorsPath); +console.log("Checking all calculators translations for languages [" + expectedLanguages.join(", ") + "]"); +for (let i = 0; i < calculatorsDir.length; i++) { + const calcPath = calculatorsPath + "/" + calculatorsDir[i]; + const stats = {}; + // console.log(" checking calculator [" + calculatorsDir[i] + "]"); + // find all language files for this calculator, and store translation keys + for (let j = 0; j < expectedLanguages.length; j++) { + const exLang = expectedLanguages[j]; + const langFilePath = calcPath + "/" + exLang + ".json"; + if (fs.existsSync(langFilePath)) { + const translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); + // console.log(translations); + stats[exLang] = translations; + } else { + console.log(" missing language file [" + exLang + ".json] for calculator [" + calculatorsDir[i] + "]"); + nbErr++; + } + } + // console.log(stats); + // compare number of translations per file + let sameNumber = true; + // compare keys names (order-dependent) per file + let sameKeys = true; + let prevKeys = null; + const sKeys = Object.keys(stats); + for (let k = 0; k < sKeys.length; k++) { + const key = sKeys[k]; + if (k > 0) { + sameNumber = sameNumber && (stats[key].length === prevKeys.length); + sameKeys = sameKeys && (JSON.stringify(stats[key]) === JSON.stringify(prevKeys)); // compare arrays + } + prevKeys = stats[key]; + } + // difference found ? + if (! sameNumber) { + console.log(" [" + calculatorsDir[i] + "]: different number of keys found", sKeys.map((s) => { + return s + ": " + stats[s].length; + })); + nbErr++; + } else if (! sameKeys) { + console.log(" [" + calculatorsDir[i] + "]: different keys found", stats); + nbErr++; + } +} + + +// ---- 3. JaLHyd messages ---- + +if (nbErr === 0) { + console.log("Everything OK !"); + process.exit(0); +} else { + process.exit(1); +} diff --git a/src/app/calculators/bief/en.json b/src/app/calculators/bief/en.json index 30465b07a..83ef6c03f 100644 --- a/src/app/calculators/bief/en.json +++ b/src/app/calculators/bief/en.json @@ -26,8 +26,8 @@ "fs_condlim": "Boundary conditions", "Q": "Upstream flow", "S": "Wet surface", - "fs_param_calc": "Calculation parameters", "Dx": "Discretisation step", + "fs_param_calc": "Calculation parameters", "Z1": "Upstream water elevation", "Z2": "Downstream water elevation", "ZF1": "Upstream bottom elevation", diff --git a/src/app/calculators/cloisons/en.json b/src/app/calculators/cloisons/en.json index 22a43f9ac..af443e0f8 100644 --- a/src/app/calculators/cloisons/en.json +++ b/src/app/calculators/cloisons/en.json @@ -2,9 +2,6 @@ "Q": "Total discharge", "P": "Sill", "W": "Gate opening", - "ZR": "Upstream bed elevation", - "PB": "Pool mean depth", - "h1": "Head", "UNIT_Q": "m³/s", "UNIT_YMOY": "m", diff --git a/src/app/calculators/lechaptcalmon/en.json b/src/app/calculators/lechaptcalmon/en.json index 0e0b0798c..729994b0e 100644 --- a/src/app/calculators/lechaptcalmon/en.json +++ b/src/app/calculators/lechaptcalmon/en.json @@ -14,7 +14,6 @@ "M": "M", "N": "N", "fs_hydraulique": "Hydraulic features", - "Q": "Flow", "D": "Pipe diameter", "J": "Total head loss", "Ks": "Singular head loss coefficient", @@ -22,5 +21,8 @@ "fs_param_calc": "Calculation parameters", "Jl": "Linear head loss", "Kl": "Linear head loss coefficient", - "fD": "Darcy friction factor" + "fD": "Darcy friction factor", + + "UNIT_JL": "m", + "UNIT_V": "m/s" } \ No newline at end of file diff --git a/src/app/calculators/lechaptcalmon/fr.json b/src/app/calculators/lechaptcalmon/fr.json index 0ce375bc6..89884cabd 100644 --- a/src/app/calculators/lechaptcalmon/fr.json +++ b/src/app/calculators/lechaptcalmon/fr.json @@ -20,8 +20,9 @@ "Lg": "Longueur du tuyau", "fs_param_calc": "Paramètres de calcul", "Jl": "Perte de charge linéaire", - "UNIT_JL": "m", - "UNIT_V": "m/s", "Kl": "Coefficient de perte de charge linéaire", - "fD": "Coefficient de perte de charge de Darcy" + "fD": "Coefficient de perte de charge de Darcy", + + "UNIT_JL": "m", + "UNIT_V": "m/s" } \ No newline at end of file diff --git a/src/app/calculators/pabpuissance/en.json b/src/app/calculators/pabpuissance/en.json index 582ca3f45..5872528a5 100644 --- a/src/app/calculators/pabpuissance/en.json +++ b/src/app/calculators/pabpuissance/en.json @@ -1,7 +1,6 @@ { "fs_puissance": "Basin dimensions", "DH": "Drop", - "Q": "Discharge", "V": "Volume", "PV": "Dissipated power" } \ No newline at end of file diff --git a/src/app/calculators/par/en.json b/src/app/calculators/par/en.json index fc7eddd2d..f1d88aa17 100644 --- a/src/app/calculators/par/en.json +++ b/src/app/calculators/par/en.json @@ -1,10 +1,6 @@ { "fs_param_hydro": "Hydraulic parameters", - "Q": "Flow", - "Z1": "Upstream water elevation", - "Z2": "Downstream water elevation", - "fs_geometry": "Pass geometry", "ha": "Upstream head", diff --git a/src/app/calculators/parsimulation/en.json b/src/app/calculators/parsimulation/en.json index a5b752e21..36c46b4b1 100644 --- a/src/app/calculators/parsimulation/en.json +++ b/src/app/calculators/parsimulation/en.json @@ -1,10 +1,6 @@ { "fs_param_hydro": "Hydraulic parameters", - "Q": "Flow", - "Z1": "Upstream water elevation", - "Z2": "Downstream water elevation", - "fs_geometry": "Pass geometry", "ZD1": "Upstream spilling elevation", diff --git a/src/app/calculators/sectionparametree/en.json b/src/app/calculators/sectionparametree/en.json index 943320f64..92a0479a8 100644 --- a/src/app/calculators/sectionparametree/en.json +++ b/src/app/calculators/sectionparametree/en.json @@ -17,7 +17,6 @@ "If": "Bottom slope", "YB": "Embankment elevation", "fs_hydraulique": "Hydraulic features", - "Q": "Flow", "Y": "Draft", "fs_param_calc": "Calculation parameters", "Hs": "Specific head", diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 073d7138d..acbc4c150 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -57,15 +57,20 @@ "ERROR_REMOUS_PAS_CALCUL": "No possible calculation, neither from upstream nor from downstream", "ERROR_REMOUS_PENTE_FORTE": "The water line slope is too steep at abscissa %x% m (the discretisation step should be reduced)", "ERROR_RU_CIRC_LEVEL_TOO_HIGH": "Uniform flow cannot be calculated with a pipe under load", + "ERROR_NEWTON_NON_CONVERGENCE": "Non-convergence (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG": "Non-convergence of the calculation of the combined depth (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE": "Non-convergence of the calculation of the critical depth (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCOR": "Non convergence of the calculation of the corresponding elevation (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Non convergence of the calculation of the normal depth (Newton's method)", "ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "The slope is negative or zero, the normal depth is infinite", + "ERROR_SECTION_PERIMETRE_NUL": "Section: calculation is impossible when perimeter is null", + "ERROR_SECTION_RAYON_NUL": "Section: calculation is impossible when radius is null", "ERROR_SECTION_SURFACE_NULLE": "Section: calculation is impossible when surface is null", "ERROR_SOMETHING_FAILED_IN_CHILD": "Calculation of child module #%number% failed", "ERROR_SOLVEUR_NO_VARIATED_PARAMS_ALLOWED": "Solver cannot be used with a modules chain containing variated parameters", "ERROR_STRUCTURE_Q_TROP_ELEVE": "The flow passing through the other devices is too high: the requested parameter is not calculable.", + "ERROR_STRUCTURE_ZDV_PAS_CALCULABLE": "Parameter \"Crest elevation\" cannot be calculated with this discharge law", + "ERROR_STRUCTURE_Z_EGAUX_Q_NON_NUL": "Upstream and downstream elevations are equal but flow is not null", "INFO_CALCULATOR_CALC_NAME": "Calculator name", "INFO_CALCULATOR_CALCULER": "Compute", "INFO_CALCULATOR_CLONE": "Duplicate", @@ -604,6 +609,7 @@ "INFO_VERIF_OK": "Crossing criteria are met for all species", "INFO_VERIF_VARYING_OK": "Crossing criteria are met for all species and all pass modalities", "WARNING_VERIF_OK_BUT": "Crossing criteria are met for all species, but there are warnings", + "WARNING_VERIF_VARYING_OK_BUT": "Only certain modalities of the pass are crossable", "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", "INFO_VERIFICATEUR_TITRE": "Fish pass verification", @@ -626,6 +632,7 @@ "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Recommendation for fish guiding: α ≤ 45°", "WARNING_GRILLE_BETA_GREATER_THAN_26": "Recommendation for fish guiding: β ≤ 26°", "WARNING_GRILLE_VN_GREATER_THAN_05": "Recommendation to prevent fish getting stuck on grid plan (physical barrier) or prematurely passing through the grid (behavioural barrier): VN ≤ 0.5 m/s.<br>Above average value calculated here, refer to the recommendations taken from experimental caracterisation of effective speed values.", + "WARNING_GRILLE_O_LOWER_THAN_OB": "Total obstruction (entered) is lower than obstruction due to bars only (calculated)", "WARNING_LECHAPT_CALMON_SPEED_OUTSIDE_04_2": "This formula is discouraged for a speed that is not between 0.4 and 2 m/s", "WARNING_UPSTREAM_BOTTOM_HIGHER_THAN_WATER": "Upstream water elevation is lower or equal to bottom elevation", "WARNING_DOWNSTREAM_BOTTOM_HIGHER_THAN_WATER": "Downstream water elevation is lower or equal to bottom elevation", @@ -656,6 +663,7 @@ "INFO_PARENT_PREFIX": "%name% #%position%: ", "INFO_PARENT_PREFIX_DOWNWALL": "downwall: ", "ERROR_VERIF_ERRORS_IN_PASS": "Pass to verify contains errors", + "ERROR_VERIF_VARYING_ERRORS_IN_PASS": "Pass to verify contains error at iteration %i%", "ERROR_VERIF_MISSING_CRITERION": "Criterion %var_criterion% must be defined", "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", "ERROR_VERIF_MR_PVMAX": "Dissipated power %PV% too high (maximum: %maxPV%)", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 58d8ec44e..2fe2697aa 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -57,15 +57,20 @@ "ERROR_REMOUS_PAS_CALCUL": "Aucun calcul possible ni depuis l'amont ni depuis l'aval", "ERROR_REMOUS_PENTE_FORTE": "La pente de la ligne d'eau est trop forte à l'abscisse %x% m (il faudrait réduire le pas de discrétisation)", "ERROR_RU_CIRC_LEVEL_TOO_HIGH": "Le régime uniforme ne peut pas être calculé avec une conduite en charge", + "ERROR_NEWTON_NON_CONVERGENCE": "Non convergence (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG": "Non convergence du calcul de la hauteur conjuguée (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE": "Non convergence du calcul de la hauteur critique (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCOR": "Non convergence du calcul de la hauteur correspondante (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Non convergence du calcul de la hauteur normale (Méthode de Newton)", "ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "La pente est négative ou nulle, la hauteur normale est infinie", + "ERROR_SECTION_PERIMETRE_NUL": "Section : calcul impossible à cause d'un périmètre nul", + "ERROR_SECTION_RAYON_NUL": "Section : calcul impossible à cause d'un rayon nul", "ERROR_SECTION_SURFACE_NULLE": "Section : calcul impossible à cause d'une surface nulle", "ERROR_SOMETHING_FAILED_IN_CHILD": "Le calcul du module enfant n°%number% a échoué", "ERROR_SOLVEUR_NO_VARIATED_PARAMS_ALLOWED": "Le solveur ne peut pas être utilisé avec une chaîne de modules contenant des paramètres variés", "ERROR_STRUCTURE_Q_TROP_ELEVE": "Le débit passant par les autres ouvrages est trop élevé : le paramètre demandé n'est pas calculable.", + "ERROR_STRUCTURE_ZDV_PAS_CALCULABLE": "Le paramètre \"Cote de radier\" ne peut pas être calculé avec cette loi de débit", + "ERROR_STRUCTURE_Z_EGAUX_Q_NON_NUL": "Les cotes amont aval sont égales et le débit n'est pas nul", "INFO_CALCULATOR_CALC_NAME": "Nom du module de calcul", "INFO_CALCULATOR_CALCULER": "Calculer", "INFO_CALCULATOR_CLONE": "Dupliquer", @@ -628,6 +633,7 @@ "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Préconisation pour le guidage des poissons : α ≤ 45°", "WARNING_GRILLE_BETA_GREATER_THAN_26": "Préconisation pour le guidage des poissons : β ≤ 26°", "WARNING_GRILLE_VN_GREATER_THAN_05": "Préconisation pour éviter le placage des poissons sur le plan de grille (barrière physique) ou leur passage prématuré au travers (barrière comportementale) : VN ≤ 0.5 m/s.<br>Au-delà de la valeur moyenne calculée ici, se reporter aux préconisations tirées de la caractérisation expérimentale des valeurs effectives de vitesses.", + "WARNING_GRILLE_O_LOWER_THAN_OB": "L'obstruction totale (saisie) est inférieure à l'obstruction due aux barreaux seulement (calculée)", "WARNING_LECHAPT_CALMON_SPEED_OUTSIDE_04_2": "Cette formule n'est pas conseillée pour une vitesse non comprise entre 0.4 et 2 m/s", "WARNING_UPSTREAM_BOTTOM_HIGHER_THAN_WATER": "La cote de l'eau à l'amont est plus basse ou égale à la cote de fond", "WARNING_DOWNSTREAM_BOTTOM_HIGHER_THAN_WATER": "La cote de l'eau à l'aval est plus basse ou égale à la cote de fond", -- GitLab From 99859af382874ca7e73563d5471e061e76de18c2 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 16:53:50 +0200 Subject: [PATCH 099/101] Add check-translations.js script to npm e2e commands --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 465906635..2d99d91b9 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "ng": "cd . && \"node_modules/.bin/ng\"", "postinstall": "./node_modules/.bin/webdriver-manager update --gecko=false --versions.chrome=83.0.4103.39", "lint": "npm run ng -- lint", - "e2e": "npm run preprocess && npm run ng -- e2e --suite=regular --webdriver-update=false", - "e2equick": "npm run ng -- e2e --dev-server-target= --suite=regular --webdriver-update=false", + "e2e": "npm run preprocess && node scripts/check-translations.js && npm run ng -- e2e --suite=regular --webdriver-update=false", + "e2equick": "node scripts/check-translations.js && npm run ng -- e2e --dev-server-target= --suite=regular --webdriver-update=false", "monkeytest": "npm run ng -- e2e --dev-server-target= --suite=monkeyTest --webdriver-update=false", "mkdocs": "node scripts/python3.js -m mkdocs build -f mkdocs-fr.yml && node scripts/python3.js -m mkdocs build -f mkdocs-en.yml && node scripts/mkdocs-postprocess.js", "mkdocs2pdf": "node scripts/python3.js mkdocs2pdf.py", -- GitLab From dabfe5f88bacf18b1fbb5920a2c27fc0f2d33f88 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 16:54:06 +0200 Subject: [PATCH 100/101] Fix merge typo --- src/app/services/formulaire.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 30c065f96..462b312c4 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -84,7 +84,7 @@ export class FormulaireService extends Observable { */ public getLocalisedDescriptionFromCalculatorType(type: CalculatorType) { const sCalculator: string = CalculatorType[type].toUpperCase(); - return this._intlService.localizeText(`INFO_${sCalculator}_DESCRIPTION`); + return this.intlService.localizeText(`INFO_${sCalculator}_DESCRIPTION`); } /** -- GitLab From 3e8741e125013678164135867003d2b95796988d Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 2 Sep 2020 16:58:52 +0200 Subject: [PATCH 101/101] Fix bug in #223 - missing Promise return when lang is already loaded --- src/app/services/internationalisation.service.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 96da8821b..451931f1b 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -117,6 +117,10 @@ export class I18nService extends Observable implements Observer { }).catch((e) => { throw new Error(`LOCALISATION_FILE_NOT_FOUND "${f}"`); }); + } else { + return new Promise((resolve, reject) => { + resolve(); // does nothing but complies with Promise expectation + }); } } -- GitLab