pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/security/py-trezor
Module Name: pkgsrc
Committed By: js
Date: Sun Mar 1 00:58:18 UTC 2026
Modified Files:
pkgsrc/security/py-trezor: Makefile PLIST distinfo
Removed Files:
pkgsrc/security/py-trezor/patches: patch-requirements.txt
Log Message:
Update security/py-trezor to 0.20.0
## [0.20.0] (2026-02-10)
[0.20.0]: https://github.com/trezor/trezor-firmware/compare/python/v0.20.0-dev0...python/v0.20.0
Version 0.20.0 introduces a set of **major breaking API changes**. All user code must be upgraded.
As announced, the API has changed significantly since the pre-release version 0.20.0-dev.
### Incompatible changes
- Refactor trezorlib session-based API. [#6273]
### Added
- Use keyring package for storing THP keys and credentials. [#6273]
### Removed
- Deprecate uploading language blob during firmware update. [#6103]
- debuglink: Remove vestigial memory_write/read/erase methods. [#6273]
- Deprecated `@expect` decorator was removed. [#6273]
- Deprecated `str` return values in functions whose result is a success have been removed. [#6273]
### Fixed
- Avoid dropping WebUSB chunks in case of a timeout. [#6112]
- Support resuming THP sessions. [#6273]
- trezorctl: BLE behavior on macOS was improved. [#6449]
- trezorctl: fix crash when device authentication allowlist is unavailable. [#6449]
## [0.20.0-dev0] (2025-10-21)
[0.20.0-dev0]: https://github.com/trezor/trezor-firmware/compare/python/v0.13.10...python/v0.20.0-dev0
Version 0.20.0 introduces a set of **major breaking API changes**. All user code must be upgraded.
This version is a pre-release. The new API is unstable and may change until 0.20.0 is released.
### Incompatible changes
- All Trezor functions now run on top of a `Session` instead of `TrezorClient`.
- Reworked API of `TrezorClient`.
### Added
- Support for T3W1.
- Support for Trezor-Host Protocol. [#4976]
- Cardano: Add support for signing arbitrary messages. [#3509]
- Added support for Bluetooth Low Energy transport. [#4948]
- Added new translation blob format to support larger fonts. [#4975]
- Generation of SLIP-21 node for a new way of storing labels (using Evolu). [#5220]
- Add support for displaying the message hash when signing Ethereum EIP-712 typed data. [#5344]
- Check Tropic fields to AuthenticityProof. [#5760]
- Allow exporting device serial number. [#5928]
- `debuglink`: Add new optional enum DebugTouchEventType to DebugLinkDecision message. [#5328]
- `debuglink`: Add screen buttons and button actions. [#4740]
- `debuglink`: Add 'navigate_to_menu_item' button action. [#5499]
### Changed
- Changed trezorlib to session-based. Changes also affect trezorctl, python tools, and tests. [#4976]
- Changed build system to uv.
- Loadable definitions from data.trezor.io query the new path structure.
### Deprecated
- `trezorlib.__version__` is deprecated, use `importlib.metadata.version("trezor")`.
### Removed
- Remove BNB Beacon Chain support. [#4227]
- Dropped support for Python 3.8.
- `ethereum.network_from_address_n` was removed.
### Fixed
- Fixed device restart handling during firmware update. [#5000]
- Fix broken interactive test mode. [#5455]
## [0.13.10] (2025-02-12)
[0.13.10]: https://github.com/trezor/trezor-firmware/compare/python/v0.13.9...python/v0.13.10
### Added
- Added support for T3B1. [#3728]
- Added support for Trezor models not known by the current version of the library. [#3993]
- Added ability to set Optiga's security event counter to maximum: `trezorctl debug optiga-set-sec-max`. [#4000]
- Enum for valid device rotations. [#4041]
- Added pretty-printing of protobuf messages in IPython (`_repr_pretty_`). [#4076]
- Added support for benchmarks. [#4101]
- Added support for entropy check workflow in `device.reset()`. [#4155]
- Added shortcut for loading a debug device with the "academic" SLIP39 seed. [#4282]
- Added support for lexicographic sorting of pubkeys in multisig. [#4351]
- Added an `expect` argument to `TrezorClient.call()`, to enforce the returned message type. [#4464]
- Introduced `device.setup()` as a cleaner upgrade to `device.reset()`. [#4464]
### Changed
- Most USB level errors are now converted to `TransportException`. [#4089]
### Deprecated
- `@expect` decorator is deprecated -- use `TrezorClient.call(expect=...)` instead. [#4464]
- String return values are deprecated in functions where the semantic result is a success (specifically those that were returning the message from Trezor's `Success` response). Type annotations are
updated to `str | None`, and in a future release those functions will be returning `None` on success, or raise an exception on a failure. [#4464]
- `device.reset()` is deprecated, migrate to `device.setup()`. [#4464]
- Return value of `device.recover()` is deprecated. In the future, this function will return `None`. [#4464]
### Removed
- CoSi functionality. [#3442]
- Removed display_random feature. [#4119]
### Fixed
- It is now possible to interrupt USB communication (via Ctrl+C, or a signal, or any other way). [#4089]
- Use `frozenset` for `models.TREZORS` to prevent accidental modification.
### Incompatible changes
- Return values in `solana` module were changed from the wrapping protobuf messages to the raw inner values (`str` for address, `bytes` for pubkey / signature). [#4464]
- `trezorctl device` commands whose default result is a success will not print anything to stdout anymore, in line with Unix philosophy. [#4464]
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 pkgsrc/security/py-trezor/Makefile
cvs rdiff -u -r1.2 -r1.3 pkgsrc/security/py-trezor/PLIST \
pkgsrc/security/py-trezor/distinfo
cvs rdiff -u -r1.1 -r0 \
pkgsrc/security/py-trezor/patches/patch-requirements.txt
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/security/py-trezor/Makefile
diff -u pkgsrc/security/py-trezor/Makefile:1.6 pkgsrc/security/py-trezor/Makefile:1.7
--- pkgsrc/security/py-trezor/Makefile:1.6 Mon Jul 28 23:03:50 2025
+++ pkgsrc/security/py-trezor/Makefile Sun Mar 1 00:58:18 2026
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.6 2025/07/28 23:03:50 js Exp $
+# $NetBSD: Makefile,v 1.7 2026/03/01 00:58:18 js Exp $
-DISTNAME= trezor-0.13.9
+DISTNAME= trezor-0.20.0
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
-PKGREVISION= 2
CATEGORIES= security python
MASTER_SITES= ${MASTER_SITE_PYPI:=t/trezor/}
@@ -15,14 +14,24 @@ TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools
DEPENDS+= ${PYPKGPREFIX}-ecdsa>=0.9:../../security/py-ecdsa
DEPENDS+= ${PYPKGPREFIX}-mnemonic>=0.20:../../devel/py-mnemonic
DEPENDS+= ${PYPKGPREFIX}-requests>=2.4.0:../../devel/py-requests
-DEPENDS+= ${PYPKGPREFIX}-click>=7:../../devel/py-click
+DEPENDS+= ${PYPKGPREFIX}-click>=8:../../devel/py-click
DEPENDS+= ${PYPKGPREFIX}-libusb1>=1.6.4:../../devel/py-libusb1
DEPENDS+= ${PYPKGPREFIX}-construct>=2.9:../../devel/py-construct
DEPENDS+= ${PYPKGPREFIX}-typing-extensions>=4.7.1:../../devel/py-typing-extensions
DEPENDS+= ${PYPKGPREFIX}-construct-classes>=0.1.2:../../devel/py-construct-classes
+DEPENDS+= ${PYPKGPREFIX}-keyring>=25.7.0:../../security/py-keyring
+DEPENDS+= ${PYPKGPREFIX}-noiseprotocol>=0.3:../../security/py-noiseprotocol
+DEPENDS+= ${PYPKGPREFIX}-platformdirs-[0-9]*:../../misc/py-platformdirs
+DEPENDS+= ${PYPKGPREFIX}-shamir_mnemonic>=0.3.0:../../security/py-shamir_mnemonic
+DEPENDS+= ${PYPKGPREFIX}-slip10>=1.1.0:../../security/py-slip10
USE_LANGUAGES= # none
+SUBST_CLASSES= python
+SUBST_STAGE.python= pre-configure
+SUBST_FILES.python= src/trezorlib/cli/trezorctl.py
+SUBST_SED.python= -e 's,/usr/bin/env python3,${PYTHONBIN},'
+
PYTHON_SELF_CONFLICT= yes
.include "../../lang/python/wheel.mk"
Index: pkgsrc/security/py-trezor/PLIST
diff -u pkgsrc/security/py-trezor/PLIST:1.2 pkgsrc/security/py-trezor/PLIST:1.3
--- pkgsrc/security/py-trezor/PLIST:1.2 Mon Apr 14 05:21:21 2025
+++ pkgsrc/security/py-trezor/PLIST Sun Mar 1 00:58:18 2026
@@ -1,12 +1,10 @@
-@comment $NetBSD: PLIST,v 1.2 2025/04/14 05:21:21 adam Exp $
+@comment $NetBSD: PLIST,v 1.3 2026/03/01 00:58:18 js Exp $
bin/trezorctl
${PYSITELIB}/${WHEEL_INFODIR}/METADATA
${PYSITELIB}/${WHEEL_INFODIR}/RECORD
${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
${PYSITELIB}/${WHEEL_INFODIR}/entry_points.txt
-${PYSITELIB}/${WHEEL_INFODIR}/licenses/AUTHORS
${PYSITELIB}/${WHEEL_INFODIR}/licenses/COPYING
-${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
${PYSITELIB}/trezorlib/__init__.py
${PYSITELIB}/trezorlib/__init__.pyc
${PYSITELIB}/trezorlib/__init__.pyo
@@ -16,6 +14,9 @@ ${PYSITELIB}/trezorlib/_ed25519.pyo
${PYSITELIB}/trezorlib/_internal/__init__.py
${PYSITELIB}/trezorlib/_internal/__init__.pyc
${PYSITELIB}/trezorlib/_internal/__init__.pyo
+${PYSITELIB}/trezorlib/_internal/emu_ble.py
+${PYSITELIB}/trezorlib/_internal/emu_ble.pyc
+${PYSITELIB}/trezorlib/_internal/emu_ble.pyo
${PYSITELIB}/trezorlib/_internal/emulator.py
${PYSITELIB}/trezorlib/_internal/emulator.pyc
${PYSITELIB}/trezorlib/_internal/emulator.pyo
@@ -31,9 +32,12 @@ ${PYSITELIB}/trezorlib/_rlp.pyo
${PYSITELIB}/trezorlib/authentication.py
${PYSITELIB}/trezorlib/authentication.pyc
${PYSITELIB}/trezorlib/authentication.pyo
-${PYSITELIB}/trezorlib/binance.py
-${PYSITELIB}/trezorlib/binance.pyc
-${PYSITELIB}/trezorlib/binance.pyo
+${PYSITELIB}/trezorlib/benchmark.py
+${PYSITELIB}/trezorlib/benchmark.pyc
+${PYSITELIB}/trezorlib/benchmark.pyo
+${PYSITELIB}/trezorlib/ble.py
+${PYSITELIB}/trezorlib/ble.pyc
+${PYSITELIB}/trezorlib/ble.pyo
${PYSITELIB}/trezorlib/btc.py
${PYSITELIB}/trezorlib/btc.pyc
${PYSITELIB}/trezorlib/btc.pyo
@@ -43,18 +47,21 @@ ${PYSITELIB}/trezorlib/cardano.pyo
${PYSITELIB}/trezorlib/cli/__init__.py
${PYSITELIB}/trezorlib/cli/__init__.pyc
${PYSITELIB}/trezorlib/cli/__init__.pyo
-${PYSITELIB}/trezorlib/cli/binance.py
-${PYSITELIB}/trezorlib/cli/binance.pyc
-${PYSITELIB}/trezorlib/cli/binance.pyo
+${PYSITELIB}/trezorlib/cli/benchmark.py
+${PYSITELIB}/trezorlib/cli/benchmark.pyc
+${PYSITELIB}/trezorlib/cli/benchmark.pyo
+${PYSITELIB}/trezorlib/cli/ble.py
+${PYSITELIB}/trezorlib/cli/ble.pyc
+${PYSITELIB}/trezorlib/cli/ble.pyo
${PYSITELIB}/trezorlib/cli/btc.py
${PYSITELIB}/trezorlib/cli/btc.pyc
${PYSITELIB}/trezorlib/cli/btc.pyo
${PYSITELIB}/trezorlib/cli/cardano.py
${PYSITELIB}/trezorlib/cli/cardano.pyc
${PYSITELIB}/trezorlib/cli/cardano.pyo
-${PYSITELIB}/trezorlib/cli/cosi.py
-${PYSITELIB}/trezorlib/cli/cosi.pyc
-${PYSITELIB}/trezorlib/cli/cosi.pyo
+${PYSITELIB}/trezorlib/cli/credentials.py
+${PYSITELIB}/trezorlib/cli/credentials.pyc
+${PYSITELIB}/trezorlib/cli/credentials.pyo
${PYSITELIB}/trezorlib/cli/crypto.py
${PYSITELIB}/trezorlib/cli/crypto.pyc
${PYSITELIB}/trezorlib/cli/crypto.pyo
@@ -70,6 +77,9 @@ ${PYSITELIB}/trezorlib/cli/eos.pyo
${PYSITELIB}/trezorlib/cli/ethereum.py
${PYSITELIB}/trezorlib/cli/ethereum.pyc
${PYSITELIB}/trezorlib/cli/ethereum.pyo
+${PYSITELIB}/trezorlib/cli/evolu.py
+${PYSITELIB}/trezorlib/cli/evolu.pyc
+${PYSITELIB}/trezorlib/cli/evolu.pyo
${PYSITELIB}/trezorlib/cli/fido.py
${PYSITELIB}/trezorlib/cli/fido.pyc
${PYSITELIB}/trezorlib/cli/fido.pyo
@@ -82,6 +92,9 @@ ${PYSITELIB}/trezorlib/cli/monero.pyo
${PYSITELIB}/trezorlib/cli/nem.py
${PYSITELIB}/trezorlib/cli/nem.pyc
${PYSITELIB}/trezorlib/cli/nem.pyo
+${PYSITELIB}/trezorlib/cli/nostr.py
+${PYSITELIB}/trezorlib/cli/nostr.pyc
+${PYSITELIB}/trezorlib/cli/nostr.pyo
${PYSITELIB}/trezorlib/cli/ripple.py
${PYSITELIB}/trezorlib/cli/ripple.pyc
${PYSITELIB}/trezorlib/cli/ripple.pyo
@@ -94,12 +107,18 @@ ${PYSITELIB}/trezorlib/cli/solana.pyo
${PYSITELIB}/trezorlib/cli/stellar.py
${PYSITELIB}/trezorlib/cli/stellar.pyc
${PYSITELIB}/trezorlib/cli/stellar.pyo
+${PYSITELIB}/trezorlib/cli/telemetry.py
+${PYSITELIB}/trezorlib/cli/telemetry.pyc
+${PYSITELIB}/trezorlib/cli/telemetry.pyo
${PYSITELIB}/trezorlib/cli/tezos.py
${PYSITELIB}/trezorlib/cli/tezos.pyc
${PYSITELIB}/trezorlib/cli/tezos.pyo
${PYSITELIB}/trezorlib/cli/trezorctl.py
${PYSITELIB}/trezorlib/cli/trezorctl.pyc
${PYSITELIB}/trezorlib/cli/trezorctl.pyo
+${PYSITELIB}/trezorlib/cli/tron.py
+${PYSITELIB}/trezorlib/cli/tron.pyc
+${PYSITELIB}/trezorlib/cli/tron.pyo
${PYSITELIB}/trezorlib/client.py
${PYSITELIB}/trezorlib/client.pyc
${PYSITELIB}/trezorlib/client.pyo
@@ -121,6 +140,9 @@ ${PYSITELIB}/trezorlib/eos.pyo
${PYSITELIB}/trezorlib/ethereum.py
${PYSITELIB}/trezorlib/ethereum.pyc
${PYSITELIB}/trezorlib/ethereum.pyo
+${PYSITELIB}/trezorlib/evolu.py
+${PYSITELIB}/trezorlib/evolu.pyc
+${PYSITELIB}/trezorlib/evolu.pyo
${PYSITELIB}/trezorlib/exceptions.py
${PYSITELIB}/trezorlib/exceptions.pyc
${PYSITELIB}/trezorlib/exceptions.pyo
@@ -142,6 +164,9 @@ ${PYSITELIB}/trezorlib/firmware/legacy.p
${PYSITELIB}/trezorlib/firmware/models.py
${PYSITELIB}/trezorlib/firmware/models.pyc
${PYSITELIB}/trezorlib/firmware/models.pyo
+${PYSITELIB}/trezorlib/firmware/secmon.py
+${PYSITELIB}/trezorlib/firmware/secmon.pyc
+${PYSITELIB}/trezorlib/firmware/secmon.pyo
${PYSITELIB}/trezorlib/firmware/util.py
${PYSITELIB}/trezorlib/firmware/util.pyc
${PYSITELIB}/trezorlib/firmware/util.pyo
@@ -172,9 +197,15 @@ ${PYSITELIB}/trezorlib/monero.pyo
${PYSITELIB}/trezorlib/nem.py
${PYSITELIB}/trezorlib/nem.pyc
${PYSITELIB}/trezorlib/nem.pyo
+${PYSITELIB}/trezorlib/nostr.py
+${PYSITELIB}/trezorlib/nostr.pyc
+${PYSITELIB}/trezorlib/nostr.pyo
${PYSITELIB}/trezorlib/protobuf.py
${PYSITELIB}/trezorlib/protobuf.pyc
${PYSITELIB}/trezorlib/protobuf.pyo
+${PYSITELIB}/trezorlib/protocol_v1.py
+${PYSITELIB}/trezorlib/protocol_v1.pyc
+${PYSITELIB}/trezorlib/protocol_v1.pyo
${PYSITELIB}/trezorlib/py.typed
${PYSITELIB}/trezorlib/qt/__init__.py
${PYSITELIB}/trezorlib/qt/__init__.pyc
@@ -194,6 +225,39 @@ ${PYSITELIB}/trezorlib/stellar.pyo
${PYSITELIB}/trezorlib/tezos.py
${PYSITELIB}/trezorlib/tezos.pyc
${PYSITELIB}/trezorlib/tezos.pyo
+${PYSITELIB}/trezorlib/thp/__init__.py
+${PYSITELIB}/trezorlib/thp/__init__.pyc
+${PYSITELIB}/trezorlib/thp/__init__.pyo
+${PYSITELIB}/trezorlib/thp/channel.py
+${PYSITELIB}/trezorlib/thp/channel.pyc
+${PYSITELIB}/trezorlib/thp/channel.pyo
+${PYSITELIB}/trezorlib/thp/client.py
+${PYSITELIB}/trezorlib/thp/client.pyc
+${PYSITELIB}/trezorlib/thp/client.pyo
+${PYSITELIB}/trezorlib/thp/control_byte.py
+${PYSITELIB}/trezorlib/thp/control_byte.pyc
+${PYSITELIB}/trezorlib/thp/control_byte.pyo
+${PYSITELIB}/trezorlib/thp/cpace.py
+${PYSITELIB}/trezorlib/thp/cpace.pyc
+${PYSITELIB}/trezorlib/thp/cpace.pyo
+${PYSITELIB}/trezorlib/thp/credentials.py
+${PYSITELIB}/trezorlib/thp/credentials.pyc
+${PYSITELIB}/trezorlib/thp/credentials.pyo
+${PYSITELIB}/trezorlib/thp/curve25519.py
+${PYSITELIB}/trezorlib/thp/curve25519.pyc
+${PYSITELIB}/trezorlib/thp/curve25519.pyo
+${PYSITELIB}/trezorlib/thp/exceptions.py
+${PYSITELIB}/trezorlib/thp/exceptions.pyc
+${PYSITELIB}/trezorlib/thp/exceptions.pyo
+${PYSITELIB}/trezorlib/thp/message.py
+${PYSITELIB}/trezorlib/thp/message.pyc
+${PYSITELIB}/trezorlib/thp/message.pyo
+${PYSITELIB}/trezorlib/thp/pairing.py
+${PYSITELIB}/trezorlib/thp/pairing.pyc
+${PYSITELIB}/trezorlib/thp/pairing.pyo
+${PYSITELIB}/trezorlib/thp/thp_io.py
+${PYSITELIB}/trezorlib/thp/thp_io.pyc
+${PYSITELIB}/trezorlib/thp/thp_io.pyo
${PYSITELIB}/trezorlib/toif.py
${PYSITELIB}/trezorlib/toif.pyc
${PYSITELIB}/trezorlib/toif.pyo
@@ -203,21 +267,24 @@ ${PYSITELIB}/trezorlib/tools.pyo
${PYSITELIB}/trezorlib/transport/__init__.py
${PYSITELIB}/trezorlib/transport/__init__.pyc
${PYSITELIB}/trezorlib/transport/__init__.pyo
+${PYSITELIB}/trezorlib/transport/ble.py
+${PYSITELIB}/trezorlib/transport/ble.pyc
+${PYSITELIB}/trezorlib/transport/ble.pyo
${PYSITELIB}/trezorlib/transport/bridge.py
${PYSITELIB}/trezorlib/transport/bridge.pyc
${PYSITELIB}/trezorlib/transport/bridge.pyo
${PYSITELIB}/trezorlib/transport/hid.py
${PYSITELIB}/trezorlib/transport/hid.pyc
${PYSITELIB}/trezorlib/transport/hid.pyo
-${PYSITELIB}/trezorlib/transport/protocol.py
-${PYSITELIB}/trezorlib/transport/protocol.pyc
-${PYSITELIB}/trezorlib/transport/protocol.pyo
${PYSITELIB}/trezorlib/transport/udp.py
${PYSITELIB}/trezorlib/transport/udp.pyc
${PYSITELIB}/trezorlib/transport/udp.pyo
${PYSITELIB}/trezorlib/transport/webusb.py
${PYSITELIB}/trezorlib/transport/webusb.pyc
${PYSITELIB}/trezorlib/transport/webusb.pyo
+${PYSITELIB}/trezorlib/tron.py
+${PYSITELIB}/trezorlib/tron.pyc
+${PYSITELIB}/trezorlib/tron.pyo
${PYSITELIB}/trezorlib/ui.py
${PYSITELIB}/trezorlib/ui.pyc
${PYSITELIB}/trezorlib/ui.pyo
Index: pkgsrc/security/py-trezor/distinfo
diff -u pkgsrc/security/py-trezor/distinfo:1.2 pkgsrc/security/py-trezor/distinfo:1.3
--- pkgsrc/security/py-trezor/distinfo:1.2 Mon Jul 28 23:03:50 2025
+++ pkgsrc/security/py-trezor/distinfo Sun Mar 1 00:58:18 2026
@@ -1,6 +1,5 @@
-$NetBSD: distinfo,v 1.2 2025/07/28 23:03:50 js Exp $
+$NetBSD: distinfo,v 1.3 2026/03/01 00:58:18 js Exp $
-BLAKE2s (trezor-0.13.9.tar.gz) = 1a64333c0e5fce29d8d5287e28bbdd831c162704ece80705d5a9dfe44288f1be
-SHA512 (trezor-0.13.9.tar.gz) = 1427aefad251c6d1b6230daf69a48236419a0e10647c43cb46e128e343d56767177b06068e494cc940198e67b8dfbda1718c476523355409dc1f001f143a2f12
-Size (trezor-0.13.9.tar.gz) = 251183 bytes
-SHA1 (patch-requirements.txt) = b6e5a620c425fb8ffe7b81d27c98fbfd2ac55b7b
+BLAKE2s (trezor-0.20.0.tar.gz) = eb18efdc9f2bc6e6cb4a1913df3c1195c3716148afec5ec22ffe1a14100853bc
+SHA512 (trezor-0.20.0.tar.gz) = ae38934847aa5ce5f64b0cd26b597a82b10290c9d2ff31d9102d6c97d97a26eb10429b671734a7864876e0e2dc5f6b68c8fc2275877986f61f0caca32fc986f1
+Size (trezor-0.20.0.tar.gz) = 362526 bytes
Home |
Main Index |
Thread Index |
Old Index