From a2fed83ad9a1e895c052ad38c84661e8e53bca10 Mon Sep 17 00:00:00 2001 From: nmby Date: Mon, 8 Sep 2025 09:13:55 +0900 Subject: [PATCH 01/12] =?UTF-8?q?=E8=A9=B3=E7=B4=B0=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0=E3=81=AE=E5=B0=8E?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/components/SettingsPane2.java | 106 +++---------- .../gui/dialogs/SettingDetailsDialogPane.java | 140 ++++++++++++++++++ .../gui/components/SettingsPane2.fxml | 100 +++---------- .../gui/dialogs/SettingDetailsDialogPane.fxml | 37 +++++ 4 files changed, 216 insertions(+), 167 deletions(-) create mode 100644 xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java create mode 100644 xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java index 32ec0209..9eada65f 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java @@ -5,35 +5,28 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Locale; import java.util.Objects; import java.util.Optional; import java.util.ResourceBundle; import java.util.stream.Stream; -import javafx.collections.FXCollections; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; -import javafx.geometry.Pos; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; -import javafx.scene.control.ComboBox; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; +import javafx.scene.control.Dialog; import javafx.scene.layout.VBox; import javafx.stage.DirectoryChooser; -import javafx.util.Callback; import xyz.hotchpotch.hogandiff.AppMain; import xyz.hotchpotch.hogandiff.AppResource; import xyz.hotchpotch.hogandiff.SettingKeys; import xyz.hotchpotch.hogandiff.gui.ChildController; import xyz.hotchpotch.hogandiff.gui.MainController; +import xyz.hotchpotch.hogandiff.gui.dialogs.SettingDetailsDialogPane; import xyz.hotchpotch.hogandiff.util.function.UnsafeConsumer; /** @@ -45,41 +38,6 @@ public class SettingsPane2 extends VBox implements ChildController { // [static members] ******************************************************** - private static enum LocaleItem { - - // [static members] ---------------------------------------------------- - - /** 日本語 */ - JA("日本語", Locale.JAPANESE, "jp.png"), - - /** 英語 */ - EN("English", Locale.ENGLISH, "us.png"), - - /** 中国語(簡体字) */ - ZH("簡体中文", Locale.SIMPLIFIED_CHINESE, "cn.png"); - - public static LocaleItem of(Locale locale) { - Objects.requireNonNull(locale); - - return Stream.of(values()) - .filter(item -> item.locale == locale) - .findFirst() - .orElseThrow(); - } - - // [instance members] -------------------------------------------------- - - private final String text; - private final Locale locale; - private final Image image; - - LocaleItem(String text, Locale locale, String imageSrc) { - this.text = text; - this.locale = locale; - this.image = new Image(imageSrc); - } - } - // [instance members] ****************************************************** private final AppResource ar = AppMain.appResource; @@ -88,9 +46,6 @@ public static LocaleItem of(Locale locale) { @FXML private GooglePane googlePane; - @FXML - private ComboBox localeComboBox; - @FXML private Button openWorkDirButton; @@ -100,6 +55,9 @@ public static LocaleItem of(Locale locale) { @FXML private Button deleteWorkDirButton; + @FXML + private Button detailsButton; + /** * コンストラクタ
* @@ -121,30 +79,29 @@ public void init(MainController parent, Object... param) { // 2.項目ごとの各種設定 googlePane.init(parent); - localeComboBox.setItems(FXCollections.observableArrayList(LocaleItem.values())); - localeComboBox.setButtonCell(cellFactory(false).call(null)); - localeComboBox.setCellFactory(cellFactory(true)); openWorkDirButton.setOnAction(openDir); changeWorkDirButton.setOnAction(changeDir); deleteWorkDirButton.setOnAction(deleteDir); - localeComboBox.setOnAction(event -> { - if (ar.changeSetting(SettingKeys.APP_LOCALE, localeComboBox.getValue().locale)) { - new Alert( - AlertType.INFORMATION, - "%s%n%n%s%n%n%s".formatted( - rb.getString("gui.component.SettingsPane2.051"), - rb.getString("gui.component.SettingsPane2.052"), - rb.getString("gui.component.SettingsPane2.053")), - ButtonType.OK) - .showAndWait(); + detailsButton.setOnAction(event -> { + try { + SettingDetailsDialogPane detailsContent = new SettingDetailsDialogPane(); + detailsContent.init(); + Dialog detailsDialog = new Dialog<>(); + detailsDialog.setTitle("★方眼Diff - 詳細設定"); + detailsDialog.getDialogPane().setContent(detailsContent); + detailsDialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); + detailsDialog.showAndWait(); + + } catch (IOException e) { + e.printStackTrace(); + // nop } }); // 3.初期値の設定 - Locale locale = ar.settings().get(SettingKeys.APP_LOCALE); - localeComboBox.setValue(LocaleItem.of(locale)); + // nop // 4.値変更時のイベントハンドラの設定 // nop @@ -248,29 +205,4 @@ public void init(MainController parent, Object... param) { }); } }; - - private Callback, ListCell> cellFactory(boolean showText) { - return listView -> new ListCell<>() { - @Override - public void updateItem(LocaleItem item, boolean empty) { - super.updateItem(item, empty); - - if (empty || item == null) { - setText(null); - setGraphic(null); - } else { - ImageView iv = new ImageView(item.image); - iv.setFitHeight(17); - iv.setPreserveRatio(true); - setGraphic(iv); - - if (showText) { - setText(item.text); - } else { - this.setAlignment(Pos.CENTER); - } - } - } - }; - } } \ No newline at end of file diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java new file mode 100644 index 00000000..108880ef --- /dev/null +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java @@ -0,0 +1,140 @@ +package xyz.hotchpotch.hogandiff.gui.dialogs; + +import java.io.IOException; +import java.util.Locale; +import java.util.Objects; +import java.util.ResourceBundle; +import java.util.stream.Stream; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Pos; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.ButtonType; +import javafx.scene.control.ComboBox; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.VBox; +import javafx.util.Callback; +import xyz.hotchpotch.hogandiff.AppMain; +import xyz.hotchpotch.hogandiff.AppResource; +import xyz.hotchpotch.hogandiff.SettingKeys; + +public class SettingDetailsDialogPane extends VBox { + + // [static members] ******************************************************** + + private static final AppResource ar = AppMain.appResource; + private static final ResourceBundle rb = ar.get(); + + private static enum LocaleItem { + + // [static members] ---------------------------------------------------- + + /** 日本語 */ + JA("日本語", Locale.JAPANESE, "jp.png"), + + /** 英語 */ + EN("English", Locale.ENGLISH, "us.png"), + + /** 中国語(簡体字) */ + ZH("簡体中文", Locale.SIMPLIFIED_CHINESE, "cn.png"); + + public static LocaleItem of(Locale locale) { + Objects.requireNonNull(locale); + + return Stream.of(values()) + .filter(item -> item.locale == locale) + .findFirst() + .orElseThrow(); + } + + // [instance members] -------------------------------------------------- + + private final String text; + private final Locale locale; + private final Image image; + + LocaleItem(String text, Locale locale, String imageSrc) { + this.text = text; + this.locale = locale; + this.image = new Image(imageSrc); + } + } + + // [instance members] ****************************************************** + + @FXML + private ComboBox localeComboBox; + + /** + * コンストラクタ
+ * + * @throws IOException FXMLファイルの読み込みに失敗した場合 + */ + public SettingDetailsDialogPane() throws IOException { + FXMLLoader loader = new FXMLLoader(getClass().getResource("SettingDetailsDialogPane.fxml"), rb); + loader.setRoot(this); + loader.setController(this); + loader.load(); + } + + public void init() { + // 1.disableプロパティのバインディング + // nop + + // 2.項目ごとの各種設定 + localeComboBox.setItems(FXCollections.observableArrayList(LocaleItem.values())); + localeComboBox.setButtonCell(cellFactory(false).call(null)); + localeComboBox.setCellFactory(cellFactory(true)); + + localeComboBox.setOnAction(event -> { + if (ar.changeSetting(SettingKeys.APP_LOCALE, localeComboBox.getValue().locale)) { + new Alert( + AlertType.INFORMATION, + "%s%n%n%s%n%n%s".formatted( + rb.getString("gui.component.SettingsPane2.051"), + rb.getString("gui.component.SettingsPane2.052"), + rb.getString("gui.component.SettingsPane2.053")), + ButtonType.OK) + .showAndWait(); + } + }); + + // 3.初期値の設定 + Locale locale = ar.settings().get(SettingKeys.APP_LOCALE); + localeComboBox.setValue(LocaleItem.of(locale)); + + // 4.値変更時のイベントハンドラの設定 + // nop + } + + private Callback, ListCell> cellFactory(boolean showText) { + return listView -> new ListCell<>() { + @Override + public void updateItem(LocaleItem item, boolean empty) { + super.updateItem(item, empty); + + if (empty || item == null) { + setText(null); + setGraphic(null); + } else { + ImageView iv = new ImageView(item.image); + iv.setFitHeight(17); + iv.setPreserveRatio(true); + setGraphic(iv); + + if (showText) { + setText(item.text); + } else { + this.setAlignment(Pos.CENTER); + } + } + } + }; + } +} diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml index f3c231d2..00e04740 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml @@ -2,115 +2,55 @@ - - + - - + + - - + + - + + + - - - - - - - - - - - - - - - - - + + + + diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml new file mode 100644 index 00000000..c95bc8cb --- /dev/null +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From fe9aaa7dcbbd4b1f9fc96dd62a685c64e2c17c10 Mon Sep 17 00:00:00 2001 From: nmby Date: Fri, 12 Sep 2025 20:32:35 +0900 Subject: [PATCH 02/12] =?UTF-8?q?CheckUpdates=E3=81=AE=E5=B0=8E=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyz/hotchpotch/hogandiff/SettingKeys.java | 25 ++++++++++++++ .../hogandiff/gui/MainController.java | 12 +++++++ .../gui/dialogs/SettingDetailsDialogPane.java | 10 +++++- .../gui/dialogs/SettingDetailsDialogPane.fxml | 34 ++++++------------- 4 files changed, 56 insertions(+), 25 deletions(-) diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java index facb230d..274dc810 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java @@ -3,6 +3,7 @@ import java.awt.Color; import java.lang.reflect.Modifier; import java.nio.file.Path; +import java.time.Instant; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -316,6 +317,30 @@ private static Function decodeNotSupported(String msg) { Boolean::valueOf, true); + /** 起動時に新規バージョンの有無を確認するか */ + public static final Key CHECK_UPDATES = new Key<>( + "application.checkUpdates", + () -> false, + String::valueOf, + Boolean::valueOf, + true); + + /** 新バージョン有無の最終チェック日時 */ + public static final Key LAST_CHECK_UPDATES = new Key<>( + "application.lastCheckUpdates", + () -> null, + Instant::toString, + Instant::parse, + true); + + /** 新バージョン有無チェックの最短間隔(時間) */ + public static final Key CHECK_UPDATES_INTERVAL_HOURS = new Key<>( + "application.checkUpdatesIntervalHours", + () -> 12, + String::valueOf, + Integer::valueOf, + false); + /** 全ての定義済み設定項目を含むセット */ // Collectors#toSet は現在の実装では immutable set を返すが // 保証されないということなので、一応 Set#copyOf でラップしておく。 diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java index ea8b0912..a1ba1347 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java @@ -141,6 +141,18 @@ public void initialize() { // 3.初期値の設定 row4Pane.setVisible2(row3Pane.showSettings().getValue()); + if (ar.settings().get(SettingKeys.CHECK_UPDATES)) { + // TODO: coding + Thread checkUpdatesTask = new Thread(() -> { + System.out.println("Checking updates 1"); + Platform.runLater(() -> { + System.out.println("Checking updates 2"); + }); + }); + checkUpdatesTask.setDaemon(true); + checkUpdatesTask.start(); + } + // 4.値変更時のイベントハンドラの設定 // nop } diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java index 108880ef..fd07e820 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java @@ -13,6 +13,7 @@ import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.ButtonType; +import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; @@ -71,6 +72,9 @@ public static LocaleItem of(Locale locale) { @FXML private ComboBox localeComboBox; + @FXML + private CheckBox checkUpdatesCheckBox; + /** * コンストラクタ
* @@ -109,8 +113,12 @@ public void init() { Locale locale = ar.settings().get(SettingKeys.APP_LOCALE); localeComboBox.setValue(LocaleItem.of(locale)); + checkUpdatesCheckBox.setSelected(ar.settings().get(SettingKeys.CHECK_UPDATES)); + // 4.値変更時のイベントハンドラの設定 - // nop + checkUpdatesCheckBox.setOnAction(event -> ar.changeSetting( + SettingKeys.CHECK_UPDATES, + checkUpdatesCheckBox.isSelected())); } private Callback, ListCell> cellFactory(boolean showText) { diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml index c95bc8cb..ee6a8c93 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml @@ -1,35 +1,21 @@ + - - - + - + - - - - - - - - - - - - - - + + + + + From eca7f26f876fbe8db02bc552e7e60d7d8cf3c156 Mon Sep 17 00:00:00 2001 From: nmby Date: Fri, 12 Sep 2025 20:33:22 +0900 Subject: [PATCH 03/12] =?UTF-8?q?GoogleCredential=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=82=BF=E3=82=B9=E3=82=AF=E3=81=AE=E3=83=87=E3=83=BC=E3=83=A2?= =?UTF-8?q?=E3=83=B3=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyz/hotchpotch/hogandiff/gui/components/GooglePane.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/GooglePane.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/GooglePane.java index bb8c9960..7ae81b52 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/GooglePane.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/GooglePane.java @@ -158,12 +158,14 @@ public void init(MainController parent, Object... param) { }); // 3.初期値の設定 - new Thread(() -> { + Thread asyncInitGoogleTask = new Thread(() -> { GoogleCredential credential = GoogleCredential.get(false); Platform.runLater(() -> { parent.googleCredential.setValue(credential); }); - }).start(); + }); + asyncInitGoogleTask.setDaemon(true); + asyncInitGoogleTask.start(); // 4.値変更時のイベントハンドラの設定 // nop From 7fdbf5b22b28201b9a75bb54b8e513be32f7c7b0 Mon Sep 17 00:00:00 2001 From: nmby Date: Sat, 13 Sep 2025 14:03:15 +0900 Subject: [PATCH 04/12] =?UTF-8?q?Github=20Pages=E7=94=A8JSON?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/api/versions/latest | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/api/versions/latest diff --git a/docs/api/versions/latest b/docs/api/versions/latest new file mode 100644 index 00000000..b268c925 --- /dev/null +++ b/docs/api/versions/latest @@ -0,0 +1,4 @@ +{ + "version": "0.26.2", + "releasedAt": "2025-08-31", +} \ No newline at end of file From 1ce868b118f954f1d68dc1d42a6cd28a13639dbc Mon Sep 17 00:00:00 2001 From: nmby Date: Sat, 13 Sep 2025 14:38:57 +0900 Subject: [PATCH 05/12] =?UTF-8?q?=E6=9C=80=E6=96=B0=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A7=E3=83=B3=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyz/hotchpotch/hogandiff/SettingKeys.java | 2 +- .../hogandiff/gui/MainController.java | 15 +-- .../hogandiff/gui/UpdateChecker.java | 101 ++++++++++++++++++ .../hotchpotch/hogandiff/util/NetUtil.java | 52 +++++++++ 4 files changed, 157 insertions(+), 13 deletions(-) create mode 100644 xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/UpdateChecker.java create mode 100644 xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/util/NetUtil.java diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java index 274dc810..ec97fbb1 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java @@ -336,7 +336,7 @@ private static Function decodeNotSupported(String msg) { /** 新バージョン有無チェックの最短間隔(時間) */ public static final Key CHECK_UPDATES_INTERVAL_HOURS = new Key<>( "application.checkUpdatesIntervalHours", - () -> 12, + () -> 6, String::valueOf, Integer::valueOf, false); diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java index a1ba1347..d03c2262 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/MainController.java @@ -141,20 +141,11 @@ public void initialize() { // 3.初期値の設定 row4Pane.setVisible2(row3Pane.showSettings().getValue()); - if (ar.settings().get(SettingKeys.CHECK_UPDATES)) { - // TODO: coding - Thread checkUpdatesTask = new Thread(() -> { - System.out.println("Checking updates 1"); - Platform.runLater(() -> { - System.out.println("Checking updates 2"); - }); - }); - checkUpdatesTask.setDaemon(true); - checkUpdatesTask.start(); - } - // 4.値変更時のイベントハンドラの設定 // nop + + // 5.その他 + UpdateChecker.execute(false); } /** diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/UpdateChecker.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/UpdateChecker.java new file mode 100644 index 00000000..16d59c50 --- /dev/null +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/UpdateChecker.java @@ -0,0 +1,101 @@ +package xyz.hotchpotch.hogandiff.gui; + +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.ResourceBundle; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; + +import javafx.application.Platform; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.ButtonType; +import xyz.hotchpotch.hogandiff.AppMain; +import xyz.hotchpotch.hogandiff.AppResource; +import xyz.hotchpotch.hogandiff.SettingKeys; +import xyz.hotchpotch.hogandiff.util.NetUtil; + +public class UpdateChecker { + + // [static members] ******************************************************** + + private static final AppResource ar = AppMain.appResource; + private static final ResourceBundle rb = ar.get(); + + public static void execute(boolean force) { + UpdateChecker checker = new UpdateChecker(); + checker.checkUpdate(force); + } + + // [instance members] ****************************************************** + + private UpdateChecker() { + } + + private void checkUpdate(boolean force) { + if (!force) { + if (!ar.settings().get(SettingKeys.CHECK_UPDATES)) { + return; + } + + Instant lastCheckAt = ar.settings().get(SettingKeys.LAST_CHECK_UPDATES); + int interval = ar.settings().get(SettingKeys.CHECK_UPDATES_INTERVAL_HOURS); + if (lastCheckAt != null && Instant.now().isBefore(lastCheckAt.plus(interval, ChronoUnit.HOURS))) { + return; + } + } + + CompletableFuture + .supplyAsync(() -> NetUtil.getAsJson("https://nmby.github.io/hogandiff4/api/versions/latest")) + .thenAccept(json -> { + if (!amILatest(json.getString("version"))) { + Platform.runLater(() -> { + new Alert( + AlertType.INFORMATION, + // TODO: コンテンツのリッチ化 + "最新バージョンがあります。", + ButtonType.OK) + .showAndWait(); + }); + } else if (force) { + Platform.runLater(() -> { + new Alert( + AlertType.INFORMATION, + "新規バージョンはありません。", + ButtonType.OK) + .showAndWait(); + }); + } + ar.changeSetting(SettingKeys.LAST_CHECK_UPDATES, Instant.now()); + }) + .exceptionally(throwable -> { + throwable.printStackTrace(); + return null; + }); + } + + private boolean amILatest(String latestVersion) { + Function toVersionNumbers = (v) -> { + String[] parts = v.replace("v", "").split("\\."); + if (parts.length != 3) { + throw new IllegalArgumentException("Invalid version string: " + v); + } + int[] numbers = new int[parts.length]; + for (int i = 0; i < parts.length; i++) { + numbers[i] = Integer.parseInt(parts[i]); + } + return numbers; + }; + + int[] latest = toVersionNumbers.apply(latestVersion); + int[] current = toVersionNumbers.apply(AppMain.VERSION); + for (int i = 0; i < latest.length; i++) { + if (latest[i] > current[i]) { + return false; + } else if (latest[i] < current[i]) { + return true; + } + } + return true; + } +} diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/util/NetUtil.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/util/NetUtil.java new file mode 100644 index 00000000..d172258b --- /dev/null +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/util/NetUtil.java @@ -0,0 +1,52 @@ +package xyz.hotchpotch.hogandiff.util; + +import java.util.Objects; + +import org.json.JSONObject; + +import com.google.api.client.http.GenericUrl; +import com.google.api.client.http.HttpRequest; +import com.google.api.client.http.HttpRequestFactory; +import com.google.api.client.http.HttpResponse; +import com.google.api.client.http.javanet.NetHttpTransport; + +/** + * ネットワーク関連のユーティリティクラスです。
+ * + * @author nmby + */ +public class NetUtil { + + // [static members] ******************************************************** + + private static final HttpRequestFactory requestFactory = new NetHttpTransport().createRequestFactory(); + + /** + * 指定されたURLにGETリクエストを送り、レスポンスボディをJSONオブジェクトとして返します。
+ * + * @param url URL + * @return JSONオブジェクト + * @throws NullPointerException 引数に {@code null} が指定された場合 + */ + public static JSONObject getAsJson(String url) { + Objects.requireNonNull(url); + + try { + HttpRequest request = requestFactory.buildGetRequest(new GenericUrl(url)); + request.setConnectTimeout(5000); + request.setReadTimeout(5000); + + HttpResponse response = request.execute(); + String jsonString = response.parseAsString(); + return new JSONObject(jsonString); + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + // [instance members] ****************************************************** + + private NetUtil() { + } +} From 13d96cb149f48e745009991df5f45c7dcb5c13bf Mon Sep 17 00:00:00 2001 From: nmby Date: Sat, 13 Sep 2025 14:50:23 +0900 Subject: [PATCH 06/12] =?UTF-8?q?=E6=96=B0=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=9C=89=E7=84=A1=E3=82=92=E7=9B=B4=E3=81=A1?= =?UTF-8?q?=E3=81=AB=E7=A2=BA=E8=AA=8D=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hogandiff/gui/dialogs/SettingDetailsDialogPane.java | 9 +++++++++ .../hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml | 2 ++ 2 files changed, 11 insertions(+) diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java index fd07e820..57978fe4 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java @@ -12,6 +12,7 @@ import javafx.geometry.Pos; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; @@ -24,6 +25,7 @@ import xyz.hotchpotch.hogandiff.AppMain; import xyz.hotchpotch.hogandiff.AppResource; import xyz.hotchpotch.hogandiff.SettingKeys; +import xyz.hotchpotch.hogandiff.gui.UpdateChecker; public class SettingDetailsDialogPane extends VBox { @@ -75,6 +77,9 @@ public static LocaleItem of(Locale locale) { @FXML private CheckBox checkUpdatesCheckBox; + @FXML + private Button checkUpdatesImmediatelyButton; + /** * コンストラクタ
* @@ -109,6 +114,10 @@ public void init() { } }); + checkUpdatesImmediatelyButton.setOnAction(event -> { + UpdateChecker.execute(true); + }); + // 3.初期値の設定 Locale locale = ar.settings().get(SettingKeys.APP_LOCALE); localeComboBox.setValue(LocaleItem.of(locale)); diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml index ee6a8c93..00604393 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml @@ -1,6 +1,7 @@ + @@ -16,6 +17,7 @@ + + + - - + + - - - - From 23b9a8a73d03838bb34658a9172368323057ecc3 Mon Sep 17 00:00:00 2001 From: nmby Date: Sun, 14 Sep 2025 15:03:54 +0900 Subject: [PATCH 09/12] =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=AE=E5=9B=BD=E9=9A=9B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s.properties\347\256\241\347\220\206.xlsx" | Bin 41613 -> 44644 bytes .../hogandiff/gui/UpdateChecker.java | 38 ++++++++++++++---- .../gui/components/SettingsPane2.java | 2 +- .../gui/dialogs/SettingDetailsDialogPane.java | 10 ++++- .../src/main/resources/messages.properties | 13 ++++++ .../src/main/resources/messages_en.properties | 13 ++++++ .../src/main/resources/messages_zh.properties | 13 ++++++ .../gui/components/SettingsPane2.fxml | 2 +- .../gui/dialogs/SettingDetailsDialogPane.fxml | 12 +++--- 9 files changed, 86 insertions(+), 17 deletions(-) diff --git "a/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" "b/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" index 02d07576d93c566f20e63d3bc94ce5c36fa7071e..4ade87d39c8b62b7d38fd3db41c2707998c63512 100644 GIT binary patch delta 36126 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%0DXCj)eO^JWIn?rAiGQs1N2M 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

H_k%fzNW)|~ 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 PqKJgfm*uN3*`4}t(22EA delta 33031 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 o5a-`Z1PlbE4e}j&{J**1l21zfM+FxMY + * + * @author nmby + */ public class UpdateChecker { // [static members] ******************************************************** @@ -22,6 +30,14 @@ public class UpdateChecker { private static final AppResource ar = AppMain.appResource; private static final ResourceBundle rb = ar.get(); + /** + * 更新チェックを実行します。
+ * {@code force} に {@code true} が指定されている場合は、強制的にチェックします。
+ * {@code force} に {@code false} が指定されている場合は、 + * ユーザーが更新チェックを無効にしている場合、過去数時間以内にチェックしている場合はスキップします。
+ * + * @param force 強制的にチェックする場合は {@code true} + */ public static void execute(boolean force) { UpdateChecker checker = new UpdateChecker(); checker.checkUpdate(force); @@ -48,20 +64,26 @@ private void checkUpdate(boolean force) { CompletableFuture .supplyAsync(() -> NetUtil.getAsJson("https://nmby.github.io/hogandiff4/api/versions/latest")) .thenAccept(json -> { - if (!amILatest(json.getString("version"))) { + String latestVersion = json.getString("version"); + if (!amILatest(latestVersion)) { Platform.runLater(() -> { - new Alert( - AlertType.INFORMATION, - // TODO: コンテンツのリッチ化 - "最新バージョンがあります。", - ButtonType.OK) - .showAndWait(); + Hyperlink link = UIUtil.createHyperlink(AppMain.WEB_URL); + VBox content = new VBox(10); + content.getChildren().addAll( + new Label(rb.getString("gui.UpdateChecker.020") + .formatted(AppMain.VERSION, latestVersion)), + link); + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle(rb.getString("AppMain.010")); + alert.setHeaderText(rb.getString("gui.UpdateChecker.010")); + alert.getDialogPane().setContent(content); + alert.showAndWait(); }); } else if (force) { Platform.runLater(() -> { new Alert( AlertType.INFORMATION, - "新規バージョンはありません。", + rb.getString("AppMain.030").formatted(AppMain.VERSION), ButtonType.OK) .showAndWait(); }); diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java index 9eada65f..ec87b5ba 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.java @@ -89,7 +89,7 @@ public void init(MainController parent, Object... param) { SettingDetailsDialogPane detailsContent = new SettingDetailsDialogPane(); detailsContent.init(); Dialog detailsDialog = new Dialog<>(); - detailsDialog.setTitle("★方眼Diff - 詳細設定"); + detailsDialog.setTitle(rb.getString("gui.component.SettingsPane2.060")); detailsDialog.getDialogPane().setContent(detailsContent); detailsDialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); detailsDialog.showAndWait(); diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java index ad894bd7..b753d305 100644 --- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java +++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.java @@ -32,6 +32,11 @@ import xyz.hotchpotch.hogandiff.gui.UpdateChecker; import xyz.hotchpotch.hogandiff.logic.google.GoogleCredential; +/** + * 詳細設定ダイアログの内容部分を提供します。
+ * + * @author nmby + */ public class SettingDetailsDialogPane extends VBox { // [static members] ******************************************************** @@ -103,6 +108,9 @@ public SettingDetailsDialogPane() throws IOException { loader.load(); } + /** + * このオブジェクトを初期化します。
+ */ public void init() { // 1.disableプロパティのバインディング // nop @@ -141,7 +149,7 @@ public void init() { resetSettingsButton.setOnAction(event -> { Optional result = new Alert( AlertType.CONFIRMATION, - "設定を初期化しアプリケーションを終了します。\nよろしいですか?") + rb.getString("gui.dialogs.SettingDetailsDialogPane.010")) .showAndWait(); if (result.isPresent() && result.get() == ButtonType.OK) { diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties index d0534e93..8e1d05d4 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties @@ -23,6 +23,7 @@ fx.SettingsPane1.execute.040=精度優先 fx.SettingsPane2.010=言語 fx.SettingsPane2.020=作業用\nフォルダ fx.SettingsPane2.030=統計情報の収集に協力する +fx.SettingsPane2.040=詳細設定… fx.SettingsPane2.workDir.010=開く fx.SettingsPane2.workDir.020=変更... fx.SettingsPane2.workDir.030=削除... @@ -42,6 +43,12 @@ fx.GoogleFilePickerDialogPane.100=最近使ったファイル fx.GooglePane.010=Googleドライブ\n連携 fx.GooglePane.020=Googleドライブ\n連携解除 fx.GoogleRevisionSelectorDialog.010=Googleドライブからのファイルダウンロードに失敗しました。 +fx.SettingDetailsDialogPane.010=更新確認 +fx.SettingDetailsDialogPane.020=起動時に新規バージョンの有無を確認する +fx.SettingDetailsDialogPane.030=新規バージョンの有無を今すぐ確認する +fx.SettingDetailsDialogPane.040=設定 +fx.SettingDetailsDialogPane.050=設定ファイルを表示する +fx.SettingDetailsDialogPane.060=設定をリセットする… excel.poi.usermodel.TreeResultBookCreator.010=比較フォルダ%s: excel.poi.usermodel.TreeResultBookCreator.020=作業用フォルダ: @@ -65,6 +72,9 @@ gui.MainController.060=作業用フォルダの変更 gui.MainController.070=処理を中止しました。 gui.PasswordDialog.010=パスワード指定 gui.PasswordDialogPane.010=%s はパスワードで保護されています。 +gui.UpdateChecker.010=新しいバージョンが利用可能です。\n\n 現在のバージョン: %s\n 最新バージョン: %s\n\n最新バージョンをダウンロードするには、Webサイトをご確認ください。 +gui.UpdateChecker.020=お使いのアプリケーションは最新バージョンです。\n 現在のバージョン: %s +gui.UpdateChecker.030= gui.component.LinkPane.010=Webページの表示に失敗しました。ご利用のブラウザでお試しください。 gui.component.MenuPane.010=現在のバージョンでは未対応です。\n将来のバージョンにご期待ください! @@ -75,6 +85,7 @@ gui.component.SettingsPane2.040=次のフォルダの内容物を全て削除し gui.component.SettingsPane2.051=表示言語の変更を保存しました。\nアプリケーションを再起動すると変更が反映されます。 gui.component.SettingsPane2.052=Display language change is saved. \nRestart the application to reflect the change. gui.component.SettingsPane2.053=对显示语言的改变已经被保存。\n重新启动应用程序,这些变化就会生效。 +gui.component.SettingsPane2.060=方眼Diff - 詳細設定 gui.component.TargetSelectionPane.010=比較対象フォルダの選択 gui.component.TargetSelectionPane.020=比較対象ブックの選択 gui.component.TargetSelectionPane.030=Excel ブック @@ -94,6 +105,8 @@ gui.component.GooglePane.090=Googleドライブからファイルをダウンロ gui.component.GooglePane.100=選択されたファイルをGoogleドライブからダウンロードしてこのPCの下記リンク先フォルダに保存しました。\nPC上に保存された状態が好ましくない場合は、比較処理が終わり次第、ご自身で削除してください。 gui.component.GooglePane.110=次回以降、このメッセージを表示しない +gui.dialogs.SettingDetailsDialogPane.010=設定を初期化しアプリケーションを終了します。\nよろしいですか? + AppMain.010=方眼Diff AppResource.010=設定の保存に失敗しました。 diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties index 8f3b5ac6..e0c2fb79 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties @@ -23,6 +23,7 @@ fx.SettingsPane1.execute.040=Prioritize accuracy fx.SettingsPane2.010=Language fx.SettingsPane2.020=Working directory fx.SettingsPane2.030=Allow usage data collection +fx.SettingsPane2.040=Advanced Settings… fx.SettingsPane2.workDir.010=Open fx.SettingsPane2.workDir.020=Change... fx.SettingsPane2.workDir.030=Delete... @@ -42,6 +43,12 @@ fx.GoogleFilePickerDialogPane.100=Recently picked fx.GooglePane.010=Connect\nGoogle Drive fx.GooglePane.020=Disconnect\nGoogle Drive fx.GoogleRevisionSelectorDialog.010=Failed to download the file from Google Drive. +fx.SettingDetailsDialogPane.010=Update Check +fx.SettingDetailsDialogPane.020=Check for new versions at startup +fx.SettingDetailsDialogPane.030=Check for new versions now +fx.SettingDetailsDialogPane.040=Settings +fx.SettingDetailsDialogPane.050=Display the configuration file +fx.SettingDetailsDialogPane.060=Reset settings… excel.poi.usermodel.TreeResultBookCreator.010=Folder %s : excel.poi.usermodel.TreeResultBookCreator.020=Working dir : @@ -65,6 +72,9 @@ gui.MainController.060=Change working directory gui.MainController.070=Processing has been canceled. gui.PasswordDialog.010=Enter Password gui.PasswordDialogPane.010=The book [%s] is password protected. +gui.UpdateChecker.010=A new version is available. +gui.UpdateChecker.020=A new version is available.\n\n Current version: %s\n Latest version: %s\n\nTo download the latest version, please visit: +gui.UpdateChecker.030=Your application is up to date.\n Current version: %s gui.component.LinkPane.010=Failed to open the website. Please try using your browser. gui.component.MenuPane.010=This is not supported in the current version.\nStay tuned for future versions! @@ -75,6 +85,7 @@ gui.component.SettingsPane2.040=Delete all contents of the following directory. gui.component.SettingsPane2.051=表示言語の変更を保存しました。\nアプリケーションを再起動すると変更が反映されます。 gui.component.SettingsPane2.052=Display language change is saved. \nRestart the application to reflect the change. gui.component.SettingsPane2.053=对显示语言的改变已经被保存。\n重新启动应用程序,这些变化就会生效。 +gui.component.SettingsPane2.060=HoganDiff - Advanced Settings gui.component.TargetSelectionPane.010=Select comparison folder gui.component.TargetSelectionPane.020=Select comparison book gui.component.TargetSelectionPane.030=Excel book @@ -94,6 +105,8 @@ gui.component.GooglePane.090=File downloaded from Google Drive gui.component.GooglePane.100=The selected file has been downloaded from Google Drive and saved to the folder linked below on this PC.\nIf you prefer not to keep the file stored on your PC, please delete it manually after the comparison process is complete. gui.component.GooglePane.110=Don't show this message again +gui.dialogs.SettingDetailsDialogPane.010=Initialize settings and exit the application.\nAre you sure? + AppMain.010=HoganDiff (方眼Diff) AppResource.010=Failed to save settings. diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties index 086be4d9..f81556a1 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties @@ -23,6 +23,7 @@ fx.SettingsPane1.execute.040=优先考虑准确性 fx.SettingsPane2.010=语言 fx.SettingsPane2.020=工作\n文件夹 fx.SettingsPane2.030=同意收集使用统计信息 +fx.SettingsPane2.040=详细设置... fx.SettingsPane2.workDir.010=打开 fx.SettingsPane2.workDir.020=改变... fx.SettingsPane2.workDir.030=删除... @@ -42,6 +43,12 @@ fx.GoogleFilePickerDialogPane.100=最近使用的文件 fx.GooglePane.010=Google Drive\n关联 fx.GooglePane.020=Google Drive\n关联解除 fx.GoogleRevisionSelectorDialog.010=从Google云端硬盘下载文件失败。 +fx.SettingDetailsDialogPane.010=更新确认 +fx.SettingDetailsDialogPane.020=启动时检查是否有新版本 +fx.SettingDetailsDialogPane.030=立即检查是否有新版本 +fx.SettingDetailsDialogPane.040=设置 +fx.SettingDetailsDialogPane.050=显示配置文件 +fx.SettingDetailsDialogPane.060=重置设置… excel.poi.usermodel.TreeResultBookCreator.010=文件夹%s: excel.poi.usermodel.TreeResultBookCreator.020=工作文件夹: @@ -65,6 +72,9 @@ gui.MainController.060=改变工作文件夹 gui.MainController.070=处理已被取消。 gui.PasswordDialog.010=输入密码 gui.PasswordDialogPane.010=%s 是受密码保护的。 +gui.UpdateChecker.010=有新版本可用。 +gui.UpdateChecker.020=有新版本可用。\n\n 当前版本:%s\n 最新版本:%s\n\n要下载最新版本,请访问: +gui.UpdateChecker.030=您的应用程序已是最新版本。\n 当前版本:%s gui.component.LinkPane.010=网页未能显示。 请尝试使用你的浏览器。 gui.component.MenuPane.010=当前版本不支持此功能。\n请继续关注未来版本! @@ -75,6 +85,7 @@ gui.component.SettingsPane2.040=删除以下文件夹的所有内容。你确定 gui.component.SettingsPane2.051=表示言語の変更を保存しました。\nアプリケーションを再起動すると変更が反映されます。 gui.component.SettingsPane2.052=Display language change is saved. \nRestart the application to reflect the change. gui.component.SettingsPane2.053=对显示语言的改变已经被保存。\n重新启动应用程序,这些变化就会生效。 +gui.component.SettingsPane2.060=方眼Diff - 详细设置 gui.component.TargetSelectionPane.010=选择用于比较的文件夹 gui.component.TargetSelectionPane.020=选择用于比较的工作簿 gui.component.TargetSelectionPane.030=Excel工作簿 @@ -94,6 +105,8 @@ gui.component.GooglePane.090=已从Google云端硬盘下载文件 gui.component.GooglePane.100=已从Google云端硬盘下载所选文件,并保存到本机下方链接的文件夹中。\n如果您不希望文件保存在电脑上,请在比较处理完成后自行删除。 gui.component.GooglePane.110=不再显示此消息 +gui.dialogs.SettingDetailsDialogPane.010=初始化设置并退出应用程序。\n确定吗? + AppMain.010=方眼Diff AppResource.010=保存设置失败。 diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml index 00e04740..7ca613c3 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/components/SettingsPane2.fxml @@ -47,7 +47,7 @@ - diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml index 4ed2692a..cf41b810 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml @@ -42,13 +42,13 @@ -

X_8qNjos4PaM_dZJgI1q-^ z7DOqqve&cjZa3N@E;?h#@|~#UiUkr2lj%3DhUDoC${v?b-q4KmbxCX5bM!vmeeJiL zs7eh*0ZWip9_ul6sGCkh{UDM@z5S-x&4mJ%1u5oMkWf;Z13LvDQIPZCQY0;zLSYHJ z%YLHUfg$|rxeC~}JUO44FnA%x{IZM7U&#AP2a9OFL_n>{NJPt%gB6=(vpcZ(D2$67 zk`*4F(7FZXGpnOxx9JN3+c3!{2%9@Hg-{HTF3RaQ!<6_C%sU3;ByRKm@Wm8IFF8~W z&kt`1q5;g3z`dB5L}G%A$N70nik#FDiPRnS#dU=UNdYGUjGhKe(Es@(g~aNZi|m+E zW2;itrQxw|i>3*{=S0O1#X8RIB(fx2C`o}7!>C`s{IlVe@@dqeF{x13)0wIzr=h8d z_|fX(KTfJZBWrUc&_XKmwXX75@#G9EnY+Mu^Bd>iWTyXeL++rdO~tHtGD@qFRgGDH zel7Nr0VnU9w@Xneg1p4(cuw&7>{XZRaQ`sti<+t|+syaiL}}USr&`PazZK+-HQ&0^ zCbo=URequa^2ZK_n`y+7?V0&4qzo+5*gP8B{FAb<#;87m%g(fZ7^Gq6vTR8k9hf44 z8j½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 CR&W|rm zAq{Q$4^uomu3vqL{_^M;+v}#C6u+2MvlhKJepDCuO!#i^`1Zkk=f>vI{zpsT%<-ey zn?;J!md>9C8@_FSe)?Jjx1Q}qSAOgKxm|kE+3A>a{ll}}V&PL8(DtX*B-d>>Njv%= zdM)cG@Adx5+0n-D%unsX=DC&@Nzp9_mwTtjhmDMrn|?>>*U$YBUM;?D79WP*o5?K8 z3*1ctE}PDyf#9{pr;!bshJf3(`BAY)iOc?qcV(XbaD(Gw4IAB9Ng($%AgCJI;5bmh zogwD(oTxn6a8gDQ(4n*K^HEH<0xGtr<@t(TjQ^6eC0vmYf!ypkiny-AvB+(=?2Gs? zzb~|hTP};pF7!bAHXNAuavAJ$Qh$>!FuK1;2i$*og>qyC|FQ_gfw#168-MuSu$|7w zxO+^$B@0L|Tn+ilEt4uBgV+P8f5BfWTDsNNA5u|jG814*Xd5GCn}kEgF-29<*;mtL zS7X3kZ|ZuPb)sJD9lz$lP$4k)5Q-pctr?p{9)&^PfI(^;<`t6nDvugnH_i+@(vLzC zVqggG|BnLyOB`6P6NqAW>NaA+*$P7hcK;|RgY@2I$-^a}er3pdEHf8!@Pe=r!>ZkdzQmbchM>zZ`M@jT-mQxT3#Sl{);bzn1+jP8S;mAsnYS$_!_8 zB6$<80hr@mYuDrUA4iUG@a*cH%9wb@D;cHppUZ@KDCMjC6M87^;?bLH+pe>GF4`<7 zYa@K-DT^g*J~mSY>Q@;NE=?t7s*vT`m+aU$=dMWoJJm#Yb+L*y{^lLOruWz;%swNwX#u8Wj}Vw$sPR>X^KMi7@Ag=W5=8v(Dg`TRF$$JQ)Mi+ z!|6G?26;~~DN3c~?ab&e2hRp6B(q>5u}Z+(rqNjkcmn`IG72U{DNDc29>qAkXb?p* z2)-g#z9{k=ZFVqg5Jb`o#z!f&6d8|JIOsR2Y zXq;L~tO}YM|P7vd#&F zhMRB+0`Zyh19`T?b#|b7xN(VqdM5ioqHRx|HK-Q;j7xwt6MrDsw!O{*R0B6E;UCEO zfpN9{P-g-{!40|i<1@ZsENrXm3_+D}gAzXVj6#f-tqWLU2C1Q$$)%8%+dufi77U(w zt)W5BMVJ=U-}=HFEHsm;p?()L7D;*AE58!J^eR3|9f2R_w>48`z}4<9RIi!bUGP{j z2}1OlhRbx2x*=bpNZkV6QSB1Tg80>5?B)m*=~;^N5#&B^vNPzOe=1qmuP0vLsmBsw zZ%MF}<;RwK!t&j>i`V6qZeeJjd?$Q#Sa6>Za+^*BpV}Wb8bT0x;~Ky6L_2ly&n>*P zrHnf_W>57y>KBT*@qtmbP7&IuU82Rp<#x?kS6fmS622A>wr4u6r2R97@bOf|7TE~4 zQ>w=^3!M$~PSH!Y!`Jz{f7X(HYxzmn$kT`Uv)L9o`tbYtQwB7{?$y1MR!Ef4xNWFU zL(@Q#K)la4fNk=f!kv38 zr-|L6suAiU8X}$Uq@J6hF^Q^QNM2l4#8I$GMiHnbE88p{>?KWw@Ezro=Yl;ln`WlG zOKs*vO@CW3&q?P}_LMlba&1{p|9Kp2GQZ$c+1vzo>&Aaq`#qiid5P}EkIjSMd-s0o zl*?LvX)vBquR*}5j4mcjm^WYTx%GE6Z^=?e*o=RDeDTzetj4X5Q;l#*+nlE91@cVn z*NCH}pDTC%(Z`MRCw_0Pg+@4D*chp`LmCExt~kcr{<<=*cX+2yNc7K3 zdD@pUUHq{$+HyhW|F|{A$78^GE&tCYPo8E;&Y0#?&PU*FmB#vEB zb4uf@kRo{Rnr2%8B{0cKE3MEbFngVLiVG~WQ;`qSTq=bLjB-+uylK6ad;~_hsc-J4 z-L9hgpC>hI6&-<4UYbPJedfQtZiJ7AXF-66NBy7baWRA9G|wtof}bU6^;P$YTgv|m F{|m$)^+Nyv diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties index 8e1d05d4..7d06a50e 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties @@ -72,9 +72,9 @@ gui.MainController.060=作業用フォルダの変更 gui.MainController.070=処理を中止しました。 gui.PasswordDialog.010=パスワード指定 gui.PasswordDialogPane.010=%s はパスワードで保護されています。 -gui.UpdateChecker.010=新しいバージョンが利用可能です。\n\n 現在のバージョン: %s\n 最新バージョン: %s\n\n最新バージョンをダウンロードするには、Webサイトをご確認ください。 -gui.UpdateChecker.020=お使いのアプリケーションは最新バージョンです。\n 現在のバージョン: %s -gui.UpdateChecker.030= +gui.UpdateChecker.010=新しいバージョンが利用可能です。 +gui.UpdateChecker.020=新しいバージョンが利用可能です。\n\n 現在のバージョン: %s\n 最新バージョン: %s\n\n最新バージョンをダウンロードするには、Webサイトをご確認ください。 +gui.UpdateChecker.030=お使いのアプリケーションは最新バージョンです。\n 現在のバージョン: %s gui.component.LinkPane.010=Webページの表示に失敗しました。ご利用のブラウザでお試しください。 gui.component.MenuPane.010=現在のバージョンでは未対応です。\n将来のバージョンにご期待ください! From c43603153aae95ddf7783bbcbaceddae1191d9bf Mon Sep 17 00:00:00 2001 From: nmby Date: Sun, 14 Sep 2025 15:30:43 +0900 Subject: [PATCH 11/12] =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=AE=E5=9B=BD=E9=9A=9B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s.properties\347\256\241\347\220\206.xlsx" | Bin 44251 -> 43936 bytes .../hogandiff/gui/UpdateChecker.java | 2 +- .../src/main/resources/messages.properties | 4 ++-- .../src/main/resources/messages_en.properties | 4 ++-- .../src/main/resources/messages_zh.properties | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git "a/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" "b/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" index f2b75a713bce869d239f0ed9049b98b55f8ab662..4199b36513f66affaca15ee81dc6b16465c4b2c1 100644 GIT binary patch delta 33163 zcmV*5Ky<&`*#e-~0vAwA0|XQR1^@^E001EXV3K;ifB^si46zp@0)JG^N&_(vz6-v? zlB?{d_8=nNdhq9{LhA#h$#gd~n}p0%+qZW%+9Fb0iUluOvdMfuljIxSt~yt|K|&jR zEiS8pD8TDrtZ!=ZI(;m!MS-NeQ7(9>#TroDj?d3V({%(axY}baTB3L(CF&MBg;j{) zd1W3_r--Mikx}V|YJWfu2ZJlAgD3D*Qja0VqkEXErK93u#lJt5%&Zs1-RHiZsun6n zXSE_0D&M^MK~jeK+-fjEFFS^=FeXq2TL9`@6_aJgGyx(uhC=S-OyKZ1(l1vPS7u?@ z+K3ly{TGIQ<#$(KbnLRH7%NPb{SOmw}JeG5jYT#CIKJ9{=8o40FIZ(%J!@`uH>GA?8*kFcace)SO(vckBZ? zv~v2c<*Rz)CTwx{@pH7iq!5wQE5Y#sHc`=6myv-Wk%eto?0R%tMvlHeJBB`64VWF= zGH3bt0{{U3|C8mF5VPC^B?Es{67A`c0{{R92><{O0001ZY%h0ja%*C5Z)+}iZEUPn zZEu@M5dMBr{{!Mv`+>k>urUg$%$qJ!+>2Z{xsxnKYgo)Gz|v)jomTztHw(sz>(j}X z9D+g zST8ZH)E>d*=U}ibqX`LF(w3wWJqRZS7C^trY26HHWpWN&iTPt&YY8iBfLPOlisueg zRm#M@-c*d^bpc`Tkgb30IQ+)&M+OY$@Fp;wysD%LXAR551wiXP>67@8p(AvZg57Bj z&O@?vPM)Z&;eiz&zme7WfHi&rL&h(oA&^$56&I5CMl}1t%~Y>0Gg^?lUb+gd>rc3p zl`2%Fz>SDfDoE<76Iik>dD(!dcw74|Ex>9{kvUQItAm_xIV^vm_On6|USUB3Rtb>W zp8BuKs>2R)1|n7#bIdEu#nyZX{VgsTddYrOiSA|aboHGcCyMuo)Zv|K2{yMyY;(W$WP%02ay6@y`s0A85R0(&{!*|DU&?rWM7DSU+ zvwSqurYNvAC$J1-HZrG^N&EwX;bS*pxE1+c1rpj*EhzbkX^wY;1sQHj(-#`wjs2y` z`KMv9{g466^X`t4ZS$fRxm0%dv`X35Q#B-2{(QXLcE*2unu;6*XCen&`n}%?-Q>U+ zS;&&z!A;4`Q;!&hJ);;dO%6wl^jDO+lNG3SvjU2N6wkW@w%h4a4BB_)8~AmKWJIrh z- zn&nJQ&9Q$*rWRPC8QGI4jC@-bQhq|*|KlL-y2u^AO_F7fxma?XJi-@kK{6jVkd`iX z9r(T`>)VcRjDVsQBTyZh8k+BqEzJ(&kv&0S5ZRsTda^S7?2X5mqjygeEL!M)+4|ku zm1Df$J#1$E#=f9OP3kT}nfLwE|K|7^qA$pq&haqanU2Ay`Eq`y?@hFPxR1|up3VJm zcE0~?v6%g}jQ$*6q5oq-`-01{lc_$)g5M#`-KMR&h-|tCMcAvZA0VXDrfi#(%=o9@-cYf1VX2qmao&*kempYU-DlT| zcMQ~cryxsG5a^6A8&@lMJv?3Afgskd)U9`@U_gRhae1+Q##VEDM7HTkL>EU2EOUP^ zB^isIro{K?;->PU(;UZ8%U+v*qpnfrX}Xc&w+9p_o?>4r2>bFH#9`=T^55RRsv3ij z-n@0__)LW4$c52RhZ^yCwu#9k6`i5HEmckP~?c=4MqG9@=86BYndjN{o+*yGsPI64n72}%f401p64@;s5C zE~G?R7wc-tmSpQ@T}a8Yb)hKfzYN#__~gHEvZ}Hhm08t5H^AB0i5ZXFN_16qewCH= zRc6+Q)q{mXEt{|9Kl-pzKH^k%55TJGL-8~fFH8%9ohm+#r9)Iyv{#|YNP!*mY z{wOw*{BY;tk3QTvi82`_lN@q1nK+fnDw!0KNl=-bk{Q)yMw!fB%X>yyekm3^9kh4~pFw-U2ph7JNN5tHY`{u_3^>j{N>0h>15Tt_OXErgKW?o8DwuYT z9-7$&x|%HP9-6Hbs(*#b;lj{I&cr7l{L`NJ?xCSSIpTltXXl^uhi3oH8QMLBf6B!F z_~FiJp~dN=J90-0lXJDgzI>^$V>mXv+g-iczP&<+v6l>E(B`w)1=dRw5HMgQXVx4AFxZoa+IdivhJa=@pvC`UY{%84=MC<&?@ zCX-b%R5_gmOfJkhB}0`n#%u#=E4*^z!@C>xmyN}Z#(&}xQx54_c;&zwKNk)M*N%E! zWbMG~ly=&;AK0}cjGgJsh^NeEC%M&DGE_g@nNc!SKWXO7C>f%kF*XUuNn7FdlK}lJ zUTV~TZY(}(EY33(kh2xA%70%D8qhM$q*eSnQxU-GSvU#29C59UPnoQ=#z80ni}=Gd+t%AzR;+jW-23n z4X-k2W1=)UGdERmCJz>8rkrW30@d3iD^QGJ<#_Y-V;DydO~Mzn%r^0qX>x>p-HehU zvu%WHQpwQS#{DEEL#-kAq)A)hHJJh+uU%|!EPuLd@7m99|Gx1Z(;n$xcla$rUy0tnTeQ!)F{`G;Q>v*1-|#3A;>_|Lj}p=KlpJL%TTaQ) z8OK*GB@^h;QkP<1zFIv}u1sZ%`I+(o&AB+=sK0J3uE|ww*;E?oY&WIZy*}7J1+?rv zc7Jv`Os}fRka`VxySsLxb!$N%4)GXc;N9Cc@!~O4F#GBm`P1D)x`vb7X+#;SVkVSB zA)@0EzVe~a07@24$|6y6V_~Ir>1ku(VWWPkvGA_3aIG<4XLFT~px0!zDFNCAqg$?2 z3X?Tw7SYEvjjarzYT@BXRd2pJ(|qz%>wosDJ{GF;0OCfmAUcU*s9cHYDvuc|w-7FI zgSau7o5Tp4`r|P|6ZNvcpBHMiV(CCt%;=b;CzKIx)E_n$uSoaweq-@DS1;*pFZG&j zD1%(AmP<}~wpJ{cxHE)<2&q~7Al@x*%`b1=4)BU%c1lV)x>oWk@|Osa)X>J@mG#=>fI<-L3S?(Z9C-Q`nT*X}gx7uxfS&EuDnws^dGoauixV(;_K#L_H(xlFJP8DVfR_)seDUCFsyU8v?o?mQVI}ZbI zeRr&R_5u!k=@ty!zHG2ls9k5RjibY!9178Hx)|M4%AG1w+_43Jrz}*iyRl!ZhGgU^NYq=%WA>Kz~E%nmdQ{ zGjj!F6^O(t1vjERb$5OvVAczI#G+lrnh@=BcRi+Lh<3TZjxtocoW?*Qs$B+waTFR% zyRhGEUV7?oob93DNEB4Sw}-Yo1y7eNhvsJThKeImQ^C!kijO~rfdy#U&Q--svMQA@ zjJp!j)tpKg*4?D5QVB!PCVyX*N*H>ML|6rU6xgTw?4o<_3@rIR6Ab?Ztrnp@q5Ke_t*tQ;?tOu4lR9Fm@R`RSUM22 z35dj~neT6&y6c`l)pZkKXVhXAO3l~=C>gSk=XuZ%`nN~ z8RyP@29zOIpSuhwqXQxq=k@`GsMR;ZR}}TwpVb!*zYI$0ZtrPtBeFiwh6;oMwkN>e zg4-4lp*Tm`#6-Lo<2VeLm{e8ej0{CeW|mc;*B&i z&s|;FTtCsgR+p~bx8VCV>OTs4ZxJ}$3$5Sk@V8d0PX`oD<9au8M~gM5cCc7=^0Twf z+$=yq%zDNCuz8Mc_JsmI^mmJ5ihqC8J@-xf@=o~`+t?)tp|`)()v z;)-a}x06^I5q}PasFFG5heCrX88+mtU*5szuq$~0YR~`r(1fPs{N&_ZB|rH!*Yf~O zp5BtKXZPd@IKOGm-w#l=ox_Wp9A4arLNz(OxDkg+2r(7G8|S-!Y>e7|elCkbeJDDv zi2euj?T0_G6B~SKA5^}2>8JV9fw}wveuj>(?Za4OUw_x0v>$XLYiP`{otBH6v|QYn znkFrm;5%-75AnUYpPfS?qA(ugH;zL6DGa=D2!CtdeFDqT{!*8CBii3678pJ?wDKS2 z%2#5qJyjG(s^y9?CHrRL)cX~evcJ?Lh9z#N;pAhstnwJ`3<}Xbx1m>)hD)Xmi)+$w z$+Y2w^?yyn!54u=sP)^k_JgJ7;&J!ZGw`|Gv)^o82S4kPd*-5h>bl+G>YHOzO@2Hx z14nFgRhX&H6l5KUo%IZ;8=P)#f%_)aR7>u;mFBUt&5JK!Oq*}t3uo%h&Gzc;&G)yP z3!PX~I-~6zTHNH&(kWv*rG#J;=x0BqQ^tPEWPj1pDPuoHXeDW>)5a+}_Nl))4NGAA z=jW|opSB-7aaX_l`+UdykU^z;@$LOtV|e?=Q-|}wolH62HrHrk0-Na1GK&GM-D|x$ z(O!Mmdb_$~$BuwC)y|*AP5vyw`7@N!=W>D{qN5Dm9vk~9lRk@$a7G>9)R#IT?CGm) zv40}h)~(B@8w;Hc18TExZY;h-fB9c#3&t!}ukK5W`m3AE-?|$?>#Uviid&-9j7ez; zS2O0M8Lt-O-ct@6qw6e>Y(b&Hlqe3p?<_a3|Ehx;_1HJBrRhTc>H170c|0i! z5q&0k@Bs>i)aPIGl>>#^=kRT%dt&CRsIWsbq?C5Jub9%Hwnb)(voBveXhxM{tA8Pt z9n^q-;Mjh-=Ds@?7+{*PlTY$7ox{cyRt$=+b7KaZv1tj;Ddn&!s&Re{fkK05T%0(1 zNig!5numR38zFq9zz|}qHlSgdE93lo{!qc9??_BkPz(NHGYqYD|7ozk?L1V%XFE) zpb`4};9gVR&PydsUMiVp^Dl!!y6Tf@rm!pu5ehQRPaRQ+P>^ZvMbqYbsXjMVtaSo? zef!?}?O0>sy?bt{Q9s*QxZZmC0Ctd!t)gA-wQ>hEBp!o?ixo4X1m7Rhn12TiTtp`x-v)QQvO*R2~HSvcQ!oPTv3CD~Y9ZY=)XsNaDQBuAV&Eq>dm zziKRs(DJQ?SItwLuEg$y+CWErfqaSe#>rNShYQYUg~P?FIF0mu5Jr(;Cqkkm z>Nmk&w3e5eHy*>GW%KmU0VuLFW(h^$=w}q^n2{S#C@jTw#P|*k-$YTwscRIXDB_G6 z3Wf9sg1(s8;)FmEWM_(WpZqJ9j7kAGTay28g!x+P4~ zEj4Puhh$|+_@s;!cYKo$pOlf1hC(`gQallU9EApgk6LFu4+8=6#b=*7yZ9OtDSFMW z9=|aO1WPLuIHZAWh~J7*Hf@HM(6IAy36qaYjT##VC8RGnDIj>OP)(={|Eb*(lHe8Gss*7axx{YNqys%$%NmoRy| z6wipypb%9yKhi`Ys%(SlF~ikTW1P98%?+aLv`{wjA53LOqVc+E0UGn21ZF-aa7f!Q zv7r^^1ZX3n^-1i6Uee4qO&hVtC`8;y9=w=EA>sfS$%iOJ9De|Q@H$SL8${6~z>6J! z1`+AH@5oFz?RT$jLN`rAYoE(XKF*Zz4SALVHna`OR>Rs{f3&%NzV&FWb^CGa`c=E% zm$dVK@-f{#qjHY#giIm_JMWk+Vp4yVy*$t%B}~f+)n!?6&FQZ{Ww2RLm{ei zw(4e4h^m~&oS_g=IS-#0r_Bwb@-e{xzHZdtL(akGo2!k5P6mcLm!X{=WST=$pV#t` zQ_kbgu!(J$;LwEo@)!5it>)F65OE%$XFJ`OH0i#yaer`%LPXET$temEJ@c%l912lA zb5fr+H-MgF!?3NpG2ecF9>N703qLg$Zg!j9kwVeBOgz!-XNAc^sW$VqGb`8%L-&#B zz8+2aBNPDuGc0K!4y9ekKL9zqB>~Q}f(9x9F-Xkw_oE6-Xy8!Aa8ol4?$EkC}gt!-zD?*)Y_5 z_m|w`&)W+Z0~Bkg{gR5Tql)FbFchMSH5P7@_DhZNxCnd`RVX+MzxuoKKbUmkeif0Ces1-N# zOeieH-tk!T9KMNKalYH8&4tsmxAjr* z5&d@OS@RN99f1Er?HKsyO|yIqb~lnG=+fO!^5EJ{IkmDgRX$RhDd*wO2Mf~SbEYfh zLx0FpE6sO8og{20urHAy)uk_+Z@y7qPu~D+zB=80`_?-#de;8+ZeSUjq@B)_k7)tn zbc!Drp%4LG%5V{FF?5EDsDudUQigFM>|rm^VJKU+Py=mMS)D0}*J)mU+WK+5{m}3Z z`^iGJxAMg-#7q{P%)!FsSA6N{Cl|HrSbuJ>wpZ^2EFg9oFRADyVp!6~Ho&Cu(rF%8 zhi@Y8AwM_Fp%Bq=nirTtp^%hqu#QDlj^AFor!T22B~W(z9we+oWxoyoq)6nf-&k%P z1ETMOf`T=MmJY7hI@7gF5(!Z5ui}&nN1Ve@v{BS5a`H8&3fqX<+$={)Bm%H&(|?ex z4*5#WD=(Tq%{On}ZC+h-&)t*T$ES)d3V@EC6ig~kj6#Q}IiL_R5B#7wi$WASJj51- zD0F!62yL!^^B^l=_JGUg8z@xpM>t^mNouvX*?M%^ zJ@Y&oT2gjqQ9fpi36GA?pb$k1TYmzwC`8c0i`3;%h@iztfTzv%j}{TyETgj7=7aXM zf2#rS_kyySuCaxXjzq9=5F?Ob*>($%veSn0G1IAW!vG2qo$|0ojYM1LX_gFzsw zrOHfpC|Cj!`rUYjl$}(Rk2xUtb`*suAow{E3Q<7tb0QQXfG{$tXmkAo0*+J=5cLZ( z$@z_}akHfS1v4Lmj-Y=u$OEHl0o(&Dt7ztBU{eEI0cdLLq)@%G1$skdlbW(pjpOq1 z?x7HV8<9fj{Tj(qb=>U!! zDPt(412|zsFwo|@0=RH=vM{q_wp`pX2L%xim7y5oj=xq4h0kOS3=xT(sTA^%sHa!u z)XI_np=yRk(}8ruu{~lkTAx%MbLS6LGkO*~5(ecFzk^rnoDQGj#edGfrA+=UVO07; zA&M8nt1GMb9bKGfFLh3C+n33>cb%YJp66>MjCgM7obG z^5uu)2F75gtaRSEeB6hnB-~xMsYorQ`dPo0(oPPg6nUZV{*pW(Cxb#d@{?mcSp#R#Ux6$BxBnDxn@$ zlW<&-t!BU%i(oa$NVaF04epedxNotV;Tfk0(*Ux6cwEUME`#!KN~w;2*R z*msL?=nIFM0g$lsQ)w0SMx53$Ug!sf2qcW~Rum$TFn_{ZQHVgo2zsNN8vGnmS=MPhVa`uS-`+Z}XBZMUHcBQH!AVd;ZQ*))Me5vMqRz6a7KG3`I zM~;^8$+6Ko;hwkxpQ8JBAbb6^J(5m7ruHN?%xaTm_fJ9bW9JsrCbyUx z=11))MDfFS%qT?hW2{H2If@@1PC=X7F8o07GkPXM>G7A2&YW8ld+S$vTW zkywgH+@O#Skt8n_JdQ$$$nAm%gfxGEm7?L+yJe_=Bz#z=tG#p-+qE!>wo7Fw7z{OI zA%@og$Y7*lz@}RcSh=!muVLh!Rw*v*grU62I67g7KMOI%2w{jn>yt1{+X+MYnB|xl ztAD4N8yYjAZ3dIYlg8?4@`VYWo;Z$O3WT=0fIB_13+_e|n?bmR2qs;ZtEAH-+8x~K z5%Uu6^a$u(UgCaWuDIjR`CB_}Hl~{NUl0IG#ZK%JEFVcqaVuz}N>EPp;>9nky%vYTwrP zKfooQpiw`JA8y#y?+o$(3}FU=;hJeXt12I}31+w#irUkcju>a{v-l#ic5r$&hkrtZ z9W$;JK%uT{M?ziUZJQ4wXn!lTXi-@8vBdr18TlEEKV10D=>~jdtm2u5CWQx*r z73pm4g?r+-h*30#sU@+&yl*UAgkt3Fb+~2cKHkD7!l0qYP!Hvn7yxwLxKWcT+P=Id zyQ)XKbP)=%WBv8Q)Qx*-oWmFCHZC^8(;!f&UmGV1%dbPZ zmYYzwsIl;P^WACp&Sh~O?zQ#SMR?dPr2(7n>fUvkztHp-rNYr!NO6KmDK^FO-c+Y7 z>Z?OOqk-uVbbl92i+`BfV`pJ>fCe0&JYwheWm1F)6-*1w;ec&+-6eE^ zgE+oey6(PNXXZlDx`B3K#7_3h#~d0wR|SQ1Xe4-sNfw24Y=0zpib4*BC^q=nAPV)1 z4IsMRrMtqRxb>^JS_|&dlTM_x2|ZSJI*7=4fTo!Po-dVQEv&#|XkYKJ!G6IYqHWh+ zs`0tUUu?d)y!loHA_l|2PVkSIS?vj)jg&zl9R@tDDT^}1Lh#!eb0|c8V7@+}P`@aU zL_XH?r{3wRs((4mxP032$eM@dRHm2MSE`aCMeDY&=AAoi|vc93YeU&m? znO7Cg^}&4A`La-eo0LQ;c*t)wY<>umy^GBkgS&GK27d=`Ex4lY*~`rrOTly8&ZCbg z0+&>-;8luIhPZ&7MMoJr#W_WaLUfArRCW{!tMYyMY87@NQ(A>Xwp~?*kk9N8e7WZB zSz5`JYGA^>zu@yZ1TU_s*7ExHyKmt-bhXzAn8tS2dqgp=M5D&qZIa&nE{`m}hia5Z z5~2{*D1Sc}L81OM>ZkWZ%#5Jl7SD@XB#ZEe4N-V#;Xcp`?I$m-v;x<;8g*C?pDM-g zhuDjYO}O)a{!snDVjJ#nv1cpgnson-iLM$BYuy7Hh7TZ;49{Lspn!2VPu&6cKX}Sp z>F+%wDuR^&#JD>Pg~*&YE=WTm9U^Jd^Hj|g=75T%EB`xkzHoy=ffLJpPmZ6Fg zMVMm>qk^#oBfx%oFrxT;YVVLX`OusbdRJENjftGbN->~2|?W$fiar!j1oX3+5T2giIxHj*BW);D}h{G z10M4~3STzrzsV}8P;XgKk6r?7H?EO>_NZ`$kJSaPo$rzn#07+#U|Kc#9G}9jw#xqs zh)Pz$VTOqP$$=Xs#Yu#y>s#Xm`*2WUt$!q&7y<#diP0I3`}SLR`HWY|&rmJ-i~S{_ z?Xc*BRIU13Ao5^m)n0wSb!9a$PJ6_Dq97l$69rz>KZ8Oz3sgZ7p2L(yAv)=JhBpe) zNyj7TXmfTPX-5j|lZ(LGg;TOv6j1s4m8H*QRe+bOel!5xK0U-qny|&8<{@9p6@Mih zb}cu1{-1*P);MQjv*%`I2@=38u;j`%*yaHD^`f!UW>=bZQHhFB!Y_Y;rCxnCg*@#u z88{Ab5AB@qh{yTDA+@ZZlEEiZ&+^GQJ_%uqN$w&3EQC(T0XhCG#JsoV9*)}CP5GEz zSI1X4l+jl>J|VLxL%m>j(w;*h;(rD6llE~G3cJ9G;~yDOvE$QX=_}v+6zj#}cUW{| zVbx2ZwioSz)kHZza&3bUc&PAxuTg&?y`WR=pMm!RM!efXLxdOj*ID%`(rW$r9>=F^soz~m)Tep7`2Y)z=Z&i*q z%q|BEyZiL}_Sz+NS)Mw@Y5sP$eSgWl7VKh;+9_1|c=r%ET7HqZ7_YjUK_T7R$47XL zDHPHX80Y6EITWG@Qv_-V5uUGYVcrEp3-!j z9asRM5ariSZLS0|qQK1bTy3rbt_#+f`5zpbA?gNbZhgSV)ouIct251uYt5AfaU1rj zn_~AO)=I!>>&^YvnT(q;HQ9Da4A5+X2SAn8T*E0c>p^)JTK`7MyOaO%jhD=a;p*S>>7ZP%4DEc<6 z3mOOwXgB030gg2K@_)w=A@)l0io#IG1*3N6SUzSz;K#=(Lx8}Glb{R*0^iM`5Valr z;wuyy7ziSYz`OC;dP)@X9GQ+R!m7p8C9cEr3nWg;yDNJiC}ZOTV?_iSKy5#O3(eB+ zak4xrD9_n^sR};$t})oi%ALg?`Iv!*S2;r&0vcZ60c9v?_n&`jp@V3E%woDg<7+=OCq~^O>m6V`sld75z#b zb7o00C`2I0uQ5j%9fB!iV`y^UTxJ~KGcW*CvE9nEX+M~6Km5U8wZzdUMqZNeClPar zF_euuC2RnxC(fv9kE$ROgg&b!P{fX&J=44@qaa1-Cx0TCBUO!iV5I&x8q);oX<(TD z_ZSnMD)wW7QFTl}rwTtDMjJ=8a5Hcd^j!V` z6oymlsuxzf!`WYg@+G2(D34AR93cd~i)(S^U#VX*?|m;FbN`Ef>L1_N3GD0O(Ef+^ zl|t4|vVV^%E|x;p@Jf{sfh@0AfG;AfOOl^{qY%NYv7uFs4UXBwZWnT$WJ$sH+7mGH zVqHWpUW7IKq05pbfYNhtT%~H%>ddk@!FYddbNxD8Q0}f=cAq}m-1rV+W1E*q=!hx^ zPd~x{82+#C`vmrVa7_P~_MKwf&ft$K24BZ`ntxv!ok6=7-j`-dkqO0SUocS(97*-x7ohjdci0iN(6iabwFLTATx9F6Km zSGrS}VBsg&4%smhqMnPD-wnL79wI%#F@F?nA7VrVi*bbXdsqr)W@yB7}KIITX?n65}Ue<0!OE2mwM%rcA*#*N6?ad8Hj6)NJ_8 z*=0qc;sLXg{WoV!Tu<;O@Dd^ zdWlybfA|D0x^KUO3oI7=gl@AIB^^*VJlM0IMKW%O{I{x(qzuV3a&gz8SxgYSvP~;nf*77SmPH{QGD&{lP7Z~1 z$Rv4|>o^K+6J+Ea$dKmlodUo`2O&+3`ZWJY)Ii_ZLA3H=E$C65*(UUey?>5jY-GWP z?*iNtD}O&erl{o*nj*1j__GjSmc*vv&q90yTWs2xomZ8QS?x2PE}cOkeY2J_>f)mi zAy#=Pe-4EROO@oYLA1FDn>BS;njan1*}cP=f$bK$RdutZxco!jLFgr9sX)+>Ct-Bl z5nMFZ+s>thPKN<7FP!Uo{C|agi9StOU)1O5e80_Ccn_Vr^-e^H$}25_-s^q%HD;$r zmzKI}@lTbMnqR2D$fBh1q`u7vJlRZBPg~FPP$K6}c#98a| zDL6{(p6*8n(I<>V_y*+n!x3sR4@J@rLQxKt_NR(x7+HVV=wNt}^?#p#!3q&4pFq`# zz#Nb=z0VBg6^9EDBL57>to3Eh!Xuq8M$iPa`Cw(xF(>>b?xbY1oR+ z+(f$s$Dehm^Q7*-Ttd49QHpTkrPvUxhC!4_FHo;@7k(ALkylr#SV(sRD#e^>z4#9P zN$jE^Bjo+M!k>Kb41bb%0;=LDDHH)rudc`t0+H+4sGkz)p6Y(ig=3J`?w*5xU9*l& zM(2B3Ch{Us|MndyG$QYM?vVpemE7l40o91?IjD)?PZtqci5CLrCnw8u5P?~Qc!UFZ zK~oj3R{c`YX@aDdZWqx&3@Gnpk2N_$q|E~za4G`c^K7T^qC@bUaEzcc*@;0Kj zAq09(Ov~7YBcik_ob7pqci=keO5t$%D^>qS@6{|^2UCP3-*U;%Xz}iqQo?>Oc>?w6iC<}h0Wl-RU+$M-1ZC(7Wee66GRf2^?$+v&K*Iat378TdC zA>w1g4^TqhVt)pS)0=P3xW^aTtFK^D>L6KPlHgbO>X0*|AlkfeXY1m;dUf;r#jR`S zROXC-x2kFz03E#cOHBK4fxG0tduQpAw)u*Iw=MJyRFc#!j? zh$-XMAjesYecCc{lbpV+K{ydEYoTuGWdrJS))I08D}O?1Q<#UXdW{aY!1=*I3Yk5k z&0@oLwp%^t=-}DVo)kp~=O;WViVjXtcv1u%#-*&R#Xiv?>U=~&2c#)pt8ZQYR^}N3 zc>%FzVD-hd&=Bt9uEU@0IU&*}c$Y%U2_kB!5%4Tod+z`$Q{z6zw)?AmgF>j*iy-B`xD5e*lU`I{9gl$$unY6lZ---Z@l0 z1l}Ah4036Z7g0m_r3n5Pv2w-ITmed?VJ4$^k_WzjuBtAo7FlISFt>%7cW-=yO$=Gc zMnuW6iJ=k$9-MK{eFJCzkj5gz0Hj%l6atYhAb%^oD?6-;kfHg7l+)*LnoH+5-#qSO ze(i?^v0<|ae9EXH=1GwW#)%p*za-XPZ9I%ik3A_m!FW_BYq8G>2AqXj2)#Y)1Cc_t zxWNt#SjYPWuHTq5p*cXgN~O%t7rpid1CrmKTBf%yUTd$d*{PV=u>H(HJ!j_CxQEu0 zqJP>q%_|9~NA2^FUhiF0`~2X5wb-Zjp}vZ)eN{*XoFS3BT}LE@tS#qtCXrQ)X>%nRGO77Y7 z5LTp6)y1sX4;5m=in-SBmPqj%hcliO1%DPlhxDY#x@}x>>`4(|jc}HXwb&=HpuD*c zARy00je-7`W-#l`OAy$53~_GjC;2={v?qR&K8pdOb~ zRG-Mou=7z;`hOfr z^UDQc=cA;epQY$u7%IFYlL1A3MBefp;b1Dil2z-ql-TH2=aY@K&(#|G_lY>7ohlzG z&6M*~B1yDTKIGZqY^8X(VEBLi9;mPn1NFZAjr8U^Y@yd$w;#8zU&VSA@)$R0A-5i? z?1>GlQx%FO&IWo?1WPdwsTK*AVl00GuoU{VC)o19hIF@z{qgHn zvp|4gq(PxbMGr!0YE^Ga6@vEo#Z~dmA3%xuhmFPOjry8&7 zhWOlq<*Uj-C^0X@Jn@U+b(=6wzBGkZt$~M=HebfqIWtfK0p9dwL9lrpGO)wl%|bvv z?BPUaH~jLeLIEmyKp$k&9S%_var-j<<_*b=V$C^}FU>Od})_;fuc_kZ%d2=&59jTQIx3*`8go;GhhZr)gziBqq)zJ1sH=B{2B zU-+#edt9tZKiq(dBamJ0zFKMCxUOF2Q-wZHsCJ5iJe0+zvDBcfoeg_Ty+m~v_s)I* z8XH!bCDh#TBrH#gE?qqJ+>@f_#@siUS6HNn&3%KC8ffW?#bhR+dw=~0QSJNM895t; zy=W{#)as%rbPuMa{z{yH-hR-!vo0sOnBm5@QuSt_O@ru7wp{ubsCaM?=8k014*`}% z%8O(_j73T{Iv9?jQGu@$kSX>KMhNsXoK-Xz0=Jje(@L=Zp^pa1S-?bOJD)mnxA)1 zuIo8I($M#g5dhO*J5m`}&wJdDq^g3^X(!(oD&~z&JN#Y0(=Hak{mbXH1XRi>xE4bx zGVOSY0#8U^V`4^3t0zUzxDA&U8w@k+KAxQww;Jsj7E6ks7Q>ebd|{YnLVsZ=;N^qP zyZQB9-k8E*xPM1)NorFp7QiRV=d4N|V{|g=$MX6pKe>q$I$2MM>WpV7cv8B~5@S5O z$&(7HGsqi-V}Qwm)SDL&u6sR?TH*KhWGG6ht zV+T)4ow=?0j6B6a59qWx6`cRlj3*hNuiuR#7$)-(H zQu;b%+<&wZ!&gz=^Ez9e6tQVW#Iq+AS@&JaBt^Pqg$*V=0-yuY?^p3!i;M#iY1hZi zDzR7q(;fbu! zF3K5eg-1H~z1fU`B2PlDcAZHIt$&_BEKC7jPcT+19IYAe2O|)koFT?W1XDe^>ei71 zQ5S9jVFFxB7dsF@dc@3f8gY}aM=9M7jPjGuK_7oz^WixT-uhplmS_mohvzel;VJS$ zyKAkd>a9e^o>)u~8Tt|sA2#T9lp?A(*mV>lsyFHmc@0w48>gB0uE>*KWC8`Le!+Ki zA4Dp&=yf@=4IlwO(&H7!J^QFOH zMNxl>poCX1iJ=fhiMjbPX`&>DB^U@L6&WQEV4^M&_3~^XaDu=FqNSIA5v#--xYYAJ z1fzvsE(i%0-gAH+?SuWa3iDD&4VnSLn>B6ANBF>8Vnd+4*7x%;NcX~uT1WhAC0kG5 z2d^OUfLK@goCCy&bww!x5MvjCLKGmzE&@}fs2Sm97h@f`W@5?NRg0MW~C!~=*f`JBUo7d?uh z6oG|tn1Yi$LmDRaF6eN=!vea%yo+GtfNewuf*7XZV2F@<4-Q@ILjZXeH%m9fhm(9m z8v?{wlbJ&}f4m~ECq;G7llwfWsJa&?;Z*k@!wG7?i$iEG@FRWs7JUe@I5;1hYeQ%f z(P+@0{U3uV;0r|$rZpZwKFa5OeK5#Jlp@gJRexeAM4@3Ewxbkf1Z7-;M@@9=D+#xD7d{F(PY3%#s9wD^A zgM$q80|@lo8U_%LaYa1pfp+mRlUPL{0`<6)dPN(5?O*Q(8S(%|Fs_Ivsy>tOAq1V8 zp=0Kb&Ws#OBzVF47`CXZFOe{aW0ZTz^LMRTL$;TRZtKEd4&a_?DaYnS(BnE zD32u~fU90sf4)*M0$gw?k+mv^BFkYx`36>$v(pGYAx;GFdh$74uaibWAXtZFNiltv zCV3ctVb+taLwT z50;_e!<4A^aIjpPJUA=~o|9?Aw|7Wc{$&BJ&_8~)a2QhjH{IsGGrskk9 zL>UTEROhCri<3oht?Hq|p>pMGh+)Ts35tH-Z&#q06}D4d<8VMVA-D2}CKfyci|py>}5O(5M;DTC`i(v`jl@o9^&FBJa8ej9j5B3_l+sn7;#?8nSaF}!voIV;+G01=+vk-|4?y@79vHc+ zH=&YH^U7VQb7Iu91bY*L2UbcC*J$o&VbYm`rMXr-WGU9`wbylJRq78p$mRPuJV>m7 z@PjKawyylDkCQEb0d#OeQILAzEk4o%Z}CxA7hg?I8hDGp>*}wok4yu9Z}E2_K9)7` zHW5H@%IA#x=4qy|2r3#>U+a19KddiGi0*%l4HQZd(`V+jqEv{l`%y+#k}vFmD)Lnk z`6i=p{o3X3xfS;(*gLJNZ56o5TbEBmhKQa~!x<1dkgmqh+BjT{TahsoSmYkU@5H&7 z#r~-;7DA`?QMw!RFqF-I^$V@*uP_VII~?s|3Ij;dgrfh*0U1wT1|%pcf&^nLjY5R# z<__flr|sH$D=n_-!$C}f>#Z=X(J}K=&720AuUFw zBu&$-9i2i(scs!IKe1nZWYw=Mz91krAy#1#_xmSq1ufb;dP%#ug7%N#hDFJqtEghD z-}v9VaFpux@KU(}5Uf?QZnF)lhKJ9rOy9HF)H&U0A#}Kf`=1RN?17h71ZNxC1O@ii z-Lk7ILgNrp->{$ze2<*<*4}5Ip*?Pcd)WKXzQzu3eu{uG6r{8YHc(?Y=PKkxkMo^S z(XNK1z>Wj!&**z?PoQ9#vpC7Noq@xz;eX){%nMl9#`M?#cDXv#EJE?Yn44?L0GT2I zp?L!ghD3NOUBJ!}^C)i4N}dRvgMwuNb;nF!whAt`x>q_e?dbCNHf7l|2Mr`l+&^}B z5rrSEM%D_;fq8~F>971kO3c3z$3QTkgSpM1%NTGn*uQhy%~>-(<eB)qq$^#O>zvIVR-^ymvtv1pfS<3eX0H2XcgvgyYD?@dO-#2{5`GMScJ61+ui2+lBArT)>tHzt`7Iu)KB>L8k8MeS@x%O@ENB@qf=RkxCIf&(#AkG%`5~@v{PO&~?sEcDc5%TA z$c+R@GB7`GVmHOuuM3J{%X`5*fg@aQyLi$-331nKdfR8Yq&tL1`zNZu7mmRn4yM~&A#-$LpKk~Ok-n>!sPz2MR>DhT8>DabFLqh0YPhfr#zLC7_@}_hGh-@u+JQ>*fZdNn7e}M>{94;Vm zy$Z_=r=b3?w+JzJ>B0^qh|iRvi8v&;h{TaXt36QJ{V(envuS5W!h3GXRA5d?8hFp9 znhVKOn>v!|A5vf6maNM0Mks0?ae!S$J;1Y;)k`;EXa1)VcwkwMkp5%1o6NKlABVk> z(36Zb6rUM?PoOChx=|U~UQ(%0P{fgBfrQ_B9P`#Q+kjRW>g_%)-dzVi?mL*^_X<*w z5@N*sQmt|@vFV)0G1ezFbmMnoDe6EhR8T<34y8HS{oRtYge)LR{8B_o4WJ-TF|%Yc zsN%PmM+(IIg9_45)bvYjF%~;(`*^ZMTv5a1Q$sqh`8y3S?cP+$J+D=`It;8~>GbQz z^_(DV5*2@kWAB)vPMr|@y;vi49xPMN301o>4c0H)>5v0hCXtzOu=n0Y47m;5oEP}^ zk>RU$q3JY#Q*r^#J(kImabVea1ne>@czvDy6mY*0`5Yayn%%=r)2Uh64KscIY#?7W z?0eYhqw@w`#pi--e%cET}VQpbj!iJ8Rp8q>A3NpQ; zvw>89>M&i>Xn1_=up8a2-0}Ax7LgRFeUlvZwl^m$eGJp072S9%Es#@IG*fkRcOAog5EbwoD1TxODN zLYyf!*Cp|-Ow;tpMTMc1lO*L_wt{ivW1Y3H$a91>sM5yi)Of| zopIZ^e%!=t`6W}W`6X#?Lz|c=F5|7cm)cs769{?-V=dsexQz%oA4erj?DjIFtX(%n zDwOyiLM$}K3ra#s2+@q#vl}j(f07{`E(xFOu@tA9U6DN~Ld94~NjTk^YtaFy2kaY; z@ydZt3PZM15G5BWl;Sj^IaXwW1eD2dAZz2yx}6z%R=4+HqE+l~SVCvgebL|pRqU*m zIe5A>1lNmGpY8@|o%td!oVMUy>F8ae%O8ieQ?F$@^YPS`b!`LB zAQJIVLKhDB7)A6uMOWi|Vq^b&yK8R4-6+qzrLZ$^rZt!xdU6rb2I*(~{s;sbC*$pN zEBYlzb5_Xo-8Y8m)3}~#d_KKDXNHSRA~ax+J8i0hk~a{aZ8UcPCV+&q4wRYvX#Rfk zt?m1v;78?afajv%$1mB`T-t|{xE&C&y?noL!V<8U zqT7&C;!!i-2nBmRZrMHI-9}`$C1oE*?s@Ir1-few>!Th$b!esE2Hc6NRjC!>>9~0# z$u^kL=Usu(c~bLxKEMw(_RpsuqxBv!qBwGSG3`sPb3l}WL)Emd-k2<^^*`p1{Nr32c>QnG#tZ(efP) zHO(!kUb5Hrb%3+;e$-=S#ki0DjStbN@y$y%>xs(_52ku;oYg)hA@k(wco!vYf zF84G0ni@T#-GR5sdxPRj!Iz^BMw6B)9e;0k=fks(PadDkp5<$73##na`o%}V1n`d( zDUpxGDZiInAB!R4kJGzo+>~QScU2a2TFCrcPBRHk9oMdZ;^WC7T*VY=%987F>Wr?8oD@pS+K={%vAC_zetgDT6 zS7q9Xy@iGTiC9MT1`Y_JKx!AdzQkweb5R!q#FFh@ssPVSt7OW+T`i}#kXF1wxMDqk zfX{!&e1U69EtB8>M+4%rBbGRx|-4yi4yR!^?U4e5&@|mj|0gL1*onVY=ZB9tLrOH{#KM+MN zfr@b-9lRnd&Y&}Y*OoDJ^T)*Z6lFS{Q}hT{DZC&NJl$BB^qBp?pGSx1xW)+GHYvoxx|ObOGI_{++=yXf`BzX~ix>^hXNFz7O0k{cSD z4bQ^`Mj|oqt(g^K`1KEA<%Fptr_gH?y={W{sD*1(1 znC#8|N(^N(mg1QNxe{pPyX7Akq3g0K-Eye1kr;ux;l4U_sS1kYBxipF>vBrLR(djr z5peav@crZd;H|tvkz~^Qjb!Hv^3Ma`6jJL0VU$@x6#Pp3R4_&0Oe9|gB+}2)R9vVA zd7{uFC(V~SW3jxt`q?$irtWZIaZ-N6&4G`2OsDhH!~Ko{1 zvB*Z{@4BBtYI+H;Ojhnjk3KJ+ z*(n36!xWq9FQ!F#c6^r{OVP$J=_$(5gcP`gy8PEd=)0#97Db?S9JEP8h4#i8BZ(F( zV`5}7Juud@bKVDG7j~k@|R`t5y_a!s?l)O3v+lWE=4ug2pQ`c+B+i-4Hx+Uv|2JEq zy@JV@U0Fu~HhiszMSFz#*!Reikx^9B8@Q$lW&889u~z%HH{Fz@QyXX|zT0!fDyYRc zfwYK{P9`dz>PvUgdq3`txfpUW)y?ExxsINnC13_fup;^~x8|Rj19agA@9$OZBWs8~ z>Oe@ffSDs6L&K-G$9pg0xXrJ3M?~_{Uq2sYppKPa$A004Uj)W-MOzq96IT~Mmnv3? zh+oE%MYeTqkcwfreToi;{4!yWJ*@~{G}c30H<)}>W~;H*n>Us&^R>HvNNZuoJhe^r zmt(VPCaNy>Dp9O@FU0Oa9njOgRs4?xY_`ZF+nR~0$WLlpn+Z|w4zx>7|7;h-KxP1Ie30f+@lwk6PG_Wo= zw$4W<9nP=bNTUPRS|-MkH642`l{~(76FobgOOT_?v=pQ#%zFMC{M}c5@{8lhyP*q7 z#)0lt35rod4v+>K1cCFV6_hiL86H zZ9malIiEohdTKVWv?Y>vw$eYL>TC@*5dknzNZ}T05D?*B5D<+2O&jWBY2<8Xs^aQw zWpCl~AMVgIKN}YniN=RV6}OK*e||AS`T72Xco3<;VwhyMQqI)efVsK3ZC{j!#>yXm z_*T$Dd}}EX8f#3z4|WWVWt+JI%+N0ySw7A7I=%rrOzl%A7aa{u9fkJGvNwQwrYbG= z+VAq1CT-(5uQ}*XOGL*eLE%dLvT({k}7}fvc;go}W3;YdwXKV)ZtYF!Dg<{IqH7 z5dJ;(JNmkMw$;Il3Spc3*%B~2oh@0k`nyV2Ad~lBqX&~ff&$fN94GR%;BuXVgU+Ep z-ExcI;_|KDE2lXRKp)4k>T$MK(?!16(iQ9<|JE+^aJx8im)g8>I6kY+Y9S59pE~?y zh|tYP&qf1z5Cxd*a5JR}pIVi*D-*-cN3M~}1*HYN_IT^)ve|Y8%z$JI8yAy!f2wg^ zBwlkRi8G@_@yQ)ky9QMnfvQCNS}VS?#4Jw261rKz*kS3P(O#->W)^21{C8V@Cn5Z- ztt@_B%I(_t^xPu*(nhVy?G*z4iRuqm6AT1^$DZm^FuRU0*2JcYZF;rU~&Xl50SM;2|R#-xOoKOy`4Y1S%vXd#)2XLdk( zTdL3zan*okBmY+08(~!40PDJZrf22btGJ#2--oASN(nUnd_qFflzL0pNkV7UwZYkT0~ zAmO~f;EKJ_L6&F?eSg|Gq&*u{T3q!&=3kzMZV zG8{Ta_+zgs4RonSBGV0MB=zP?8`VFIi7YthDL3oT=vHGevS+65sG#XaUzCGI&J*qE zu7BmViMHv{=qK1l_J-#bhqB4|I8{E_Mk_&Hj*wB;D|znz7PtS?OO@w)H|(KjK6(X( z?7+GC-9O>lD19CDD(wEz<1ADsSFYc#vM$EL_VD@*m}v_qdKkD~8C!fXJ0t2)P3mpO zsbDr&_|4n2G>CQGKS0plCuKvD#N|+ccD&)6x5(c5a%E5ySC2sFv~Xt6DPI_qj*?N! zO}=P>_cJh1wU$oUIV5fjN2@Np0PX?(61QdOVMph10T0Q_&Iy#R>cg`q)!Rm4t=8aE zTQ9W)Soa~r;@9L$+Gu9KSktVf!akq&^6`R$ZsGx!^|PM-@~Ha=c69otzeKJ7P0p&U z{?N=!bE`t;gCwo&mJSH&t zqEHNqJ{cfwdu!wY6L+2`0yFTUrl9QcjA&5(CN%`#%3X# z&9vB3Cb1SOAgp&emQ&9rHN-3Wc`c=;R$|y|z$q*)GOj*4pm=2I4=Taw@hs~GpBX$5 zgz2MNoW<)!M+~v6HAq;co2kNi#{IY)Azw>b>9sLlcCG8_7d}XNJzw+G$<*S{I6H;~ zs*kq1K^WaBv(Mwl25#X~c-`0brEah(`O1cF&PG^XEg}TXG>p68w0is@kOmB>m+6jX z>F#*Pkoi4n3$nJQ9+r6uDe``-6*|3^S8g&z_>6&KmNC^xT%JpCtES%wgNedl}83p}pchd09eX3P{fqf~y z{`p}b_vc;N=XKxfen6RS^KB3PSpzw>bS@iReRErsk<=$ZumVZL0xk({&)aeh zs5FM$U~hY8VL-;Dnt6FRa}IKAQ9!^|@F9<;dgaE#R&JBa(a$CV7N| zP!y`1Aude3tfhM~4GHawk~M?5`Q}>d6^WW8IEn0vR1x&dL&|TBE9yXn<4B=^X*wdR z7#Hw)8sXpOh!w`1eHcdj+hVuQ!tVGwDr$2AzgB6rc|^N@`s1*`>hWj8>$QMllh8 z(mqPtj{Agb=Vv7@ik9wg=nJTGDcTFq|7kjUM!BDOWhAB3I@_MqQ3?NY?}^;3D)2LBtlHF=;v}2?-|hAY(}hkw4AZmY`KKo_h8?42|rx z&O5{WHuBQ_L&rgYohms_vhZ(~D-v~rnW;C9n|F@4*(9WeIl*|EC_&$-#e`sJ*Qede zn>~mPNb0d=t&6c~YwOK2JxVZ4;8jb-wl&|jfdZH+$qw#k$HWUU5JU(Cp>Kg;%EtW= zHyi;>-cimJ%;Kz`zR2x8SE~GsMd(8-3ZBULJv-q1ni57kN2=Z0Hk22#m1 zRDuPrAE~~?xe0&QftM+BQRzbj-w3<%r`T1cK^68P3)}pWzxQe;V|#ThNaFHo($!4l z9nofNdPQa|0-}6hI^S6QbJ^*N%Ng-#$bJoz?q-bm!!YCNA>9Fq=<{_U!V>55DlP%K z>!r0}n~ZGJJ^tb3?29W$-okm%3VqBd=i8D3tKD7t`&MB#5aBYHeat})|Blba)aDnz z_$?j&(?}?2M;)AdipuCHT~vbu{R3B*8CisF60(EdKos()cW{*~?Pm6$hFpHOoX`SO zL87S)w!A(f<6zuXGKWT&+d#J4x$pR9G55F&Uvn5!vY{^bK7q{BibO^Y=_cHgx1eh1 z37$vfyB>--K*pVL43FQFv-2d(uA`FNuu&lXLhf6oz=BlnGwyA>wTi`FS_fW@0?YM+ z|2s&xtlP0)%EM$RY`3>iDr6^iLj%mcX~U6ji<*z-Qd-^AA$SzoN6FGY?8xQAK>F!r zQK2*Grxfk5dh)@-rk)N^hf-JE_LPNXv>BYV#h(ZQY-Y8-cF{F|<|pl-OO>y;&leku zPV|vd@PxWtcih0{of4pEBu=4w5JmKW$QQnE!9o+k{TdW>Komn+s#(d;9+49w`CB(X ztucvW7$9M3+Yj=yDpMqECH|*HC`s)Mcu@lwpRM12^$RI{m*y*B4v=O zyT7cOz?JNehyL4p&L{RWAGZ40C5PIyC`k*@`9%>^?kdVF%#sY30-9bD-FCQgqw|^F z71n>N5(2KoPik|@M_J!)d`Qh}9m2OL>ypUEH>z2_@!RjH2$3Mf6ZCDit60Tj1W(mk z6y|x5kagf5#V z)4c@c$Ib*xYidys6da&mg1vof`SxDDNhIjBcbY%AY#QXompQe6MJSu_+Y+UT6xAZ3 z!;iayIeqXGMr+MNf7dyncc2EF5?s8%csi?}V<$qCKm%lS7WM}BlUo*fC>h030Z{(J z6dPIk{u>M7=IH(a@3R6Cw6cz|*#pI_ZwUKssbrB8HX*o*Yd#Q_emP^)$$N9fe6XXP z1TJ3p2XRa(1XMje0rqq}S<%GoNn`7fx&rNqJ2C^pKRSp!FgsnA0nQJ?TY@FJdrB#U z{K^Gm^y;(SMFQd&=8b?~A}~8&b(ekwctdObDb}BiDzGAMmT`n7I`s2Gq+ZUIO%%WR zykDMs6zZsBz9VAmu~6 zhI4jPa>w+c6+wdWg5hr^FVds$Bhma#y@Qr`QP;fi)Iq50M+MK1tX*b~`Qg84!B-4dow{Air@^y7?{zh{|c+*n^(~s)HMck5qe&s@R z&Ys-7uw}NG*@UjU@~Z!E*WG=;y9~m)I(#?qN8O$HjXi;l>mKx04O@=ZX!(YnfRe~U zHUg5?8)^zcT0yNqX3RSQ?74tH>n@R0k&L%cs>wqb6{;O!Gk5n~DJcKBxr1aqp4NY_ z`&aRltQJ}mdz^&6@;$OlD5$ULJju*H!O>n<+rZ0g6DVKrYIL9Itk><(3;RBhrF8=p z^heX@x*PHZqp0uwQ|eNOPEDh#hrB*XDs+to0&C1lgu_H_Cvv$NFrC&%WE;O;-A#MI zuvFxHK6X!{BMK4knJLb7g>gY+%MhN%I_Nu4iBa)ANo$*A-^(X7^Nv~Y-UBB@PSJ;5 zwbTeS%aJ!kXC{bfHUek1>y95>mz80QQ7EF2C}vGO_2b2$X9`xWZlUGY7X8pQ{(@o%f} zX`i)lQeeheuo)asyd7n@zwHtCO@Z2I)kt2kVB<#7RWt3%Ig8WznSF&MaqVd2a7$(X z!~UIkz8cCA8MLY7NxwApf)It`Kd>2Z zW<^(LCF`(pfI-J7{)&OUm0x(!|7)*3K*Wa|7DEob)1g1D&ev|o&;{8sy7$2G;sN}L z(RmD4mmg6AW;uF=j6cM{DWs%DS(KzM)=m>{ZZK}?`?Km#+6i0G4-TgT5FnlFS3s9s zhEn$?WouGRB*j{-(|+QB=W&fnG|!wOtKRn}v+pVzfI<~r+Dmry(sTcJMNOtzn-uA_ zcAg(_P0jun58q%9%tWB^~y}p z5s|L7>Port3$(PkW7<;vcSb>WXKhRwsG`;S`%>&{Z-`3BrkGOE;qNUMSg;_RepfAW zfSD&5zFAyd<5SwyAdz=Nr?biXy63%~7C3a1*%k?(?#26ls<3;xm6 z>5?{ott;Tj3#TcrdMK-TyZz?oq9isOnmO*hjLC>J0NNxxCc#ySpOOrf?f(HD& zhV<}8#Z$-!3eqgm^xF8|UO0T@FVd+4Fqj#dUGB2c_{#AcUI9Ot9N)#EPx{*o>_Sns zA!OpGC0MD8W^K=QTLf7wC!~SpMj|jxq>C6s>W||cY3m=iDNekkA-+HBij!pGe|yI1 zVSYYB{Kd0DFNYr-{1=rQ{_*`djf~DXHMt?0be*Qi5|lWCgP6(=wZ%$Y4?}V2@{4-@>D|%* zk{J#G%?!RbM;4>tUIvt>5stbCI(vjxX+_OE47JoRAV{1qZJqF+5LLR?U!sqWf`pF|ddSSFXML!QS zlZ$Vtjd#&H1k=Oa@WxE*r40H8z$4M}1eaT8GJ1nV-$T6z)LTqu-1#@6_S76pnx=GGabdwuxo1@g`+~EroGyFo6j+ zQoCvYp`$)Z>0U!oCNVBWLqZ`&pK=7Aiy48i&rK199!_(-OKLoB71JlmjEd2^`u^*T zQa!25;ep=a^Zm*W9Df*aW-SwselyPBaD!J6@}%Lv{YNhYd3msAnU!&H=7{F|es*JZ zw3OT>j)1!Wp8~Qs87e8|K@F1RVmysk5=&nnVb_eR-TM7qK3uQQM!nt@3^wqfo;L7LWYFJ(GUG_(|?wu>R5QTewi zh^b{rOdJstcR}LYrk`?L7p@wK+!hxMSnFM4JAW<~Pqg6moX3U!@*LC?E^xF&;~?aR z;BJ3U7`FsfzvBz+{V0$$Z{@lq%ZBxtrB(9AnTFEvq}ZIKb{ELiqZYgHm%BINC3ySwiVgw1W< zqUQASNCL{V72n+^^!;%J;W<;m$nH={nHWLw`4Xj!>d>_eIv{^ImKd5iVkIaiVZQO7 z%V1yYl9~Yl)`#7sXn#;4{}3Ee{{9BH{^J5RQ6d__N^*LUq^3mXXv*tPVCIe?il&b7 zGVa@uh!L8b!Hg>9^tl%a)%UY0UC6%@mkS#mHe#aJ@fc`hexVhJ)Et2Yu%X_0(pusk zT#ZUW(@L*|CvbdsgGh_!h`?t6NK_{&ZmT^&3XhdyzO#T|h`+}Hw z>o~;b4yJ_D6Z{;Y9`N{hjn3*9Czr7ER|0ksFR1CnmpVw$==1>=#Ppj z()t1nTs^nkwvyY^XL(D9i}%(><{S%9vKr~+0(1Xpf)3m+Jx1K1Z*GLj*PL}7{>YjZ zOUljNd`G^b757?ftv)=w59_-+dT>A`^F-hW-YOqEldAN~L|pjG~?Q%p=eqt_<>(@k}BT z!kPxBigBfK8IB)zhAit`(~T*s+9;{iQ#uD9GFnP5z(>;Z8U5$dT>Uu?vcL z-k&P|!mKD<-wv0Jov$blA!s|N+n_-JPtJ>p0J6z-nFiK3P)RTKb@jyfzwr?{#r-}M z_9-yweZ+2m3FP%TbPBN*5&DDqIk>UP1;hi-yi}I&b=rF{*#2cJd`o;Kd`9x6kRXMV zq%_-$!bD`;!0|sytV?0DHYozN%`|x{z?oey;5=XWAN3X4|%6yKa zMR-8XiiOaW;hc@62on|Z`#-wJr^*sypP}L}aUVVYaAVQx+D8e8_T|Q_?wf&4$Ex%* zJnsKdPTtM)n@7#DG;n*TT+z@2UKdF^T2*`Yz4cY&l{4kBO~^7&9MFHcMq)p&*(N(^ zI%7w;`WsF9VG8auWqI<_0JP2*R-Nu^+d=ylncrO2Cp7Rm4JgcXj@ZrNar78VBtyADLte z9+JQiP^KbQDBh%n)RKlSGYkN2bfZJxka-~z@f2fy{yhsST?)8*xQN#afOlCrCQA;j zzKyY5KSU1K|SHRB^_p#S8Eg2o-1Q;K=?S5WmGxmQ3}Y> zmrb&UVJ~Sb7t#R{C_zl3gsIXuDy2$4=6urq-M74_RR`!P<4cQ)!D8j99rYw@7LUB7 z6TjV(bWP_THuPe&&yd;o!Sw}8C}|lnr8fOYe&SaT|7ktN)RQlbLu6QMk#wr_dsJA~ zj#KuS+SY-z7V3MIrX^yv21ywN4L^1l+~u1L{MFN<lp3MOkBahXmuAQSTRMX~3 zRx!z)6_S9Lf}6xG?E|{33{}*h2$W2 znJY!_WT_@}?UVULT`JpJQlH=;h;d)SA4rjYV#K+75(i|*j4V?oGf}cGWCyI@=YMMn za>W2`Db;rsv(bpSZ3&&`;;C_R*F2v4TK8?ZJl-DRr>zETTE6TDP}kcix&IUEc*oC+A=BRf2sj59O^)yyLBxnL70iP{)4* z_|s(bRI?3_O-{0&-2q?WJm%O!L>&#}FJyrbhb2DaDYrU-q@sTbK7u_4u$UItKV}kB zAE|W1|FwH>V;Z+|Fh-Gcgo-8k@_pvuu*8UEg$5{2SgNB{D^}5F+B|l3op3n^p!QJH zd%A#k)ywhYodi@Y^rOIX=&dz7MXB8gBa(83^dSFEQDVzxCeT|v{OzPNm)Uj3!gm1Z z!YZK?uyk*48JinG%j64zDXr-$Q(3BnC@23p9S$g2*)>T$(G3nobr$~%Yx{#0d}?{Z z#gGk+UzPAy7i>_ye~9w;hpZr>;f{b|bwBz@c=Qwb{JCtAk?_Oqq%PQu_693XSAlVn zeWi*S7L5-5F4p|>HHnO22I95_hV|E{4bH-h4@S}PZ?Ee8b0nLuncsdX6!h-mJf{7j z7N#lDY-_1YzP$uW%(zD99yesvlWegpn5*OS(W2Le;W8@9d>D@uhtvgp#xG(a4+rIPrCV1EqNp$st<+9 ztUTS3@1!TOaUySQj#lA~ft!psC;(v@%(vlJ>ZuLi;nU(3Vh<>U7Y)q!aV8RIKMZ?R zKxl5lDZu<|pC!_iYbajNVw|4ozO)dTm0^?fpAvcwD6Q0`qDOL}MaO+G zZQnD8A7v(Y@!8bwIKmDc44gVZ_-TWaN3V~k7796p_G1Xh%gQ-e-8H~BD3MQc|M%|% zwe6YUuM##+Do`Uy^;1{i#N_}KT!-5V5%=fO06HU0x^9bL%OqT?35BVm`4~072GxYq zt!+HJ=sl5KqlzBfmhdfuuO{{p`c@$FstXH@TQCRsiLPRZh)Y=}f6z7HRlYg>!YX5nan=<0>U$U1x1VFAiVKE-dSZc!ZNNnYk2)g8SxhN>o3*$KFP00sI2kq| zED>2|^>nUn-#_viWQX?j@J2ZaAQf4UCcLSa%^m73Zx)Q31jhkH&oEWArMU08Q;{Ng z?mKHcMz#C5WnTniWjm13Ej-Nx;WiRH1QT4&KNeFtCjJ5>~b)r(hD8<;x+Mo`O z0)0-$0`9TOT@=cj97sD?eqpTT)rdpUr2mu@WHs;d`(`+~{mt~r(fp5AYf=;b;z9;7 z(US{GT-b>7o`?`2!4SQ}r*tuq!se2We2`m6q&oWDuRFKu7E=a#P+9LvRZ%~Z7*Q-H zdEh?MG91U4Z!?iqT1dB_U>HYsYu>hGW$fAx@V6i#}~vh2^N&9)sbE&x+Tm{(bKI%0?B&;@Js0Je$bt6SGPSPYX|{7VMpW&$ zGn?I(J;)orQ2Q@uYM@xq!!M)ewd7f-U>=9 z+Bl~syXbhz3uDapL35Wfh$tJ6L*brxFG*SB^$ z!|Ma!pf92A1?+wprR|^*MfBTtFJdd90uMQ)bqH+2;`-yIT+1P*w=j-t zRRqb-t-ggw)*R^bx_7tsTV zVXaGDhp3jwo4KqZCRe9oD@8s@Gjf2kTjUf@h14-#N)>>~)%(J#tYVv4%*4z5#8dlg z=afwFd{u)lsYx)kE?FCm|LD@>Dg2&)pM~om)aPaNnSa0< zPK7bkTf^2a^gEh#eF!iUI+bX% zHWGeGF2~@w93Bc=Jb)ImX8Qs#YBN6b_X_!@$n3t`2Az#e2H_S+Z<)ieJES*!Vf~e? zMH(F-=&x#>YMtYJaPa0BW@;LKy~v`(DR?D$-u^8TsHy~|?E9Ujo@sRR!`Tl~KI{O0}3w`Npx?F2}Bji|~IgrA7WleMF?x%ouZRh z1#$gA819Pa+_87gm5>DL1K?>~^56xPoEH&SRIox?VEQ({KvZtUUiIM#>OrKx663Q(0W@k76%}_j21qWBb=<1vvlT!BpbYVEDbl9el~B{r z8vq~i?I2^)DeMF=S|Q}8yF%Erc4?W5KZzx8nUvK~4JhBFbcgi+h4Wg?jb3uv|LJgM zxAw&p=0g~ls6ZjZG5H(Oo0kFJN>YMWuI5MgDc?gcFpx?z#`l)go!|XuYqp=e@%Kcj zUr=2Uneay-m^w{05URf?=&lnHS*SgTgb|Jj=pScm8vB6Glb=Ts zdtc!dH1rxlCYcjSgtUXDgsx(M#UQMMsW5e1E-|CW(R0_|yrwP-KRbLZA~!S_-4tV1 za2N%96vkFx-PO8cCn|Ar`1a|I@JcFO{hwa=eA|mX6|E;VlueQ^W=_GL<^?>krnpt! zbe#Wk_((upw6IGhzZdXDS2?J|CrXf}J{g^bCt#*hn*RAcI5n|X_d%&gsDU!{{E0>` zk@0NW4!29;-0vyG2YSQt_#89b_1_TBb(V!IV6cYq-kkwo5wH;wWJ;7lTN1KLi17da zQ1)N2)c65;QT-32M7rUhaW=*n3V~E4kZ+oDT0n9JeDbfjVH&a zQ6$)vGlBJ|#;4IF43(pNsR$lee|iE(1sTDAmE>!1`d}a+sQ=T@*WG+>f@=jot#JVe oh^d2#qO*ge3zLzfr{jQ0r_9ES`Oj?09Z2oDF6Tf delta 33491 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 z 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 { new Alert( AlertType.INFORMATION, - rb.getString("AppMain.030").formatted(AppMain.VERSION), + rb.getString("gui.UpdateChecker.030").formatted(AppMain.VERSION), ButtonType.OK) .showAndWait(); }); diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties index 7d06a50e..ed6ded2b 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages.properties @@ -73,8 +73,8 @@ gui.MainController.070=処理を中止しました。 gui.PasswordDialog.010=パスワード指定 gui.PasswordDialogPane.010=%s はパスワードで保護されています。 gui.UpdateChecker.010=新しいバージョンが利用可能です。 -gui.UpdateChecker.020=新しいバージョンが利用可能です。\n\n 現在のバージョン: %s\n 最新バージョン: %s\n\n最新バージョンをダウンロードするには、Webサイトをご確認ください。 -gui.UpdateChecker.030=お使いのアプリケーションは最新バージョンです。\n 現在のバージョン: %s +gui.UpdateChecker.020=新しいバージョンが利用可能です。\n\n - 現在のバージョン : %s\n - 最新バージョン : %s\n\n最新バージョンをダウンロードするには、Webサイトをご確認ください。 +gui.UpdateChecker.030=お使いのアプリケーションは最新バージョンです。\n - 現在のバージョン : %s gui.component.LinkPane.010=Webページの表示に失敗しました。ご利用のブラウザでお試しください。 gui.component.MenuPane.010=現在のバージョンでは未対応です。\n将来のバージョンにご期待ください! diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties index e0c2fb79..b8e77bbe 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages_en.properties @@ -73,8 +73,8 @@ gui.MainController.070=Processing has been canceled. gui.PasswordDialog.010=Enter Password gui.PasswordDialogPane.010=The book [%s] is password protected. gui.UpdateChecker.010=A new version is available. -gui.UpdateChecker.020=A new version is available.\n\n Current version: %s\n Latest version: %s\n\nTo download the latest version, please visit: -gui.UpdateChecker.030=Your application is up to date.\n Current version: %s +gui.UpdateChecker.020=A new version is available.\n\n - Current version : %s\n - Latest version : %s\n\nTo download the latest version, please visit: +gui.UpdateChecker.030=Your application is up to date.\n - Current version : %s gui.component.LinkPane.010=Failed to open the website. Please try using your browser. gui.component.MenuPane.010=This is not supported in the current version.\nStay tuned for future versions! diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties b/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties index f81556a1..45558d1d 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties +++ b/xyz.hotchpotch.hogandiff/src/main/resources/messages_zh.properties @@ -73,8 +73,8 @@ gui.MainController.070=处理已被取消。 gui.PasswordDialog.010=输入密码 gui.PasswordDialogPane.010=%s 是受密码保护的。 gui.UpdateChecker.010=有新版本可用。 -gui.UpdateChecker.020=有新版本可用。\n\n 当前版本:%s\n 最新版本:%s\n\n要下载最新版本,请访问: -gui.UpdateChecker.030=您的应用程序已是最新版本。\n 当前版本:%s +gui.UpdateChecker.020=有新版本可用。\n\n - 当前版本 : %s\n - 最新版本 : %s\n\n要下载最新版本,请访问: +gui.UpdateChecker.030=您的应用程序已是最新版本。\n - 当前版本 : %s gui.component.LinkPane.010=网页未能显示。 请尝试使用你的浏览器。 gui.component.MenuPane.010=当前版本不支持此功能。\n请继续关注未来版本! From 91dd927d2dc7e03340cc95e3ad3117e5591d9311 Mon Sep 17 00:00:00 2001 From: nmby Date: Sun, 14 Sep 2025 15:44:15 +0900 Subject: [PATCH 12/12] =?UTF-8?q?UI=E5=BE=AE=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/dialogs/SettingDetailsDialogPane.fxml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml index cf41b810..32e96e3c 100644 --- a/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml +++ b/xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/gui/dialogs/SettingDetailsDialogPane.fxml @@ -24,7 +24,7 @@