commit e4622a32bd69f02cb44130661c127502e9f0913e Author: github-classroom[bot] <66690702+github-classroom[bot]@users.noreply.github.com> Date: Tue May 24 06:23:57 2022 +0000 Initial commit diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..4a26874 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,22 @@ + +ARG VARIANT=17-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/java:0-${VARIANT} + +# [Option] Install Maven +ARG INSTALL_MAVEN="false" +ARG MAVEN_VERSION="" + +# [Option] Install Gradle +ARG INSTALL_GRADLE="false" +ARG GRADLE_VERSION="" + +RUN if [ "${INSTALL_MAVEN}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"${MAVEN_VERSION}\""; fi \ + && if [ "${INSTALL_GRADLE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install gradle \"${GRADLE_VERSION}\""; fi + +ARG JDK_VERSION="17.0.3.fx-zulu" +RUN su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install java ${JDK_VERSION}" + +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --install-recommends libgtk-3-0 libgtk-3-dev libglu1-mesa + +RUN sudo chsh -s /bin/zsh vscode diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..eb6b6e0 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,46 @@ +{ + "name": "Java", + "build": { + "dockerfile": "Dockerfile", + "args": { + "JDK_VERSION":"17.0.3.fx-zulu", + "INSTALL_MAVEN": "true", + "MAVEN_VERSION": "3.8.5", + "INSTALL_GRADLE": "false", + } + }, + + "settings": { + "java.jdt.ls.java.home": "/usr/local/sdkman/candidates/java/current", + "maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn", + "terminal.integrated.profiles.linux": { + "zsh": { + "path": "zsh", + } + }, + "terminal.integrated.defaultProfile.linux": "zsh" + }, + + "extensions": [ + "vscjava.vscode-java-pack", + "redhat.vscode-xml", + "redhat.fabric8-analytics", + "SonarSource.sonarlint-vscode" + ], + + "remoteUser": "vscode", + + "features": { + "git": "os-provided", + }, + + "containerEnv": { + "DISPLAY": ":1" + }, + + "runArgs": [ + "--network=host", + "-e", "DISPLAY=${env:DISPLAY}", + "-v", "/tmp/.X11-unix:/tmp/.X11-unix" + ] +} \ No newline at end of file diff --git a/.github/classroom/autograding.json b/.github/classroom/autograding.json new file mode 100644 index 0000000..39b6aab --- /dev/null +++ b/.github/classroom/autograding.json @@ -0,0 +1,14 @@ +{ + "tests": [ + { + "name": "Test", + "setup": "", + "run": "xvfb-run --auto-servernum mvn test", + "input": "", + "output": "", + "comparison": "included", + "timeout": 30, + "points": null + } + ] + } \ No newline at end of file diff --git a/.github/workflows/actions_template_sync.yml b/.github/workflows/actions_template_sync.yml new file mode 100644 index 0000000..850260d --- /dev/null +++ b/.github/workflows/actions_template_sync.yml @@ -0,0 +1,24 @@ +name: actions-template-sync + +on: + # cronjob trigger At 00:00 on day-of-month 1. https://crontab.guru/every-month + schedule: + - cron: "0 0 1 * *" + # manual trigger + workflow_dispatch: + +jobs: + repo-sync: + runs-on: ubuntu-latest + + steps: + # To use this repository's private action, you must check out the repository + - name: Checkout + uses: actions/checkout@v3 + - name: actions-template-sync + uses: AndreasAugustin/actions-template-sync@v0.3.1-draft + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + source_repo_path: IUTInfoAix-R202/tp4 + upstream_branch: main # defaults to main + pr_labels: bug \ No newline at end of file diff --git a/.github/workflows/classroom.yml b/.github/workflows/classroom.yml new file mode 100644 index 0000000..771cb9c --- /dev/null +++ b/.github/workflows/classroom.yml @@ -0,0 +1,19 @@ +name: GitHub Classroom Workflow + +on: [push] + +jobs: + build: + name: Autograding + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - run: sudo apt-get install xvfb + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'zulu' + java-package: 'jdk+fx' + cache: maven + - uses: education/autograding@v1 \ No newline at end of file diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..7c89f78 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,21 @@ +name: Java CI with Maven + +on: + - push + - pull_request +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'zulu' + java-package: 'jdk+fx' + cache: maven + - name: Run headless test + uses: GabrielBB/xvfb-action@v1 + with: + run: mvn -B package --file pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4116181 --- /dev/null +++ b/.gitignore @@ -0,0 +1,100 @@ +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.idea/ +*.iml +*.log +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..eeca6cc --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,40 @@ +image: + file: Dockerfile + +tasks: + - init: | + mysql -e "CREATE USER 'monUser'@'localhost' IDENTIFIED BY 'monPassword';" + mysql -e "CREATE DATABASE GestionPedaBD" + mysql -e "GRANT ALL PRIVILEGES ON GestionPedaBD.* TO 'monUser'@'localhost';" + mysql -u monUser -pmonPassword GestionPedaBD < gestion_peda_mysql.sql + mvn verify -DskipTests=true + - command: mvn compile exec:java -Dexec.mainClass=fr.univ_amu.iut.ExempleJDBC -Dexec.cleanupDaemonThreads=false -DskipTests=true + +ports: + - port: 3306 + onOpen: ignore + +vscode: + extensions: + - vscjava.vscode-maven + - vscjava.vscode-java-dependency + - vscjava.vscode-java-debug + - vscjava.vscode-java-test + - vscjava.vscode-java-pack + - redhat.vscode-commons + - redhat.java + - redhat.vscode-xml + - redhat.fabric8-analytics + +github: + prebuilds: + # enable for the master/default branch (defaults to true) + master: true + # enable for all branches in this repo (defaults to false) + branches: false + # enable for pull requests coming from this repo (defaults to true) + pullRequests: true + # add a check to pull requests (defaults to true) + addCheck: true + # add a "Review in Gitpod" button as a comment to pull requests (defaults to false) + addComment: true diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a7fb275 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic", + "java.test.defaultConfig": "first", + "java.test.config": { + "name": "first", + "workingDirectory": "${workspaceFolder}", + "args": [], + "vmargs": ["--add-exports", "javafx.graphics/com.sun.javafx.application=ALL-UNNAMED"], + "env": {}, + } +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3cedb2b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,2 @@ +FROM gitpod/workspace-mysql +RUN bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh && sdk install java 17.0.3.fx-zulu" \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1e95df6 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# Développement d'application SAE 2.01 + +## IUT d’Aix-Marseille – Département Informatique Aix-en-Provence + +- **Ressource:** [R2.02](https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/35/5/Annexe_17_INFO_BUT_annee_1_1411355.pdf) +- **Responsables:** + - [Sébastien Nedjar](mailto:sebastien.nedjar@univ-amu.fr) + - [Cyril Pain-Barre](mailto:cyril.pain-barre@univ-amu.fr) +- **Besoin d'aide ?** + - Consulter et/ou créer des [issues](https://github.com/IUTInfoAix-R202/cours/issues). + - [Email](mailto:sebastien.nedjar@univ-amu.fr) pour une question d'ordre privée, ou pour convenir d'un rendez-vous physique. + +## Création de votre fork + +La première chose que vous allez faire est de créer un fork d'un dépôt. Pour ce faire, rendez-vous sur le lien suivant : + + +Vous devrez créer un fork par équipe. Une fois le fork créé, vous devrez ajouter manuellement vos collègues comme propriétaire du dépôt. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..fdfe5ca --- /dev/null +++ b/pom.xml @@ -0,0 +1,198 @@ + + + 4.0.0 + + fr.univ_amu.iut + sae201 + jar + 1.0-SNAPSHOT + SAE 201 + https://maven.apache.org + + UTF-8 + 17 + 5.4.2 + 18.0.1 + 0.0.8 + 10.15.2.0 + 3.0.2 + 3.1.0 + + + + + org.openjfx + javafx-controls + ${javafx.version} + + + + org.openjfx + javafx-fxml + ${javafx.version} + + + + org.openjfx + javafx-graphics + ${javafx.version} + + + + org.openjfx + javafx-media + ${javafx.version} + + + + org.kordamp.ikonli + ikonli-javafx + 12.3.1 + + + + org.kordamp.ikonli + ikonli-materialdesign-pack + 12.3.1 + + + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + test + + + + org.testfx + testfx-core + 4.0.16-alpha + test + + + + org.testfx + testfx-junit5 + 4.0.16-alpha + test + + + + org.mockito + mockito-junit-jupiter + 4.5.1 + test + + + + mysql + mysql-connector-java + 8.0.29 + runtime + + + + org.postgresql + postgresql + 42.3.5 + runtime + + + + org.apache.derby + derby + ${derby.version} + runtime + + + + jakarta.persistence + jakarta.persistence-api + ${jakarta.persistence.version} + + + + org.eclipse.persistence + eclipselink + ${eclipselink.version} + + + + jakarta.activation + jakarta.activation-api + 2.1.0 + + + + + + + src/main/resources + + **/* + + + + false + src/main/java + + **/*.fxml + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + ${maven.compiler.release} + + + + + org.openjfx + javafx-maven-plugin + ${javafx.maven.plugin.version} + + app + launcher + sae201/fr.univ_amu.iut.FranceMain + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M5 + + + --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED + + + + + + + diff --git a/src/main/java/fr/univ_amu/iut/FranceMain.java b/src/main/java/fr/univ_amu/iut/FranceMain.java new file mode 100644 index 0000000..41c89e6 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/FranceMain.java @@ -0,0 +1,48 @@ +package fr.univ_amu.iut; + +import fr.univ_amu.iut.view.map.AcademiePath; +import fr.univ_amu.iut.view.map.France; +import fr.univ_amu.iut.view.map.FranceBuilder; +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.layout.Background; +import javafx.scene.layout.BackgroundFill; +import javafx.scene.layout.CornerRadii; +import javafx.scene.layout.StackPane; +import javafx.stage.Stage; + +public class FranceMain extends Application { + France france; + + @Override + public void init() { + france = FranceBuilder.create() + //.backgroundColor(Color.web("#4aa9d7")) + //.fillColor(Color.web("#dcb36c")) + //.strokeColor(Color.web("#987028")) + //.hoverColor(Color.web("#fec47e")) + //.pressedColor(Color.web("#6cee85")) + //.selectedColor(Color.MAGENTA) + .mousePressHandler(evt -> { + AcademiePath academiePath = (AcademiePath) evt.getSource(); + System.out.println("On vient de cliquer sur l'"+academiePath.getAcademie().getNom()); + }) + .selectionEnabled(true) + .build(); + } + + @Override + public void start(Stage stage) { + StackPane pane = new StackPane(france); + pane.setBackground(new Background(new BackgroundFill(france.getBackgroundColor(), CornerRadii.EMPTY, Insets.EMPTY))); + Scene scene = new Scene(pane); + stage.setTitle("Carte des académie"); + stage.setScene(scene); + stage.show(); + } + + public static void main(String[] args) { + launch(args); + } +} diff --git a/src/main/java/fr/univ_amu/iut/JPAMain.java b/src/main/java/fr/univ_amu/iut/JPAMain.java new file mode 100644 index 0000000..ef13d73 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/JPAMain.java @@ -0,0 +1,217 @@ +package fr.univ_amu.iut; + +import fr.univ_amu.iut.model.Acteur; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; +import jakarta.persistence.TypedQuery; +import javafx.application.Application; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +import java.util.List; + +public class JPAMain extends Application { + private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("gestionUsagesPU"); + private static final EntityManager em = emf.createEntityManager(); + private TableView table; + private TableColumn nom; + private TableColumn id; + private TableColumn prenom; + private TableColumn ville; + private TableColumn typeActeur; + private ObservableList data; + private HBox boutons; + private Button ajouter; + private Button supprimer; + private VBox racine; + @Override + public void start(Stage stage) { + initialiserTable(); + initialiserBoutons(); + initialiserRacine(); + + Scene scene = new Scene(racine, 600, 400); + stage.setScene(scene); + stage.setTitle("Liste d'acteurs"); + stage.sizeToScene(); + stage.show(); + } + + private void initialiserRacine() { + racine = new VBox(); + racine.setPadding(new Insets(10)); + racine.getChildren().addAll(table, boutons); + } + + private void initialiserBoutons() { + boutons = new HBox(10); + boutons.setPadding(new Insets(10)); + boutons.setAlignment(Pos.CENTER); + initialiserBoutonAjouter(); + initialiserBoutonSupprimer(); + boutons.getChildren().addAll(ajouter, supprimer); + } + + private void initialiserBoutonSupprimer() { + supprimer = new Button("Supprimer"); + supprimer.setOnAction(this::supprimerActeur); + } + + private void initialiserBoutonAjouter() { + ajouter = new Button("Ajouter"); + ajouter.setOnAction(this::ajouterActeur); + } + + private void initialiserTable() { + table = new TableView<>(); + table.setEditable(true); + table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.getSelectionModel().select(0); + + initialiserColonnes(); + insererColonnes(); + remplirDonnees(); + + VBox.setVgrow(table, Priority.ALWAYS); + } + + private static TableColumn initialiserColonneId() { + TableColumn code = new TableColumn<>("Identifiant"); + code.setCellValueFactory(new PropertyValueFactory<>("id")); + return code; + } + + private static TableColumn initialiserColonneNom() { + TableColumn nom = new TableColumn<>("Nom"); + nom.setCellValueFactory(new PropertyValueFactory<>("nom")); + nom.setCellFactory(TextFieldTableCell.forTableColumn()); + nom.setOnEditCommit(event -> { + int index = event.getTablePosition().getRow(); + Acteur acteur = event.getTableView().getItems().get(index); + em.getTransaction().begin(); + acteur.setNom(event.getNewValue()); + em.getTransaction().commit(); + }); + return nom; + } + + private static TableColumn initialiserColonnePrenom() { + TableColumn prenom = new TableColumn<>("Prénom"); + prenom.setCellValueFactory(new PropertyValueFactory<>("prenom")); + prenom.setCellFactory(TextFieldTableCell.forTableColumn()); + + prenom.setOnEditCommit(event -> { + int index = event.getTablePosition().getRow(); + Acteur acteur = event.getTableView().getItems().get(index); + em.getTransaction().begin(); + acteur.setPrenom(event.getNewValue()); + em.getTransaction().commit(); + }); + + return prenom; + } + + private static TableColumn initialiserColonneVille() { + TableColumn ville = new TableColumn<>("Ville"); + ville.setCellValueFactory(new PropertyValueFactory<>("ville")); + ville.setCellFactory(TextFieldTableCell.forTableColumn()); + ville.setOnEditCommit(event -> { + int index = event.getTablePosition().getRow(); + Acteur acteur = event.getTableView().getItems().get(index); + em.getTransaction().begin(); + acteur.setVille(event.getNewValue()); + em.getTransaction().commit(); + }); + return ville; + } + + private TableColumn initialiserColonneTypeActeur() { + TableColumn typeActeur = new TableColumn<>("Type d'acteur"); + typeActeur.setCellValueFactory(new PropertyValueFactory<>("typeActeur")); + typeActeur.setCellFactory(TextFieldTableCell.forTableColumn()); + typeActeur.setOnEditCommit(event -> { + int index = event.getTablePosition().getRow(); + Acteur acteur = event.getTableView().getItems().get(index); + em.getTransaction().begin(); + acteur.setTypeActeur(event.getNewValue()); + em.getTransaction().commit(); + }); + return typeActeur; + } + + private void initialiserColonnes() { + id = initialiserColonneId(); + nom = initialiserColonneNom(); + prenom = initialiserColonnePrenom(); + ville = initialiserColonneVille(); + typeActeur = initialiserColonneTypeActeur(); + } + + private void insererColonnes() { + table.getColumns().addAll(List.of(id, nom, prenom, ville, typeActeur)); + } + + private void remplirDonnees() { + data = listerActeurs(); + table.setItems(data); + } + + private ObservableList listerActeurs() { + TypedQuery query = em.createNamedQuery("Acteur.findAll", Acteur.class); + return FXCollections.observableList(query.getResultList()); + } + + private void ajouterActeur(ActionEvent event) { + Acteur acteur = new Acteur(); + em.getTransaction().begin(); + em.persist(acteur); + em.getTransaction().commit(); + data.add(acteur); + + int rowIndex = data.size() - 1; + table.requestFocus(); + table.scrollTo(rowIndex); + table.getSelectionModel().select(rowIndex); + table.getFocusModel().focus(rowIndex); + } + + private void supprimerActeur(ActionEvent event) { + if (table.getItems().size() == 0) return; + + em.getTransaction().begin(); + em.remove(table.getSelectionModel().getSelectedItem()); + em.getTransaction().commit(); + + int selectedRowIndex = table.getSelectionModel().getSelectedIndex(); + + data.remove(selectedRowIndex); + + if (selectedRowIndex != 0) { + selectedRowIndex = selectedRowIndex - 1; + } + + table.requestFocus(); + table.scrollTo(selectedRowIndex); + table.getSelectionModel().select(selectedRowIndex); + table.getFocusModel().focus(selectedRowIndex); + } + + public static void main(String[] args) { + launch(args); + } + +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAO.java b/src/main/java/fr/univ_amu/iut/dao/DAO.java new file mode 100644 index 0000000..39acfbc --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAO.java @@ -0,0 +1,43 @@ +package fr.univ_amu.iut.dao; + +import java.util.List; + +public interface DAO { + + /** + * Permet la suppression d'un tuple de la base + * + * @param obj Objet à supprimer dans la base + */ + boolean delete(T obj); + + /** + * Permet de récupérer tous les objets d'une table + * + * @return liste de tous les objets contenus dans la base + */ + List findAll(); + + /** + * Permet de récupérer un objet via son ID + * + * @param id identifiant du tuple recherché + * @return le tuple recherché s'il existe + */ + T getById(int id); + + /** + * Permet de créer une entrée dans la base de données par rapport à un objet + * + * @param obj Objet à insérer dans la base + */ + T insert(T obj); + + /** + * Permet de mettre à jour les données d'un tuple dans la base à partir d'un + * objet passé en paramètre + * + * @param obj Objet à mettre à jour dans la base + */ + boolean update(T obj); +} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java b/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java new file mode 100644 index 0000000..286b796 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.Academie; + +public interface DAOAcademie extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOActeur.java b/src/main/java/fr/univ_amu/iut/dao/DAOActeur.java new file mode 100644 index 0000000..f676a4e --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAOActeur.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.Acteur; + +public interface DAOActeur extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java b/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java new file mode 100644 index 0000000..0beefbf --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java @@ -0,0 +1,4 @@ +package fr.univ_amu.iut.dao; + +public interface DAODiscipline extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAORegionAcademique.java b/src/main/java/fr/univ_amu/iut/dao/DAORegionAcademique.java new file mode 100644 index 0000000..4e640ae --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAORegionAcademique.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.RegionAcademique; + +public interface DAORegionAcademique extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAORessource.java b/src/main/java/fr/univ_amu/iut/dao/DAORessource.java new file mode 100644 index 0000000..6d75586 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAORessource.java @@ -0,0 +1,7 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.Ressource; + +public interface DAORessource extends DAO{ + +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOThematique.java b/src/main/java/fr/univ_amu/iut/dao/DAOThematique.java new file mode 100644 index 0000000..aa934dc --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAOThematique.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.Thematique; + +public interface DAOThematique extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java b/src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java new file mode 100644 index 0000000..36b4609 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.TypeActeur; + +public interface DAOTypeActeur extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java b/src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java new file mode 100644 index 0000000..e8acad1 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.TypeRessource; + +public interface DAOTypeRessource extends DAO { +} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java b/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java new file mode 100644 index 0000000..24a649d --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao; + +import fr.univ_amu.iut.model.Usage; + +public interface DAOUsage extends DAO{ +} diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java new file mode 100644 index 0000000..0660a7d --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java @@ -0,0 +1,15 @@ +package fr.univ_amu.iut.dao.factory; + +import fr.univ_amu.iut.dao.*; + +public interface DAOFactory { + DAOAcademie createDAOAcademie(); + DAOActeur createDAOActeur(); + DAODiscipline createDAODiscipline(); + DAORegionAcademique createDAORegionAcademique(); + DAORessource createDAORessource(); + DAOThematique createDAOThematique(); + DAOTypeActeur createDAOTypeActeur(); + DAOTypeRessource createDAOTypeRessource(); + DAOUsage createDAOUsage(); +} diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java new file mode 100644 index 0000000..14e4869 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java @@ -0,0 +1,14 @@ +package fr.univ_amu.iut.dao.factory; + +import fr.univ_amu.iut.dao.jdbc.DAOFactoryJDBC; +import fr.univ_amu.iut.dao.jpa.DAOFactoryJPA; + +public class DAOFactoryProducer { + public static DAOFactory getFactory(DAOType type) { + return switch (type){ + case JPA -> new DAOFactoryJPA(); + case JDBC -> new DAOFactoryJDBC(); + default -> throw new IllegalArgumentException(); + }; + } +} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java new file mode 100644 index 0000000..c2fbe86 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java @@ -0,0 +1,6 @@ +package fr.univ_amu.iut.dao.factory; + +public enum DAOType { + JPA, + JDBC +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java new file mode 100644 index 0000000..4ae8194 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java @@ -0,0 +1,51 @@ +package fr.univ_amu.iut.dao.jdbc; + +import fr.univ_amu.iut.dao.*; +import fr.univ_amu.iut.dao.factory.DAOFactory; + +public class DAOFactoryJDBC implements DAOFactory { + @Override + public DAOAcademie createDAOAcademie() { + return null; + } + + @Override + public DAOActeur createDAOActeur() { + return null; + } + + @Override + public DAODiscipline createDAODiscipline() { + return null; + } + + @Override + public DAORegionAcademique createDAORegionAcademique() { + return null; + } + + @Override + public DAORessource createDAORessource() { + return null; + } + + @Override + public DAOThematique createDAOThematique() { + return null; + } + + @Override + public DAOTypeActeur createDAOTypeActeur() { + return null; + } + + @Override + public DAOTypeRessource createDAOTypeRessource() { + return null; + } + + @Override + public DAOUsage createDAOUsage() { + return null; + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java new file mode 100644 index 0000000..ca6dfce --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java @@ -0,0 +1,52 @@ +package fr.univ_amu.iut.dao.jdbc; + +import java.sql.SQLException; + +public class DataAccessException extends RuntimeException { + + public int errorCode; + public String state; + + public DataAccessException() { + } + + public DataAccessException(String message) { + super(message); + } + + public DataAccessException(String message, Throwable cause) { + super(message, cause); + getCodeAndState(cause); + } + + public DataAccessException(Throwable cause) { + super(cause); + } + + public DataAccessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + private void getCodeAndState(Throwable cause) { + if (cause instanceof SQLException) { + errorCode = ((SQLException) cause).getErrorCode(); + state = ((SQLException) cause).getSQLState(); + } else { + errorCode = -1; + state = cause.getMessage(); + } + } + + public int getErrorCode() { + return errorCode; + } + + public String getState() { + return state; + } + + @Override + public String toString() { + return getClass().getName() + '[' + errorCode + ',' + state + "]: " + getLocalizedMessage(); + } +} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java new file mode 100644 index 0000000..c942695 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java @@ -0,0 +1,78 @@ +package fr.univ_amu.iut.dao.jdbc; + +import fr.univ_amu.iut.dao.jdbc.rowmappers.RowMapper; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Iterator; + +public class ResultSetIterator implements Iterator { + + private ResultSet rs; + private PreparedStatement ps; + private Connection connection; + private RowMapper rowMapper; + private String sql; + + public ResultSetIterator(Connection connection, String sql, RowMapper rowMapper) { + assert connection != null; + assert sql != null; + this.connection = connection; + this.sql = sql; + this.rowMapper = rowMapper; + } + + public void init() { + try { + ps = connection.prepareStatement(sql); + rs = ps.executeQuery(); + + } catch (SQLException e) { + close(); + throw new DataAccessException(e); + } + } + + @Override + public boolean hasNext() { + if (ps == null) { + init(); + } + try { + boolean hasMore = rs.next(); + if (!hasMore) { + close(); + } + return hasMore; + } catch (SQLException e) { + close(); + throw new DataAccessException(e); + } + + } + + private void close() { + try { + rs.close(); + try { + ps.close(); + } catch (SQLException e) { + //nothing we can do here + } + } catch (SQLException e) { + //nothing we can do here + } + } + + @Override + public T next() { + try { + return rowMapper.mapRow(rs, 1); + } catch (SQLException e) { + close(); + throw new DataAccessException(e); + } + } +} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java new file mode 100644 index 0000000..3de4f13 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java @@ -0,0 +1,18 @@ +package fr.univ_amu.iut.dao.jdbc; + +import fr.univ_amu.iut.dao.jdbc.rowmappers.RowMapper; + +import java.sql.Connection; +import java.util.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +public class ResultSetStreamer { + public static Stream stream(final Connection connection, + final String sql, + final RowMapper rowMapper) { + return StreamSupport + .stream(Spliterators.spliteratorUnknownSize( + new ResultSetIterator<>(connection, sql, rowMapper), 0), false); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java new file mode 100644 index 0000000..830e09d --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java @@ -0,0 +1,8 @@ +package fr.univ_amu.iut.dao.jdbc.rowmappers; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public interface RowMapper { + T mapRow(ResultSet rs, int rowNum) throws SQLException; +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java new file mode 100644 index 0000000..e64a07d --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java @@ -0,0 +1,52 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.*; +import fr.univ_amu.iut.dao.factory.DAOFactory; + +public class DAOFactoryJPA implements DAOFactory { + + @Override + public DAOAcademie createDAOAcademie() { + return null; + } + + @Override + public DAOActeur createDAOActeur() { + return null; + } + + @Override + public DAODiscipline createDAODiscipline() { + return null; + } + + @Override + public DAORegionAcademique createDAORegionAcademique() { + return null; + } + + @Override + public DAORessource createDAORessource() { + return null; + } + + @Override + public DAOThematique createDAOThematique() { + return null; + } + + @Override + public DAOTypeActeur createDAOTypeActeur() { + return null; + } + + @Override + public DAOTypeRessource createDAOTypeRessource() { + return null; + } + + @Override + public DAOUsage createDAOUsage() { + return null; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Academie.java b/src/main/java/fr/univ_amu/iut/model/Academie.java new file mode 100644 index 0000000..09c4e01 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Academie.java @@ -0,0 +1,107 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.*; + +import java.util.Collection; +import java.util.HashMap; + +@Entity +public class Academie { + private final static HashMap INSTANCES = new HashMap<>(); + @Transient + public static Academie Mayotte = new Academie("MY", "Académie de Mayotte", RegionAcademique.Mayotte); + @Transient + public static Academie Besancon = new Academie("BE", "Académie de Besançon", RegionAcademique.BourgogneFrancheComte); + @Transient + public static Academie Bordeaux = new Academie("BO", "Académie de Bordeaux", RegionAcademique.NouvelleAquitaine); + @Transient + public static Academie ClermontFerrand = new Academie("CL", "Académie de Clermont-Ferrand", RegionAcademique.AuvergneRhoneAlpes); + @Transient + public static Academie Dijon = new Academie("DI", "Académie de Dijon", RegionAcademique.BourgogneFrancheComte); + @Transient + public static Academie Grenoble = new Academie("GR", "Académie de Grenoble", RegionAcademique.AuvergneRhoneAlpes); + @Transient + public static Academie Guadeloupe = new Academie("GU", "Académie de la Guadeloupe", RegionAcademique.Guadeloupe); + @Transient + public static Academie Guyane = new Academie("GA", "Académie de la Guyane", RegionAcademique.Guyane); + @Transient + public static Academie Martinique = new Academie("MA", "Académie de la Martinique", RegionAcademique.Martinique); + @Transient + public static Academie Reunion = new Academie("RE", "Académie de La Réunion", RegionAcademique.Reunion); + @Transient + public static Academie Limoges = new Academie("LI", "Académie de Limoges", RegionAcademique.NouvelleAquitaine); + @Transient + public static Academie Lyon = new Academie("LY", "Académie de Lyon", RegionAcademique.AuvergneRhoneAlpes); + @Transient + public static Academie Poitiers = new Academie("PO", "Académie de Poitiers", RegionAcademique.NouvelleAquitaine); + @Transient + public static Academie AixMarseille = new Academie("AI", "Académie d'Aix-Marseille", RegionAcademique.ProvenceAlpesCoteDAzur); + @Transient + public static Academie Amiens = new Academie("AM", "Académie d'Amiens", RegionAcademique.HautsDeFrance); + @Transient + public static Academie OrleansTours = new Academie("OR", "Académie d'Orléans-Tours", RegionAcademique.CentreValDeLoire); + @Transient + public static Academie Corse = new Academie("CO", "Académie de Corse", RegionAcademique.Corse); + @Transient + public static Academie Lille = new Academie("LL", "Académie de Lille", RegionAcademique.HautsDeFrance); + @Transient + public static Academie NancyMetz = new Academie("NM", "Académie de Nancy-Metz", RegionAcademique.GrandEst); + @Transient + public static Academie Nantes = new Academie("NA", "Académie de Nantes", RegionAcademique.PaysDeLaLoire); + @Transient + public static Academie Nice = new Academie("NI", "Académie de Nice", RegionAcademique.ProvenceAlpesCoteDAzur); + @Transient + public static Academie Normandie = new Academie("NO", "Académie de Normandie", RegionAcademique.Normandie); + @Transient + public static Academie Reims = new Academie("RI", "Académie de Reims", RegionAcademique.GrandEst); + @Transient + public static Academie Rennes = new Academie("RN", "Académie de Rennes", RegionAcademique.Bretagne); + @Transient + public static Academie Strasbourg = new Academie("ST", "Académie de Strasbourg", RegionAcademique.GrandEst); + @Transient + public static Academie Creteil = new Academie("CR", "Académie de Créteil", RegionAcademique.IleDeFrance); + @Transient + public static Academie Montpellier = new Academie("MO", "Académie de Montpellier", RegionAcademique.Occitanie); + @Transient + public static Academie Paris = new Academie("PA", "Académie de Paris", RegionAcademique.IleDeFrance); + @Transient + public static Academie Toulouse = new Academie("TO", "Académie de Toulouse", RegionAcademique.Occitanie); + @Transient + public static Academie Versailles = new Academie("VE", "Académie de Versailles", RegionAcademique.IleDeFrance); + @Id + String code; + String nom; + + @ManyToOne(cascade = CascadeType.ALL) + RegionAcademique regionAcademique; + + private Academie(String code, String nom, RegionAcademique regionAcademique) { + this.code = code; + this.nom = nom; + this.regionAcademique = regionAcademique; + INSTANCES.put(this.code, this); + } + + public Academie() { + } + + public static Academie get(String code) { + return INSTANCES.get(code); + } + + public static Collection toutes() { + return INSTANCES.values(); + } + + public String getCode() { + return code; + } + + public String getNom() { + return nom; + } + + public RegionAcademique getRegionAcademique() { + return regionAcademique; + } +} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/model/Acteur.java b/src/main/java/fr/univ_amu/iut/model/Acteur.java new file mode 100644 index 0000000..70a7e2f --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Acteur.java @@ -0,0 +1,108 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.*; + +@NamedQueries({ + @NamedQuery(name = "Acteur.findAll", query = "SELECT p FROM Acteur p"), + @NamedQuery(name = "Acteur.findById", query = "SELECT p FROM Acteur p WHERE p.id = :id"), +}) +@Entity +public class Acteur { + @Id + @GeneratedValue + int id; + + String nom; + String prenom; + + @Embedded + Coordonees coordonees; + + @ManyToOne(cascade = CascadeType.ALL) + TypeActeur typeActeur; + + public Acteur() { + coordonees = new Coordonees(); + typeActeur = new TypeActeur(); + } + + public int getId() { + return id; + } + + public String getNom() { + return nom; + } + + public String getPrenom() { + return prenom; + } + + public Coordonees getCoordonees() { + return coordonees; + } + + public String getTypeActeur() { + return typeActeur.nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public void setTypeActeur(String typeActeur) { + this.typeActeur.setNom(typeActeur); + } + + public int getNumero() { + return coordonees.getNumero(); + } + + public void setNumero(int numero) { + coordonees.setNumero(numero); + } + + public String getRue() { + return coordonees.getRue(); + } + + public void setRue(String rue) { + coordonees.setRue(rue); + } + + public String getCodePostal() { + return coordonees.getCodePostal(); + } + + public void setCodePostal(String codePostal) { + coordonees.setCodePostal(codePostal); + } + + public String getVille() { + return coordonees.getVille(); + } + + public void setVille(String ville) { + coordonees.setVille(ville); + } + + public String getMail() { + return coordonees.getMail(); + } + + public void setMail(String mail) { + coordonees.setMail(mail); + } + + public String getTelephone() { + return coordonees.getTelephone(); + } + + public void setTelephone(String telephone) { + coordonees.setTelephone(telephone); + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Coordonees.java b/src/main/java/fr/univ_amu/iut/model/Coordonees.java new file mode 100644 index 0000000..5ac07e3 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Coordonees.java @@ -0,0 +1,64 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.Embeddable; + +@Embeddable +public class Coordonees { + private int numero; + private String rue; + private String codePostal; + private String ville; + private String mail; + private String telephone; + + public Coordonees() { + } + + public int getNumero() { + return numero; + } + + public void setNumero(int numero) { + this.numero = numero; + } + + public String getRue() { + return rue; + } + + public void setRue(String rue) { + this.rue = rue; + } + + public String getCodePostal() { + return codePostal; + } + + public void setCodePostal(String codePostal) { + this.codePostal = codePostal; + } + + public String getVille() { + return ville; + } + + public void setVille(String ville) { + this.ville = ville; + } + + public String getMail() { + return mail; + } + + public void setMail(String mail) { + this.mail = mail; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } +} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/model/Discipline.java b/src/main/java/fr/univ_amu/iut/model/Discipline.java new file mode 100644 index 0000000..c3816d6 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Discipline.java @@ -0,0 +1,43 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.Transient; + +@Entity +public class Discipline { + @Transient + public static Discipline Toutes = new Discipline("Toutes disciplines"); + @Transient + public static Discipline HistoireGeographie = new Discipline("Histoire-géographie"); + @Transient + public static Discipline PhysiqueChimie = new Discipline("Physique-chimie"); + @Transient + public static Discipline ScienceEtVieDeLaTerre = new Discipline("SVT"); + @Transient + public static Discipline Technologie = new Discipline("Technologie"); + @Transient + public static Discipline Francais = new Discipline("Français"); + @Transient + public static Discipline EconomieGestion = new Discipline("Économie Gestion"); + @Transient + public static Discipline LangueVivante = new Discipline("Langue Vivante"); + + @Id + @GeneratedValue + int id; + String nom; + + public Discipline() { + + } + + Discipline(String nom) { + this.nom = nom; + } + + public String getNom() { + return nom; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Niveau.java b/src/main/java/fr/univ_amu/iut/model/Niveau.java new file mode 100644 index 0000000..2da91e4 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Niveau.java @@ -0,0 +1,14 @@ +package fr.univ_amu.iut.model; + +public enum Niveau { + Tous("Tous"), + PremierDegre("Premier degré"), + SecondDegre("Second degré"); + final String nom; + Niveau(String nom){ + this.nom = nom; + } + public String getNom() { + return nom; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java b/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java new file mode 100644 index 0000000..7b56674 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java @@ -0,0 +1,63 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.*; + +@Entity +public class RegionAcademique { + @Transient + public static RegionAcademique AuvergneRhoneAlpes = new RegionAcademique("Région académique Auvergne-Rhône-Alpes"); + @Transient + public static RegionAcademique BourgogneFrancheComte = new RegionAcademique("Région académique Bourgogne-Franche-Comté"); + @Transient + public static RegionAcademique Bretagne = new RegionAcademique("Région académique Bretagne"); + @Transient + public static RegionAcademique CentreValDeLoire = new RegionAcademique("Région académique Centre-Val de Loire"); + @Transient + public static RegionAcademique Corse = new RegionAcademique("Région académique Corse"); + @Transient + public static RegionAcademique GrandEst = new RegionAcademique("Région académique Grand Est"); + @Transient + public static RegionAcademique Guadeloupe = new RegionAcademique("Région académique Guadeloupe"); + @Transient + public static RegionAcademique Guyane = new RegionAcademique("Région académique Guyane"); + @Transient + public static RegionAcademique HautsDeFrance = new RegionAcademique("Région académique Hauts-de-France"); + @Transient + public static RegionAcademique IleDeFrance = new RegionAcademique("Région académique Île-de-France"); + @Transient + public static RegionAcademique Martinique = new RegionAcademique("Région académique Martinique"); + @Transient + public static RegionAcademique Normandie = new RegionAcademique("Région académique Normandie"); + @Transient + public static RegionAcademique NouvelleAquitaine = new RegionAcademique("Région académique Nouvelle-Aquitaine"); + @Transient + public static RegionAcademique Occitanie = new RegionAcademique("Région académique Occitanie"); + @Transient + public static RegionAcademique PaysDeLaLoire = new RegionAcademique("Région académique Pays de la Loire"); + @Transient + public static RegionAcademique ProvenceAlpesCoteDAzur = new RegionAcademique("Région académique Provence-Alpes-Côte d'Azur"); + @Transient + public static RegionAcademique Reunion = new RegionAcademique("Région académique La Réunion"); + @Transient + public static RegionAcademique Mayotte = new RegionAcademique("Région académique Mayotte"); + + @Id + @GeneratedValue + int id; + String nom; + + public RegionAcademique(String nom) { + this.nom = nom; + } + + public RegionAcademique() { + } + + public int getId() { + return id; + } + + public String getNom() { + return nom; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Ressource.java b/src/main/java/fr/univ_amu/iut/model/Ressource.java new file mode 100644 index 0000000..79891d7 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Ressource.java @@ -0,0 +1,35 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; + +import java.net.URL; + +@Entity +public class Ressource { + @Id + @GeneratedValue + int id; + @ManyToOne + TypeRessource typeRessource; + URL lienRessource; + + public Ressource(TypeRessource typeRessource, URL lienRessource) { + this.typeRessource = typeRessource; + this.lienRessource = lienRessource; + } + + public Ressource() { + + } + + public TypeRessource getTypeRessource() { + return typeRessource; + } + + public URL getLienRessource() { + return lienRessource; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Thematique.java b/src/main/java/fr/univ_amu/iut/model/Thematique.java new file mode 100644 index 0000000..bee7747 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Thematique.java @@ -0,0 +1,70 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.Transient; + +@Entity +public class Thematique { + @Transient + public static Thematique ClasseInversee= new Thematique("Classe inversée"); + @Transient + public static Thematique CreationNumerique = new Thematique("Création numérique"); + @Transient + public static Thematique DifferenciationPedagogique = new Thematique("Différenciation pédagogique"); + @Transient + public static Thematique EcoleInclusive = new Thematique("École inclusive"); + @Transient + public static Thematique CitoyenneteNumerique = new Thematique("EMI citoyenneté numérique (Se protéger)"); + @Transient + public static Thematique EnseignerADistance = new Thematique("Enseigner à distance"); + @Transient + public static Thematique ExpressionOrale = new Thematique("Expression orale/podcast"); + @Transient + public static Thematique Evaluation = new Thematique("Évaluation"); + @Transient + public static Thematique FormationAuxOutilsNumeriques = new Thematique("Formation aux outils numériques"); + @Transient + public static Thematique FormerADistance = new Thematique("Former à distance"); + @Transient + public static Thematique Hybridation = new Thematique("Hybridation"); + @Transient + public static Thematique Ludification = new Thematique("Ludification"); + @Transient + public static Thematique PedagogieDeProjet = new Thematique("Pédagogie de projet"); + @Transient + public static Thematique Programmation = new Thematique("Programmation/Codage/Robotique"); + @Transient + public static Thematique RealiteVirtuelle = new Thematique("Réalité virtuelle et augmentée"); + @Transient + public static Thematique ReseauxSociaux = new Thematique("Réseaux sociaux"); + @Transient + public static Thematique SExercerSentrainer = new Thematique("S’exercer/s’entraîner"); + @Transient + public static Thematique TiersLab = new Thematique("Tiers lab"); + @Transient + public static Thematique TNE = new Thematique("TNE"); + @Transient + public static Thematique TravailCollaboratif = new Thematique("Travail collaboratif/mutualisation"); + @Transient + public static Thematique TravailEntrePairs = new Thematique("Travail entre pairs"); + @Transient + public static Thematique WebRadio = new Thematique("Webradio"); + + @Id + @GeneratedValue + int id; + String nom; + + public String getNom() { + return nom; + } + + public Thematique(String nom) { + this.nom = nom; + } + + public Thematique() { + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/TypeActeur.java b/src/main/java/fr/univ_amu/iut/model/TypeActeur.java new file mode 100644 index 0000000..48ec991 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/TypeActeur.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; + +@Entity +public class TypeActeur { + @Id + @GeneratedValue + int id; + String nom; + + public TypeActeur(String nom) { + this.nom = nom; + } + + public TypeActeur() { + + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/TypeRessource.java b/src/main/java/fr/univ_amu/iut/model/TypeRessource.java new file mode 100644 index 0000000..f9ffd06 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/TypeRessource.java @@ -0,0 +1,23 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; + +@Entity +public class TypeRessource { + @Id + @GeneratedValue + int id; + String nom; + + public TypeRessource(String nom) { + this.nom = nom; + } + + public TypeRessource() {} + + public String getNom() { + return nom; + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Usage.java b/src/main/java/fr/univ_amu/iut/model/Usage.java new file mode 100644 index 0000000..7356a95 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/model/Usage.java @@ -0,0 +1,115 @@ +package fr.univ_amu.iut.model; + +import jakarta.persistence.*; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@Entity +public class Usage { + @Id + @GeneratedValue + int id; + + String nom; + String description; + + @ManyToOne(cascade = CascadeType.ALL) + Discipline discipline; + + @ManyToOne(cascade = CascadeType.ALL) + Thematique thematique; + + @Enumerated(EnumType.STRING) + Niveau niveau; + + @OneToMany(cascade = CascadeType.ALL) + List academies = new ArrayList<>(); + + @OneToMany(cascade = CascadeType.ALL) + List ressources = new ArrayList<>(); + + @OneToMany(cascade = CascadeType.ALL) + List acteurs = new ArrayList<>(); + + String commentaire; + + public Usage() { + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Discipline getDiscipline() { + return discipline; + } + + public void setDiscipline(Discipline discipline) { + this.discipline = discipline; + } + + public Thematique getThematique() { + return thematique; + } + + public void setThematique(Thematique thematique) { + this.thematique = thematique; + } + + public Niveau getNiveau() { + return niveau; + } + + public void setNiveau(Niveau niveau) { + this.niveau = niveau; + } + + public List getAcademies() { + return academies; + } + + public void addAcademies(Academie ... academies) { + this.academies.addAll(List.of(academies)); + } + public void addAcademies(Collection academies){ + this.academies.addAll(academies); + } + + public List getRessources() { + return ressources; + } + + public void addRessource(Ressource ressource) { + this.ressources.add(ressource); + } + + public List getActeurs() { + return acteurs; + } + + public void addActeur(Acteur acteur) { + this.acteurs.add(acteur); + } + + public String getCommentaire() { + return commentaire; + } + + public void setCommentaire(String commentaire) { + this.commentaire = commentaire; + } +} diff --git a/src/main/java/fr/univ_amu/iut/view/map/AcademiePath.java b/src/main/java/fr/univ_amu/iut/view/map/AcademiePath.java new file mode 100644 index 0000000..c690d9a --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/view/map/AcademiePath.java @@ -0,0 +1,69 @@ +package fr.univ_amu.iut.view.map; + +import fr.univ_amu.iut.model.Academie; +import javafx.scene.control.Tooltip; +import javafx.scene.shape.SVGPath; +import javafx.scene.transform.Transform; + +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + +public class AcademiePath extends SVGPath { + private final static HashMap INSTANCES = new HashMap<>(); + + Academie academie; + private final Tooltip tooltip; + + public AcademiePath(Academie academie){ + this(academie, null); + } + + public AcademiePath(Academie academie, String content) { + this.academie = academie; + this.tooltip = new Tooltip(academie.getNom()); + Tooltip.install(this, tooltip); + if (null == content) return; + setContent(content); + getTransforms().add(Transform.affine(1.3333333,0,0,-1.3333333,-79.268904,937.80293)); + INSTANCES.put(academie,this); + } + + private static final String LORES_PROPERTIES = "fr/univ_amu/iut/francefx/lores.properties"; + + private static Properties readProperties(String fileName) { + final ClassLoader LOADER = Thread.currentThread().getContextClassLoader(); + final Properties PROPERTIES = new Properties(); + try (InputStream resourceStream = LOADER.getResourceAsStream(fileName)) { + PROPERTIES.load(resourceStream); + } catch (IOException exception) { + System.out.println(Arrays.toString(exception.getStackTrace())); + } + return PROPERTIES; + } + + public static Map> createCountryPaths() { + Properties resolutionProperties = readProperties(LORES_PROPERTIES); + + Map> academiePaths = new HashMap<>(); + + resolutionProperties.forEach((key, value) -> { + String name = key.toString(); + List pathList = new ArrayList<>(); + for (String path : value.toString().split(";")) { + pathList.add(new AcademiePath(Academie.get(name), path)); + } + academiePaths.put(name, pathList); + }); + + return academiePaths; + } + + public static AcademiePath get(Academie academie) { + return INSTANCES.get(academie); + } + + public Academie getAcademie() { + return academie; + } +} diff --git a/src/main/java/fr/univ_amu/iut/view/map/France.java b/src/main/java/fr/univ_amu/iut/view/map/France.java new file mode 100644 index 0000000..b58c28b --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/view/map/France.java @@ -0,0 +1,408 @@ +package fr.univ_amu.iut.view.map; + +import fr.univ_amu.iut.model.Academie; +import javafx.beans.DefaultProperty; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.css.*; +import javafx.event.EventHandler; +import javafx.event.EventType; +import javafx.event.WeakEventHandler; +import javafx.geometry.Insets; +import javafx.scene.Group; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.*; +import javafx.scene.paint.Color; +import javafx.scene.shape.SVGPath; + +import java.util.List; +import java.util.Map; + +import static javafx.scene.input.MouseEvent.*; +import static javafx.scene.input.MouseEvent.MOUSE_EXITED; + +@DefaultProperty("children") +public class France extends Region { + protected Pane pane = new Pane(); + protected Group group = new Group(); + private final Map> academiePaths = AcademiePath.createCountryPaths(); + private EventHandler mouseEnterHandler; + private EventHandler mousePressHandler; + private EventHandler mouseReleaseHandler; + private EventHandler mouseExitHandler; + private final EventHandler _mouseEnterHandler = evt -> handleMouseEvent(evt, mouseEnterHandler); + private final EventHandler _mousePressHandler= evt -> handleMouseEvent(evt, mousePressHandler); + private final EventHandler _mouseReleaseHandler= evt -> handleMouseEvent(evt, mouseReleaseHandler); + private final EventHandler _mouseExitHandler= evt -> handleMouseEvent(evt, mouseExitHandler); + + private static final StyleablePropertyFactory FACTORY = new StyleablePropertyFactory<>(Region.getClassCssMetaData()); + private static final CssMetaData BACKGROUND_COLOR = FACTORY.createColorCssMetaData("-background-color", s -> s.backgroundColor, Color.web("#3f3f4f"), false); + private static final CssMetaData FILL_COLOR = FACTORY.createColorCssMetaData("-fill-color", s -> s.fillColor, Color.web("#d9d9dc"), false); + private static final CssMetaData STROKE_COLOR = FACTORY.createColorCssMetaData("-stroke-color", s -> s.strokeColor, Color.BLACK, false); + private static final CssMetaData HOVER_COLOR = FACTORY.createColorCssMetaData("-hover-color", s -> s.hoverColor, Color.web("#456acf"), false); + private static final CssMetaData PRESSED_COLOR = FACTORY.createColorCssMetaData("-pressed-color", s -> s.pressedColor, Color.web("#789dff"), false); + private static final CssMetaData SELECTED_COLOR = FACTORY.createColorCssMetaData("-selected-color", s -> s.selectedColor, Color.web("#9dff78"), false); + private final StyleableProperty backgroundColor = new StyleableObjectProperty<>(BACKGROUND_COLOR.getInitialValue(France.this)) { + @Override + protected void invalidated() { + setBackground(new Background(new BackgroundFill(get(), CornerRadii.EMPTY, Insets.EMPTY))); + } + + @Override + public Object getBean() { + return France.this; + } + + @Override + public String getName() { + return "backgroundColor"; + } + + @Override + public CssMetaData getCssMetaData() { + return BACKGROUND_COLOR; + } + }; + + private final StyleableProperty fillColor = new StyleableObjectProperty<>(FILL_COLOR.getInitialValue(France.this)) { + @Override + protected void invalidated() { + setFillAndStroke(); + } + + @Override + public Object getBean() { + return France.this; + } + + @Override + public String getName() { + return "fillColor"; + } + + @Override + public CssMetaData getCssMetaData() { + return FILL_COLOR; + } + }; + private final StyleableProperty strokeColor = new StyleableObjectProperty<>(STROKE_COLOR.getInitialValue(France.this)) { + @Override + protected void invalidated() { + setFillAndStroke(); + } + + @Override + public Object getBean() { + return France.this; + } + + @Override + public String getName() { + return "strokeColor"; + } + + @Override + public CssMetaData getCssMetaData() { + return STROKE_COLOR; + } + }; + private final StyleableProperty hoverColor = new StyleableObjectProperty<>(HOVER_COLOR.getInitialValue(France.this)) { + @Override + protected void invalidated() { + } + + @Override + public Object getBean() { + return France.this; + } + + @Override + public String getName() { + return "hoverColor"; + } + + @Override + public CssMetaData getCssMetaData() { + return HOVER_COLOR; + } + }; + private final StyleableProperty pressedColor = new StyleableObjectProperty<>(PRESSED_COLOR.getInitialValue(this)) { + @Override + protected void invalidated() { + } + + @Override + public Object getBean() { + return France.this; + } + + @Override + public String getName() { + return "pressedColor"; + } + + @Override + public CssMetaData getCssMetaData() { + return PRESSED_COLOR; + } + }; + private final StyleableProperty selectedColor = new StyleableObjectProperty<>(SELECTED_COLOR.getInitialValue(this)) { + @Override + protected void invalidated() { + } + + @Override + public Object getBean() { + return France.this; + } + + @Override + public String getName() { + return "selectedColor"; + } + + @Override + public CssMetaData getCssMetaData() { + return SELECTED_COLOR; + } + }; + + private final BooleanProperty hoverEnabled = new SimpleBooleanProperty(true); + private final BooleanProperty selectionEnabled = new SimpleBooleanProperty(true); + + private final ObjectProperty selectedAcademie = new SimpleObjectProperty<>(); + + private Academie formerSelectedAcademie; + + public France() { + initGraphics(); + } + + private void initGraphics() { + Color fill = getFillColor(); + Color stroke = getStrokeColor(); + + academiePaths.forEach((name, pathList) -> { + Academie academie = Academie.get(name); + pathList.forEach(path -> { + path.setFill(fill); + path.setStroke(stroke); + path.setStrokeWidth(0.2); + path.setOnMouseEntered(new WeakEventHandler<>(_mouseEnterHandler)); + path.setOnMousePressed(new WeakEventHandler<>(_mousePressHandler)); + path.setOnMouseReleased(new WeakEventHandler<>(_mouseReleaseHandler)); + path.setOnMouseExited(new WeakEventHandler<>(_mouseExitHandler)); + }); + pane.getChildren().addAll(pathList); + }); + group.getChildren().add(pane); + + getChildren().setAll(group); + + setBackground(new Background(new BackgroundFill(getBackgroundColor(), CornerRadii.EMPTY, Insets.EMPTY))); + } + + public void setMouseEnterHandler(final EventHandler handler) { + mouseEnterHandler = handler; + } + + public void setMousePressHandler(final EventHandler handler) { + mousePressHandler = handler; + } + + public void setMouseReleaseHandler(final EventHandler handler) { + mouseReleaseHandler = handler; + } + + public void setMouseExitHandler(final EventHandler handler) { + mouseExitHandler = handler; + } + public Color getBackgroundColor() { + return backgroundColor.getValue(); + } + + public void setBackgroundColor(final Color COLOR) { + backgroundColor.setValue(COLOR); + } + + public ObjectProperty backgroundColorProperty() { + return (ObjectProperty) backgroundColor; + } + + public Color getFillColor() { + return fillColor.getValue(); + } + + public void setFillColor(final Color COLOR) { + fillColor.setValue(COLOR); + } + + public ObjectProperty fillColorProperty() { + return (ObjectProperty) fillColor; + } + + public Color getStrokeColor() { + return strokeColor.getValue(); + } + + public void setStrokeColor(final Color COLOR) { + strokeColor.setValue(COLOR); + } + + public ObjectProperty strokeColorProperty() { + return (ObjectProperty) strokeColor; + } + + public Color getHoverColor() { + return hoverColor.getValue(); + } + + public void setHoverColor(final Color COLOR) { + hoverColor.setValue(COLOR); + } + + public ObjectProperty hoverColorProperty() { + return (ObjectProperty) hoverColor; + } + + public Color getPressedColor() { + return pressedColor.getValue(); + } + + public void setPressedColor(final Color COLOR) { + pressedColor.setValue(COLOR); + } + + public ObjectProperty pressedColorProperty() { + return (ObjectProperty) pressedColor; + } + + public Color getSelectedColor() { + return selectedColor.getValue(); + } + + public void setSelectedColor(final Color COLOR) { + selectedColor.setValue(COLOR); + } + + public ObjectProperty selectedColorProperty() { + return (ObjectProperty) selectedColor; + } + + public boolean isHoverEnabled() { + return hoverEnabled.get(); + } + + public void setHoverEnabled(final boolean ENABLED) { + hoverEnabled.set(ENABLED); + } + + public BooleanProperty hoverEnabledProperty() { + return hoverEnabled; + } + + public boolean isSelectionEnabled() { + return selectionEnabled.get(); + } + + public void setSelectionEnabled(final boolean ENABLED) { + selectionEnabled.set(ENABLED); + } + + public BooleanProperty selectionEnabledProperty() { + return selectionEnabled; + } + + public Academie getSelectedAcademie() { + return selectedAcademie.get(); + } + + public void setSelectedAcademie(final Academie academie) { + selectedAcademie.set(academie); + } + + public ObjectProperty selectedAcademieProperty() { + return selectedAcademie; + } + + + private void handleMouseEvent(final MouseEvent EVENT, final EventHandler HANDLER) { + final AcademiePath academiePath = (AcademiePath) EVENT.getSource(); + final Academie academie = academiePath.getAcademie(); + final List PATHS = academiePaths.get(academie.getCode()); + + final EventType TYPE = EVENT.getEventType(); + if (MOUSE_ENTERED == TYPE) { + if (isHoverEnabled()) { + Color color = isSelectionEnabled() && academie.equals(getSelectedAcademie()) ? getSelectedColor() : getHoverColor(); + for (SVGPath path : PATHS) { + path.setFill(color); + } + } + } else if (MOUSE_PRESSED == TYPE) { + if (isSelectionEnabled()) { + Color color; + if (null == getSelectedAcademie()) { + setSelectedAcademie(academie); + color = getSelectedColor(); + } else { + color = getFillColor(); + } + for (SVGPath path : academiePaths.get(getSelectedAcademie().getCode())) { + path.setFill(color); + } + } else { + if (isHoverEnabled()) { + for (SVGPath path : PATHS) { + path.setFill(getPressedColor()); + } + } + } + } else if (MOUSE_RELEASED == TYPE) { + Color color; + if (isSelectionEnabled()) { + if (formerSelectedAcademie == academie) { + setSelectedAcademie(null); + color = getFillColor(); + } else { + setSelectedAcademie(academie); + color = getSelectedColor(); + } + formerSelectedAcademie = getSelectedAcademie(); + } else { + color = getHoverColor(); + } + if (isHoverEnabled()) { + for (SVGPath path : PATHS) { + path.setFill(color); + } + } + } else if (MOUSE_EXITED == TYPE) { + if (isHoverEnabled()) { + Color color = isSelectionEnabled() && academie.equals(getSelectedAcademie()) ? getSelectedColor() : getFillColor(); + for (SVGPath path : PATHS) { + path.setFill(color); + } + } + } + + if (null != HANDLER) HANDLER.handle(EVENT); + } + + private void setFillAndStroke() { + academiePaths.keySet().forEach(name -> { + Academie academie = Academie.get(name); + setAcademieFillAndStroke(academie, getFillColor() , getStrokeColor()); + }); + } + + private void setAcademieFillAndStroke(final Academie academie, final Color fill, final Color stroke) { + List paths = academiePaths.get(academie.getCode()); + for (AcademiePath path : paths) { + path.setFill(fill); + path.setStroke(stroke); + } + } +} diff --git a/src/main/java/fr/univ_amu/iut/view/map/FranceBuilder.java b/src/main/java/fr/univ_amu/iut/view/map/FranceBuilder.java new file mode 100644 index 0000000..18f9f75 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/view/map/FranceBuilder.java @@ -0,0 +1,191 @@ +package fr.univ_amu.iut.view.map; + + +import javafx.beans.property.*; +import javafx.event.EventHandler; +import javafx.geometry.Dimension2D; +import javafx.geometry.Insets; +import javafx.scene.input.MouseEvent; +import javafx.scene.paint.Color; + +import java.util.HashMap; + +public class FranceBuilder> { + private final HashMap properties = new HashMap<>(); + + private FranceBuilder() { + + } + + public static FranceBuilder create() { + return new FranceBuilder(); + } + + public final B backgroundColor(final Color COLOR) { + properties.put("backgroundColor", new SimpleObjectProperty<>(COLOR)); + return (B) this; + } + + public final B fillColor(final Color COLOR) { + properties.put("fillColor", new SimpleObjectProperty<>(COLOR)); + return (B)this; + } + + public final B strokeColor(final Color COLOR) { + properties.put("strokeColor", new SimpleObjectProperty<>(COLOR)); + return (B)this; + } + public final B hoverColor(final Color COLOR) { + properties.put("hoverColor", new SimpleObjectProperty<>(COLOR)); + return (B)this; + } + + public final B pressedColor(final Color COLOR) { + properties.put("pressedColor", new SimpleObjectProperty<>(COLOR)); + return (B)this; + } + + public final B selectedColor(final Color COLOR) { + properties.put("selectedColor", new SimpleObjectProperty(COLOR)); + return (B)this; + } + public final B hoverEnabled(final boolean ENABLED) { + properties.put("hoverEnabled", new SimpleBooleanProperty(ENABLED)); + return (B)this; + } + + public final B selectionEnabled(final boolean ENABLED) { + properties.put("selectionEnabled", new SimpleBooleanProperty(ENABLED)); + return (B)this; + } + public final B mouseEnterHandler(final EventHandler HANDLER) { + properties.put("mouseEnterHandler", new SimpleObjectProperty(HANDLER)); + return (B)this; + } + + public final B mousePressHandler(final EventHandler HANDLER) { + properties.put("mousePressHandler", new SimpleObjectProperty(HANDLER)); + return (B)this; + } + + public final B mouseReleaseHandler(final EventHandler HANDLER) { + properties.put("mouseReleaseHandler", new SimpleObjectProperty(HANDLER)); + return (B)this; + } + + public final B mouseExitHandler(final EventHandler HANDLER) { + properties.put("mouseExitHandler", new SimpleObjectProperty(HANDLER)); + return (B)this; + } + public final B prefSize(final double WIDTH, final double HEIGHT) { + properties.put("prefSize", new SimpleObjectProperty<>(new Dimension2D(WIDTH, HEIGHT))); + return (B)this; + } + public final B minSize(final double WIDTH, final double HEIGHT) { + properties.put("minSize", new SimpleObjectProperty<>(new Dimension2D(WIDTH, HEIGHT))); + return (B)this; + } + public final B maxSize(final double WIDTH, final double HEIGHT) { + properties.put("maxSize", new SimpleObjectProperty<>(new Dimension2D(WIDTH, HEIGHT))); + return (B)this; + } + + public final B prefWidth(final double PREF_WIDTH) { + properties.put("prefWidth", new SimpleDoubleProperty(PREF_WIDTH)); + return (B)this; + } + public final B prefHeight(final double PREF_HEIGHT) { + properties.put("prefHeight", new SimpleDoubleProperty(PREF_HEIGHT)); + return (B)this; + } + + public final B minWidth(final double MIN_WIDTH) { + properties.put("minWidth", new SimpleDoubleProperty(MIN_WIDTH)); + return (B)this; + } + public final B minHeight(final double MIN_HEIGHT) { + properties.put("minHeight", new SimpleDoubleProperty(MIN_HEIGHT)); + return (B)this; + } + + public final B maxWidth(final double MAX_WIDTH) { + properties.put("maxWidth", new SimpleDoubleProperty(MAX_WIDTH)); + return (B)this; + } + public final B maxHeight(final double MAX_HEIGHT) { + properties.put("maxHeight", new SimpleDoubleProperty(MAX_HEIGHT)); + return (B)this; + } + public final B padding(final Insets INSETS) { + properties.put("padding", new SimpleObjectProperty<>(INSETS)); + return (B)this; + } + + public final France build() { + final France france = new France(); + + for (String key : properties.keySet()) { + if ("prefSize".equals(key)) { + Dimension2D dim = ((ObjectProperty) properties.get(key)).get(); + france.setPrefSize(dim.getWidth(), dim.getHeight()); + } else if("minSize".equals(key)) { + Dimension2D dim = ((ObjectProperty) properties.get(key)).get(); + france.setMinSize(dim.getWidth(), dim.getHeight()); + } else if("maxSize".equals(key)) { + Dimension2D dim = ((ObjectProperty) properties.get(key)).get(); + france.setMaxSize(dim.getWidth(), dim.getHeight()); + } else if("prefWidth".equals(key)) { + france.setPrefWidth(((DoubleProperty) properties.get(key)).get()); + } else if("prefHeight".equals(key)) { + france.setPrefHeight(((DoubleProperty) properties.get(key)).get()); + } else if("minWidth".equals(key)) { + france.setMinWidth(((DoubleProperty) properties.get(key)).get()); + } else if("minHeight".equals(key)) { + france.setMinHeight(((DoubleProperty) properties.get(key)).get()); + } else if("maxWidth".equals(key)) { + france.setMaxWidth(((DoubleProperty) properties.get(key)).get()); + } else if("maxHeight".equals(key)) { + france.setMaxHeight(((DoubleProperty) properties.get(key)).get()); + } else if("scaleX".equals(key)) { + france.setScaleX(((DoubleProperty) properties.get(key)).get()); + } else if("scaleY".equals(key)) { + france.setScaleY(((DoubleProperty) properties.get(key)).get()); + } else if ("layoutX".equals(key)) { + france.setLayoutX(((DoubleProperty) properties.get(key)).get()); + } else if ("layoutY".equals(key)) { + france.setLayoutY(((DoubleProperty) properties.get(key)).get()); + } else if ("translateX".equals(key)) { + france.setTranslateX(((DoubleProperty) properties.get(key)).get()); + } else if ("translateY".equals(key)) { + france.setTranslateY(((DoubleProperty) properties.get(key)).get()); + } else if ("padding".equals(key)) { + france.setPadding(((ObjectProperty) properties.get(key)).get()); + } else if ("backgroundColor".equals(key)) { + france.setBackgroundColor(((ObjectProperty) properties.get(key)).get()); + } else if ("fillColor".equals(key)) { + france.setFillColor(((ObjectProperty) properties.get(key)).get()); + } else if ("strokeColor".equals(key)) { + france.setStrokeColor(((ObjectProperty) properties.get(key)).get()); + } else if ("hoverColor".equals(key)) { + france.setHoverColor(((ObjectProperty) properties.get(key)).get()); + } else if ("pressedColor".equals(key)) { + france.setPressedColor(((ObjectProperty) properties.get(key)).get()); + } else if ("selectedColor".equals(key)) { + france.setSelectedColor(((ObjectProperty) properties.get(key)).get()); + } else if ("hoverEnabled".equals(key)) { + france.setHoverEnabled(((BooleanProperty) properties.get(key)).get()); + } else if ("selectionEnabled".equals(key)) { + france.setSelectionEnabled(((BooleanProperty) properties.get(key)).get()); + } else if ("mouseEnterHandler".equals(key)) { + france.setMouseEnterHandler(((ObjectProperty>) properties.get(key)).get()); + } else if ("mousePressHandler".equals(key)) { + france.setMousePressHandler(((ObjectProperty>) properties.get(key)).get()); + } else if ("mouseReleaseHandler".equals(key)) { + france.setMouseReleaseHandler(((ObjectProperty>) properties.get(key)).get()); + } else if ("mouseExitHandler".equals(key)) { + france.setMouseExitHandler(((ObjectProperty>) properties.get(key)).get()); + } + } + return france; + } +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java new file mode 100644 index 0000000..32d87e3 --- /dev/null +++ b/src/main/java/module-info.java @@ -0,0 +1,17 @@ +open module francefx { + requires transitive javafx.base; + requires transitive javafx.controls; + requires transitive javafx.graphics; + requires transitive javafx.fxml; + requires transitive org.kordamp.ikonli.javafx; + requires transitive org.kordamp.ikonli.materialdesign; + requires transitive org.kordamp.ikonli.core; + + requires jakarta.persistence; + + exports fr.univ_amu.iut.view.map; + exports fr.univ_amu.iut.model; + exports fr.univ_amu.iut; + exports fr.univ_amu.iut.dao; + exports fr.univ_amu.iut.dao.factory; +} \ No newline at end of file diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..22053c9 --- /dev/null +++ b/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,23 @@ + + + + + org.eclipse.persistence.jpa.PersistenceProvider + false + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/fr/univ_amu/iut/francefx/france.css b/src/main/resources/fr/univ_amu/iut/francefx/france.css new file mode 100644 index 0000000..74ee6c0 --- /dev/null +++ b/src/main/resources/fr/univ_amu/iut/francefx/france.css @@ -0,0 +1,9 @@ + +.france { + -background-color: #3f3f4f; + -fill-color : #d9d9dc; + -stroke-color : #000000; + -hover-color : #456acf; + -pressed-color : #789dff; + -selected-color : #9dff78; +} diff --git a/src/main/resources/fr/univ_amu/iut/francefx/lores.properties b/src/main/resources/fr/univ_amu/iut/francefx/lores.properties new file mode 100644 index 0000000..545652e --- /dev/null +++ b/src/main/resources/fr/univ_amu/iut/francefx/lores.properties @@ -0,0 +1,30 @@ +AI=m 533.4272,323.0308 1.283,5.736 0.258,0.343 1.711,1.968 3.425,-0.086 -3.683,8.988 -5.819,0.258 -4.966,3.253 -0.772,6.333 -2.652,0.087 -2.224,4.964 -5.908,-1.113 -1.882,-1.968 -7.449,3.425 -1.54,-3.683 1.712,-4.023 4.195,-2.996 -0.343,-5.564 -2.996,1.027 -12.069,-3.681 -0.944,-2.74 -5.221,-1.111 -0.941,-2.998 -0.341,-3.251 -5.48,-0.343 -2.398,-6.506 2.826,-2.054 -2.397,-2.482 -3.938,1.368 -3.168,-4.879 1.457,-2.567 9.587,-5.479 -0.171,-4.451 -0.943,-0.257 -2.224,-0.087 -4.11,-4.535 -4.966,2.14 -0.171,2.739 -8.987,0.854 -0.428,5.566 -2.482,-2.141 -2.312,1.37 -8.303,-3.766 -3.424,4.109 -5.565,0.6 0.086,-3.511 2.482,-4.366 0.172,-5.22 6.077,-6.164 -8.131,-8.732 -1.799,-10.187 -3.166,0.855 -4.024,-4.621 0.941,-2.654 -5.563,-1.626 -3.682,-5.736 13.782,-0.428 1.884,-2.397 -0.514,-2.654 3.597,-0.77 9.328,0.942 -2.14,2.311 1.199,2.396 2.654,-0.257 4.366,-5.22 12.754,1.454 3.768,-8.472 9.33,-2.228 2.654,0.771 0.172,-0.171 0.341,3.253 2.484,1.883 -2.227,5.991 1.113,2.568 2.653,0.428 -5.307,8.732 1.883,5.137 3.169,0.77 -1.884,3.681 v 0.085 l 0.171,0.343 5.05,-0.258 2.654,1.713 3.766,-4.623 9.76,8.132 5.648,-3.424 1.2,3.339 9.331,0.427 2.996,1.371 -1.286,2.482 5.052,3.767 4.963,-0.684 -6.675,7.446 -4.11,8.134 1.884,5.22 5.907,6.592 -0.172,0.17 1.798,4.709 -3.767,5.222 z +AM=m 409.1313,639.0747 0.086,0.342 -15.066,4.024 -4.966,-1.713 -2.225,1.627 -2.482,-2.14 -12.157,-0.6 -3.166,2.568 -8.218,-1.712 -0.771,2.997 -2.311,-1.627 -2.654,4.451 -0.855,-2.653 -8.046,3.338 -2.398,-2.996 -1.626,2.996 2.483,5.564 -11.472,-2.482 -6.848,5.564 -0.942,2.91 -11.726,1.029 -3.597,-1.37 -0.342,-2.911 2.911,-5.308 -2.653,1.456 -6.251,-8.56 12.07,-10.273 3.338,-8.133 -2.996,-4.451 1.283,-8.475 -1.283,-7.704 3.425,-8.046 -3.852,-2.483 1.541,-3.081 5.392,-1.028 6.078,1.712 8.818,-2.14 2.14,1.626 10.442,-6.162 6.592,-0.942 1.969,2.054 2.397,-1.54 7.792,2.825 2.567,-0.686 1.711,-2.397 -0.683,-2.738 3.766,-4.025 8.902,-5.821 7.362,9.846 -2.396,1.284 0.854,2.568 -1.541,2.396 5.223,2.14 -3.082,7.706 1.198,2.568 7.619,3.764 5.135,-1.71 0.944,2.739 -0.257,13.695 2.653,0.257 4.793,6.934 -1.284,2.996 1.284,3.339 -0.768,5.479 -0.344,-0.085 z +BE=m 461.9478,500.1416 2.569,1.626 1.969,-2.996 0.17,-2.996 -4.537,-3.939 2.568,-1.37 3.68,-7.874 -1.111,-1.2 -1.713,-7.96 -5.991,-6.507 -1.027,-3.851 0.428,-2.91 7.962,-4.195 -4.796,-3.595 2.398,-1.541 2.055,-8.389 -2.741,-4.794 0.856,-5.051 -2.654,-1.026 4.025,-7.447 h 2.825 l 0.085,-2.911 2.826,0.086 3.851,4.281 3.254,-1.541 0.427,-2.74 3.681,0.257 5.222,3.081 4.536,6.249 -0.171,0.17 2.569,8.646 0.085,0.172 0.771,2.74 11.298,10.358 -0.854,9.33 8.303,5.735 11.214,13.866 -0.172,2.74 2.227,2.055 -4.109,3.424 0.855,2.912 0.256,0.17 3.424,3.852 0.258,0.087 0.085,0.085 3.767,0.428 -2.14,4.879 -2.654,-0.171 -0.429,8.731 -7.275,4.794 -0.942,-0.6 -8.046,6.335 -4.88,-2.141 -4.708,3.511 -5.478,-1.542 -6.763,4.023 -7.788,-5.477 0.168,-1.37 -2.139,-3.083 -2.739,0.344 -2.054,-2.312 -0.257,-8.045 -2.912,-0.942 -2.139,1.711 -6.334,-3.766 z +BO=m 269.6846,386.6318 v 0 l -5.479,-5.906 -2.053,-5.051 -7.534,-5.648 -0.769,-5.564 -3.853,-5.478 -5.308,-0.77 -1.882,-1.798 h -0.087 v -0.515 l -1.968,-4.708 -9.073,0.941 -5.908,4.11 -0.513,5.563 -6.163,1.627 -0.6,2.739 -5.65,-0.77 0.514,-2.654 -2.055,-3.252 -2.396,7.533 -10.273,10.101 -0.942,2.74 -2.824,-5.566 -5.907,-48.194 3.767,7.447 4.28,-4.964 0.256,-2.739 -6.163,0.855 -3.083,-6.589 0.087,-4.538 -10.615,-48.109 -3.596,-6.849 -4.45,-6.077 -6.079,-4.453 5.565,-2.568 0.514,-2.995 2.139,1.969 6.335,-1.283 1.37,-2.739 -1.798,-5.65 -2.568,-2.227 1.284,-2.74 3.766,-0.854 0.429,3.424 2.824,0.856 0.256,-3.167 5.566,-3.082 9.33,-3.595 5.992,0.342 2.568,-4.536 7.534,-6.164 2.226,1.626 2.225,-1.369 5.735,2.911 h 0.086 l 1.197,8.302 1.541,2.654 3.253,0.77 -0.426,2.826 7.788,8.902 -0.77,2.995 2.568,1.283 -0.513,7.02 h -2.739 l 1.37,2.655 -2.312,5.564 -0.085,0.087 -6.335,0.255 -1.455,2.567 4.023,10.702 -0.429,6.077 8.903,2.655 0.686,-2.912 2.395,1.286 0.343,2.824 v 0.087 l 3.595,-0.686 1.285,2.398 8.047,-0.687 4.793,2.739 8.218,-0.941 2.567,1.284 3.512,4.538 2.653,-0.257 -1.283,2.653 4.279,5.307 -2.396,1.284 v 2.825 l 7.275,1.883 -2.568,8.817 3.337,2.996 4.367,6.164 5.907,3.339 -0.599,3.425 4.365,3.081 1.284,5.136 0.599,4.793 -3.252,6.678 -3.169,0.684 -0.17,2.911 -2.225,1.455 1.969,1.711 -1.713,2.826 3.424,4.451 -2.654,4.537 -5.565,2.053 1.971,2.655 -6.848,5.392 -9.16,-1.111 0.085,4.535 z +CL=m 387.2178,441.8452 -4.109,3.596 -2.74,-1.713 -6.164,0.172 -5.564,6.078 h -3.852 l -4.623,-3.51 -8.132,-2.825 -2.139,-1.798 1.626,-5.136 -1.626,-2.311 -8.388,-0.942 -3.34,-5.65 v -0.085 l 1.028,-3.765 c 2.397,-1.541 4.793,-3.082 7.106,-4.622 l 3.506,-8.047 -0.512,-3.938 2.226,-6.505 -8.988,-8.305 4.278,-5.221 1.201,-5.307 -1.711,-2.398 1.883,-13.439 -5.993,1.883 -0.599,-3.253 -7.277,-9.158 1.713,-2.141 -2.226,-1.798 -0.257,-3.338 -2.996,-1.112 1.455,-3.168 -3.168,-1.798 0.943,-5.308 3.681,-5.734 -1.714,-5.564 3.168,-4.794 4.966,3.081 6.077,-1.541 3.681,4.707 2.91,8.732 4.537,4.109 5.051,-3.937 1.198,-4.023 2.311,-1.541 -0.513,-2.91 2.482,-4.879 6.591,15.238 1.799,-2.141 7.447,6.42 2.225,-1.627 1.371,-5.479 6.163,-1.198 0.172,2.74 2.739,-0.257 8.645,-7.362 6.421,6.164 5.735,1.796 3.252,5.736 3.252,0.343 -0.683,2.74 2.568,2.139 1.454,5.051 2.483,-1.198 v 2.996 l 0.857,4.023 -2.139,2.225 -2.569,-0.941 -0.599,5.307 -5.736,2.139 -6.077,-2.909 -2.655,-0.428 -2.224,1.968 -2.655,-0.77 2.826,6.847 -2.569,7.19 -4.366,3.596 -4.538,7.448 2.056,5.991 -2.398,2.655 5.308,4.537 -1.457,12.07 0.429,2.824 3.768,1.283 3.596,4.453 0.426,5.221 -1.539,2.311 -7.621,2.825 -6.419,13.012 z +CO=m 540.2744,217.6431 0.428,-16.692 -8.218,1.283 -3.423,-4.707 -10.272,-4.11 -0.857,-2.739 -2.652,-0.257 -2.141,-2.739 0.342,-3.253 -3.767,-4.794 -0.513,-2.825 2.483,0.942 3.681,-4.023 -5.053,-3.595 1.029,-5.308 7.533,-4.196 -2.482,-1.625 -2.825,-8.047 6.934,2.482 0.856,-5.564 -2.483,-6.762 8.989,-1.798 -4.623,-3.168 -0.171,-2.824 4.622,-4.28 10.702,-3.254 1.198,-2.653 2.996,-1.2 5.562,14.126 -3.167,0.342 2.569,1.884 1.97,5.221 -0.686,14.211 5.137,11.471 -3.595,24.995 -3.853,5.479 0.514,10.187 -1.712,8.731 -2.739,1.027 z +CR=m 356.8276,584.2891 -6.592,0.942 0.259,-1.97 -1.713,-2.224 -0.085,-0.087 c -0.6,-0.428 -1.285,-0.857 -1.97,-1.37 -0.856,-0.599 -1.712,-1.199 -2.567,-1.799 l -2.483,1.029 -3.166,-1.285 1.283,-1.883 -0.086,-1.027 0.257,-2.911 1.97,1.37 v 1.883 h 4.876 l 4.625,-2.14 4.365,-4.28 v -3.081 l -1.54,-4.195 h 0.171 l 4.623,-1.97 -0.028,-1.856 -3.91,-0.111 -0.43,-1.285 h -4.451 v -0.685 h -1.539 l -2.396,-10.615 -3.341,-4.537 0.686,-2.996 4.022,-4.108 -0.513,-2.569 -2.567,-1.455 8.816,-0.685 10.786,2.567 3.682,5.138 0.256,5.649 14.809,2.911 -0.428,8.217 2.826,0.685 2.91,4.794 -2.483,1.626 -3.338,7.962 2.396,2.14 0.428,1.883 -8.901,5.82 -3.767,4.026 0.684,2.737 -1.711,2.398 -2.568,0.685 -7.791,-2.824 -2.397,1.539 z +DI=m 443.373,516.4897 -2.825,0.343 0.343,2.74 -2.569,0.941 -0.514,2.653 -3.338,0.685 v -0.086 l -3.68,0.514 -4.538,-3.766 -5.907,-0.857 -2.14,-1.882 -2.826,1.284 -12.069,-1.541 -4.793,10.53 -3.509,4.022 -1.885,-2.14 -2.396,7.961 -4.28,5.394 -3.511,1.37 -14.809,-2.912 -0.255,-5.649 -3.682,-5.137 6.421,-7.191 0.428,-5.563 -4.453,-4.71 1.028,-2.824 -1.454,-2.31 -5.137,-3.166 2.909,-2.74 2.057,-6.677 -2.656,-0.6 -1.454,-2.311 1.883,-6.25 -1.626,-5.563 2.653,-2.055 2.995,-7.277 0.259,-5.649 2.14,-1.883 -0.258,-5.649 -1.284,-8.56 5.564,-6.079 6.164,-0.172 2.74,1.714 4.109,-3.597 5.735,5.823 6.419,-13.013 7.621,-2.825 1.539,-2.311 -0.426,-5.22 -3.597,-4.453 v -2.91 l 4.964,-3.167 7.706,1.456 1.967,-2.055 5.479,3.681 0.344,2.91 2.225,1.798 2.054,-1.713 2.226,1.628 2.312,-1.457 1.541,2.226 5.564,-7.446 5.649,20.115 5.651,-1.455 5.135,1.198 4.622,-3.082 h 0.085 l 2.654,1.027 -0.856,5.051 2.74,4.794 -2.054,8.389 -2.398,1.541 4.796,3.594 -7.962,4.196 -0.429,2.909 1.027,3.852 5.992,6.507 1.713,7.96 1.111,1.2 -3.68,7.874 -2.568,1.37 4.537,3.939 -0.17,2.996 -1.969,2.996 -2.569,-1.626 -4.622,-1.798 v 2.739 l -2.911,1.455 -8.902,1.97 -2.14,4.536 2.654,2.395 -1.028,2.998 z +GA=m 93.4536,224.5448 c -1.396,-0.627 -3.421,2.12 -3.784,3.201 -0.58,1.73 -0.654,3.053 -1.773,4.597 -1.096,1.514 -1.88,1.75 -1.61,3.774 0.255,1.906 0.521,3.628 0.265,5.532 -0.23,1.724 -1.407,2.224 -1.501,3.895 -0.102,1.788 0.342,2.471 1.535,3.752 1.193,1.294 2.58,2.305 3.715,3.707 0.944,1.161 2.069,3.6 3.418,4.243 0.478,0.239 1.325,-0.057 1.961,-0.025 0.519,-1.001 1.547,-1.613 1.848,-2.805 1.652,-0.214 3.341,-1.117 4.941,-1.675 2.025,-0.704 3.14,-2.422 5.228,-2.989 1.081,-0.284 2.123,-0.329 3.201,-0.724 1.106,-0.398 1.705,-1.087 2.773,-1.68 1.441,-0.798 4.795,-1.342 4.409,-3.574 0.399,-0.089 1.01,0.115 1.316,-0.009 1.123,-0.459 0.897,-1.119 1.538,-1.824 0.791,-0.874 1.976,-1.424 2.856,-2.238 0.756,-0.694 1.377,-1.513 2.095,-2.253 1.176,-1.231 1.628,-1.25 2.944,-1.652 1.389,-0.424 1.643,-0.758 1.254,-2.225 0.446,-0.392 1.198,-0.59 1.756,-0.551 0.098,-1.798 -0.159,-3.424 -0.302,-5.162 -3.342,-0.28 -3.925,-3.876 -5.378,-5.84 -1.957,-2.627 -3.756,-5.171 -5.586,-7.836 -0.794,-1.157 -1.792,-1.941 -2.104,-3.405 -0.178,-0.844 0.083,-1.781 -0.111,-2.613 -0.253,-1.107 -1.052,-1.866 -1.837,-2.824 -2.398,-2.944 -5.62,-4.933 -8.655,-7.01 -1.007,-0.686 -0.749,-0.651 -1.974,-0.792 -0.983,-0.112 -2.591,-0.433 -3.582,-0.3 -0.989,0.135 -1.049,0.724 -1.804,1.158 -0.976,0.558 -0.794,0.443 -1.958,0.045 -1.094,-0.373 -1.852,-1.024 -2.85,-1.397 -0.804,-0.293 -1.556,-0.127 -2.368,-0.373 -1.441,-0.437 -1.681,-1.989 -2.991,-0.443 -0.341,0.405 -0.43,0.998 -0.784,1.456 -0.443,0.581 -1.224,1.002 -1.766,1.509 -0.44,0.405 -0.877,1.065 -1.381,1.377 -0.325,0.207 -1.508,0.278 -1.625,0.596 -0.23,0.654 2.135,2.318 2.665,2.853 1.985,2.037 2.847,2.678 2.853,5.662 0.007,0.982 -0.287,1.999 -0.182,2.977 0.08,0.724 0.555,1.439 0.759,2.299 0.274,1.119 -0.019,2.149 0.015,3.252 0.03,1.001 0.504,2.734 1.235,3.64 0.621,0.775 1.705,0.57 1.475,2.091 z +GR=m 452.7036,382.1812 -6.677,-1.455 -2.396,-2.396 1.797,-2.398 -4.282,-3.851 0.172,-1.026 v -4.281 l -4.793,-2.568 -3.082,-4.709 -3.338,-0.684 -0.857,-4.023 v -2.996 l -2.482,1.198 -1.455,-5.051 -2.568,-2.139 0.684,-2.74 -3.253,-0.343 -3.252,-5.736 -5.735,-1.796 -6.421,-6.164 1.968,-8.732 6.764,-13.695 7.447,-4.794 6.762,4.194 0.172,-2.996 2.396,2.226 h 2.654 l 5.821,-3.339 -0.085,3.51 5.564,-0.599 3.424,-4.11 8.304,3.766 2.311,-1.369 2.483,2.141 0.428,-5.566 8.986,-0.854 0.172,-2.74 4.966,-2.14 4.109,4.536 2.225,0.087 0.943,0.257 0.171,4.45 -9.587,5.479 -1.457,2.568 3.168,4.879 3.938,-1.368 2.396,2.481 -2.825,2.054 2.398,6.506 5.48,0.344 0.341,3.251 0.941,2.997 5.221,1.112 0.943,2.74 12.07,3.68 2.996,-1.026 0.343,5.564 -4.195,2.996 -1.713,4.022 1.541,3.683 7.448,-3.424 1.883,1.968 5.907,1.113 v 0.085 l 18.49,7.961 1.968,3.424 -1.113,2.568 2.655,4.966 -7.019,4.879 -2.141,5.306 0.686,2.996 -5.394,2.228 -2.739,2.567 -0.516,2.91 v 0.17 l 0.172,0.172 7.963,7.705 0.941,2.996 -3.253,4.366 -7.534,7.104 2.312,5.992 -3.597,5.136 0.429,2.739 -3.167,0.685 -8.131,-0.6 -4.795,-4.023 -3.338,1.455 -2.74,-5.647 2.313,-2.911 -6.679,-5.136 -6.505,-0.942 -2.653,-2.739 h -2.74 l 0.685,-8.903 v -0.085 l -2.139,-13.011 -5.564,-6.507 -10.616,14.639 -2.738,-0.685 -2.912,-4.88 -5.82,1.884 0.341,-6.849 z +GU=m 90.1821,350.43873 -0.522,0.085 0.186,-0.335 0.511,-0.07 z m -1.646,-3.962 0.161,-0.169 h 0.247 l -0.145,0.184 z m -1.669,3.06 -0.949,-0.512 -0.381,-1.294 1.048,-0.612 0.849,0.523 0.261,0.771 -0.482,0.773 z m 48.579,30.442 -0.567,0.046 0.757,-0.667 h 0.276 l 0.687,0.115 0.316,0.466 -0.521,0.086 z m 1.514,0.206 0.176,0.191 -0.176,0.055 z m 8.823,17.509 -2.348,-0.943 -3.811,-3.229 -1.249,-0.688 2.212,-0.306 2.763,1.164 4.905,3.245 z m -55.631,-50.88 0.03,-0.397 0.451,-0.361 -0.046,0.391 z m 0.435,50.489 0.949,0.261 -0.421,0.291 -0.306,0.175 -0.436,-0.145 -0.467,-0.627 0.231,-0.406 z m 3.642,-6.941 -0.244,0.491 -0.598,0.612 -1.225,-0.191 -0.946,-0.772 -0.452,-1.073 -1.019,1.033 -0.305,0.391 -0.407,-0.331 -0.014,-0.105 -0.145,0.115 -0.803,0.321 1.369,0.627 -1.645,2.011 -3.315,1.745 -3.552,1.224 -2.416,0.477 -0.964,0.451 -0.622,0.878 -0.902,0.562 -1.791,-0.477 -1.399,-1.179 -1.615,-2.854 -0.948,-0.796 0.335,-1.315 -0.375,-3.114 0.04,-1.721 0.527,-1.058 0.772,-1.078 0.436,-1.209 -0.466,-1.484 1.424,-3.577 0.09,-7.874 1.179,-3.54 0.828,-0.551 0.391,-0.918 0.35,-1.149 0.713,-1.193 1.124,-1.005 0.988,-0.642 0.843,-0.756 0.686,-1.338 -0.712,-0.674 0.566,-1.464 0.146,-0.582 4.975,2.106 4.439,2.639 3.029,3.666 0.798,5.271 -0.667,5.456 -1.224,3.492 -0.2,4.629 0.652,1.033 1.735,0.376 0.652,0.191 -0.727,1.976 z m -1.744,-40.128 -0.147,0.276 -0.567,0.23 -0.586,-0.261 -0.505,-1.002 -0.512,-0.322 -0.508,-0.461 0.306,-0.441 1.004,0.336 1.117,0.787 0.542,0.462 -0.105,0.249 z m 36.542,38.453 -5.222,3.65 -1.008,0.497 -0.567,0.376 -2.096,1.795 -0.928,0.563 -1.107,0.18 -0.974,-0.031 -0.933,0.071 -1.003,0.522 -0.657,-0.742 -1.394,0.762 -1.21,0.853 -1.062,1.063 -0.948,1.414 -0.742,1.555 -0.146,1.003 0.235,2.623 -0.421,2.633 -1.139,2.056 -1.674,1.685 -3.125,2.257 -0.321,0.131 -0.28,-0.331 -2.98,-1.605 -0.933,-0.682 -0.391,-0.657 -1.5,-1.806 -0.848,-1.309 0.047,-0.973 0.451,-0.903 0.536,-3.571 0.772,-0.17 0.803,-0.321 0.668,-0.421 0.395,-0.452 0.101,-0.671 -0.03,-0.933 -0.146,-0.823 -0.261,-0.366 -1.775,-0.426 -0.919,-1.104 -1.584,-5.226 v -0.01 l -0.366,-1.445 -0.044,-1.293 0.41,-1.225 0.989,-1.233 1.293,-1.033 1.645,-0.978 1.906,-0.742 2.066,-0.351 1.721,0.275 3.244,1.43 17.012,3.887 1.5,-0.412 0.742,-0.351 2.707,-0.652 0.804,-0.015 1.088,0.888 -0.536,0.582 z m -1.585,-31.016 -0.728,0.582 -1.118,2.849 -1.911,1.645 -2.357,0.527 -2.122,-1.165 -1.75,-1.989 -0.667,-1.065 -0.276,-1.444 -0.933,-1.324 -0.407,-0.727 0.322,-0.335 0.346,-0.277 0.336,-0.668 0.231,-0.801 0.105,-0.652 1.249,-2.593 2.929,-0.467 3.289,0.802 2.413,1.204 1.108,0.874 0.638,0.792 0.28,0.882 0.071,1.254 -0.322,1.293 z +LI=m 338.1665,427.7212 v 0 l -4.707,0.171 -2.653,-0.771 -12.669,2.568 -1.886,-2.397 -10.956,-1.026 -2.74,-2.738 -1.625,2.31 -5.564,-1.027 -2.483,1.112 -0.857,0.256 -1.198,-2.309 -3.252,0.769 -1.114,-2.822 -5.479,-2.655 -2.824,-4.794 -0.172,-8.217 4.451,-3.424 -0.598,-3.083 -2.483,-1.027 -3.853,-7.705 -2.567,-0.598 -3.339,-3.682 h 0.086 l 5.992,-2.91 -0.085,-4.536 9.16,1.112 6.848,-5.392 -1.971,-2.655 5.565,-2.053 2.654,-4.538 -3.424,-4.45 1.713,-2.826 -1.969,-1.711 2.226,-1.455 0.169,-2.911 3.169,-0.685 3.252,-6.677 7.876,0.685 6.421,-5.821 5.048,2.568 6.507,-0.086 3.168,1.798 -1.455,3.168 2.996,1.112 0.258,3.338 2.225,1.798 -1.713,2.141 7.277,9.158 0.599,3.253 5.993,-1.883 -1.883,13.439 1.711,2.398 -1.2,5.307 -4.279,5.221 8.988,8.305 -2.226,6.505 0.513,3.938 -3.507,8.047 c -2.313,1.54 -4.709,3.081 -7.106,4.622 z +LL=m 408.7036,655.8521 -3.938,4.709 -5.82,-1.028 -5.221,1.285 -2.141,-1.968 -2.056,8.73 -5.221,1.285 -1.113,2.568 -2.738,-2.055 -3.083,1.027 -2.91,8.133 0.428,2.909 -3.767,4.281 -5.564,-0.513 -5.394,-3.768 -2.822,1.285 -2.741,5.051 h -3.167 l -1.285,2.568 1.027,5.479 -2.481,5.82 -2.654,1.541 -15.666,-3.852 -13.096,-4.109 -5.564,-4.708 -0.087,-17.378 2.825,-3.424 -2.653,1.713 -0.686,-5.651 0.428,-3.679 2.227,-1.542 11.726,-1.028 0.942,-2.91 6.849,-5.564 11.472,2.481 -2.484,-5.563 1.626,-2.997 2.399,2.997 8.046,-3.338 0.855,2.652 2.653,-4.45 2.311,1.626 0.771,-2.996 8.219,1.712 3.166,-2.568 12.156,0.6 2.483,2.139 2.224,-1.627 4.966,1.714 15.067,-4.025 v -0.085 l 3.08,5.821 -2.909,5.136 1.968,6.164 z +LY=m 462.0332,431.5732 h -0.085 l -4.622,3.082 -5.135,-1.199 -5.651,1.455 -5.649,-20.114 -5.565,7.446 -1.541,-2.226 -2.311,1.456 -2.226,-1.628 -2.054,1.713 -2.225,-1.798 -0.344,-2.909 -5.479,-3.681 -1.967,2.054 -7.706,-1.456 -4.964,3.168 v 2.909 l -3.768,-1.283 -0.428,-2.824 1.457,-12.07 -5.309,-4.537 2.399,-2.655 -2.056,-5.991 4.537,-7.448 4.366,-3.596 2.57,-7.19 -2.826,-6.847 2.655,0.77 2.223,-1.968 2.656,0.428 6.077,2.909 5.735,-2.139 0.599,-5.307 2.569,0.941 2.14,-2.225 3.338,0.684 3.081,4.709 4.793,2.568 v 4.28 l -0.171,1.027 4.281,3.851 -1.797,2.398 2.397,2.396 6.676,1.455 2.397,4.709 -0.342,6.849 5.82,-1.884 2.912,4.88 2.738,0.685 10.616,-14.639 5.564,6.507 2.14,13.011 v 0.085 l -0.685,8.903 h 2.739 l 2.653,2.739 h -0.255 v 0.085 l 0.512,4.795 5.564,3.422 1.028,6.678 -3.34,1.882 -4.536,-6.249 -5.222,-3.081 -3.681,-0.256 -0.426,2.739 -3.254,1.541 -3.852,-4.28 -2.826,-0.087 -0.085,2.911 h -2.824 z +MA=m 76.2954,486.3481 h -0.037 v 0.036 h 0.037 7.088 0.071 v -0.036 h 0.074 v -0.036 h 0.039 v -0.039 h 0.296 v -0.035 h 0.038 v -0.04 -0.071 h 0.037 v -0.078 h 0.037 v -0.075 h 0.149 v 0.04 h 0.036 v -0.04 h 0.221 v 0.04 h 0.075 v 0.035 h 0.037 v 0.039 h 0.038 v 0.039 h 0.189 v -0.039 h 0.107 v -0.039 h 0.038 v -0.035 h 0.038 v -0.04 h 0.037 v -0.036 h 0.039 v -0.035 h 0.036 v -0.035 -0.039 h 0.034 v -0.039 h 0.075 v -0.036 h 0.04 v -0.035 h 0.074 v -0.039 h 0.111 v -0.036 h 0.074 v -0.039 h 0.074 0.111 0.184 0.04 v -0.111 h 0.035 v -0.039 h 0.185 v -0.035 h 0.039 v -0.035 -0.149 h 0.035 v -0.04 h 0.556 v -0.035 h 0.074 v -0.04 h 0.039 v -0.074 h 0.036 0.038 v -0.035 h 0.039 v -0.185 h 0.036 v -0.036 h 0.072 v -0.039 h 0.037 v -0.074 h 0.037 v -0.036 h 0.037 v -0.074 h 0.041 v -0.039 -0.036 h 0.035 v -0.036 h 0.035 v -0.04 h 0.038 v -0.034 h 0.038 v -0.039 h 0.038 v -0.037 h 0.036 v -0.038 h 0.039 v -0.035 h 0.035 v -0.036 h 0.036 v -0.039 h 0.078 v -0.036 h 0.036 v -0.039 h 0.036 v -0.036 h 0.039 v -0.038 h 0.035 v -0.037 h 0.074 v -0.038 h 0.373 v 0.038 h 0.111 v -0.038 h 0.185 v -0.036 h 0.15 v -0.034 h 0.035 v -0.039 h 0.072 v -0.037 h 0.077 v -0.04 -0.035 h 0.035 v -0.039 h 0.037 v -0.035 h 0.074 v -0.035 h 0.038 v -0.04 h 0.038 v -0.145 h 0.037 v -0.075 h 0.038 v -0.039 h 0.072 v -0.035 h 0.074 v -0.04 h 0.036 v -0.035 h 0.039 v -0.075 -0.04 h 0.038 v -0.034 h 0.036 v -0.04 h 0.038 v -0.036 h 0.222 v 0.036 h 0.185 v -0.036 h 0.04 v -0.074 -0.074 h 0.074 v -0.036 h 0.071 v -0.04 h 0.079 v -0.034 h 0.035 v -0.036 h 0.11 v 0.036 h 0.299 v -0.036 h 0.407 v -0.079 h 0.034 v -0.07 h 0.039 v -0.114 h 0.039 v -0.11 h 0.035 v -0.076 h 0.038 v -0.074 h 0.036 v -0.109 h 0.036 v -0.036 h 0.04 v -0.04 h 0.074 v -0.039 h 0.073 v 0.039 h 0.11 v -0.039 h 0.037 v -0.036 h 0.04 v -0.035 h -0.112 v -0.039 h 0.035 0.077 v -0.035 h 0.036 v -0.04 h 0.186 v -0.034 h 0.037 v -0.036 h 0.039 v -0.075 h 0.033 v -0.075 h 0.042 v -0.039 h 0.07 v 0.039 h 0.075 v 0.035 h 0.075 v -0.035 h 0.039 v -0.039 h 0.034 v -0.035 h 0.077 v -0.036 h 0.11 v -0.039 h 0.072 v -0.035 h 0.334 v 0.035 h 0.037 v 0.039 h 0.037 v 0.036 h 0.077 v 0.035 h 0.075 v 0.039 h 0.035 v 0.035 h 0.036 v 0.04 h 0.039 v 0.035 h 0.072 v 0.04 h 0.038 v 0.036 h 0.039 v 0.034 h 0.035 v 0.04 h 0.075 v 0.035 h 0.036 0.037 v 0.039 h 0.075 v 0.035 h 0.074 v -0.035 h 0.038 v -0.039 h 0.035 v -0.109 h 0.039 v -0.036 h 0.036 v -0.04 h 0.074 v -0.035 h 0.038 v -0.04 h 0.074 v -0.035 h 0.038 v -0.074 h 0.035 v -0.15 h 0.038 v -0.035 h 0.037 v -0.039 h 0.037 v -0.035 h 0.037 v -0.035 h 0.036 v -0.04 h 0.04 v -0.04 h 0.038 v -0.035 h 0.075 v -0.036 h 0.221 v 0.036 h 0.072 v 0.035 h 0.037 v 0.04 h 0.185 v 0.04 h 0.262 v -0.04 h 0.111 v -0.04 h 0.075 v -0.035 h 0.034 v -0.373 h -0.034 v -0.071 h -0.04 v -0.04 h -0.035 v -0.035 h -0.035 v -0.038 h -0.076 v -0.071 h -0.038 v -0.04 h -0.04 v -0.185 h 0.078 v -0.035 h 0.111 v -0.04 h 0.148 v 0.04 h 0.296 v 0.035 h 0.15 v -0.035 h 0.073 v -0.04 h 0.037 v -0.035 h 0.037 v -0.039 h 0.075 v -0.036 h 0.038 v -0.038 h 0.035 v -0.036 h 0.039 v -0.075 h 0.037 v -0.039 h 0.036 v -0.036 h 0.037 v -0.035 h 0.037 v -0.075 h 0.037 0.038 v -0.035 h 0.075 v -0.114 h -0.037 v -0.075 h -0.038 v -0.224 h -0.038 v -0.294 h 0.038 v -0.15 h 0.038 v -0.035 h 0.037 v -0.035 h 0.035 v -0.075 h 0.041 v -0.039 h 0.034 v -0.071 h 0.036 v -0.04 h 0.038 v -0.039 h 0.074 v -0.034 h 0.035 v -0.04 h 0.078 v -0.036 h 0.073 v -0.035 h 0.037 v -0.039 -0.036 h 0.037 v -0.04 h 0.261 v -0.035 h 0.073 v -0.039 h 0.113 v -0.035 h 0.034 v 0.035 h 0.114 v 0.039 h 0.073 v 0.035 h 0.037 v 0.04 h 0.076 v 0.036 h 0.035 v 0.039 h 0.039 v 0.184 h 0.036 v 0.04 h 0.038 v 0.035 0.036 h 0.036 v 0.039 h 0.037 v 0.035 h 0.037 v 0.04 h 0.185 v -0.114 h -0.035 -0.037 v -0.036 h -0.037 v -0.035 h -0.04 v -0.04 h -0.036 v -0.113 h 0.076 v -0.036 h 0.109 v -0.035 h 0.035 v -0.039 h 0.041 v 0.039 h 0.109 v 0.071 h 0.039 v 0.04 h 0.037 v 0.034 h 0.036 v 0.039 h 0.113 v -0.039 h 0.073 v -0.034 h 0.075 v -0.04 h 0.037 v -0.071 h 0.036 v -0.075 h -0.036 v -0.075 h -0.037 v -0.074 h -0.039 v -0.04 h -0.072 v -0.034 h -0.037 v -0.076 h -0.038 v -0.035 h -0.037 v -0.149 h 0.037 v -0.11 h 0.038 v -0.04 h -0.038 v -0.075 h -0.075 v -0.034 h -0.112 -0.035 v -0.26 h 0.035 v -0.075 h 0.039 v -0.074 -0.114 h 0.037 v -0.036 h 0.036 v -0.035 h 0.075 v -0.039 h 0.038 v -0.071 h 0.037 v -0.039 h 0.072 v -0.036 h 0.076 v -0.039 h 0.109 v -0.11 h 0.037 0.037 v -0.039 h 0.075 v -0.036 h 0.039 v -0.149 h 0.036 v -0.146 h -0.036 v -0.227 h 0.036 v -0.072 h 0.037 v -0.035 h 0.036 v -0.039 h 0.041 v -0.15 h 0.035 v -0.035 h 0.073 v -0.039 h 0.037 v -0.035 h 0.114 v -0.036 h 0.07 v -0.039 h 0.076 v -0.035 h 0.039 v -0.039 h 0.146 v -0.036 h 0.149 v -0.039 h 0.039 v -0.11 h 0.036 v -0.11 -0.149 h 0.039 v -0.04 h 0.035 v -0.07 h 0.035 v -0.036 h 0.04 v -0.039 h 0.074 v -0.039 h 0.036 v -0.072 h 0.074 v -0.074 h 0.036 v -0.079 h 0.039 v -0.035 h 0.075 v -0.035 h 0.035 v -0.039 h 0.039 v -0.036 h 0.035 v 0.036 h 0.04 v 0.039 h 0.035 v 0.07 h 0.038 v 0.04 h 0.072 v -0.04 h 0.039 v -0.035 h 0.186 v 0.035 h 0.073 v 0.04 0.039 h 0.076 v 0.035 h 0.072 v -0.035 h 0.037 v -0.039 h 0.04 v -0.04 h 0.035 v -0.035 h 0.072 v -0.035 h 0.039 v -0.113 h -0.039 v -0.072 h 0.039 0.037 v -0.075 h -0.183 v -0.039 h -0.225 -0.036 v -0.075 h -0.037 v -0.071 h 0.037 v -0.039 h 0.036 v -0.075 -0.11 h 0.185 v -0.035 h 0.075 v -0.078 h 0.035 v -0.111 h 0.037 v -0.034 h 0.039 v -0.076 h 0.037 v -0.035 h 0.037 v -0.079 h 0.037 v -0.035 h 0.036 v -0.036 h 0.037 v -0.039 h 0.152 v 0.039 h 0.112 v 0.036 h 0.145 v -0.036 h 0.039 v -0.039 h 0.036 v -0.149 h -0.036 v -0.036 h -0.039 v -0.074 h -0.035 v -0.185 h 0.035 v -0.075 h 0.039 v -0.035 h 0.075 0.11 v -0.039 h 0.075 v -0.035 h 0.11 v -0.039 h 0.075 v -0.036 h 0.035 v -0.04 h 0.039 v -0.035 h 0.04 v -0.039 h 0.035 v -0.071 h 0.035 v -0.04 h 0.115 v -0.035 h 0.035 v -0.039 h 0.039 v -0.11 h 0.035 v -0.035 h 0.035 v -0.114 h 0.04 v -0.036 h 0.035 v -0.074 h 0.036 v -0.185 h -0.036 v -0.039 h -0.075 v -0.036 h -0.035 v -0.039 h -0.035 v -0.259 h 0.035 v -0.036 h 0.035 v -0.039 h 0.04 v -0.035 h 0.035 v -0.04 h 0.036 v -0.145 h 0.039 v -0.036 h 0.037 v -0.039 h 0.038 v -0.109 h 0.035 v -0.04 h 0.112 v -0.035 h 0.037 v -0.04 h 0.075 v -0.035 h 0.185 v -0.075 h 0.037 v -0.035 h -0.072 v -0.04 h -0.112 v -0.034 h -0.038 v -0.225 h 0.038 v -0.074 h 0.037 v -0.224 h 0.039 v -0.111 h -0.039 v -0.224 h 0.039 v -0.071 h 0.036 v -0.039 h 0.072 v -0.035 h 0.035 v -0.035 h 0.077 v 0.035 h 0.114 v -0.035 h 0.033 v -0.04 h 0.038 0.035 v -0.074 h 0.075 v -0.036 h 0.074 v -0.039 h 0.15 v 0.039 h 0.035 v 0.071 h 0.113 v 0.039 h 0.036 v 0.04 h 0.075 v 0.035 h -0.035 v 0.035 h 0.035 v 0.039 h 0.039 v 0.035 h 0.036 v 0.036 h 0.035 v 0.079 h 0.04 v 0.145 h 0.039 v 0.039 h -0.039 v 0.072 h 0.039 v 0.113 h 0.035 v 0.225 h -0.035 v 0.035 h -0.039 v 0.074 h 0.039 v 0.076 h 0.035 v 0.034 h 0.036 v 0.075 h -0.036 v 0.185 h 0.036 v 0.04 h 0.039 v 0.035 h 0.035 v 0.035 h 0.04 v 0.039 h 0.035 v 0.11 h 0.075 0.184 v 0.036 h 0.039 v 0.074 h 0.035 v 0.04 h 0.04 v 0.074 h 0.035 v 0.036 0.074 h 0.036 v 0.075 h 0.114 v 0.039 h 0.072 v 0.036 h 0.038 v 0.035 h 0.036 0.037 v 0.075 h 0.037 v 0.259 h 0.15 v -0.035 h 0.112 v -0.036 h 0.108 v 0.036 h 0.114 v 0.035 h 0.035 v 0.039 h 0.15 v 0.036 h 0.074 v 0.039 h 0.075 v 0.035 h 0.074 v 0.04 h 0.11 v 0.035 h 0.036 0.112 v 0.035 h 0.038 v 0.04 h 0.036 v 0.074 h 0.038 v 0.11 h 0.114 v -0.035 h 0.033 v 0.035 h 0.076 v 0.036 h 0.041 v 0.039 h 0.034 v 0.035 h 0.036 v 0.04 h 0.149 v -0.04 h 0.073 v 0.04 0.036 h 0.076 v -0.036 h 0.035 v 0.036 h 0.04 v -0.036 h 0.11 v -0.04 h 0.147 v -0.035 h 0.038 v 0.035 h 0.039 v 0.04 h 0.036 v 0.075 0.035 h 0.149 v -0.035 h 0.037 v -0.075 h -0.037 v -0.15 h 0.037 v -0.075 h 0.035 v -0.035 h 0.038 v -0.074 h 0.035 v -0.04 h 0.039 v -0.035 h 0.035 0.114 v -0.035 h 0.074 v -0.04 -0.035 h 0.149 v 0.035 h 0.035 v 0.04 h 0.076 v 0.035 h 0.073 0.038 v 0.075 h 0.036 v 0.035 h 0.037 v 0.039 h 0.041 v 0.035 h 0.07 v 0.04 h 0.041 v 0.035 h 0.149 v 0.036 h 0.259 v 0.039 h 0.075 v 0.035 h 0.035 v 0.076 h 0.035 v 0.039 h 0.038 v 0.035 h 0.037 v 0.074 h 0.037 v 0.041 h -0.037 v 0.109 h -0.037 v 0.036 h -0.073 v -0.075 h -0.149 v 0.149 h 0.074 v 0.074 h 0.04 v 0.036 h 0.035 v 0.039 h 0.11 v -0.039 h 0.075 v -0.07 h 0.109 v 0.07 h 0.04 v 0.259 h 0.036 v 0.079 h 0.112 v -0.039 h 0.037 v -0.111 h 0.039 v -0.113 h -0.039 v -0.036 h 0.039 v -0.075 h 0.145 v -0.034 h 0.075 v -0.04 h 0.11 v 0.04 h 0.078 v 0.034 h 0.071 0.112 v 0.036 h 0.185 v 0.039 h 0.037 v 0.075 h 0.035 v 0.145 h 0.039 v 0.079 h 0.038 v 0.035 h 0.073 v 0.036 h 0.112 v -0.036 h 0.147 v 0.036 h 0.076 v 0.04 h 0.036 v 0.034 h 0.038 v 0.039 h 0.039 v 0.036 h 0.075 v 0.036 h 0.033 v 0.039 0.039 h 0.116 0.071 v 0.035 h 0.037 v 0.035 h 0.035 v 0.04 h 0.038 v 0.035 h 0.114 v 0.039 h 0.035 v 0.075 h 0.039 v 0.111 h 0.036 v 0.074 h 0.038 v 0.035 0.04 h 0.036 0.036 v 0.035 h 0.04 v 0.037 h 0.074 v 0.148 h 0.036 v 0.075 h 0.038 v 0.074 h 0.035 v 0.039 h 0.037 v 0.037 h 0.04 v 0.035 h 0.148 v 0.039 h 0.185 v -0.039 h 0.036 v -0.072 h 0.039 v -0.074 h 0.035 v -0.149 h -0.035 v -0.075 h -0.039 v -0.11 h 0.039 0.035 v 0.035 h 0.074 v 0.037 h 0.038 v 0.038 h 0.075 v 0.075 h 0.073 0.073 v -0.039 h 0.038 v -0.111 h 0.075 v -0.035 h 0.035 0.112 v 0.035 h 0.075 v 0.037 h 0.075 v -0.037 h 0.035 v -0.035 h -0.035 v -0.075 h 0.035 v -0.039 -0.035 h 0.149 v 0.035 h 0.114 v 0.039 h 0.071 v 0.11 h 0.037 v 0.037 h 0.151 v -0.037 h 0.034 v -0.035 h -0.034 v -0.04 h -0.074 v -0.109 h 0.036 v -0.15 h -0.036 v -0.036 h -0.077 v -0.039 h -0.037 v -0.075 h 0.037 v -0.035 h 0.077 v -0.035 h 0.074 v 0.035 h 0.185 v -0.035 h 0.036 v -0.078 h -0.036 v -0.072 h -0.036 v -0.039 h -0.039 v -0.034 h -0.035 v -0.15 h 0.074 v -0.075 h -0.039 v -0.036 h -0.035 v -0.039 h -0.041 v -0.035 h -0.034 v -0.114 h -0.074 v -0.036 h -0.039 v -0.034 h -0.075 v -0.076 h 0.037 v -0.074 h 0.038 v -0.039 h 0.039 v -0.185 l 0.036,0.039 v -0.039 h 0.038 v -0.074 h 0.034 v -0.076 -0.035 h 0.041 v -0.039 h 0.035 v -0.036 h 0.039 v -0.035 h 0.036 v -0.04 h 0.036 v -0.035 h 0.039 v -0.039 h -0.039 v -0.185 h -0.259 v 0.04 h -0.075 v 0.035 h -0.22 v -0.075 h -0.04 v -0.035 h -0.036 v -0.114 h -0.034 v -0.295 h 0.034 v -0.074 h -0.034 v -0.036 h -0.114 v 0.071 h -0.038 v 0.075 h -0.072 v 0.039 h -0.04 v 0.149 h -0.037 v 0.146 h 0.187 v 0.149 h -0.038 -0.037 v 0.035 h -0.035 v 0.04 h -0.04 v 0.035 h -0.037 v 0.039 h -0.075 v 0.035 h -0.035 v 0.075 h -0.037 v 0.075 h -0.038 v 0.075 h -0.038 v 0.036 h -0.036 v 0.039 h -0.037 v 0.109 h 0.037 v 0.041 h 0.036 v 0.034 h 0.038 v 0.075 h -0.038 v 0.15 h -0.036 v 0.07 h -0.037 v 0.039 0.036 h -0.036 v 0.039 h -0.037 -0.075 -0.075 v -0.039 h -0.037 v -0.075 h -0.035 v -0.036 h -0.039 v -0.034 h -0.073 v -0.04 h -0.187 v 0.04 h -0.073 v 0.034 h -0.076 v 0.036 h -0.185 v -0.036 h -0.185 v -0.034 h -0.075 v -0.04 h -0.035 v -0.036 h -0.039 v -0.038 h -0.036 v -0.075 h -0.039 v -0.146 -0.149 h -0.038 v -0.04 h -0.182 v 0.04 h -0.077 v -0.04 h -0.073 v -0.074 h -0.035 v -0.111 h -0.039 v -0.184 h 0.039 v -0.035 h 0.035 v -0.04 h 0.04 v -0.035 h 0.033 v -0.039 h 0.038 v -0.036 h 0.149 v -0.039 h 0.037 v -0.035 h 0.148 v -0.036 h 0.039 v -0.039 h 0.074 v -0.04 h 0.036 v 0.04 h 0.074 v -0.04 h 0.076 v -0.07 h 0.035 v -0.075 h 0.039 v -0.149 h 0.146 v -0.035 h 0.04 v -0.189 h -0.04 v -0.11 h -0.037 v -0.075 h -0.035 v -0.071 h -0.038 v -0.039 h -0.036 v -0.039 h -0.039 v -0.035 h -0.035 v -0.035 h -0.04 v -0.04 h -0.11 v 0.04 h -0.075 v 0.035 h -0.074 v 0.035 h -0.075 v 0.039 h -0.11 v -0.039 h -0.071 v -0.035 h -0.039 v -0.035 h -0.039 v -0.04 h -0.038 v -0.185 h 0.038 v -0.035 h 0.149 v -0.074 h -0.11 -0.15 v 0.074 h -0.184 v -0.04 h 0.072 v -0.034 h -0.036 -0.036 v -0.115 h -0.04 v -0.07 h -0.035 v -0.15 h 0.075 v -0.039 h 0.072 v -0.036 h 0.152 v -0.039 h 0.033 0.077 v 0.039 h 0.11 v -0.039 h 0.072 v -0.035 h 0.152 v -0.039 h 0.184 v -0.036 h 0.036 v -0.075 h 0.04 v -0.035 h 0.035 v -0.149 h -0.035 v -0.04 h -0.076 v -0.036 h -0.036 v -0.035 -0.074 -0.075 h 0.036 0.036 v -0.039 h 0.04 v -0.071 h 0.074 v -0.114 h -0.114 v -0.035 h -0.036 v -0.039 h -0.074 v 0.114 h -0.036 v 0.074 h -0.039 v 0.036 h -0.222 v 0.035 h -0.186 v -0.11 h -0.038 v -0.035 h 0.038 v -0.075 h 0.039 v -0.075 h 0.039 v -0.114 h -0.039 v -0.035 h -0.039 v -0.036 h -0.071 v 0.071 h -0.04 v 0.079 h -0.035 v 0.035 h -0.039 v 0.036 h -0.11 v -0.036 h -0.224 v -0.035 h 0.037 v -0.079 h -0.072 v 0.04 0.039 h -0.04 v -0.039 h -0.073 v 0.074 h -0.038 v 0.036 h -0.039 v 0.074 h -0.035 v 0.114 h -0.074 v 0.036 h -0.073 v 0.035 h -0.187 v -0.035 h -0.149 v -0.036 h -0.072 v -0.039 h -0.038 v -0.035 h -0.075 v -0.075 h -0.074 v -0.039 h -0.035 v -0.071 h -0.224 v 0.071 h -0.11 v 0.039 h -0.04 v 0.035 h -0.035 v 0.15 h -0.038 v 0.593 h -0.037 v 0.075 h -0.037 v 0.074 h -0.038 v 0.111 h -0.035 v 0.038 h -0.035 v 0.036 0.04 h -0.04 v 0.035 h -0.074 v 0.035 h -0.15 v 0.039 h -0.146 v 0.039 h -0.038 v 0.037 h -0.035 -0.041 v 0.034 h -0.037 v 0.04 h -0.407 v 0.11 h -0.111 v 0.035 h -0.038 v 0.075 h -0.036 v 0.04 h -0.037 v 0.035 h -0.224 v 0.035 h -0.072 v 0.039 h -0.039 v 0.039 h -0.073 v 0.036 h -0.187 v 0.035 h -0.22 v -0.035 h -0.075 v -0.036 h -0.039 v -0.078 h -0.446 v 0.039 h -0.033 v 0.039 h -0.04 v 0.036 h -0.074 v 0.035 h -0.224 v -0.035 h -0.074 v -0.114 h -0.032 v -0.11 h -0.04 v -0.149 h -0.035 v -0.071 h -0.039 v -0.074 h -0.039 -0.036 v -0.076 -0.039 h -0.039 v -0.07 h -0.035 v -0.04 h -0.039 v -0.036 h -0.036 v -0.074 h -0.038 v -0.114 h -0.11 v 0.075 h -0.076 v 0.039 h -0.035 v 0.036 h -0.073 v -0.075 h -0.038 v -0.075 h -0.039 v -0.074 h -0.035 v -0.111 h -0.038 v -0.074 h -0.033 v -0.11 h 0.033 v -0.076 h -0.033 v -0.074 h 0.033 v -0.07 h 0.038 v -0.04 h 0.035 0.039 v -0.149 h 0.038 v -0.035 h 0.035 v -0.04 h 0.112 v -0.035 h 0.147 v -0.039 h 0.038 v -0.036 h 0.11 v 0.075 h 0.039 v 0.035 h 0.075 v -0.035 h 0.039 v -0.039 h 0.035 v -0.071 h 0.04 v -0.079 h 0.032 v -0.071 h 0.038 v -0.039 h 0.036 v -0.035 h 0.039 v -0.075 h -0.039 v -0.039 h -0.074 v 0.039 h -0.032 v 0.036 h -0.04 v 0.039 h -0.035 v 0.035 h -0.078 v 0.039 h -0.075 -0.035 -0.445 v -0.039 h -0.039 v -0.035 -0.189 h -0.073 v -0.035 h -0.033 v -0.036 h -0.039 v -0.038 h -0.04 v -0.036 h -0.074 v -0.189 h -0.036 v -0.294 h 0.036 v -0.075 h 0.037 v -0.111 h 0.037 v -0.035 h 0.04 v -0.039 h 0.072 v -0.04 h 0.038 v -0.035 h 0.035 v -0.035 -0.075 h 0.112 v -0.039 h 0.112 v -0.036 h 0.26 v -0.039 h 0.074 v -0.034 -0.186 -0.074 -0.035 h 0.036 v -0.075 h 0.039 v -0.04 h 0.039 v -0.035 h 0.035 v -0.075 h 0.11 v -0.039 h 0.036 v -0.035 h 0.15 v -0.035 h 0.074 v -0.036 h 0.038 v -0.04 h 0.036 v 0.076 h 0.04 v 0.035 h 0.033 v 0.074 h 0.041 v 0.15 h 0.035 v 0.075 h 0.041 v 0.035 h 0.034 v 0.11 h 0.036 v 0.039 h 0.075 v 0.035 h 0.038 v 0.11 h 0.036 v 0.039 h 0.04 v 0.036 h 0.144 v -0.036 h 0.04 v -0.039 h 0.035 v -0.034 h 0.036 v 0.184 h 0.039 v 0.039 h 0.224 v -0.039 h 0.036 v -0.036 h 0.037 v -0.039 h 0.073 v -0.075 h 0.039 v -0.22 h -0.262 v 0.036 h -0.037 -0.037 -0.038 v -0.071 h -0.035 v -0.074 h -0.039 v -0.075 h -0.036 v -0.04 h -0.035 v -0.035 h 0.11 v -0.114 h 0.035 v -0.184 h -0.074 v -0.072 h -0.036 v -0.039 h -0.11 v -0.04 h -0.076 v -0.069 h -0.033 v -0.04 h -0.04 v -0.036 h -0.109 v -0.039 h -0.11 v -0.035 h -0.041 v -0.04 h -0.035 v -0.071 h -0.041 v -0.149 -0.035 h 0.041 v -0.079 h 0.035 v -0.034 h 0.041 v -0.037 h 0.07 v -0.039 h 0.04 v -0.035 h 0.073 v -0.036 h 0.109 v -0.039 h 0.076 v -0.035 h 0.035 v 0.035 h 0.04 v 0.039 h 0.22 v 0.036 h 0.114 v 0.035 h 0.036 v 0.039 h 0.259 v 0.037 h 0.074 v 0.034 h 0.035 v 0.039 h 0.077 v 0.04 h 0.222 v 0.071 h 0.038 v 0.039 h 0.035 v 0.074 h 0.038 0.074 v 0.036 h 0.037 v 0.11 h 0.038 v 0.115 h 0.036 v 0.034 h 0.037 v 0.186 h 0.041 v 0.038 h 0.033 0.037 v -0.038 h 0.076 v -0.072 h 0.147 v 0.036 h 0.075 v 0.036 h 0.037 v 0.038 h 0.039 0.11 v -0.038 h -0.035 v -0.151 h -0.039 v -0.069 h -0.036 v -0.04 h -0.039 v -0.11 h 0.075 v -0.111 h -0.036 v -0.039 h -0.039 v -0.074 h -0.037 v -0.071 h -0.038 v -0.04 h -0.037 v -0.11 h 0.037 v -0.039 h 0.038 v -0.035 h 0.112 v -0.036 h 0.039 v -0.039 h 0.035 v -0.035 h 0.04 v -0.04 -0.035 -0.038 h -0.114 v -0.076 h -0.036 v -0.035 h -0.039 v -0.039 h -0.075 v -0.071 h 0.038 v -0.04 h 0.037 v -0.074 h 0.039 v -0.036 h 0.036 v -0.074 h 0.074 0.075 v -0.039 h 0.035 v -0.036 h 0.038 v -0.039 h 0.037 v -0.11 h 0.037 v -0.036 h 0.038 v -0.039 h 0.109 v -0.035 h 0.04 v -0.039 h 0.036 v -0.036 h 0.149 v 0.036 h 0.149 v 0.039 h 0.148 v 0.035 h 0.112 v 0.039 h 0.038 v 0.036 h 0.033 v 0.04 h 0.038 v 0.035 h 0.038 v 0.035 h 0.074 v 0.039 h 0.075 v 0.036 h 0.035 v 0.039 h 0.075 0.222 v -0.039 h -0.035 v -0.036 h -0.076 v -0.039 h -0.074 v -0.035 h -0.037 v -0.035 h -0.037 v -0.115 h -0.038 v -0.035 h -0.035 v -0.039 h 0.073 v -0.071 h 0.037 v -0.04 h 0.037 v 0.04 h 0.035 v 0.035 h 0.039 v 0.036 h 0.111 v -0.036 h 0.04 v -0.149 h -0.04 -0.073 v -0.409 h -0.077 v -0.036 h -0.035 v -0.038 h -0.296 v 0.038 h -0.038 v 0.036 h -0.149 v 0.039 h -0.072 v -0.039 h -0.075 v -0.036 h -0.038 v -0.038 h -0.074 v -0.036 h -0.035 v -0.075 h 0.035 v -0.074 h -0.035 v -0.036 h -0.075 v -0.224 h 0.039 v -0.035 h -0.039 v -0.04 h -0.037 v -0.035 h -0.077 v -0.035 h -0.035 v -0.074 h -0.036 v -0.04 h -0.04 v -0.075 h -0.074 v -0.035 h -0.073 v -0.075 h -0.074 v 0.075 h -0.073 v 0.11 h -0.035 v 0.299 h -0.226 v -0.04 h -0.222 v -0.035 h -0.035 v -0.04 h -0.078 v 0.04 h -0.074 v -0.04 h -0.037 v -0.035 h -0.074 v -0.035 h -0.037 v -0.039 h -0.036 v -0.075 h -0.038 v -0.185 h -0.111 v -0.039 h -0.074 v 0.039 h -0.037 v 0.035 0.04 h -0.038 v 0.035 h -0.15 v -0.035 h -0.147 v 0.035 h -0.111 v 0.075 h -0.037 v -0.036 h -0.036 v -0.039 h -0.037 v -0.035 h -0.036 v -0.04 h -0.077 v -0.035 h -0.037 v -0.074 h -0.075 v -0.075 h -0.074 v -0.075 h -0.036 v -0.22 h 0.036 v -0.039 h -0.036 v -0.075 h 0.036 v -0.035 h 0.039 v -0.039 h 0.035 v -0.035 h 0.038 v -0.036 h 0.037 v -0.075 h 0.037 0.038 v -0.039 h 0.075 v -0.035 -0.041 h 0.149 v -0.035 h 0.072 v -0.035 h 0.073 v -0.188 h -0.073 v -0.075 h -0.148 v 0.11 h -0.036 v 0.039 h -0.037 v 0.04 h -0.113 v -0.04 h -0.147 v -0.039 h -0.224 v -0.071 h -0.037 v 0.11 h -0.073 v 0.075 h -0.036 v 0.074 h -0.038 v 0.076 h -0.075 v 0.035 h -0.07 v 0.039 h -0.041 v 0.035 h -0.035 v 0.076 h -0.114 v -0.036 h -0.036 v -0.04 h -0.038 v 0.04 h -0.038 v 0.036 h -0.036 v 0.035 h -0.038 v 0.074 h -0.033 v -0.035 h -0.04 v -0.11 h -0.039 v -0.04 h -0.036 v -0.035 h -0.038 v -0.115 h -0.032 v -0.294 h -0.04 v -0.224 h -0.035 v -0.11 h -0.078 v -0.149 h -0.036 v -0.036 h -0.039 v -0.074 h -0.074 v -0.075 h -0.074 -0.037 v -0.039 h -0.149 v 0.039 h -0.035 -0.038 -0.035 v -0.334 h 0.035 v -0.149 h 0.038 v -0.035 h -0.038 v -0.036 h 0.222 0.15 v -0.039 h 0.035 v -0.149 h 0.039 v -0.075 -0.036 h 0.189 v -0.039 h 0.07 v -0.07 h 0.075 v 0.035 h 0.073 v -0.035 h 0.074 v -0.04 h 0.038 v -0.036 -0.074 h 0.038 v -0.039 h 0.036 v -0.22 h 0.04 v -0.075 h 0.033 v -0.114 h 0.076 v -0.036 h 0.041 v -0.035 h 0.034 v -0.039 h -0.034 v -0.075 h 0.034 v -0.035 h 0.036 v -0.039 h 0.04 v -0.036 h 0.073 v -0.039 h 0.036 v -0.036 h 0.04 v -0.038 h 0.033 v -0.071 -0.075 h 0.037 v -0.039 h 0.039 v -0.035 h 0.185 v -0.04 h 0.26 v -0.035 h 0.073 v -0.036 h 0.037 v 0.036 h 0.039 v 0.035 h 0.037 v 0.04 h 0.035 v 0.035 h 0.073 0.188 v 0.039 h 0.074 v 0.035 0.04 h 0.074 v 0.035 h 0.037 v 0.036 h 0.038 v 0.259 h 0.035 v 0.039 h 0.038 v 0.039 h 0.074 0.037 v 0.035 h 0.038 v 0.111 h 0.073 v 0.075 h 0.041 v 0.039 h 0.111 v 0.185 h 0.035 v 0.074 h 0.038 v 0.035 h 0.035 v 0.039 h 0.074 v 0.036 h 0.112 v 0.04 h 0.039 v 0.035 h 0.15 0.035 v 0.035 h 0.073 v 0.075 h 0.037 v 0.039 h 0.15 v -0.039 h 0.034 v -0.11 h 0.04 v -0.15 h 0.036 0.074 v -0.035 h 0.038 v -0.074 h 0.037 v 0.035 0.074 h 0.222 v 0.075 h -0.038 v 0.224 h 0.038 v 0.071 h 0.112 v 0.04 h 0.113 v -0.04 h 0.183 v -0.035 h 0.075 v -0.111 h 0.035 v -0.039 h -0.035 v -0.035 h -0.037 v -0.111 h 0.037 v -0.039 h 0.035 0.038 v -0.035 h 0.109 v 0.035 h 0.039 v 0.075 h 0.038 v 0.04 h 0.038 v 0.035 h 0.035 v 0.035 h 0.448 v -0.185 h -0.077 -0.036 v -0.109 h -0.036 v -0.15 h -0.04 v -0.035 h 0.448 v -0.039 h 0.036 v -0.036 h -0.036 v -0.114 h 0.073 v -0.036 h 0.035 v -0.035 h 0.038 v 0.035 h 0.075 v 0.036 h 0.187 v 0.039 0.036 h -0.038 v 0.039 h -0.036 v 0.444 h 0.036 v 0.04 h 0.038 v 0.035 0.035 h 0.036 v 0.039 h 0.076 v 0.036 h 0.074 v 0.039 h 0.109 v 0.036 h 0.52 v -0.036 h 0.187 v -0.075 h 0.073 v -0.039 -0.035 h 0.037 v -0.035 h 0.036 v -0.04 h 0.038 v -0.075 h -0.038 v -0.109 h -0.036 v -0.04 h -0.037 v -0.035 -0.335 -0.149 -0.074 h -0.036 v -0.036 h -0.075 v 0.036 h -0.075 v 0.039 h -0.074 v -0.039 h -0.035 v -0.036 h 0.035 v -0.113 h 0.037 v -0.111 h -0.037 v -0.035 h -0.035 v -0.334 h -0.039 v -0.074 h -0.111 v 0.035 h -0.037 v 0.039 h -0.073 v 0.035 h -0.075 v 0.039 h -0.037 v 0.111 h -0.036 v 0.11 h -0.04 -0.072 v -0.035 h 0.035 v -0.075 h 0.037 v -0.259 h -0.037 v -0.15 h -0.035 v -0.035 h -0.074 v -0.075 h -0.039 v -0.074 h -0.075 v 0.034 h -0.036 v 0.075 h -0.036 v 0.04 h -0.038 v -0.04 h -0.075 v -0.035 h -0.035 v -0.04 h -0.039 v -0.034 h -0.148 v 0.074 h -0.108 v 0.035 h -0.039 v -0.075 h -0.039 v -0.071 h -0.038 v -0.074 -0.075 h -0.033 v -0.039 h -0.075 v 0.039 h -0.039 v 0.035 h -0.074 v 0.075 h -0.076 v 0.039 h -0.035 v 0.071 h -0.037 v 0.04 h -0.075 v 0.075 h -0.037 -0.035 v 0.035 h -0.075 v 0.038 h -0.115 v 0.036 h -0.109 v -0.036 h 0.037 v -0.073 h 0.037 v -0.075 h 0.035 v -0.074 h -0.035 v -0.076 h -0.112 v -0.035 h -0.035 v -0.04 h -0.037 -0.038 v -0.035 h -0.112 v 0.035 h -0.071 v -0.184 h -0.038 v -0.036 h 0.147 v -0.039 h 0.222 v -0.035 h 0.259 v -0.04 h 0.075 v -0.035 h 0.112 v -0.035 h 0.072 v -0.079 h 0.04 v -0.035 h 0.072 v -0.036 h 0.038 v -0.039 h 0.039 v -0.074 h 0.035 v -0.11 h 0.04 0.033 v -0.035 -0.04 h 0.259 v -0.035 h 0.038 v 0.035 h 0.039 v 0.04 h 0.036 v 0.035 h 0.113 v -0.035 h 0.036 v 0.109 h 0.038 v 0.036 h 0.112 v 0.039 h 0.148 v -0.075 h 0.035 v -0.074 h 0.077 v -0.035 h 0.036 v -0.115 h -0.408 v -0.035 h -0.148 v -0.039 h -0.075 v -0.036 h -0.039 v -0.114 h -0.038 v -0.07 h -0.035 v -0.075 h 0.035 v -0.224 h -0.035 v -0.11 h 0.035 v -0.039 h 0.113 v 0.039 h 0.074 v 0.075 h 0.039 v 0.035 h 0.074 v -0.035 -0.039 -0.111 h -0.038 v -0.11 h -0.036 v -0.149 h 0.036 v -0.04 h 0.038 v -0.036 h 0.036 v -0.035 h 0.036 v -0.074 h -0.036 v -0.075 h -0.184 v 0.036 h -0.039 v 0.039 h -0.256 v -0.039 h -0.039 v -0.146 h 0.074 v -0.039 h 0.036 v -0.039 h -0.036 v -0.11 h -0.151 v 0.039 h -0.033 v 0.035 h -0.152 v -0.035 h -0.036 v -0.114 h 0.074 v -0.22 h -0.038 v -0.11 h 0.038 v -0.114 h -0.074 v -0.075 h -0.036 v -0.035 h -0.075 v -0.039 h -0.037 v -0.111 h 0.037 v -0.035 h -0.037 v -0.15 h 0.072 v -0.034 h 0.04 v 0.034 h 0.072 0.152 0.033 v -0.034 h 0.038 v -0.04 h 0.039 v -0.035 h 0.039 v -0.04 h 0.108 v 0.04 h 0.073 v 0.035 h 0.039 v 0.04 h 0.075 v -0.04 h 0.184 v 0.04 h 0.076 v 0.034 h 0.148 v 0.15 h 0.072 v 0.035 h 0.04 v -0.035 h 0.073 v 0.035 h 0.036 v -0.035 h 0.039 v -0.039 -0.145 h 0.036 v -0.115 h 0.037 v -0.039 h -0.037 v -0.145 h -0.036 v -0.11 -0.075 -0.075 h 0.185 v 0.075 h 0.036 v 0.185 h 0.039 v 0.074 h 0.035 v 0.071 h 0.074 v 0.039 h 0.038 v 0.04 h 0.185 v -0.04 h 0.036 v -0.075 h 0.038 v -0.074 h 0.038 v -0.035 h 0.147 v 0.184 h 0.037 v 0.04 h 0.04 v 0.035 h 0.11 v 0.04 h 0.074 v 0.034 h 0.04 v 0.036 h 0.07 v 0.039 h 0.15 v -0.039 h 0.072 v -0.036 h 0.038 v -0.109 h 0.039 v -0.079 h 0.036 v -0.036 h 0.072 v -0.035 h 0.115 v 0.035 h 0.072 v -0.035 h 0.039 v 0.035 h 0.149 v 0.036 h 0.071 v 0.039 h 0.074 v -0.039 -0.071 h 0.039 v -0.114 h -0.259 v -0.034 h -0.039 v -0.036 h -0.035 v -0.04 h -0.039 v -0.035 h -0.072 -0.115 v -0.04 h -0.185 v -0.035 h -0.037 v -0.039 h -0.035 v -0.145 h -0.036 v -0.04 h -0.114 v -0.039 h -0.07 v -0.035 h -0.04 v -0.111 h 0.04 v -0.074 h 0.034 v -0.11 h 0.036 v -0.039 h 0.04 v -0.035 h 0.074 v -0.037 h 0.108 v -0.038 h 0.077 v -0.185 h 0.036 v -0.075 h 0.072 0.041 v -0.035 h 0.146 v -0.04 h 0.074 v -0.035 h 0.039 v -0.074 h 0.112 v -0.04 h 0.034 v 0.04 h 0.039 v -0.04 h 0.035 v -0.035 h 0.039 v -0.039 h 0.076 v -0.186 h -0.04 v -0.184 h 0.04 v -0.04 h 0.035 v -0.035 h 0.038 v -0.035 h 0.037 v -0.15 h -0.075 v -0.034 h -0.075 v 0.034 h -0.075 v 0.036 h -0.145 v -0.036 h -0.04 v -0.034 h -0.035 v -0.04 h -0.039 v -0.04 h -0.035 v -0.035 h 0.035 v -0.035 h -0.035 v -0.111 h -0.039 v -0.039 h 0.039 v -0.149 h 0.035 v -0.036 h 0.039 v -0.038 h 0.075 v -0.035 h 0.037 v -0.036 h 0.073 v -0.04 h 0.035 v -0.035 -0.074 h 0.039 v -0.039 h 0.036 v -0.036 h 0.113 v -0.035 h 0.037 v -0.115 h -0.037 v -0.148 h 0.037 v -0.036 h 0.074 v -0.039 h 0.111 v 0.039 h 0.11 v 0.036 h 0.076 v 0.035 h 0.073 v -0.035 h 0.259 v -0.036 h 0.075 v -0.039 h 0.04 0.035 v -0.036 h 0.034 v -0.039 h 0.079 0.109 v -0.036 h 0.222 v 0.036 h 0.114 v 0.075 h 0.036 v 0.11 h 0.038 v 0.039 h 0.145 v 0.039 h 0.116 v 0.035 h 0.11 v 0.036 h 0.035 v 0.04 h 0.038 v 0.074 h 0.035 v 0.075 0.034 h 0.04 v 0.04 h 0.035 0.04 v -0.074 h -0.04 v -0.26 h 0.04 v -0.039 h 0.036 v -0.039 h 0.074 v -0.11 h -0.039 v -0.075 h 0.039 v -0.036 h 0.074 v -0.039 h 0.075 v -0.035 h -0.04 v -0.075 h 0.04 v -0.074 h -0.075 v -0.111 h -0.038 v -0.109 h 0.038 v -0.076 h 0.035 v -0.039 h 0.04 v -0.035 h 0.036 v -0.036 h 0.039 v -0.039 h 0.073 v -0.036 h 0.037 v 0.036 h 0.074 v 0.039 h 0.111 v -0.039 h 0.035 v -0.224 h -0.035 v -0.035 h -0.076 v 0.035 h -0.109 v 0.035 h -0.334 v -0.035 h -0.039 v -0.035 h -0.035 v -0.075 h -0.036 v -0.039 h -0.04 v -0.036 h -0.035 v -0.11 h 0.075 v -0.039 h 0.11 v -0.035 h 0.334 v -0.035 h 0.074 v -0.039 h 0.073 v -0.036 h 0.297 v -0.04 h 0.147 v 0.04 h 0.112 v -0.075 h -0.039 v -0.035 h -0.036 v -0.04 h -0.109 -0.075 -0.184 -0.075 v -0.039 h -0.038 v -0.035 h -0.257 v -0.035 h -0.188 v 0.035 h -0.036 v -0.035 h -0.225 v -0.039 h -0.073 v -0.036 h -0.035 v -0.189 h -0.037 v -0.07 h 0.072 v -0.036 h 0.038 v -0.079 h 0.035 v -0.109 -0.26 -0.111 -0.038 h 0.04 0.185 0.074 v 0.038 h 0.035 v 0.071 h 0.04 v 0.04 h 0.036 v 0.036 h 0.075 v 0.038 h 0.037 v -0.038 h 0.037 v -0.076 h 0.074 v -0.035 h 0.035 v 0.035 h 0.076 v 0.04 h 0.035 v 0.036 h 0.04 v 0.114 h 0.035 v 0.035 h 0.038 v 0.075 h 0.074 v 0.039 h 0.074 v -0.039 h 0.11 v -0.04 h 0.073 v -0.07 h -0.036 v -0.076 h -0.037 v -0.038 h -0.033 v -0.036 h -0.039 v -0.075 -0.074 h -0.075 -0.037 v -0.075 h -0.037 v -0.036 h -0.075 v -0.074 h -0.075 v 0.039 h -0.22 v -0.039 h -0.037 v -0.035 -0.04 h -0.037 v -0.036 h -0.036 v -0.149 h 0.036 v -0.035 h 0.037 v -0.04 -0.035 h 0.072 0.074 0.111 v 0.035 h 0.075 v 0.04 h 0.112 v 0.035 h 0.037 v 0.041 h 0.075 v 0.035 h 0.039 v 0.035 h 0.033 v 0.038 h 0.112 v 0.036 h 0.222 v -0.295 -0.039 h -0.037 v -0.035 h 0.037 v -0.036 h -0.072 v -0.078 h -0.037 v -0.071 h -0.038 v -0.039 h -0.038 v -0.036 h -0.037 v -0.038 h -0.075 v -0.036 h -0.07 v -0.04 h -0.039 v -0.035 h -0.038 v -0.035 h -0.037 -0.037 v -0.114 h 0.074 v -0.036 h 0.11 v 0.036 h 0.225 v 0.035 h 0.037 v 0.079 h 0.035 0.037 v 0.035 h 0.073 v 0.035 h 0.039 v 0.04 0.036 h 0.036 v 0.038 h 0.039 v 0.036 h 0.039 v 0.039 h 0.034 v 0.035 h 0.041 v 0.075 h 0.145 v 0.039 h 0.04 v 0.036 h 0.074 v 0.035 h 0.036 v 0.039 h 0.074 v 0.035 h 0.076 v 0.04 h 0.074 v 0.035 h 0.035 v 0.041 h 0.075 v 0.035 h 0.035 v 0.035 h 0.075 v 0.038 h 0.04 v 0.15 h 0.036 v 0.035 h 0.034 v 0.036 h 0.039 v 0.075 h 0.035 0.263 0.071 v -0.036 h 0.187 v -0.039 -0.036 -0.035 h -0.037 v -0.039 h -0.037 v -0.035 h -0.035 v -0.04 h -0.078 v -0.074 h -0.036 v -0.035 h -0.073 v -0.035 h -0.035 v -0.041 h -0.075 v -0.075 h -0.039 v -0.035 h -0.036 v -0.074 h 0.036 v -0.036 h 0.039 v -0.149 h -0.039 v -0.149 h -0.036 v -0.224 h -0.04 v -0.036 h -0.144 v -0.039 h -0.075 v -0.035 h -0.04 v -0.04 h -0.035 v -0.035 h 0.035 v -0.11 h -0.035 v -0.075 h -0.04 v -0.039 h -0.111 v 0.039 h -0.073 v 0.036 h -0.11 v -0.036 h -0.036 v -0.039 h 0.036 v -0.11 h -0.036 v -0.039 h -0.039 v -0.11 h 0.039 v -0.036 h -0.039 v -0.039 h -0.035 v -0.036 h 0.035 v -0.035 h 0.039 v -0.039 h 0.036 v -0.11 -0.075 h -0.036 v -0.039 h -0.074 v -0.035 h -0.04 v 0.035 h -0.145 v -0.035 h -0.041 v -0.11 h 0.041 v -0.04 h 0.033 v -0.075 h 0.038 v -0.109 h 0.039 v -0.036 h 0.035 v -0.039 h 0.04 v -0.074 h 0.074 v -0.04 h 0.036 v -0.036 h 0.074 v -0.035 h 0.036 v 0.035 h 0.073 v 0.036 h 0.041 v 0.04 h 0.145 v -0.04 h 0.04 v -0.071 h 0.035 v -0.149 h 0.04 v -0.035 h 0.036 v -0.114 h 0.034 v -0.036 h 0.039 v -0.035 h 0.035 0.15 v -0.039 h 0.04 v -0.075 h 0.035 v -0.035 h 0.038 v -0.04 h 0.035 v -0.035 h 0.036 v -0.04 h 0.04 v -0.035 h 0.147 v -0.039 -0.11 -0.075 -0.036 -0.075 h 0.038 v -0.148 h -0.038 v -0.036 h -0.109 v -0.074 h 0.035 v -0.076 h 0.037 v -0.109 h -0.037 -0.222 v 0.036 h -0.035 v 0.039 h -0.04 v 0.034 h -0.185 v 0.035 h -0.073 v -0.035 h -0.337 v -0.034 h -0.073 v -0.075 h -0.036 -0.074 v -0.039 h -0.036 v -0.11 h 0.11 v 0.074 h 0.076 v 0.036 h 0.074 v -0.036 h 0.035 v -0.039 h 0.035 v -0.035 h 0.115 v -0.036 h 0.035 v 0.036 h 0.04 v 0.035 h 0.109 v -0.071 -0.04 h 0.075 v -0.039 h 0.075 v 0.079 h 0.075 v 0.036 h 0.073 v 0.035 h 0.071 v 0.039 h 0.372 v -0.039 h 0.038 v -0.035 h 0.038 v -0.076 h 0.036 v -0.148 h 0.036 v -0.185 h 0.037 v -0.11 h -0.037 v -0.075 h -0.036 v -0.039 h -0.036 v -0.036 h -0.038 v -0.074 h -0.038 v -0.444 h -0.034 v -0.225 h -0.038 v -0.074 h -0.113 v 0.039 h -0.037 -0.11 v 0.035 h -0.04 v 0.04 h -0.071 v 0.074 h -0.038 v 0.036 h -0.035 v 0.075 h -0.04 v 0.035 h -0.185 v -0.035 h -0.039 v -0.041 h -0.145 v -0.034 h -0.15 v -0.036 h -0.035 v -0.039 h -0.041 v -0.149 h 0.041 v -0.036 h 0.185 v -0.11 h -0.04 v -0.299 h -0.035 v -0.035 h -0.075 v -0.039 h -0.109 -0.076 v -0.036 -0.074 -0.149 -0.075 h -0.039 v -0.035 h -0.071 v -0.039 h -0.039 v -0.146 h 0.039 v -0.039 h 0.071 v -0.075 h 0.039 v -0.075 -0.035 h 0.036 v -0.039 h 0.04 v -0.035 h 0.109 v 0.035 h 0.035 v 0.149 h 0.04 v 0.075 h 0.075 v 0.074 h 0.075 0.036 0.034 v 0.036 h 0.039 v 0.039 0.036 h 0.035 v 0.074 h 0.115 v 0.039 h 0.035 v 0.036 h 0.04 v -0.036 h 0.108 v 0.036 h 0.114 v -0.036 h 0.035 v 0.036 h 0.187 v -0.036 h 0.11 v -0.039 h 0.038 v -0.035 h 0.036 v -0.075 h 0.036 v -0.149 h 0.037 v -0.035 h 0.039 v -0.04 h 0.036 v -0.035 h 0.036 v -0.075 h 0.039 v -0.074 h -0.039 v -0.111 h 0.039 v -0.114 h -0.039 v -0.071 h -0.036 v -0.038 h -0.036 v -0.04 h -0.039 v -0.071 h -0.037 v -0.11 h -0.036 v -0.224 h 0.036 v -0.039 h 0.037 v -0.035 h 0.039 v -0.036 h 0.072 v -0.114 h -0.036 v -0.074 h -0.036 v -0.111 h -0.039 v -0.224 h -0.037 v -0.035 h 0.037 v -0.113 h 0.039 v -0.221 h 0.036 v -0.074 h 0.036 v -0.036 h 0.039 v -0.075 h 0.037 v -0.114 h 0.035 v -0.036 h 0.038 v -0.039 h 0.076 v -0.035 h 0.073 v -0.039 h 0.151 v 0.039 h 0.074 v 0.035 h 0.036 v 0.075 h 0.036 0.038 v -0.036 h 0.04 v -0.039 h 0.035 v -0.035 h 0.036 v -0.109 h -0.036 v -0.04 h 0.109 v 0.04 h 0.037 v 0.035 h 0.039 v -0.035 h 0.075 v -0.04 h 0.035 v -0.075 -0.036 h 0.039 v -0.074 h 0.035 v -0.149 h -0.035 v -0.071 h -0.039 v -0.114 h -0.035 v -0.11 h 0.035 v -0.074 h 0.039 v -0.039 h 0.035 v -0.036 h 0.036 v -0.075 h 0.04 v -0.11 h 0.034 v -0.035 h 0.041 v -0.04 h 0.035 v -0.075 h 0.039 v -0.039 h 0.035 v -0.07 h 0.035 v -0.04 h 0.04 v -0.035 h 0.035 v -0.039 h 0.037 v -0.035 h 0.04 v -0.15 h -0.04 v -0.035 h -0.037 v -0.11 h -0.035 v -0.039 h -0.04 v -0.036 h -0.035 v -0.039 h -0.074 v -0.036 h -0.076 v -0.074 h -0.034 v -0.26 -0.04 h -0.15 -0.074 v -0.109 h -0.112 v -0.075 h -0.034 v -0.035 h -0.039 v -0.039 h -0.036 v -0.036 h -0.259 v 0.036 h -0.077 v 0.258 h 0.038 v 0.151 h -0.076 v 0.035 h -0.036 v 0.075 h -0.038 v -0.037 h -0.035 v -0.073 h -0.04 v -0.186 h 0.04 v -0.074 h -0.04 v -0.036 h -0.109 v -0.039 h -0.037 v -0.035 -0.114 h 0.072 v -0.035 h 0.261 v -0.075 h 0.077 v 0.035 h 0.146 v -0.37 -0.039 h 0.038 v -0.035 h 0.04 v -0.035 h 0.035 v -0.036 h 0.075 v -0.039 h 0.034 v -0.075 h 0.037 v -0.035 h 0.039 v -0.114 h 0.036 v -0.11 h 0.039 v -0.039 h 0.035 v -0.185 h 0.039 v -0.036 h 0.035 v -0.075 h 0.036 0.558 v -0.039 h 0.037 v -0.11 h 0.037 v -0.074 h -0.037 v -0.036 h -0.336 v 0.036 h -0.035 v 0.039 h -0.184 v 0.035 h -0.076 v 0.036 h -0.035 v 0.04 h -0.039 v 0.034 h -0.11 v -0.074 h -0.039 v -0.036 h 0.149 v -0.149 h -0.074 v -0.035 h -0.075 v -0.075 h -0.071 v 0.075 h -0.075 v 0.074 h -0.075 v -0.039 h -0.074 v -0.035 h -0.036 v -0.039 h -0.041 v -0.036 h -0.033 v -0.039 h -0.039 v -0.035 h -0.038 v -0.075 h -0.038 -0.036 v -0.036 h -0.038 v -0.039 h -0.035 v -0.035 h -0.114 v -0.075 h 0.038 v -0.11 h 0.036 v -0.11 h -0.036 v -0.04 h -0.038 v -0.073 h -0.183 -0.039 v -0.186 h 0.039 v -0.224 h 0.036 v -0.071 h 0.036 v -0.078 h 0.039 v -0.295 h -0.075 v -0.074 h -0.036 v -0.111 h -0.039 v -0.039 h -0.037 v -0.369 h -0.036 v -0.075 h -0.036 v -0.114 h -0.038 v -0.106 h -0.038 v -0.079 h -0.034 v -0.11 h -0.038 v -0.035 h -0.037 v -0.074 h -0.038 v -0.035 h -0.038 v -0.041 h -0.371 v -0.035 h -0.035 -0.039 v -0.039 h -0.036 v -0.035 h -0.04 v -0.075 h -0.035 v -0.075 -0.039 h -0.259 v -0.075 h -0.04 v -0.145 h 0.04 v -0.04 h 0.035 v -0.035 h 0.075 v -0.149 h -0.035 v -0.15 h -0.04 v -0.074 h -0.035 v -0.071 h -0.04 v -0.039 h -0.22 v -0.075 h 0.076 v -0.036 h 0.074 v -0.038 h 0.035 v -0.185 h -0.035 v -0.039 h -0.074 v -0.071 h -0.076 v -0.036 h -0.149 v -0.039 h -0.149 v -0.035 h -0.071 v -0.04 h -0.041 -0.26 v 0.04 h -0.072 v 0.035 h -0.113 v 0.039 h -0.076 v 0.107 h 0.152 v -0.032 h 0.037 v -0.039 h 0.035 v 0.11 h -0.035 v 0.149 h -0.037 v 0.074 h -0.038 v 0.036 h -0.038 v 0.039 h -0.037 -0.075 v 0.036 h -0.221 v 0.039 h -0.222 v 0.036 h -0.111 v -0.036 h -0.111 v -0.335 -0.038 h -0.037 v -0.071 h -0.036 v -0.075 h -0.039 v -0.114 h 0.039 v 0.04 h 0.036 v 0.035 h 0.037 v 0.039 h 0.072 v 0.036 h 0.074 v -0.075 h 0.038 v -0.184 h -0.038 v -0.075 h 0.151 v 0.035 h 0.073 v 0.04 h 0.037 v 0.035 h 0.037 v 0.039 h 0.112 v -0.039 h 0.072 v -0.035 h 0.037 v -0.04 h 0.036 v -0.11 h -0.036 v -0.074 h -0.037 v -0.037 h -0.033 v -0.074 h -0.039 v -0.074 -0.075 h -0.038 v -0.035 h -0.037 v -0.115 h 0.114 v -0.035 h 0.479 v -0.039 h 0.075 v -0.035 h 0.114 v -0.036 h 0.11 v -0.15 h -0.039 v -0.035 h -0.038 v -0.263 h -0.033 v -0.036 h -0.114 v -0.038 h -0.039 v -0.036 h -0.333 v 0.074 h -0.037 v 0.036 h -0.075 v 0.039 h -0.037 v 0.11 h -0.033 v 0.035 h -0.039 v 0.04 h -0.41 v -0.075 h -0.074 v -0.075 h -0.072 v -0.035 -0.075 h -0.037 v -0.109 h -0.036 v -0.04 h -0.039 v -0.109 l -0.036,0.034 v -0.074 h -0.04 v -0.035 h -0.073 v -0.036 h -0.11 v -0.039 h -0.036 v -0.035 h -0.04 v -0.04 h -0.075 v -0.149 h -0.035 v -0.11 h -0.038 v -0.035 h -0.035 -0.075 v -0.04 h -0.035 v -0.075 h -0.041 v -0.034 h 0.041 v -0.15 h 0.035 v -0.074 h -0.035 v -0.036 h -0.116 v -0.075 h 0.075 v -0.035 h 0.114 v -0.039 h 0.037 0.035 v -0.039 h -0.145 v -0.071 h -0.041 v -0.115 h -0.075 v -0.074 h -0.035 v -0.11 h -0.034 v -0.036 h -0.15 v 0.075 0.071 h -0.226 v -0.036 h -0.073 v -0.035 h -0.037 v -0.149 h -0.072 -0.037 v 0.11 h -0.039 v 0.039 h -0.074 v -0.039 h -0.035 v -0.071 h -0.04 v -0.039 h -0.075 -0.037 v 0.039 h 0.037 v 0.11 h 0.037 v 0.145 h 0.038 v 0.04 h -0.185 v 0.035 h -0.11 v -0.259 h -0.039 v 0.039 h -0.073 v 0.035 h -0.037 v -0.035 -0.039 h -0.039 v -0.036 h -0.073 v -0.035 h -0.037 v -0.039 h -0.076 -0.035 v -0.04 h -0.04 v -0.035 h -0.034 v -0.035 h -0.15 v 0.035 h -0.075 v 0.035 0.04 h -0.074 -0.111 v 0.039 h -0.109 v 0.035 h -0.075 v 0.036 h -0.036 v -0.036 h -0.115 v -0.035 h -0.034 v -0.039 h -0.074 -0.039 v 0.039 h -0.075 v 0.035 h -0.334 v 0.186 h 0.189 v 0.034 h 0.145 v 0.04 h 0.037 v 0.075 h -0.037 v 0.184 h -0.035 v 0.075 h -0.076 v 0.036 h -0.034 v 0.039 h -0.04 v 0.035 h -0.036 v 0.035 h -0.074 v 0.04 h -0.039 v 0.039 0.036 h -0.185 v 0.034 h -0.074 v 0.04 h -0.038 v 0.035 h -0.148 v 0.04 h -0.073 -0.073 v 0.035 h -0.038 v -0.035 h -0.037 v -0.04 h -0.112 v 0.04 h -0.035 -0.039 v 0.035 h -0.036 v 0.224 h 0.075 v 0.035 h 0.035 v 0.114 h -0.035 v 0.071 h -0.039 v 0.04 h -0.073 v 0.034 h -0.075 v -0.074 h -0.073 v 0.04 0.034 l -0.039,-0.034 v 0.034 h -0.036 v 0.26 h 0.075 v 0.039 h 0.11 v -0.039 h 0.075 v 0.114 h 0.036 v 0.035 h -0.036 v 0.075 h -0.037 v 0.074 h -0.038 v 0.036 h -0.037 v 0.039 h -0.037 v 0.075 h -0.036 v 0.036 h -0.039 v 0.074 h -0.186 v 0.075 h -0.073 v 0.036 h -0.075 v 0.039 h -0.075 v 0.035 h -0.036 v 0.039 h -0.036 v 0.036 h -0.038 v 0.039 h -0.036 v 0.035 h -0.074 v 0.036 h -0.075 v 0.038 h -0.039 v 0.037 h -0.038 v 0.184 h 0.038 v 0.075 h 0.039 v 0.074 h 0.259 0.036 v 0.04 h 0.04 v 0.074 h 0.035 v 0.075 h 0.039 v 0.032 h 0.036 v 0.039 h 0.038 v 0.038 h 0.072 v 0.076 h 0.04 v 0.071 h 0.036 v 0.038 h 0.037 v 0.075 h 0.075 0.036 v 0.075 h 0.037 v 0.036 h 0.037 v 0.074 h 0.038 v 0.15 h 0.037 v 0.074 h 0.036 v 0.11 h 0.039 v 0.15 h 0.035 v 0.035 h 0.074 v 0.035 h 0.038 v 0.04 h 0.037 v 0.074 h 0.038 v 0.075 h 0.073 v 0.036 0.074 h 0.037 v 0.115 h 0.036 v 0.035 h 0.038 v 0.074 h 0.038 v 0.109 h 0.037 v 0.076 h 0.035 v 0.039 h 0.075 v 0.035 h 0.037 v 0.036 h -0.037 v 0.259 h -0.037 v 0.15 h -0.038 v 0.074 h -0.035 v 0.035 h -0.037 v 0.075 h -0.038 -0.038 v 0.075 h -0.036 v 0.039 h -0.037 v 0.071 h -0.111 v 0.075 h -0.037 v 0.149 h -0.038 v 0.558 h 0.038 v 0.075 h 0.075 v 0.036 h 0.11 v -0.036 h 0.074 v -0.111 h 0.038 v -0.039 h 0.037 v -0.075 h 0.073 v -0.035 h 0.037 v -0.078 h 0.037 v -0.071 h 0.04 v -0.036 h 0.035 v -0.039 h 0.037 v -0.039 h 0.073 v -0.035 h 0.039 v -0.041 h 0.074 v 0.041 h 0.036 v 0.074 h 0.04 v 0.11 h 0.074 v 0.036 h 0.071 v 0.04 h 0.114 v -0.04 h 0.074 v -0.036 h 0.034 v -0.035 h 0.041 v -0.036 h 0.035 v 0.071 h -0.035 v 0.185 h 0.035 v 0.078 h -0.035 v -0.039 h -0.041 v -0.075 h -0.147 v 0.036 h -0.038 v 0.039 h -0.037 v 0.15 h 0.037 v 0.036 h 0.151 v 0.148 h 0.034 v 0.04 0.035 h 0.076 v 0.11 h -0.035 v 0.075 h -0.041 v 0.035 h 0.041 v 0.075 h 0.035 v 0.039 h 0.039 v 0.071 h 0.036 v 0.039 h 0.036 v 0.036 h 0.039 v 0.039 h 0.035 v 0.035 h 0.114 v -0.149 h -0.04 v -0.146 h 0.04 v 0.036 h 0.037 v 0.039 h 0.034 v -0.039 h 0.149 v -0.036 h 0.04 v -0.039 h 0.11 v -0.035 h 0.034 v -0.035 h 0.04 v 0.035 h 0.111 v 0.035 h 0.149 v -0.035 -0.035 h 0.072 v 0.145 h -0.072 v 0.039 h -0.074 v 0.036 h -0.151 v 0.074 h -0.035 v 0.11 h -0.04 v 0.114 h 0.04 v 0.111 h 0.148 v 0.034 h 0.073 v 0.039 h 0.039 v 0.04 h 0.037 v 0.035 h 0.148 v 0.036 h 0.147 v 0.11 h -0.037 v 0.075 h -0.073 v 0.039 h -0.112 v 0.036 h -0.073 v 0.039 h -0.037 v 0.035 0.035 h 0.037 v 0.039 h 0.035 v 0.04 h 0.038 v 0.035 h -0.038 v 0.075 h -0.072 v -0.039 h -0.039 v -0.036 h -0.073 v -0.035 h -0.037 -0.036 v -0.04 h -0.224 v -0.039 h -0.15 v -0.035 -0.035 h -0.035 v -0.075 h -0.039 v -0.075 h -0.111 v 0.075 h -0.035 v 0.036 h -0.039 v 0.109 h 0.039 v 0.079 h 0.035 v 0.035 h 0.111 v 0.036 h 0.074 v 0.039 0.039 h 0.039 v 0.036 h 0.036 v 0.035 h 0.04 v 0.114 h 0.035 v 0.036 h -0.075 v 0.109 h -0.036 v 0.039 h -0.224 v -0.039 h -0.035 v -0.035 h -0.039 v -0.11 h -0.035 v -0.149 h -0.039 v -0.036 h -0.036 v -0.039 h -0.036 v -0.039 h -0.039 v -0.036 h -0.035 v -0.035 h -0.448 v 0.11 h 0.04 v 0.039 h 0.034 v 0.036 h 0.076 v 0.035 h 0.035 v 0.035 h 0.037 v 0.079 h 0.113 v 0.071 h 0.038 v 0.113 h 0.034 v 0.036 0.075 h -0.034 v 0.035 h -0.038 v 0.075 h -0.036 v -0.035 h -0.039 v -0.04 h -0.075 v 0.04 h -0.071 v -0.186 h -0.04 v -0.074 h -0.034 v -0.039 h -0.04 v -0.071 h -0.036 v -0.079 h -0.074 v -0.07 h -0.224 v 0.035 h -0.037 v -0.035 h -0.037 v -0.036 h -0.073 v -0.114 h -0.037 v -0.035 h -0.076 -0.036 v -0.04 h -0.11 v -0.039 h -0.038 v -0.035 h -0.037 v -0.074 h -0.075 v -0.036 h -0.037 v -0.075 h -0.035 v -0.039 h -0.039 v -0.036 h -0.036 v -0.034 h -0.112 v -0.076 h -0.037 v -0.035 h -0.036 v -0.04 h -0.039 v -0.039 h -0.073 v -0.11 h -0.036 v -0.074 h -0.04 v -0.036 h -0.185 v -0.039 h -0.035 v -0.035 h -0.04 v -0.075 h -0.036 v -0.074 h -0.036 v -0.036 -0.039 h -0.038 v -0.036 h -0.036 v -0.039 h -0.039 v -0.149 h -0.035 v -0.035 h 0.035 v -0.259 h -0.035 -0.075 v -0.036 h -0.077 v -0.039 h -0.035 v -0.036 h -0.073 v -0.036 h -0.035 v -0.039 h -0.039 v -0.039 h -0.077 v -0.036 h -0.033 v -0.035 h -0.075 v -0.038 h -0.077 v -0.04 h -0.036 v -0.036 h -0.036 v -0.11 h -0.04 v -0.039 l -0.072,0.039 v -0.039 h -0.075 v 0.039 l -0.037,-0.039 v 0.039 h -0.035 v 0.039 h -0.075 v 0.036 h -0.038 v 0.149 h 0.038 v 0.071 h 0.035 v 0.078 h 0.04 v 0.072 h -0.04 v 0.039 h -0.035 v 0.036 h -0.038 -0.077 v 0.039 h -0.035 v 0.034 h -0.147 v 0.075 h -0.075 v 0.04 h -0.074 v 0.035 h -0.038 v 0.036 h -0.038 v 0.074 h -0.111 v 0.04 h -0.035 v 0.07 h -0.075 v 0.075 h -0.037 -0.038 v 0.039 h -0.035 v 0.036 h -0.039 v 0.074 h -0.035 v 0.036 h -0.075 v 0.039 h -0.075 v 0.035 h -0.039 v 0.075 h -0.035 v 0.074 h -0.036 v 0.036 h -0.04 v 0.04 h -0.147 v -0.076 h -0.074 v 0.036 h -0.038 v 0.04 h 0.038 v 0.148 h -0.038 v 0.036 h -0.035 v 0.074 h 0.035 v 0.036 h 0.038 v 0.039 h 0.037 v 0.075 h -0.037 v 0.558 h 0.037 v 0.145 h -0.075 v -0.035 h -0.035 v -0.039 h -0.035 v -0.035 -0.036 h -0.04 v -0.079 h -0.11 v 0.079 h -0.039 v 0.071 h -0.112 v -0.071 h -0.074 v 0.071 h -0.073 -0.035 v 0.039 h -0.111 v -0.074 h -0.041 v -0.036 h -0.037 v -0.079 h -0.036 v -0.07 h -0.111 v 0.035 h -0.038 v 0.035 h -0.038 v -0.035 h -0.295 v -0.035 h -0.039 v -0.036 h -0.038 v -0.039 h -0.035 v -0.039 h -0.074 v -0.036 h -0.222 v -0.035 h -0.073 -0.039 v -0.04 h -0.038 v -0.039 h -0.037 v -0.035 h -0.295 v -0.074 h -0.039 v -0.036 h -0.037 v -0.039 h -0.073 v -0.036 h -0.074 v -0.039 h -0.295 v -0.036 h -0.152 v -0.034 h -0.036 v 0.07 h -0.038 v 0.15 h -0.033 v 0.039 h -0.04 v 0.035 h -0.113 v 0.035 h -0.032 v -0.035 h -0.04 v 0.035 h -0.262 v -0.035 h -0.036 v -0.035 h -0.038 v -0.039 h -0.037 v -0.036 h -0.184 v 0.224 h -0.038 v 0.035 h -0.035 v 0.036 h -0.077 v -0.036 h -0.222 v 0.075 h -0.073 v 0.039 h -0.074 v 0.036 h -0.261 v 0.035 h -0.035 v -0.035 h -0.039 v -0.075 h -0.294 v 0.039 h -0.04 v 0.036 h -0.035 v -0.036 h -0.075 v -0.039 h -0.035 v -0.039 h -0.114 v -0.036 h -0.075 v -0.035 h -0.035 -0.224 -0.075 v 0.071 h -0.038 v 0.223 h -0.037 v 0.04 h -0.035 v 0.036 h -0.039 v -0.036 h -0.038 v -0.04 h -0.257 v 0.04 0.036 h -0.077 v 0.035 h -0.035 v 0.039 h -0.037 v 0.035 h -0.035 v 0.075 h -0.036 v 0.11 h -0.039 v 0.04 h -0.113 v 0.074 h -0.037 v 0.075 h -0.074 v 0.035 h -0.075 v 0.039 h -0.33 v -0.039 h -0.15 v -0.259 h -0.074 v -0.075 h -0.035 v -0.036 h -0.225 v -0.039 h -0.035 v -0.035 h -0.074 v -0.039 h -0.079 v -0.071 h -0.035 v -0.04 h -0.185 v 0.076 h -0.036 v 0.074 h -0.074 v 0.035 h -0.19 v 0.039 h -0.035 v 0.036 h -0.039 v 0.035 h -0.037 v 0.04 h -0.036 v 0.035 h -0.037 v 0.114 h 0.037 v 0.036 h 0.036 v 0.039 h 0.037 v 0.074 h 0.039 v 0.036 h 0.035 v 0.039 h 0.078 v 0.035 h 0.036 v 0.221 h -0.036 v 0.038 h -0.041 v 0.037 h -0.072 v 0.039 h -0.039 v 0.035 0.039 h -0.037 v -0.039 h -0.036 v -0.111 h 0.036 v -0.073 h -0.036 v -0.036 h -0.074 v -0.04 h -0.113 v 0.04 h -0.035 v 0.036 h -0.035 v 0.223 h 0.035 v 0.036 h 0.035 v 0.075 h 0.037 v 0.039 h 0.039 0.111 v 0.071 h -0.037 v 0.039 h -0.037 v 0.035 h -0.037 v 0.075 h -0.039 v 0.035 h -0.072 v 0.04 h -0.035 v 0.074 h -0.04 v 0.075 h -0.074 v -0.075 h -0.035 v -0.039 h -0.076 -0.036 v -0.035 h -0.037 v -0.295 h -0.075 -0.075 v -0.075 h -0.036 v -0.039 h -0.039 v -0.519 h -0.035 v -0.036 h -0.037 v -0.039 h -0.148 v 0.039 0.036 h -0.039 v 0.039 h -0.035 v 0.07 h -0.039 v 0.04 h -0.036 v 0.035 h -0.039 v 0.076 h -0.036 v 0.149 h -0.035 v 0.035 h -0.075 v 0.039 h -0.074 v 0.036 h -0.075 v 0.039 h -0.035 v 0.036 h -0.039 v -0.036 h -0.036 v -0.075 h 0.036 v -0.074 -0.039 h 0.074 v -0.037 h 0.035 v -0.038 h 0.04 v -0.405 h -0.04 v -0.114 h -0.035 v -0.075 h 0.035 v -0.146 h 0.04 v -0.074 h 0.074 v -0.11 h -0.036 v -0.04 h -0.078 v -0.039 h -0.035 v -0.035 h -0.035 v -0.071 h -0.039 v -0.039 -0.039 h -0.185 v 0.078 h -0.039 v 0.145 h -0.073 v 0.04 h -0.033 v 0.036 h -0.114 v 0.035 h -0.225 v -0.035 h -0.037 v -0.036 h -0.108 v 0.036 h -0.041 v 0.035 h -0.036 v 0.039 h -0.073 v 0.035 h -0.039 v 0.039 h -0.037 -0.038 v 0.036 h -0.037 v 0.035 h -0.037 -0.037 v 0.115 h -0.036 v 0.223 h 0.036 v 0.145 h -0.036 -0.036 v 0.075 h -0.037 v 0.04 h -0.039 v 0.036 h -0.036 v 0.11 h -0.036 v 0.113 h -0.037 v 0.036 h -0.038 v 0.039 h -0.037 v 0.11 h -0.038 v 0.036 h -0.036 v 0.039 h -0.111 v -0.039 h -0.074 v -0.036 h -0.041 v -0.035 h -0.035 v -0.039 h -0.035 v -0.075 h -0.037 v -0.149 h -0.037 v -0.146 h -0.04 v -0.04 h -0.036 v -0.035 h -0.037 v -0.04 h -0.037 v -0.109 h 0.037 v -0.036 h 0.037 v -0.039 h 0.076 v -0.035 h 0.037 v -0.114 h -0.223 v 0.039 h -0.074 v 0.036 h -0.039 v 0.039 h -0.035 v 0.035 h -0.04 v 0.039 h -0.036 v 0.075 h -0.037 v 0.035 h -0.073 v 0.035 h -0.039 -0.035 v 0.04 h -0.04 v 0.035 h -0.034 v 0.04 h -0.075 v 0.036 h -0.038 v 0.035 h -0.073 v 0.038 h -0.074 v 0.037 h -0.04 v 0.039 h -0.072 v 0.035 h -0.038 v 0.039 h -0.037 v 0.075 h -0.037 v 0.075 h -0.037 -0.038 v 0.035 h -0.035 v 0.075 0.074 h -0.04 v 0.036 h -0.038 v 0.035 h -0.147 v 0.04 h -0.406 v -0.04 h -0.076 v -0.035 h -0.185 v -0.036 h -0.15 v -0.039 h -0.072 v -0.035 h -0.073 v -0.039 h -0.114 v -0.036 h -0.295 v -0.035 h -0.035 -0.04 v -0.039 h -0.074 v -0.036 h -0.075 v -0.039 h -0.149 v -0.036 h -0.109 v -0.039 h -0.076 v -0.035 h -0.037 v -0.039 h -0.108 v -0.037 h -0.114 v -0.038 h -0.071 v -0.035 h -0.075 v -0.036 h -0.038 v -0.04 h -0.076 v -0.035 h -0.037 v -0.04 h -0.074 -0.073 v -0.035 h -0.15 v -0.035 h -0.074 v -0.039 h -0.036 v -0.036 h -0.039 v -0.039 h -0.035 v -0.035 h -0.038 v -0.039 h -0.038 v -0.036 h -0.036 v -0.039 h -0.038 v -0.035 h -0.037 v -0.115 h -0.037 v -0.035 h -0.075 v -0.036 h -0.071 v -0.039 h -0.039 v -0.074 h -0.038 v -0.035 h -0.072 v -0.15 h -0.039 v -0.071 h 0.039 v -0.078 h 0.036 v -0.334 h -0.036 v -0.036 h -0.039 v -0.149 h -0.036 v -0.15 -0.11 h -0.035 v -0.035 h -0.04 v -0.075 h -0.072 v -0.039 h -0.04 v -0.149 h -0.074 v -0.071 h -0.073 v -0.039 h -0.149 -0.112 v -0.036 h -0.037 v -0.039 h -0.071 v -0.035 h -0.074 v -0.035 h -0.041 v -0.04 h -0.07 v -0.039 h -0.039 v -0.035 h -0.04 v -0.036 h -0.035 v -0.035 h -0.075 v -0.04 h -0.221 v 0.04 h -0.186 v 0.035 h -0.113 v 0.036 h -0.035 v 0.035 h -0.113 v 0.039 h -0.074 v 0.04 h -0.075 v 0.035 h -0.072 v 0.035 h -0.073 v 0.039 h -0.039 v 0.036 h -0.039 -0.034 v 0.039 0.036 h -0.038 v 0.035 h -0.037 v 0.039 h -0.038 v 0.075 h -0.035 v 0.035 h -0.038 v 0.075 h -0.036 v 0.039 h -0.111 v 0.035 h -0.074 v 0.11 h 0.035 v 0.299 h -0.035 v 0.185 h -0.04 v 0.114 h -0.035 v 0.035 h 0.035 v 0.036 h -0.035 v 0.078 h -0.04 v 0.036 h -0.035 v 0.035 h -0.035 v 0.035 h -0.039 v 0.039 h -0.036 v 0.04 h -0.039 v 0.036 h -0.074 v 0.035 h -0.036 v 0.039 h -0.074 v 0.035 h -0.04 v 0.039 h -0.145 v -0.039 h -0.04 v -0.035 h -0.075 v -0.039 h -0.11 v -0.035 h -0.034 v -0.036 h -0.077 v -0.04 h -0.149 v -0.039 h -0.113 v 0.039 h -0.073 v 0.04 h -0.037 v 0.036 h -0.185 v 0.035 h -0.038 v 0.039 h -0.036 v 0.035 h -0.038 v 0.039 h -0.037 -0.035 v 0.036 h -0.04 v 0.15 h 0.04 v 0.074 0.11 0.039 h -0.077 v 0.075 h -0.072 v 0.035 h -0.035 v 0.035 h 0.035 v 0.075 h 0.037 v 0.076 h 0.035 v 0.11 h -0.035 v 0.113 h 0.035 v 0.036 h 0.037 v 0.039 h 0.075 v 0.036 h 0.037 v 0.039 h 0.074 0.038 v 0.035 h 0.075 v 0.409 h -0.037 v 0.035 h -0.038 v 0.113 h 0.038 v 0.076 h -0.038 v 0.07 h -0.038 v 0.04 h 0.038 v 0.035 h 0.038 v 0.189 h 0.037 v 0.259 h -0.037 v 0.11 h -0.038 v 0.11 h -0.038 v 0.039 h -0.074 v 0.035 h -0.072 v 0.036 0.04 h -0.077 v 0.035 h -0.182 v -0.035 h -0.075 -0.11 v -0.04 h -0.115 v 0.04 h -0.034 -0.075 v 0.035 h -0.075 v 0.04 h -0.26 v 0.035 h -0.034 v 0.035 h -0.04 v 0.039 0.11 0.04 h 0.04 v 0.035 h 0.034 v 0.039 h 0.039 v 0.146 h -0.039 v 0.114 h -0.034 v 0.11 h 0.034 v 0.036 h 0.039 v 0.038 h 0.073 v 0.035 h 0.073 v 0.04 h 0.15 v 0.035 h 0.038 v 0.04 h 0.037 v 0.035 h 0.034 v -0.035 h 0.04 v -0.115 h 0.148 v 0.115 h 0.037 v 0.11 h 0.037 v 0.224 h -0.037 v 0.07 h -0.037 v 0.079 h -0.038 v 0.071 h -0.035 v 0.039 h -0.039 v 0.074 h -0.036 v 0.071 h -0.04 v 0.04 0.039 h -0.034 v 0.036 h -0.037 v 0.035 h -0.038 v 0.039 h -0.075 v 0.035 h -0.184 v 0.036 h -0.076 v 0.04 h -0.074 v 0.038 h -0.074 v 0.036 h -0.072 v -0.036 h -0.038 v -0.038 h -0.04 v -0.04 h -0.071 v -0.036 h -0.189 v -0.035 h -0.07 v -0.039 h -0.115 v -0.035 h -0.184 v 0.035 h -0.113 v 0.039 h -0.182 v 0.035 h -0.076 v 0.036 h -0.037 v 0.04 h -0.038 v 0.109 h 0.038 v 0.04 h 0.037 v 0.036 h 0.037 v 0.073 h 0.039 v 0.111 h 0.034 v 0.039 0.035 h 0.038 v 0.04 h 0.036 v 0.035 h 0.074 v 0.224 h 0.113 v 0.221 h -0.038 v 0.223 h -0.036 v 0.039 h -0.039 v 0.075 h 0.075 v 0.145 h 0.038 v 0.04 h 0.039 v 0.074 h 0.075 v 0.036 h 0.033 v 0.039 h 0.037 v 0.035 h 0.037 v 0.075 h 0.037 v 0.035 h -0.037 v 0.075 h 0.037 v 0.224 h 0.041 v 0.075 0.035 h 0.035 v 0.036 h 0.073 v 0.039 h 0.038 0.074 0.039 0.111 0.074 v 0.04 h 0.075 v 0.07 h 0.035 v 0.185 h 0.074 v -0.036 h 0.076 v -0.035 h 0.073 v -0.039 h 0.036 v 0.039 h 0.04 v 0.185 h -0.04 v -0.039 h -0.073 v 0.074 h -0.036 v 0.334 h 0.036 v 0.114 h 0.037 v 0.185 h 0.186 0.185 v 0.036 h 0.039 v 0.039 h 0.035 v 0.034 h 0.038 v 0.035 h 0.037 v 0.041 h 0.075 v 0.035 h 0.034 v 0.039 h 0.041 v 0.075 h 0.184 v -0.039 h 0.035 v 0.039 h 0.075 v 0.036 h 0.036 v 0.109 h 0.038 v 0.075 h 0.038 v 0.039 h 0.075 v 0.075 h 0.037 v 0.11 h 0.035 v 0.075 h 0.037 v 0.035 h 0.15 v 0.04 h 0.036 v 0.035 h 0.038 v 0.075 h 0.147 v -0.036 h 0.041 v -0.074 h 0.034 v -0.04 h 0.036 v -0.035 h 0.074 v -0.04 h 0.149 v 0.04 h 0.04 v -0.04 h 0.185 v 0.04 h 0.036 v 0.035 h 0.074 v -0.075 h 0.039 v -0.035 h 0.036 0.039 v -0.039 h 0.185 v -0.035 h 0.035 v 0.035 h 0.15 v 0.039 h 0.036 v 0.075 h 0.038 v 0.035 h 0.035 v 0.075 h 0.038 v 0.039 h 0.037 v 0.075 h 0.038 v 0.035 h -0.038 v 0.11 h 0.038 v 0.075 0.036 h 0.034 v 0.039 h 0.039 v 0.034 h 0.039 v 0.04 h 0.035 v 0.035 h 0.038 v 0.076 h 0.036 v 0.039 h 0.036 v 0.035 h 0.04 v 0.039 h 0.035 v 0.071 h 0.039 v 0.114 h 0.035 v 0.22 h 0.038 v 0.039 h 0.075 v 0.035 h 0.112 v 0.04 h 0.184 v -0.075 h 0.038 v -0.039 h 0.076 v -0.035 h 0.145 v 0.035 h 0.04 v 0.039 h 0.035 v 0.035 h 0.075 v 0.04 h 0.039 v 0.035 h 0.034 v 0.036 h 0.036 v 0.078 h 0.041 v 0.035 h 0.034 v 0.036 h 0.04 v 0.075 h -0.04 v 0.075 h -0.145 v 0.074 h -0.259 v -0.039 h -0.075 v 0.078 h 0.033 v 0.035 h -0.033 v 0.111 h 0.033 v 0.039 h 0.074 v -0.039 h 0.038 v 0.039 0.035 h 0.04 v 0.036 h 0.035 v 0.039 h 0.184 v 0.26 h 0.041 v 0.039 h 0.034 v 0.07 h 0.04 v 0.189 h 0.149 v -0.039 -0.11 -0.149 -0.15 h 0.035 v 0.075 h 0.036 v 0.075 h 0.296 v -0.04 h 0.04 v -0.185 h -0.077 v -0.145 h -0.037 v -0.039 h 0.037 v -0.075 h -0.037 v -0.036 h -0.108 v -0.035 h -0.04 v -0.113 h 0.04 v -0.075 h -0.04 v -0.036 h -0.035 v -0.039 h -0.039 v -0.071 h -0.036 v -0.149 h 0.036 v -0.04 h 0.114 v 0.04 h 0.145 0.077 v 0.035 h 0.112 v 0.036 h 0.035 v 0.039 h 0.036 v -0.039 h 0.223 v 0.039 h 0.036 v 0.039 h 0.039 v 0.035 h 0.148 v 0.036 h 0.036 v 0.075 h 0.038 v 0.039 h 0.038 v 0.071 h 0.035 v 0.078 h 0.075 v 0.035 h 0.037 0.037 v 0.111 h 0.038 v 0.039 h 0.112 v 0.035 h 0.073 v -0.035 h 0.074 v -0.039 h 0.113 v -0.075 h 0.038 v -0.036 h -0.038 v -0.074 h 0.038 v -0.334 h -0.038 v -0.075 h -0.04 v -0.075 h 0.153 v -0.149 h -0.075 v -0.07 h -0.078 v -0.04 h -0.036 v -0.035 h -0.037 v -0.04 -0.074 h -0.074 v -0.035 h -0.073 v -0.036 h -0.224 v -0.039 h -0.186 -0.074 v -0.074 h 0.038 v -0.04 h 0.036 v -0.22 -0.075 h 0.038 v -0.036 h 0.038 v -0.258 h -0.038 v -0.04 h 0.185 v 0.04 h 0.187 v 0.035 h 0.073 v 0.039 h 0.074 v -0.039 h 0.184 v 0.039 h 0.042 v -0.039 h 0.035 v -0.035 h 0.036 v -0.075 h 0.036 v -0.04 h 0.078 v 0.115 h 0.036 v 0.035 h 0.038 v 0.039 h 0.071 v 0.075 h 0.076 v -0.039 h 0.039 v -0.11 h 0.07 v -0.04 h 0.298 v -0.184 h -0.036 v -0.111 h -0.038 v -0.039 h -0.04 -0.035 v -0.036 h -0.035 v -0.148 h 0.184 v 0.039 h 0.04 v 0.034 h 0.11 v -0.034 h 0.11 v -0.039 h 0.038 v -0.075 h 0.037 v -0.036 h 0.035 v -0.074 h 0.114 v 0.035 h 0.035 v 0.039 h 0.038 v 0.075 h 0.037 v 0.075 0.07 h 0.035 v 0.075 h 0.04 0.037 v 0.075 h 0.036 v 0.039 h 0.074 v 0.036 h 0.075 v 0.035 h 0.112 v -0.11 h 0.037 v -0.036 h 0.073 v 0.036 h 0.074 v 0.039 h 0.038 v 0.036 h 0.185 v -0.036 h 0.074 v -0.039 h 0.074 v -0.075 h 0.035 v -0.036 h 0.038 v -0.075 h 0.04 v -0.034 h -0.04 v -0.039 h -0.038 v -0.075 h 0.038 v -0.036 h 0.04 v -0.039 h 0.035 v -0.076 h -0.035 v -0.069 h 0.073 v 0.034 h 0.037 v 0.035 h 0.149 v -0.035 h 0.111 v 0.15 h 0.038 v 0.075 h 0.032 v 0.075 h 0.041 v 0.034 h 0.038 v 0.036 0.039 h 0.035 v 0.036 h 0.04 v 0.075 h 0.034 v 0.11 h 0.04 v 0.039 h 0.035 v 0.035 h 0.075 v 0.075 h 0.037 v 0.04 h 0.073 v 0.035 h 0.04 v 0.039 h 0.035 v 0.036 h 0.259 v -0.036 h 0.077 v -0.074 h 0.037 v -0.04 h 0.035 v -0.149 h 0.224 v 0.039 0.035 h 0.037 v 0.04 h 0.036 v 0.035 h 0.038 v 0.04 h 0.075 v 0.074 h 0.037 v 0.075 h 0.036 v 0.035 h 0.036 v 0.036 h 0.039 v 0.074 h 0.037 v 0.075 h 0.036 v 0.036 h 0.036 v 0.039 h 0.037 0.037 0.075 v 0.034 h 0.112 v 0.04 h 0.114 v 0.035 h 0.035 v 0.036 h 0.035 v 0.04 h 0.075 v 0.039 h 0.146 v 0.035 h 0.079 v 0.11 h -0.041 v 0.039 h -0.038 v 0.075 h -0.107 v 0.035 h -0.184 v 0.04 h -0.077 v 0.034 h -0.073 v 0.036 h -0.039 v 0.04 h -0.037 v 0.035 h -0.038 v 0.039 0.11 h 0.038 v -0.035 h 0.037 v 0.035 h 0.039 v -0.035 h 0.441 v 0.071 h 0.263 v -0.036 h 0.036 v -0.035 h 0.114 v 0.071 h 0.035 v 0.113 h -0.035 v 0.036 h -0.038 v 0.039 h -0.037 v 0.036 h -0.075 v 0.039 h -0.037 v 0.036 h -0.073 v 0.035 h -0.153 v -0.035 h -0.107 v 0.035 h -0.039 v 0.113 h -0.075 -0.035 v 0.111 h 0.073 v 0.039 h 0.076 v 0.035 h 0.075 v 0.036 0.149 0.039 h -0.039 v 0.036 h -0.036 v 0.035 h -0.039 v 0.04 h -0.037 v 0.039 h -0.038 -0.07 v 0.035 h -0.077 v -0.035 h -0.037 -0.187 v -0.079 h -0.037 v 0.04 h -0.073 v -0.075 h -0.148 v 0.035 h -0.073 v 0.079 h -0.038 v 0.035 h -0.037 v 0.035 h -0.038 v 0.04 h -0.221 v 0.036 h -0.185 v 0.038 h -0.186 v -0.114 -0.07 h -0.038 -0.075 v -0.039 h -0.111 v 0.039 h -0.074 -0.075 v 0.22 h 0.039 v 0.298 h -0.039 v 0.11 h 0.039 v 0.149 h -0.039 v 0.076 h -0.035 v 0.109 h -0.187 v -0.035 h -0.041 v 0.035 h -0.032 v 0.036 h -0.038 v 0.039 h -0.036 v 0.145 h -0.04 v 0.19 h 0.04 v 0.035 h 0.074 v 0.035 h 0.032 v 0.04 h 0.041 v 0.074 h 0.038 v 0.035 0.04 h 0.035 v 0.075 h 0.04 v 0.035 h 0.034 v 0.035 h 0.075 v 0.039 h 0.039 v 0.075 h 0.036 v 0.075 h 0.037 v 0.036 h 0.037 v 0.039 h -0.037 v 0.035 h -0.037 v 0.149 h -0.184 v -0.035 h -0.075 v -0.079 h -0.038 v -0.07 h -0.041 v -0.039 h -0.032 v -0.036 h -0.038 v -0.075 h -0.036 v -0.039 h -0.15 v 0.039 h -0.074 v 0.036 h -0.075 v 0.039 h -0.035 v 0.036 0.039 h -0.04 v 0.07 h -0.038 v 0.039 h 0.038 v 0.186 h 0.113 v -0.036 h 0.261 v 0.075 h -0.04 v 0.149 h -0.035 v 0.07 h -0.037 v 0.036 h -0.038 v 0.039 h -0.037 -0.037 v 0.04 h -0.075 v -0.04 h -0.035 v 0.04 h -0.078 v 0.035 h -0.035 v 0.07 h -0.037 v 0.04 h -0.037 v 0.039 h -0.259 v -0.039 h -0.112 v -0.04 h -0.073 v 0.04 h -0.111 v 0.039 h -0.187 v 0.11 h -0.036 v 0.149 h -0.037 v 0.11 h 0.11 v 0.224 h -0.073 v 0.076 h 0.036 v 0.408 h 0.521 v 0.185 h 0.037 v 0.075 h 0.146 v 0.034 h 0.075 v 0.04 h 0.037 v 0.075 h 0.035 v 0.22 h -0.035 v 0.039 h -0.074 v 0.035 h -0.038 v 0.15 h -0.37 v -0.039 h -0.073 v 0.039 h -0.039 v -0.039 h -0.035 v -0.035 h -0.15 v 0.035 h -0.15 v 0.074 h -0.035 v 0.075 h 0.035 v 0.074 h 0.04 v 0.036 h 0.073 v 0.039 h 0.074 v 0.036 h 0.187 v 0.039 h 0.073 v -0.039 h 0.037 v 0.039 h 0.074 v 0.11 h -0.037 v 0.036 h -0.037 v -0.036 h -0.073 v 0.036 h -0.037 v 0.482 h 0.037 v 0.075 h 0.036 v 0.075 h -0.036 -0.037 v 0.26 h -0.039 v 0.075 h -0.035 v 0.184 h -0.076 -0.259 v -0.075 h -0.037 v -0.109 h -0.038 v -0.037 h -0.035 v -0.077 h -0.038 v -0.036 h -0.036 v -0.035 h -0.04 v -0.04 h -0.035 v -0.035 h -0.075 v -0.039 h -0.037 v -0.036 h -0.039 v -0.035 h -0.074 v -0.075 h -0.035 v -0.04 h -0.035 v 0.04 h -0.076 v -0.074 h -0.078 v -0.04 h -0.145 v -0.035 h -0.109 v -0.039 h -0.115 v 0.039 h -0.259 v -0.075 h -0.036 -0.224 v 0.036 h -0.184 v -0.036 h -0.038 v -0.074 h -0.037 v -0.111 h 0.037 v -0.075 h 0.038 v -0.074 h 0.035 v -0.04 h 0.038 v -0.184 h 0.037 v -0.185 h 0.037 v -0.035 -0.039 h 0.037 v -0.225 h 0.036 v -0.071 h 0.04 v -0.073 h 0.038 v -0.076 h 0.033 v -0.298 h -0.147 v 0.04 h -0.037 v 0.074 0.075 h -0.037 v 0.074 h -0.075 -0.073 v 0.035 h -0.222 v 0.04 h -0.15 v -0.04 h -0.184 v -0.035 h -0.039 -0.071 v -0.04 h -0.039 v -0.034 h -0.074 v -0.075 h -0.036 v -0.074 h -0.039 v -0.076 h -0.036 v -0.184 -0.075 h -0.147 v -0.039 h -0.077 v -0.036 h -0.145 v 0.036 h -0.04 v 0.075 h -0.035 v 0.039 h -0.039 v 0.071 h -0.036 v 0.299 h 0.036 v 0.073 h 0.114 v 0.04 h 0.035 v 0.035 h 0.039 v 0.076 h 0.034 v 0.109 h -0.183 v -0.036 h -0.039 v -0.038 h -0.071 v 0.038 h -0.078 v 0.111 h -0.035 v 0.039 h -0.26 v -0.039 h -0.04 v -0.04 h -0.035 v -0.071 h -0.035 v -0.038 h -0.04 v -0.035 -0.036 h -0.038 v -0.04 h -0.074 v -0.035 h -0.184 v -0.113 h 0.075 v -0.15 h -0.038 v -0.036 h -0.113 v 0.076 h -0.071 v 0.039 h -0.04 v 0.035 h -0.072 v 0.036 h -0.038 v 0.039 h -0.075 v 0.074 h 0.075 v 0.146 h -0.11 v -0.035 h -0.039 v 0.223 h 0.039 v 0.074 h 0.035 v 0.072 h 0.038 v 0.074 h -0.038 v 0.115 h -0.109 v 0.034 h -0.076 v 0.036 h -0.109 v 0.039 h -0.15 v -0.039 h -0.037 v -0.036 h -0.038 v -0.034 h 0.038 v -0.08 h 0.037 v -0.035 h 0.038 v -0.185 h -0.038 v -0.035 h -0.148 v -0.039 h -0.076 v 0.039 h -0.037 v 0.035 h -0.073 v 0.039 h 0.039 v 0.146 h -0.039 v 0.075 h -0.035 v 0.04 h -0.04 v 0.07 h -0.035 v 0.039 h -0.04 v 0.036 h -0.109 v -0.036 h -0.036 v -0.039 h -0.039 v -0.07 h -0.04 v -0.04 h -0.07 v -0.04 h -0.035 v -0.035 h -0.039 v -0.035 h -0.075 v -0.039 h -0.11 v 0.039 0.035 h -0.152 v 0.075 h 0.077 v 0.04 h 0.035 v 0.034 h 0.04 v 0.036 0.039 h -0.04 v 0.036 h -0.219 v -0.036 h -0.041 v -0.039 h -0.036 v 0.184 h -0.076 v -0.035 h -0.073 v -0.035 h -0.036 v -0.039 h -0.077 v -0.036 h -0.145 v -0.039 h -0.075 v -0.036 h -0.037 v -0.034 h -0.187 v 0.034 h -0.075 v -0.034 h -0.037 v -0.08 h -0.406 v -0.035 h -0.036 -0.04 v 0.035 h -0.144 v 0.04 h -0.115 v -0.04 h -0.219 v -0.035 h -0.04 -0.035 v -0.035 h -0.075 -0.074 v 0.035 h 0.038 v 0.035 h 0.036 v 0.04 h -0.036 v 0.04 h -0.114 v 0.034 h -0.035 v 0.075 h -0.039 v 0.075 h -0.036 v 0.07 h -0.038 v 0.076 h -0.038 v 0.077 h -0.038 -0.035 v 0.036 h -0.035 v 0.035 0.04 h -0.078 v 0.036 h -0.074 v 0.035 h -0.033 v 0.039 h -0.039 v 0.15 h 0.039 v 0.074 h -0.114 v 0.035 h -0.074 v 0.15 h -0.039 v 0.11 h -0.036 v 0.075 h -0.038 v 0.184 h -0.036 v 0.075 h -0.038 v 0.035 h -0.073 v 0.039 h -0.037 v 0.146 h -0.037 v 0.039 h -0.076 v 0.04 h -0.035 v 0.034 h -0.039 v 0.04 h -0.185 v 0.036 h -0.035 v 0.035 h -0.039 v 0.039 h -0.036 v 0.11 h 0.036 v 0.04 h -0.036 v 0.07 h -0.038 v 0.075 h -0.036 v 0.039 h -0.036 v 0.035 h -0.039 v 0.036 h -0.035 v 0.079 h -0.04 v 0.035 h -0.035 v 0.04 h -0.039 v 0.034 h -0.036 -0.039 v 0.036 h -0.035 v 0.039 h -0.076 v 0.036 0.039 h -0.035 v 0.035 h -0.148 v 0.036 h -0.075 v 0.04 h -0.036 v 0.035 h -0.039 v 0.039 h -0.075 v 0.035 h -0.035 v 0.189 h -0.074 v 0.036 h -0.036 v 0.039 h -0.039 v 0.035 h -0.037 v 0.035 h -0.076 v 0.036 h -0.149 v 0.039 h -0.072 v 0.039 h -0.26 v 0.035 h -0.074 v 0.036 h -0.112 v 0.04 h -0.036 v 0.074 h -0.037 v 0.071 h -0.04 v 0.039 h -0.035 v 0.039 h -0.149 v -0.039 h -0.075 v -0.039 h -0.035 v -0.036 h -0.075 v -0.035 h -0.074 v 0.035 h -0.037 v 0.036 h -0.039 v 0.039 h -0.109 v 0.039 h -0.036 v 0.036 l -0.04,0.035 h -0.034 v 0.039 h -0.225 v 0.036 h -0.075 v 0.039 h -0.073 v 0.035 h -0.111 v 0.039 h -0.075 v 0.111 h 0.039 v 0.036 h -0.039 v 0.073 h -0.334 v -0.035 h -0.035 v -0.038 h -0.076 v -0.036 h -0.223 v -0.04 h -0.07 v 0.076 h -0.042 v 0.073 h -0.037 v 0.04 h -0.035 v 0.035 h -0.039 v 0.075 h -0.036 v 0.036 h -0.037 v 0.075 h -0.038 v 0.074 0.04 h -0.074 v 0.035 h -0.073 v 0.039 h -0.038 v 0.11 h 0.038 v 0.075 h 0.037 v 0.035 h -0.037 v 0.149 h -0.038 v 0.036 h 0.038 v 0.189 h -0.038 v 0.035 h -0.037 -0.037 v 0.035 h -0.037 v 0.039 h -0.112 v 0.036 h -0.074 v 0.039 h -0.037 v 0.074 0.071 h -0.074 v 0.04 h -0.075 v 0.039 h -0.073 v 0.035 h -0.037 v 0.035 h -0.074 v 0.04 h -0.15 v 0.035 h -0.072 v 0.039 h -0.258 v 0.036 h -0.039 v 0.075 h -0.04 v 0.035 h -0.034 v 0.039 h -0.075 v -0.039 h -0.036 v -0.075 h -0.04 v 0.04 h -0.074 v 0.035 h -0.071 v 0.039 h -0.04 v 0.075 h -0.069 v 0.26 h -0.042 v 0.109 h 0.042 v 0.076 h 0.033 v 0.184 h -0.033 v 0.075 h -0.042 v 0.035 h -0.037 v 0.075 h -0.036 -0.04 v 0.039 h -0.036 v 0.035 h -0.111 v 0.04 h -0.184 v 0.035 h -0.038 v -0.075 h -0.075 v 0.04 h -0.037 v 0.071 h -0.037 v 0.223 h -0.037 v 0.114 h -0.038 v 0.035 h -0.074 v 0.225 h 0.039 v 0.035 h 0.035 v 0.15 h -0.035 v 0.035 h -0.039 v 0.039 h -0.073 v 0.035 h -0.073 -0.074 v 0.075 h -0.038 v 0.11 h -0.037 v 0.185 h -0.037 v 0.075 h -0.075 v 0.078 h -0.037 v 0.071 h -0.035 v 0.075 h -0.038 v 0.039 h 0.038 v 0.035 h -0.038 v 0.075 h 0.038 v 0.035 h -0.075 v 0.039 0.036 h -0.037 v 0.11 h -0.038 v 0.039 h -0.038 -0.036 v 0.036 h -0.111 v 0.039 h -0.074 v 0.035 h -0.037 v 0.039 h -0.038 v 0.036 h -0.038 v 0.035 h -0.036 v 0.075 h -0.038 v 0.075 0.114 h -0.033 v 0.035 h -0.04 -0.035 v 0.04 h -0.039 v 0.035 h -0.04 v 0.11 h -0.07 v 0.074 h -0.04 v 0.075 h -0.035 v 0.074 h -0.039 v 0.035 h -0.038 v 0.041 h -0.037 v 0.035 h -0.035 v 0.039 h -0.037 -0.038 v 0.075 h -0.037 v 0.036 h -0.038 v 0.074 h -0.035 v 0.073 h -0.035 v 0.111 h -0.04 v 0.076 h -0.035 v 0.109 h -0.04 -0.037 v 0.036 h -0.033 v 0.039 h -0.079 v 0.04 h -0.073 v 0.035 h -0.039 v 0.109 h -0.035 v 0.114 0.036 h -0.037 v 0.075 h -0.076 v 0.149 h -0.037 v 0.035 h -0.037 v 0.114 h -0.11 v 0.036 h -0.11 v 0.074 h -0.039 v 0.52 h -0.038 v 0.034 h -0.038 v 0.114 0.15 h -0.034 v 0.035 h -0.075 v 0.075 h -0.036 v 0.035 h -0.038 v 0.039 h -0.037 v 0.111 h -0.039 v 0.11 h -0.037 v 0.039 0.074 h -0.035 v 0.11 h -0.038 v 0.15 h -0.074 v 0.111 h -0.035 v 0.334 h -0.038 v 0.034 h -0.038 v 0.039 h -0.039 v 0.075 h 0.039 v 0.036 h 0.038 v 0.113 h 0.038 v 0.185 h 0.035 v 0.145 h 0.035 v 0.04 h 0.039 v 0.039 h 0.038 v 0.15 h 0.035 v 0.106 h 0.037 v 0.039 h 0.039 v 0.11 h 0.037 v 0.26 h 0.038 v 0.074 h 0.036 v 0.076 h 0.037 v 0.109 h -0.037 v 0.224 h 0.037 v 0.039 h 0.038 v 0.035 h 0.034 v 0.036 0.185 h 0.038 v 0.188 h 0.038 v 0.11 h 0.039 v 0.075 h 0.036 v 0.075 h 0.037 v 0.036 h -0.037 v 0.074 0.035 h -0.036 v 0.04 h 0.036 v 0.11 h 0.037 v 0.074 h 0.037 v 0.075 h 0.075 v 0.035 h 0.072 v 0.04 h 0.076 v 0.039 h 0.037 v 0.071 h 0.037 v 0.074 0.04 0.074 h -0.037 v 0.071 h 0.037 v 0.338 0.369 0.26 0.074 0.076 h -0.037 v 0.034 h -0.037 v 0.04 h -0.076 v 0.035 h -0.037 v 0.075 h -0.035 v 0.075 h -0.038 v 0.035 h -0.037 v 0.075 h -0.037 v 0.074 h -0.037 v 0.11 h -0.036 v 0.036 h -0.039 v 0.074 h -0.038 v 0.04 h -0.038 v 0.035 0.039 h -0.034 v 0.036 h -0.038 v 0.039 h -0.073 v 0.035 h -0.038 v 0.04 h -0.076 v 0.074 h -0.037 v 0.036 h -0.073 v 0.035 h -0.039 v 0.039 h -0.035 v 0.145 h -0.035 v 0.079 h -0.038 v 0.036 h -0.038 v 0.035 h -0.039 v 0.039 h -0.035 v 0.036 h -0.036 v 0.039 h -0.039 v 0.035 h -0.035 v 0.04 h -0.04 v 0.035 h -0.074 -0.074 v 0.035 h -0.036 v 0.075 h -0.035 v 0.039 h -0.042 v 0.035 h -0.032 v 0.04 h -0.04 v 0.035 h -0.071 v 0.036 h -0.042 v 0.039 h -0.036 v 0.035 h -0.036 v 0.076 h -0.035 v 0.113 l -0.039,-0.039 v 0.039 h -0.036 v 0.035 h -0.299 v 0.075 h -0.037 v 0.036 h -0.037 v 0.039 h -0.036 v 0.036 h -0.076 v 0.038 h -0.038 v 0.076 h -0.074 v 0.034 h -0.073 v 0.036 h -0.072 v 0.039 0.075 h -0.038 v 0.11 h -0.038 v 0.075 h -0.037 v 0.074 h -0.037 v 0.036 h -0.037 v 0.04 h -0.038 v 0.109 h -0.035 v 0.075 h -0.037 v 0.039 h -0.038 v 0.07 h -0.039 v 0.04 h -0.036 v 0.035 h -0.036 v 0.039 h -0.038 v 0.036 h -0.035 v 0.039 h -0.04 v 0.071 0.189 h -0.035 v 0.035 h -0.037 v 0.075 h -0.038 v 0.075 h -0.039 v 0.035 h -0.035 v 0.035 h -0.036 v 0.079 h -0.04 v 0.074 h -0.035 v 0.037 h -0.039 v 0.035 h -0.11 v 0.039 h -0.075 v 0.039 h -0.111 v 0.036 h -0.369 v 0.035 h -0.114 v 0.035 h -0.297 v 0.04 h -0.11 v 0.074 h -0.038 v 0.075 h -0.038 v 0.075 0.035 h -0.037 v 0.11 h -0.035 v 0.075 h -0.038 v 0.074 h -0.037 v 0.039 h -0.037 v 0.071 h -0.04 v 0.074 h -0.033 v 0.04 h -0.038 v 0.036 h -0.038 v 0.039 h -0.036 v 0.035 h -0.039 v 0.074 h -0.035 v 0.036 h -0.039 v 0.036 h -0.034 v 0.153 h -0.04 v 0.074 0.071 h -0.072 v 0.04 h -0.04 v 0.149 h -0.035 v 0.11 h -0.038 v 0.035 h -0.036 v 0.114 h -0.036 v 0.256 h -0.04 -0.035 v 0.039 h -0.037 v 0.039 h -0.037 v 0.036 h -0.036 v 0.035 h -0.074 v 0.039 h -0.039 v 0.036 h -0.036 v 0.039 h -0.04 v 0.035 h -0.036 v 0.039 h -0.038 v 0.036 h -0.035 v 0.036 h -0.035 v 0.04 h -0.04 v 0.038 h -0.035 v 0.036 h -0.04 v 0.109 h -0.035 v 0.04 h -0.039 v 0.11 h 0.039 v 0.109 h 0.035 v 0.04 h 0.04 v 0.111 h 0.035 v 0.183 h -0.035 v 0.076 h -0.04 v 0.039 h -0.035 v 0.035 h -0.075 v 0.076 h -0.035 v 0.034 h -0.039 v 0.15 0.114 h -0.035 v 0.11 h 0.035 v 0.145 h -0.035 v 0.114 h -0.04 v 0.035 h 0.04 v 0.075 h 0.035 v 0.224 h -0.035 v 0.11 h -0.04 v 0.114 h 0.04 v 0.259 h -0.04 v 0.11 h 0.04 v 0.15 h 0.035 v 0.035 0.15 h 0.039 v 0.184 h 0.071 v 0.035 h 0.039 v 0.079 h 0.035 v 0.11 h 0.04 v 0.071 h 0.035 v 0.15 h -0.035 v 0.149 h 0.035 v 0.149 h 0.04 0.035 v 0.035 h 0.035 v 0.04 h 0.074 v 0.035 h 0.04 v 0.039 h 0.036 v 0.185 h 0.039 v 0.075 h 0.035 v 0.07 h 0.075 v 0.04 h -0.036 v 0.26 h 0.073 v 0.038 h 0.037 v 0.071 h 0.035 v 0.039 h 0.076 v 0.035 h 0.074 v 0.041 h 0.035 v 0.035 h 0.04 v 0.039 h 0.034 v 0.071 h 0.038 v 0.039 0.036 h 0.04 v 0.039 h 0.034 v 0.035 h 0.039 v 0.035 h -0.039 v 0.299 h -0.034 v 0.039 h 0.034 v 0.035 h 0.039 v 0.036 h 0.035 v 0.114 h 0.039 v 0.036 h 0.036 v 0.039 h 0.076 v -0.039 h 0.033 v 0.074 h 0.077 v 0.04 h 0.11 v 0.035 h 0.151 v 0.039 h 0.035 v 0.035 h 0.037 v 0.075 h -0.037 v 0.036 h -0.073 v 0.034 h -0.038 v 0.115 h 0.038 v 0.035 h 0.038 v 0.114 h 0.072 v 0.037 h 0.078 v 0.039 h 0.111 v 0.108 h 0.035 v 0.111 h 0.073 v 0.039 h 0.04 v 0.036 0.039 h 0.036 v 0.071 h 0.038 v 0.148 h 0.036 v 0.112 h 0.036 0.039 v 0.039 h 0.074 v 0.034 h 0.184 v 0.115 h -0.109 v 0.074 h 0.036 v 0.075 h 0.073 v 0.036 h 0.111 v 0.035 0.039 h 0.114 v -0.039 h 0.036 v 0.039 h 0.074 v 0.036 h 0.37 v 0.035 h 0.149 0.038 0.037 0.035 v 0.039 l 0.075,0.035 h 0.222 v 0.075 h 0.147 v 0.075 h 0.077 v 0.075 h 0.037 v 0.074 h 0.073 v -0.035 h 0.037 v 0.035 h 0.038 v 0.035 h 0.035 v 0.114 0.075 h 0.187 v -0.039 h 0.114 v 0.039 h 0.071 v -0.039 h 0.036 v 0.039 h 0.227 v 0.036 h 0.109 v 0.039 h 0.076 v 0.184 h 0.034 v 0.111 h 0.04 v 0.035 h 0.11 v -0.035 h 0.074 v -0.076 -0.035 h 0.038 v 0.035 h 0.038 v 0.036 h 0.035 v 0.04 h 0.035 v 0.035 h 0.149 v -0.035 h 0.076 v 0.035 h 0.038 v 0.039 h 0.073 v 0.039 h 0.038 v 0.185 h -0.038 z +MO=m 314.4546,236.1445 8.303,-3.681 2.14,-5.136 0.172,-2.911 -2.14,-2.224 2.398,-2.398 -1.201,-2.825 -3.167,-0.599 0.857,-5.564 3.253,-1.37 3.168,1.113 4.622,-5.394 -7.106,-0.17 -1.196,-2.483 -8.562,-2.568 -1.711,-4.537 8.388,-2.568 2.225,-5.479 3.169,-0.172 4.193,3.853 3.083,0.171 9.073,-2.053 4.366,-3.424 6.077,0.427 v 2.825 l 7.79,4.11 5.993,1.027 8.303,-2.226 -5.564,6.933 -0.342,16.865 0.429,9.5 5.392,10.272 2.567,2.654 5.222,3.853 h 6.592 l 6.334,7.019 10.531,7.618 8.045,2.225 0.087,-0.084 2.739,-4.623 2.91,-0.685 h 0.171 l 3.681,5.736 5.564,1.626 -0.942,2.654 4.025,4.622 3.166,-0.856 1.799,10.187 8.13,8.733 -6.077,6.163 -0.172,5.22 -2.482,4.366 -5.821,3.34 h -2.654 l -2.396,-2.227 -0.172,2.997 -6.762,-4.195 -7.447,4.794 -6.764,13.696 -1.968,8.731 -8.645,7.363 -2.739,0.257 -0.172,-2.74 -6.163,1.198 -1.37,5.479 -2.226,1.627 -7.447,-6.42 -1.799,2.14 -6.59,-15.237 v -0.087 l 4.109,-4.365 2.825,-8.475 -0.6,-8.304 1.541,-2.397 8.988,-4.28 -1.969,-3.679 -2.568,-1.114 8.047,-3.938 -4.194,-5.05 0.343,-1.456 -3.596,-0.942 -2.911,-5.136 -5.992,1.199 -0.17,-8.389 -5.395,0.085 c -2.225,-1.37 -4.366,-2.739 -6.59,-4.11 l -5.822,2.056 0.686,-9.332 -0.856,-2.823 -3.255,-1.969 -11.469,1.283 -2.739,-0.427 -1.114,-3.168 -6.078,0.855 -1.712,2.226 -0.341,-0.769 -5.137,-1.712 -1.284,2.568 -8.132,-9.588 z +MY=m 118.52446,156.96185 c -1.17467,-0.0144 -3.04262,-2.03664 -3.28331,-3.08582 1.10061,-0.0761 2.91918,-2.74226 3.44377,-3.70709 0.30858,1.88029 -0.49784,1.86383 -0.75499,3.28331 -0.17692,0.9998 0.62744,2.39871 0.59453,3.5096 m -27.821518,13.81397 c -0.193378,-0.59865 -0.271552,-1.26724 -0.224236,-1.91115 -1.981094,-0.65831 -3.507545,0.0967 -2.664089,2.2691 0.98129,-0.11314 1.773316,-0.22835 2.69289,-0.35795 m 4.389265,-1.73979 c -0.504016,-1.34953 -0.403213,-1.95229 -1.355702,-2.97267 -0.635678,-0.67682 -1.310443,-0.93603 -1.948179,-1.70337 -0.224236,-0.27361 -0.0432,-0.7838 -0.224236,-0.96895 -0.207778,-0.20983 -1.104722,-0.33944 -1.141752,-0.38675 -0.432014,-0.66242 -0.92163,-0.59865 -0.421728,-1.91527 -0.388813,0.0658 -0.921631,-0.13783 -1.300158,-0.0638 0.734425,-0.971 0.183092,-1.69103 0.195436,-2.84924 0.621277,-0.26743 0.767339,-0.50196 1.170553,-0.78791 1.567594,-0.0267 3.386169,0 3.694751,-1.94201 0.621278,0.0391 1.129409,-0.1152 1.682798,0.16869 0.228351,-3.55486 0.07612,-7.11795 0.261265,-10.66663 1.92967,-0.0535 1.53468,-1.62932 2.68672,-2.57975 0.34561,-0.28389 1.13147,0.07 1.61697,-0.32092 0.0658,-0.0514 0.73031,-1.46474 0.77351,-1.61491 0.25098,-0.81466 0.59248,-3.55486 -0.42996,-4.23786 -1.38862,-0.93809 -2.74432,0.92163 -2.76489,2.07573 -2.061326,-0.26127 -3.201021,4.73364 -5.830137,2.56123 0.919574,-0.66448 3.114618,-0.68506 1.80006,-2.50363 0.263323,0.0411 0.602763,-0.0638 0.890772,-0.0165 -0.263323,-0.32092 -0.154291,-0.45053 -0.298295,-0.76117 0.711795,-0.22012 1.232269,-0.72208 1.64783,-1.39273 -0.635682,-0.56779 -0.578081,-1.4709 -0.536936,-2.30819 -1.026549,0.18104 -1.594339,-0.35795 -1.308387,-1.36187 2.160073,-0.11726 3.347083,-0.0144 3.700923,-2.52626 0.96278,0.22835 1.78155,-0.0638 1.7548,-1.17467 0.75706,0.0761 1.61697,-0.0741 2.28351,-0.40115 -0.6542,3.87578 4.19053,1.22198 5.63881,3.06113 -0.1584,0.10286 -0.3559,0.0165 -0.53282,0.0699 0.004,0.33533 -0.19132,0.77146 -0.25509,1.10678 -0.27155,-0.035 -0.64185,0.0885 -0.91546,0.0494 -0.0946,1.16643 -0.36413,4.99285 -1.33307,5.23354 0.77762,0.58425 1.75274,1.11707 2.32053,1.78772 0.34356,0.39293 0.55133,1.15409 0.8846,1.56759 0.2839,0.35796 0.94632,0.43819 1.26519,0.87432 0.51841,0.70151 0.62745,2.39253 0.15635,3.03233 -0.22835,0.30035 -1.33925,0.36207 -1.76715,0.76117 -0.75088,0.70562 -0.59865,1.87617 -1.58199,2.30201 0.52047,0.10492 1.11912,0.97307 1.22609,1.90292 1.88235,0.46288 1.33308,2.28968 1.94613,3.6927 1.32484,-0.14401 2.49745,1.55731 3.43965,2.40899 -0.16046,0.99775 -1.34336,2.47071 -2.15184,3.03027 -1.30016,0.90312 -1.62108,0.60688 -3.29565,0.27979 -0.65214,-0.12961 -2.03253,-0.48756 -2.70935,-0.20161 -0.49167,0.20161 -0.68505,1.12324 -1.14792,1.33924 -0.91752,0.42585 -2.13333,0.2407 -2.87393,-0.37852 -0.77968,1.7404 -3.06524,2.47482 -3.73795,4.06299 -0.4855,1.14175 0.43407,3.89841 -0.785855,4.279 z m -4.19383,1.73979 c -0.193378,-0.59865 -0.271552,-1.26724 -0.224236,-1.91115 -1.981094,-0.65831 -3.507545,0.0967 -2.664089,2.2691 0.98129,-0.11314 1.773316,-0.22835 2.69289,-0.35795 +NA=m 217.8091,549.96 -3.167,3.511 -8.303,0.77 -0.087,-11.641 -1.454,-2.226 1.798,-16.693 -5.307,-2.139 -3.424,-8.305 -0.429,-2.053 -6.592,3.422 -8.645,-3.765 -1.541,-2.739 -12.583,-0.429 -5.051,-3.252 -0.343,-5.735 -14.81,-4.366 -4.278,-4.195 2.309,-5.906 5.823,-0.943 1.968,-1.968 4.794,3.509 6.848,0.6 -6.507,-2.483 -0.598,-6.334 -2.911,-1.285 5.735,-2.054 4.622,-4.794 -7.531,-7.96 0.428,-4.28 10.015,-11.727 1.968,-6.764 7.79,-6.505 4.623,-1.027 1.541,-3.425 5.736,-1.111 4.536,-3.681 0.6,2.653 2.739,-0.342 8.475,3.251 -1.285,-2.823 6.165,0.257 2.311,-1.712 8.731,4.365 -2.397,1.796 0.255,7.192 -4.622,17.205 -4.022,4.025 -2.141,5.392 11.729,0.857 3.594,4.536 5.395,0.684 9.329,0.257 2.139,-2.226 6.421,5.735 v 0.087 l 5.564,14.722 1.542,8.905 0.77,2.311 5.82,-2.483 -0.428,3.167 2.655,-0.256 7.361,4.28 v 0.085 l 0.6,3.254 3.081,1.026 5.992,10.187 -0.341,5.392 -1.628,2.14 1.969,1.97 v 0.085 l 0.342,1.712 -2.053,3.682 -2.997,0.683 -3.082,3.339 -2.74,-0.941 -6.933,4.794 -1.539,8.047 -2.655,1.454 -10.53,-5.563 -2.909,0.084 v 2.827 l -3.083,1.454 -1.883,5.821 -2.653,0.171 -0.685,-2.567 h -8.732 l -6.505,-3.168 -2.397,1.627 z +NI=m 545.4102,302.915 -6.077,1.198 -5.906,7.105 -5.907,-6.592 -1.884,-5.22 4.11,-8.134 6.675,-7.446 -4.963,0.684 -5.051,-3.767 1.285,-2.482 -2.996,-1.371 -9.33,-0.427 -1.201,-3.34 -5.648,3.425 -9.76,-8.132 -3.766,4.623 -2.654,-1.713 -5.05,0.258 -0.171,-0.428 1.884,-3.681 -3.169,-0.77 -1.883,-5.138 5.307,-8.731 -2.653,-0.428 -1.113,-2.568 2.227,-5.991 -2.484,-1.884 -0.341,-3.252 5.905,-3.424 -0.342,-2.654 8.561,2.482 5.734,-1.54 1.115,-2.74 1.881,5.307 7.192,-1.197 0.085,2.738 5.394,1.199 2.569,2.396 3.593,-0.341 2.14,5.22 -3.338,1.541 5.906,7.875 5.135,0.685 1.885,3.168 0.087,0.172 2.225,4.022 5.563,2.568 1.028,4.024 13.868,7.532 0.428,7.021 5.992,8.218 1.968,4.194 -3.852,5.136 -11.47,-4.109 z +NM=m 512.4546,595.0737 -7.705,8.818 -1.712,5.649 -2.824,1.968 -10.614,2.398 -4.28,-3.338 -2.655,-0.087 -4.965,2.226 -0.172,0.086 -0.172,0.085 -3.081,2.654 h -6.591 l -1.198,-2.568 -5.136,-0.771 h -0.257 l -3.253,6.935 h -0.086 l -1.712,-1.2 -1.968,-2.567 -5.479,1.969 -1.798,-1.883 0.77,-8.39 -3.082,-4.879 1.285,-2.482 -3.937,-3.51 2.053,-8.645 -0.94,-4.024 2.482,-1.198 -0.514,-3.768 -2.996,-1.027 -1.111,-5.649 3.079,-4.452 0.514,-3.851 3.253,-5.051 16.178,-9.931 -2.224,-2.31 12.24,-9.16 -1.711,-8.218 5.307,-4.366 0.257,-3.082 2.567,1.027 1.201,-2.396 v -0.085 l 7.788,5.477 6.763,-4.023 5.478,1.542 4.708,-3.511 4.88,2.141 8.046,-6.335 0.942,0.599 2.654,2.312 v 5.907 l 4.536,7.532 4.024,13.013 1.027,0.855 -4.965,2.226 1.284,9.588 -1.882,1.283 3.337,-0.342 2.141,1.711 2.91,12.842 -4.195,3.166 -2.739,0.428 -1.368,-2.397 -2.227,1.542 1.627,2.396 -5.222,2.399 4.622,10.356 0.857,-2.653 8.645,-4.537 8.646,0.344 1.37,2.481 1.284,4.023 h -0.171 l -7.961,7.278 -6.164,-3.94 -6.59,1.114 -2.483,-1.199 -2.14,3.767 -2.911,1.369 -2.738,-1.54 -0.258,-2.826 z +NO=m 303.83968,643.86931 c -3.50652,-2.66136 -7.22819,-5.2976 -10.96656,-7.62179 -7.1503,-1.91209 -14.47544,-3.37226 -21.51741,-5.56438 -4.34575,-2.50282 -9.14337,-4.58182 -13.20767,-7.34863 -1.80412,-3.94218 -3.60824,-7.88435 -5.41236,-11.82653 0.96926,-2.36401 3.30671,-2.59189 5.52558,-3.00488 1.22685,-0.51263 6.7573,-0.83129 3.28985,-1.6167 -2.92142,-1.04532 -6.81097,-0.74921 -8.95162,-3.53189 -2.5982,-3.11579 -6.9077,-3.04159 -10.48475,-4.33272 -2.41926,-0.80025 -4.63164,1.48767 -6.95856,2.06569 -3.96376,1.92396 -8.57676,1.34785 -12.83973,2.11961 -3.83836,0.3282 -7.39582,2.72881 -11.08958,3.19285 -1.74957,-0.13996 -4.42917,-3.21661 -5.36273,-1.23217 -1.86736,3.11243 -3.73473,6.22486 -5.6021,9.33728 0.6458,2.59529 1.92746,5.20344 2.18855,7.79095 -0.0648,3.01711 -2.9528,2.46586 -5.1523,2.78483 -2.36235,1.15145 -3.48238,-2.00506 -5.76131,-1.60058 -2.69927,-0.25916 -5.42106,-0.65903 -7.82914,0.90087 -2.64307,1.07419 -5.28613,2.14837 -7.9292,3.22256 -1.00127,-2.56362 0.96711,-3.52459 2.99561,-4.45312 -0.1356,-2.05962 1.38382,-4.67591 -0.796,-6.04797 -1.20372,-1.71403 0.76793,-4.2261 0.84763,-6.26268 0.48325,-2.53379 1.11091,-4.98898 3.289,-6.60026 1.85289,-2.26502 4.49583,-4.27787 5.85624,-6.70007 -0.25528,-3.18143 -1.20015,-6.53356 -1.02526,-9.60851 1.96894,-1.69843 1.678,-4.00907 1.32215,-6.3373 0.16744,-2.73562 -2.01382,-5.11197 -2.15827,-7.65525 1.44239,-2.89803 2.36954,-6.29739 4.12197,-8.89376 1.49636,-2.75647 5.47526,2.07681 4.17721,-0.88303 -0.24212,-2.65884 -3.71344,-1.27692 -5.54124,-1.95158 -3.45232,0.41675 0.11653,-3.03712 0.48416,-4.72623 1.31211,-1.97953 1.53435,-5.21519 4.41504,-5.38687 2.00052,0.16953 3.73142,2.33334 5.62797,3.27186 1.76366,2.15463 3.96684,-0.21464 5.98975,-0.72842 2.98471,-1.13231 6.58894,-0.41255 9.50104,-1.43929 1.5017,-1.32579 2.73293,-4.60781 4.76739,-2.08024 1.83723,-0.41554 3.73392,-1.97894 5.80447,0.0994 2.21692,1.3706 4.58167,2.0998 7.19825,1.73639 1.7723,0.53618 5.37418,-1.30842 5.47437,1.40365 0.36266,2.461 4.19621,0.92401 3.74564,-1.42427 0.37995,-2.45443 1.54387,-4.21934 4.05683,-4.79769 -0.4545,-2.45345 0.83283,-3.68664 3.35658,-2.80204 3.40274,1.79842 6.80548,3.59683 10.20823,5.39525 2.54316,-0.63229 3.2037,-2.63516 3.33747,-5.02153 0.58332,-2.10178 0.14579,-4.86867 2.6488,-5.71978 1.84629,-1.01666 3.56363,-2.96841 5.48561,-3.43618 2.45208,1.85329 3.78219,-0.73742 5.35184,-2.3794 2.70647,-1.49009 3.71542,-0.43818 2.69858,2.42012 -0.5283,2.37918 -0.92632,4.70047 1.87339,5.60077 1.34931,1.44613 4.50553,2.07316 4.71652,4.0353 -0.45921,2.65564 -0.45707,5.32866 -0.26065,8.009 -1.43323,1.567 -3.64354,2.7899 -4.62158,4.55846 -0.54735,2.24028 0.55972,3.83033 2.22656,5.20037 3.10823,0.54407 6.3361,0.76921 8.85031,2.89671 1.92336,2.55698 3.672,-0.73145 5.82127,-0.0896 1.68044,0.81994 5.68478,-0.0438 4.49907,2.85268 0.0257,2.13306 2.6569,3.43134 3.73566,5.22701 2.27453,1.50445 1.99382,3.55731 0.9506,5.77382 -1.44068,1.87778 0.41388,4.26028 2.29176,4.57084 2.87744,-0.8902 3.67008,1.3691 4.4304,3.67722 1.28952,2.41496 1.5063,5.7334 4.42766,6.774 3.1034,0.84911 0.33155,3.50331 -0.13344,5.44877 -0.87779,2.01139 -2.10601,3.98098 -1.15825,6.21004 0.70921,3.16355 1.07617,6.32963 0.21319,9.50482 -0.33366,2.22598 -1.21104,4.57425 0.78913,6.27535 2.18986,1.79116 1.10551,3.9162 0.0604,6.03725 -0.97867,2.37274 -1.61069,4.99694 -4.0341,6.3217 -3.28597,2.79666 -6.57194,5.59331 -9.85792,8.38997 z +OR=m 366.1597,508.3589 1.455,2.31 -1.028,2.824 4.452,4.71 -0.428,5.563 -6.421,7.191 -10.786,-2.568 -8.816,0.685 2.567,1.455 0.513,2.569 -4.022,4.108 -0.686,2.996 -3.595,0.515 -2.653,-1.627 -1.369,2.481 -1.883,-2.652 -6.677,-0.772 -2.74,10.188 -2.996,-0.6 -2.054,2.055 -1.199,5.393 -5.992,5.222 -0.428,10.443 -3.51,6.336 -5.821,-6.678 0.258,-2.654 -5.738,-1.283 -2.738,1.539 -5.135,-3.081 -5.736,-1.028 -2.227,-2.396 v -3.168 l 4.623,-4.194 -0.172,-4.281 0.515,-4.451 -7.191,-4.964 0.942,-7.19 2.053,-3.682 -0.341,-1.712 v -0.085 l -1.97,-1.97 1.628,-2.14 0.342,-5.392 -5.992,-10.187 -3.082,-1.026 -0.599,-3.254 v -0.085 l -7.362,-4.28 -2.654,0.256 0.428,-3.167 -5.821,2.483 -0.769,-2.311 -1.542,-8.905 -5.565,-14.722 v -0.087 l 5.223,-3.081 0.342,-3.083 2.739,0.259 1.285,-5.821 2.738,-1.37 9.588,0.429 -1.37,2.739 5.136,-2.824 0.172,-2.998 8.817,-12.583 -0.684,-5.564 4.449,-4.194 h 2.826 l 2.396,-5.222 2.484,-1.198 -1.455,-2.655 2.483,-1.111 5.564,1.026 1.625,-2.31 2.74,2.738 10.956,1.027 1.886,2.396 12.669,-2.568 2.653,0.772 4.707,-0.172 v 0.085 l 3.34,5.651 8.388,0.941 1.626,2.312 -1.626,5.135 2.139,1.798 8.132,2.825 4.623,3.511 h 3.852 l 1.285,8.56 0.257,5.649 -2.14,1.883 -0.258,5.649 -2.996,7.277 -2.653,2.054 1.627,5.564 -1.884,6.25 1.455,2.311 2.655,0.6 -2.057,6.677 -2.909,2.739 z +PA=m 346.811,574.957 h -4.876 v -1.883 l -1.97,-1.37 -2.226,-1.626 c -0.258,-0.172 -0.428,-0.257 -0.686,-0.515 l -1.369,-0.855 h -3.766 l -1.83,-3.014 c -0.094,-1.029 -0.341,-0.74 -0.218,-1.227 l 1.363,-2.264 h 3.852 v -1.455 l 4.451,-1.713 3.682,-3.681 h 5.479 1.539 v 0.685 h 4.451 l 0.43,1.285 3.8,0.012 0.291,0.777 -0.154,1.178 -4.622,1.97 h -0.172 l 1.54,4.195 v 3.081 l -4.364,4.28 z +PO=m 230.3086,469.3232 -5.394,-0.685 -3.595,-4.536 -11.729,-0.856 2.141,-5.393 4.023,-4.024 4.622,-17.205 -0.256,-7.192 2.397,-1.796 -8.731,-4.366 -2.311,1.713 -6.165,-0.257 1.286,2.823 -8.476,-3.251 -4.366,-9.33 2.825,-0.857 3.937,-7.703 -2.652,-0.429 1.539,-5.135 -2.824,-5.566 -4.537,-3.167 1.2,-4.023 7.531,-4.709 10.017,-10.785 2.054,-7.19 5.65,0.77 0.6,-2.74 6.163,-1.626 0.513,-5.563 5.908,-4.11 9.073,-0.941 1.968,4.707 v 0.515 h 0.087 l 1.882,1.798 5.307,0.77 3.854,5.478 0.769,5.564 7.534,5.649 2.053,5.051 5.479,5.906 h -0.086 l 3.338,3.682 2.568,0.598 3.853,7.704 2.483,1.028 0.598,3.083 -4.451,3.424 0.172,8.217 2.824,4.794 5.479,2.655 1.114,2.822 3.252,-0.769 1.198,2.309 0.857,-0.256 1.455,2.654 -2.484,1.198 -2.396,5.222 h -2.826 l -4.449,4.195 0.684,5.564 -8.817,12.583 -0.172,2.997 -5.135,2.824 1.369,-2.738 -9.588,-0.429 -2.738,1.37 -1.285,5.82 -2.739,-0.258 -0.342,3.083 -5.223,3.081 -6.42,-5.735 -2.139,2.226 z +RE=m 81.6353,317.50312 c 0.596,1.289 -0.187,3.437 0.129,4.949 0.187,0.926 0.671,1.916 1.013,2.831 0.208,0.067 0.613,0.067 0.826,0.008 0.08,-0.459 0.11,-0.859 0.158,-1.327 2.019,-0.106 4.06,0.716 5.56,2.215 0.704,0.696 1.219,1.525 1.861,2.259 0.952,1.094 1.274,0.774 2.71,1.078 1.033,0.218 1.529,1.107 2.366,1.237 0.912,0.148 2.065,-0.181 3.009,-0.24 1.464,-0.079 2.462,-0.837 3.911,-1.023 0.849,-0.106 1.759,-0.012 2.582,-0.21 -0.761,-0.893 0.695,-1.298 1.388,-1.23 0.096,0.972 0.661,1.078 1.484,0.842 -0.031,-0.172 0.064,-0.426 0.04,-0.594 1.033,0.004 2.205,-0.156 3.185,-0.488 1.005,-0.333 0.735,-0.464 1.524,-1.264 1.108,-1.116 3.028,-0.564 4.546,-0.637 0.416,-0.845 0.591,-1.857 1.232,-2.589 0.319,-0.371 1.101,-0.561 1.348,-0.978 0.199,-0.336 0.235,-1.39 0.292,-1.832 0.24,-1.857 0.15,-3.724 0.274,-5.589 0.647,-0.405 1.252,-0.8 2.079,-0.733 0.214,-0.665 0.332,-1.386 0.709,-2.005 -1.323,0.32 -1.232,-0.683 -0.583,-1.226 0.347,-0.294 0.817,0.085 1.156,-0.489 0.263,-0.463 -0.261,-0.993 0.071,-1.524 0.112,-0.181 0.898,-0.447 1.119,-0.644 0.404,-0.346 0.823,-1.015 1.127,-1.454 0.698,-1.015 2.125,-2.864 1.871,-4.072 1.925,-0.165 2.783,0.282 4.295,-1.294 1.304,-1.373 0.676,-2.611 0.621,-4.283 -1.391,-0.09 -0.682,-2.056 -1.05,-2.999 -0.45,-1.124 -1.204,-1.799 -1.376,-3.062 -0.073,-0.506 -0.082,-1.133 -0.028,-1.647 0.024,-0.228 -0.054,-0.514 0,-0.737 0.064,-0.283 0.373,-0.32 0.405,-0.463 0.273,-1.281 0.149,-2.949 0.089,-4.28 -0.053,-1.256 0.056,-3.926 -0.873,-4.81 -0.691,-0.674 -2.368,-0.876 -3.338,-1.259 -2.525,-1.002 -3.919,-1.935 -6.675,-1.192 -0.009,0.147 -0.039,0.312 -0.039,0.459 -1.16,0.282 -1.997,-1.428 -3.209,-1.605 -1.714,-0.24 -4.008,-0.08 -5.671,0.27 -0.064,1.306 -1.319,0.737 -2.127,0.733 -1.14,-0.014 -1.521,0.374 -2.507,0.837 -0.747,0.346 -1.67,0.544 -2.329,1.019 -0.889,0.637 -0.744,0.902 -1.849,1.117 -1.403,0.269 -3.325,1.331 -4.326,2.502 -0.597,0.708 -0.705,1.23 -1.507,1.841 -0.64,0.493 -1.338,0.897 -1.966,1.352 0.25,-2.485 -1.846,0.504 -2.373,0.998 -1.07,1.007 -1.814,1.314 -3.218,1.233 -2.058,-0.117 -1.916,1.1 -3.043,2.36 -1.037,1.159 -3.093,1.714 -3.751,3.235 -0.904,2.068 0.993,5.939 -0.368,7.8 -0.329,0.451 -0.868,0.564 -1.266,0.994 -0.745,0.817 -0.371,0.805 -0.402,1.723 -0.047,1.411 -1.142,1.925 -2.071,3.007 -0.536,0.615 -1.15,1.091 -1.745,1.613 -0.893,0.788 -0.861,0.83 -0.86,1.951 0,1.432 -0.061,2.898 0.013,4.316 1.201,0.33 2.459,-0.265 3.704,0.3 1.127,0.51 2.235,1.621 2.1,2.944 z +RI=m 412.9849,637.9614 0.769,-5.479 -1.284,-3.339 1.284,-2.996 -4.793,-6.934 -2.654,-0.256 0.258,-13.696 -0.944,-2.739 -5.136,1.71 -7.618,-3.764 -1.198,-2.568 3.081,-7.706 -5.222,-2.139 1.54,-2.397 -0.854,-2.568 2.396,-1.284 -7.362,-9.845 -0.428,-1.883 -2.397,-2.14 3.338,-7.962 2.484,-1.626 -2.91,-4.794 -2.827,-0.685 0.429,-8.217 3.51,-1.37 4.28,-5.394 2.396,-7.96 1.885,2.139 3.509,-4.022 4.793,-10.53 12.07,1.541 2.825,-1.284 2.14,1.883 5.908,0.856 4.537,3.766 3.68,-0.513 v 0.085 l 3.338,-0.685 0.514,-2.653 2.569,-0.941 -0.343,-2.74 2.825,-0.343 1.626,-2.053 1.028,-2.997 -2.654,-2.396 2.14,-4.536 8.903,-1.969 2.91,-1.455 v -2.74 l 4.622,1.798 1.114,2.397 6.334,3.765 2.139,-1.711 2.912,0.942 0.257,8.046 2.054,2.311 2.739,-0.344 2.139,3.083 -0.169,1.37 v 0.086 l -1.2,2.396 -2.568,-1.027 -0.256,3.081 -5.308,4.366 1.711,8.218 -12.239,9.16 2.224,2.31 -16.178,9.932 -3.253,5.05 -0.515,3.851 -3.079,4.453 1.112,5.648 2.996,1.027 0.513,3.768 -2.481,1.198 0.939,4.025 -2.052,8.645 3.937,3.509 -1.285,2.483 3.082,4.878 -0.77,8.39 1.797,1.883 5.48,-1.969 1.968,2.568 1.712,1.199 -3.081,-0.256 0.085,3.081 -5.82,1.369 -6.507,5.736 -5.649,-0.17 0.856,6.249 -2.739,5.477 v 4.025 l 2.568,4.792 -2.655,1.541 -3.851,-4.109 -1.713,-6.162 -8.388,-3.768 -5.138,1.714 z +RN=m 201.0308,556.4668 -6.762,-4.537 -2.568,0.856 -4.623,9.245 h -0.172 l -10.784,-0.085 0.257,5.393 -3.168,-0.685 -3.852,-3.681 2.311,-4.964 0.172,-0.344 v -0.085 l -2.227,1.799 -0.085,0.085 -1.626,4.193 h -2.568 l -0.172,-1.626 v -0.171 l -3.937,-0.342 -0.942,2.996 -2.911,-1.369 -1.027,2.482 -3.424,-0.258 -10.358,-8.56 -0.856,3.511 -3.853,2.481 -0.085,2.996 -4.366,7.534 -2.824,0.599 0.599,2.74 -2.911,-0.343 -1.541,-2.911 1.198,6.421 -4.536,-3.082 -0.515,3.425 -8.56,-3.51 -1.37,2.311 -4.279,-3.511 -0.256,-5.907 -3.083,-0.513 h -0.17 l -4.623,2.911 -2.739,-0.599 -0.6,-3.254 -2.139,2.57 -1.542,-3.083 -0.086,6.249 -13.867,-4.109 -1.454,2.483 -9.76,-5.308 2.483,-1.283 -8.047,0.77 -1.798,-2.311 -1.37,-8.56 1.714,-2.226 2.567,1.027 2.569,-1.112 11.812,3.509 -3.595,-1.713 -0.514,-3.252 5.735,1.456 -0.429,-2.825 2.827,-1.199 -2.997,-0.6 5.993,-2.568 -5.65,1.369 -1.285,2.398 -3.68,-1.028 -5.565,1.113 -1.626,2.311 -1.455,-3.509 2.396,-5.051 1.628,2.655 2.653,-0.258 5.222,-2.995 0.855,-3.082 -1.539,-2.396 -2.399,1.283 -12.069,-1.199 -1.454,-2.396 9.159,-3.424 3.509,-5.993 -0.943,-5.307 7.02,-0.6 3.51,4.024 v 0.342 0.086 l -0.77,2.74 1.028,0.17 0.342,2.996 1.37,-2.738 -1.712,-0.258 -0.258,-2.996 2.911,-1.883 4.366,1.626 4.536,-5.735 2.739,0.6 v 2.739 l 0.344,-2.654 v -0.085 l 2.483,0.941 -0.6,-2.739 2.824,-0.6 3.596,1.456 0.17,2.91 0.686,-7.363 2.482,-1.539 2.57,1.283 v 0.086 l -0.429,5.565 0.514,-2.912 2.824,-0.512 -2.055,-2.056 1.455,-2.567 3.51,-1.454 2.569,1.111 -2.312,-1.198 0.257,-2.653 2.055,-2.74 -0.772,-3.509 2.055,-2.226 -1.198,2.74 2.654,2.311 3.082,0.684 2.396,-1.711 -1.199,5.649 2.912,-4.707 1.455,2.481 3.596,-0.598 1.968,-2.311 -1.883,-2.398 -5.993,0.771 4.538,-3.595 11.898,0.941 2.654,-1.455 -2.911,-0.171 1.541,-2.483 14.809,4.366 0.343,5.735 5.051,3.253 12.583,0.428 1.541,2.739 8.645,3.766 6.593,-3.423 0.428,2.053 3.424,8.305 5.307,2.139 -1.797,16.693 1.454,2.226 0.087,11.641 z +ST=m 520.0728,515.8911 7.275,-4.794 0.429,-8.731 2.654,0.172 2.14,-4.879 -0.428,-0.085 2.826,-0.6 -0.685,-2.911 h 7.275 l 2.568,0.941 0.428,2.911 2.825,0.172 0.172,2.996 2.139,1.883 -2.738,7.446 2.568,14.809 -1.798,9.93 5.651,13.439 1.367,15.067 10.103,13.098 3.852,10.274 -8.304,2.909 -13.953,0.428 -1.284,-4.024 -1.37,-2.481 -8.647,-0.344 -8.644,4.538 -0.858,2.653 -4.621,-10.357 5.222,-2.398 -1.627,-2.396 2.227,-1.542 1.368,2.397 2.739,-0.428 4.194,-3.167 -2.909,-12.841 -2.141,-1.711 -3.337,0.342 1.882,-1.283 -1.285,-9.589 4.966,-2.226 -1.028,-0.855 -4.024,-13.012 -4.535,-7.532 v -5.907 z +TO=m 302.9839,344.9453 -0.599,-4.794 -1.284,-5.136 -4.365,-3.081 0.599,-3.424 -5.908,-3.339 -4.366,-6.164 -3.337,-2.997 2.568,-8.816 -7.276,-1.883 v -2.825 l 2.397,-1.285 -4.28,-5.307 1.284,-2.653 -2.653,0.257 -3.512,-4.537 -2.567,-1.285 -8.219,0.941 -4.793,-2.738 -8.046,0.686 -1.285,-2.398 -3.595,0.687 v -0.087 l -0.343,-2.825 -2.396,-1.285 -0.685,2.912 -8.903,-2.655 0.428,-6.077 -4.022,-10.702 1.455,-2.568 6.335,-0.255 0.085,-0.087 2.311,-5.564 -1.37,-2.654 h 2.74 l 0.513,-7.02 -2.568,-1.283 0.769,-2.996 -7.787,-8.901 0.426,-2.826 -3.253,-0.77 -1.541,-2.655 -1.198,-8.302 v -0.086 l 10.787,-9.587 11.727,1.626 2.396,-1.969 15.581,-0.257 2.14,2.141 -0.342,6.334 2.395,1.198 16.008,-4.707 4.623,-4.196 6.078,0.428 5.564,-7.275 1.029,2.825 3.166,0.171 10.186,-4.88 -0.085,-0.086 8.562,2.569 1.196,2.482 7.106,0.17 -4.623,5.394 -3.168,-1.113 -3.252,1.37 -0.857,5.564 3.167,0.599 1.201,2.825 -2.399,2.398 2.14,2.225 -0.171,2.91 -2.14,5.137 -8.303,3.68 -2.225,5.307 8.132,9.588 1.284,-2.568 5.136,1.712 0.342,0.769 1.712,-2.226 6.078,-0.855 1.113,3.168 2.74,0.427 11.469,-1.283 3.255,1.969 0.855,2.823 -0.685,9.332 5.822,-2.055 c 2.224,1.37 4.364,2.739 6.59,4.11 l 5.394,-0.086 0.171,8.389 5.992,-1.199 2.911,5.136 3.595,0.942 -0.342,1.456 4.194,5.05 -8.047,3.938 2.567,1.114 1.97,3.679 -8.988,4.281 -1.541,2.396 0.599,8.304 -2.825,8.475 -4.109,4.366 v 0.086 l -2.483,4.879 0.514,2.91 -2.311,1.541 -1.198,4.023 -5.051,3.937 -4.538,-4.109 -2.909,-8.732 -3.681,-4.707 -6.077,1.541 -4.966,-3.081 -3.168,4.794 1.714,5.564 -3.681,5.734 -0.943,5.308 -6.507,0.086 -5.048,-2.568 -6.421,5.821 z +VE=m 350.4946,583.2612 -0.259,1.97 -10.442,6.162 -2.14,-1.627 -8.818,2.14 -6.078,-1.711 -5.392,1.027 -1.541,3.082 -3.853,-9.073 h -3.595 l -2.224,-2.398 1.711,-5.65 3.51,-6.336 0.428,-10.442 5.992,-5.223 1.199,-5.392 2.054,-2.055 2.996,0.6 2.74,-10.188 6.677,0.771 1.883,2.653 1.369,-2.481 2.653,1.627 3.595,-0.516 3.341,4.538 2.396,10.615 h -5.479 l -3.681,3.68 -4.451,1.714 v 1.454 h -3.853 l 0.685,6.506 h 3.766 l 1.37,0.855 c 0.257,0.258 0.428,0.343 0.685,0.515 l 2.226,1.626 -0.257,2.911 0.086,1.027 -1.283,1.883 3.166,1.284 2.483,-1.028 c 0.856,0.6 1.711,1.2 2.567,1.798 0.685,0.514 1.37,0.943 1.97,1.37 l 0.085,0.087 z \ No newline at end of file diff --git a/src/test/java/fr/univ_amu/iut/AppTest.java b/src/test/java/fr/univ_amu/iut/AppTest.java new file mode 100644 index 0000000..4344440 --- /dev/null +++ b/src/test/java/fr/univ_amu/iut/AppTest.java @@ -0,0 +1,11 @@ +package fr.univ_amu.iut; + +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +public class AppTest { + @Test + public void test_should_never_fail() { + assertThat(true).isTrue(); + } +} \ No newline at end of file