summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-wireless/rtl8187')
-rw-r--r--net-wireless/rtl8187/ChangeLog6
-rw-r--r--net-wireless/rtl8187/files/digest-rtl8187-1.106
-rw-r--r--net-wireless/rtl8187/files/kernel-2.6.19.patch231
-rw-r--r--net-wireless/rtl8187/rtl8187-1.10.ebuild78
4 files changed, 282 insertions, 39 deletions
diff --git a/net-wireless/rtl8187/ChangeLog b/net-wireless/rtl8187/ChangeLog
index 17e61633b341..63014d0e9e8f 100644
--- a/net-wireless/rtl8187/ChangeLog
+++ b/net-wireless/rtl8187/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for net-wireless/rtl8187
# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/rtl8187/ChangeLog,v 1.4 2007/02/22 03:11:34 peper Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/rtl8187/ChangeLog,v 1.5 2007/05/09 20:00:14 genstef Exp $
+
+ 09 May 2007; Stefan Schweizer <genstef@gentoo.org>
+ +files/kernel-2.6.19.patch, rtl8187-1.10.ebuild:
+ 2.6.19 support for bug 161895 thanks to Christian Holler and Paul Bredbury
22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
Transition to Manifest2.
diff --git a/net-wireless/rtl8187/files/digest-rtl8187-1.10 b/net-wireless/rtl8187/files/digest-rtl8187-1.10
index 4ddaa6d2a0bd..dd5325960c79 100644
--- a/net-wireless/rtl8187/files/digest-rtl8187-1.10
+++ b/net-wireless/rtl8187/files/digest-rtl8187-1.10
@@ -1,3 +1,3 @@
-MD5 606b972a14cd4f5098d4c8bfe6384f8f rtl8187-1.10.zip 447810
-RMD160 27292c2ddbdec0db69f4ed151108ad8709252e57 rtl8187-1.10.zip 447810
-SHA256 76df6eef84864585e2fe3f724eefaf0be7d1b406aacb46f9be23ba2153b08205 rtl8187-1.10.zip 447810
+MD5 c5b1c7e0c094fa943a52e1a78117308b rtl8187_linux_26.1010.zip 794171
+RMD160 6782212f717f0acc4535a24bf2d8447c9b9bb899 rtl8187_linux_26.1010.zip 794171
+SHA256 e3c1b038bda9f21d12b77e147c97b47e500175db742872b9b61e8028b98a642e rtl8187_linux_26.1010.zip 794171
diff --git a/net-wireless/rtl8187/files/kernel-2.6.19.patch b/net-wireless/rtl8187/files/kernel-2.6.19.patch
new file mode 100644
index 000000000000..a81c6223aa4f
--- /dev/null
+++ b/net-wireless/rtl8187/files/kernel-2.6.19.patch
@@ -0,0 +1,231 @@
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/r8180_wx.c ./beta-8187/r8180_wx.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/r8180_wx.c 2006-06-06 03:58:02.000000000 +0100
++++ ./beta-8187/r8180_wx.c 2007-01-21 18:45:13.000000000 +0000
+@@ -664,7 +664,7 @@
+ };
+
+ #if WIRELESS_EXT >= 17
+-static struct iw_statistics *r8180_get_wireless_stats(struct net_device *dev)
++static struct iw_statistics *r8180_get_stats(struct net_device *dev)
+ {
+ struct r8180_priv *priv = ieee80211_priv(dev);
+
+@@ -680,7 +680,7 @@
+ .num_private = sizeof(r8180_private_handler) / sizeof(iw_handler),
+ .num_private_args = sizeof(r8180_private_args) / sizeof(struct iw_priv_args),
+ #if WIRELESS_EXT >= 17
+- .get_wireless_stats = r8180_get_wireless_stats,
++ .get_wireless_stats = r8180_get_stats,
+ #endif
+ .private_args = (struct iw_priv_args *)r8180_private_args,
+ };
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/r8187_core.c ./beta-8187/r8187_core.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/r8187_core.c 2007-01-21 18:43:35.000000000 +0000
++++ ./beta-8187/r8187_core.c 2007-01-21 18:45:13.000000000 +0000
+@@ -266,7 +266,7 @@
+ }
+
+
+-//irqreturn_t rtl8180_interrupt(int irq, void *netdev, struct pt_regs *regs);
++//irqreturn_t rtl8180_interrupt(int irq, void *netdev);
+ //void set_nic_rxring(struct net_device *dev);
+ //void set_nic_txring(struct net_device *dev);
+ static struct net_device_stats *rtl8180_stats(struct net_device *dev);
+@@ -408,7 +408,7 @@
+ }
+
+
+-static struct iw_statistics *r8180_get_wireless_stats(struct net_device *dev)
++static struct iw_statistics *r8180_get_stats(struct net_device *dev)
+ {
+ struct r8180_priv *priv = ieee80211_priv(dev);
+
+@@ -678,7 +678,7 @@
+ write_nic_dword(dev,TX_CONF,tx | (TX_LOOPBACK_NONE<<TX_LOOPBACK_SHIFT));
+ #endif
+ }
+-void rtl8187_rx_isr(struct urb *rx_urb, struct pt_regs *regs);
++void rtl8187_rx_isr(struct urb *rx_urb);
+
+
+ void rtl8187_rx_urbsubmit(struct net_device *dev, struct urb* rx_urb)
+@@ -1048,7 +1048,7 @@
+ }
+
+
+-void rtl8187_rx_isr(struct urb *rx_urb, struct pt_regs *regs)
++void rtl8187_rx_isr(struct urb *rx_urb)
+ {
+ struct net_device *dev = (struct net_device*)rx_urb->context;
+ struct r8180_priv *priv = ieee80211_priv(dev);
+@@ -1225,7 +1225,7 @@
+
+ void rtl8180_try_wake_queue(struct net_device *dev, int pri);
+
+-void rtl8187_lptx_isr(struct urb *tx_urb, struct pt_regs *regs)
++void rtl8187_lptx_isr(struct urb *tx_urb)
+ {
+ struct net_device *dev = (struct net_device*)tx_urb->context;
+ struct r8180_priv *priv = ieee80211_priv(dev);
+@@ -1324,7 +1324,7 @@
+
+ }
+
+-void rtl8187_nptx_isr(struct urb *tx_urb, struct pt_regs *regs)
++void rtl8187_nptx_isr(struct urb *tx_urb)
+ {
+ struct net_device *dev = (struct net_device*)tx_urb->context;
+ struct r8180_priv *priv = ieee80211_priv(dev);
+@@ -2418,7 +2418,7 @@
+ dev->do_ioctl = rtl8180_ioctl;
+ dev->set_multicast_list = r8180_set_multicast;
+ dev->set_mac_address = r8180_set_mac_adr;
+- dev->get_wireless_stats = r8180_get_wireless_stats;
++ dev->get_stats = r8180_get_stats;
+ dev->type=ARPHRD_ETHER;
+
+ if (dev_alloc_name(dev, ifname) < 0){
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/r8187.h ./beta-8187/r8187.h
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/r8187.h 2007-01-21 18:45:06.000000000 +0000
++++ ./beta-8187/r8187.h 2007-01-21 18:45:13.000000000 +0000
+@@ -26,7 +26,7 @@
+
+ #include <linux/module.h>
+ #include <linux/kernel.h>
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/init.h>
+ #include <linux/ioport.h>
+ #include <linux/sched.h>
+@@ -285,5 +285,6 @@
+ void write_phy_cck(struct net_device *dev, u8 adr, u32 data);
+ void write_phy_ofdm(struct net_device *dev, u8 adr, u32 data);
+ void rtl8185_tx_antenna(struct net_device *dev, u8 ant);
++void rtl8180_set_mode(struct net_device *dev,int mode);
+ void rtl8187_set_rxconf(struct net_device *dev);
+ #endif
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/tags ./beta-8187/tags
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/beta-8187/tags 2006-06-07 03:14:06.000000000 +0100
++++ ./beta-8187/tags 2007-01-21 18:45:13.000000000 +0000
+@@ -1118,8 +1118,8 @@
+ ps_timeout ieee80211.h /^ int ps_timeout;$/;" m struct:ieee80211_device
+ ps_tl ieee80211.h /^ u32 ps_tl;$/;" m struct:ieee80211_device
+ queue_stop ieee80211.h /^ short queue_stop;$/;" m struct:ieee80211_device
+-r8180_get_wireless_stats r8180_wx.c /^static struct iw_statistics *r8180_get_wireless_stats(struct net_device *dev)$/;" f file:
+-r8180_get_wireless_stats r8187_core.c /^static struct iw_statistics *r8180_get_wireless_stats(struct net_device *dev)$/;" f file:
++r8180_get_stats r8180_wx.c /^static struct iw_statistics *r8180_get_stats(struct net_device *dev)$/;" f file:
++r8180_get_stats r8187_core.c /^static struct iw_statistics *r8180_get_stats(struct net_device *dev)$/;" f file:
+ r8180_priv r8187.h /^typedef struct r8180_priv$/;" s
+ r8180_priv r8187.h /^}r8180_priv;$/;" t
+ r8180_private_args r8180_wx.c /^static const struct iw_priv_args r8180_private_args[] = { $/;" v file:
+@@ -1228,11 +1228,11 @@
+ rtl8187_beacon_stop r8187_core.c /^void rtl8187_beacon_stop(struct net_device *dev)$/;" f
+ rtl8187_beacon_tx r8187_core.c /^void rtl8187_beacon_tx(struct net_device *dev)$/;" f
+ rtl8187_link_change r8187_core.c /^void rtl8187_link_change(struct net_device *dev)$/;" f
+-rtl8187_lptx_isr r8187_core.c /^void rtl8187_lptx_isr(struct urb *tx_urb, struct pt_regs *regs)$/;" f
++rtl8187_lptx_isr r8187_core.c /^void rtl8187_lptx_isr(struct urb *tx_urb)$/;" f
+ rtl8187_net_update r8187_core.c /^void rtl8187_net_update(struct net_device *dev)$/;" f
+-rtl8187_nptx_isr r8187_core.c /^void rtl8187_nptx_isr(struct urb *tx_urb, struct pt_regs *regs)$/;" f
++rtl8187_nptx_isr r8187_core.c /^void rtl8187_nptx_isr(struct urb *tx_urb)$/;" f
+ rtl8187_rx_initiate r8187_core.c /^void rtl8187_rx_initiate(struct net_device *dev)$/;" f
+-rtl8187_rx_isr r8187_core.c /^void rtl8187_rx_isr(struct urb *rx_urb, struct pt_regs *regs)$/;" f
++rtl8187_rx_isr r8187_core.c /^void rtl8187_rx_isr(struct urb *rx_urb)$/;" f
+ rtl8187_rx_urbsubmit r8187_core.c /^void rtl8187_rx_urbsubmit(struct net_device *dev, struct urb* rx_urb)$/;" f
+ rtl8187_set_rate r8187_core.c /^void rtl8187_set_rate(struct net_device *dev)$/;" f
+ rtl8187_set_rxconf r8187_core.c /^void rtl8187_set_rxconf(struct net_device *dev)$/;" f
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt.c ./ieee80211/ieee80211_crypt.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt.c 2006-06-06 03:57:56.000000000 +0100
++++ ./ieee80211/ieee80211_crypt.c 2007-01-21 18:45:13.000000000 +0000
+@@ -11,7 +11,7 @@
+ *
+ */
+
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt_ccmp.c ./ieee80211/ieee80211_crypt_ccmp.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt_ccmp.c 2006-06-06 03:58:00.000000000 +0100
++++ ./ieee80211/ieee80211_crypt_ccmp.c 2007-01-21 18:45:13.000000000 +0000
+@@ -9,7 +9,7 @@
+ * more details.
+ */
+
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt_tkip.c ./ieee80211/ieee80211_crypt_tkip.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt_tkip.c 2006-06-06 03:57:54.000000000 +0100
++++ ./ieee80211/ieee80211_crypt_tkip.c 2007-01-21 18:45:13.000000000 +0000
+@@ -9,7 +9,7 @@
+ * more details.
+ */
+
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt_wep.c ./ieee80211/ieee80211_crypt_wep.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_crypt_wep.c 2006-06-06 03:57:54.000000000 +0100
++++ ./ieee80211/ieee80211_crypt_wep.c 2007-01-21 18:45:13.000000000 +0000
+@@ -9,7 +9,7 @@
+ * more details.
+ */
+
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_module.c ./ieee80211/ieee80211_module.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_module.c 2006-06-06 03:58:00.000000000 +0100
++++ ./ieee80211/ieee80211_module.c 2007-01-21 18:45:13.000000000 +0000
+@@ -31,7 +31,7 @@
+ *******************************************************************************/
+
+ #include <linux/compiler.h>
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/errno.h>
+ #include <linux/if_arp.h>
+ #include <linux/in6.h>
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_rx.c ./ieee80211/ieee80211_rx.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_rx.c 2006-06-06 03:58:00.000000000 +0100
++++ ./ieee80211/ieee80211_rx.c 2007-01-21 18:45:13.000000000 +0000
+@@ -22,7 +22,7 @@
+
+
+ #include <linux/compiler.h>
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/errno.h>
+ #include <linux/if_arp.h>
+ #include <linux/in6.h>
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_softmac_wx.c ./ieee80211/ieee80211_softmac_wx.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_softmac_wx.c 2006-06-06 03:57:54.000000000 +0100
++++ ./ieee80211/ieee80211_softmac_wx.c 2007-01-21 18:45:13.000000000 +0000
+@@ -356,7 +356,7 @@
+ spin_lock_irqsave(&ieee->lock, flags);
+
+ if (wrqu->essid.flags && wrqu->essid.length) {
+- len = ((wrqu->essid.length-1) < IW_ESSID_MAX_SIZE) ? (wrqu->essid.length-1) : IW_ESSID_MAX_SIZE;
++ len = ((wrqu->essid.length) < IW_ESSID_MAX_SIZE) ? (wrqu->essid.length) : IW_ESSID_MAX_SIZE;
+
+ strncpy(ieee->current_network.ssid, extra, len);
+ ieee->current_network.ssid_len = len;
+diff -Naur ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_tx.c ./ieee80211/ieee80211_tx.c
+--- ../../../rtl8187-1.10-orig/work/rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_tx.c 2006-06-06 03:57:54.000000000 +0100
++++ ./ieee80211/ieee80211_tx.c 2007-01-21 18:45:13.000000000 +0000
+@@ -32,7 +32,7 @@
+ ******************************************************************************/
+
+ #include <linux/compiler.h>
+-#include <linux/config.h>
++#include <linux/autoconf.h>
+ #include <linux/errno.h>
+ #include <linux/if_arp.h>
+ #include <linux/in6.h>
diff --git a/net-wireless/rtl8187/rtl8187-1.10.ebuild b/net-wireless/rtl8187/rtl8187-1.10.ebuild
index 8d7740003c92..f1bcb835d173 100644
--- a/net-wireless/rtl8187/rtl8187-1.10.ebuild
+++ b/net-wireless/rtl8187/rtl8187-1.10.ebuild
@@ -1,29 +1,28 @@
-# Copyright 1999-2006 Gentoo Foundation
+# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/rtl8187/rtl8187-1.10.ebuild,v 1.3 2006/08/08 08:41:31 genstef Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/rtl8187/rtl8187-1.10.ebuild,v 1.4 2007/05/09 20:00:14 genstef Exp $
-inherit linux-mod eutils
+inherit eutils linux-mod
-DESCRIPTION="Driver for the rtl8187 wireless chipset"
+FILE="rtl8187_linux_26.1010.zip"
+
+DESCRIPTION="Driver for the RTL8187 wireless chipset"
HOMEPAGE="http://www.realtek.com.tw"
-SRC_URI="http://dev.gentoo.org/~genstef/files/${P}.zip"
-#ftp://152.104.238.194/cn/wlan/rtl8187l/linux26x-8187(110).zip
-#ftp://61.56.86.122/cn/wlan/rtl8187l/linux26x-8187(110).zip
-#ftp://210.51.181.211/cn/wlan/rtl8187l/linux26x-8187(110).zip
-#ftp://202.65.194.18/cn/wlan/rtl8187l/linux26x-8187(110).zip
+SRC_URI="ftp://61.56.69.18/cn/wlan/${FILE}
+ ftp://209.216.61.149/cn/wlan/${FILE}"
-RESTRICT="mirror"
LICENSE="GPL-2"
+SLOT="0"
KEYWORDS="x86"
IUSE=""
+
DEPEND="app-arch/unzip"
-S=${WORKDIR}/${PN}_linuxdrv_V${PV/0}
+
+S=${WORKDIR}/rtl8187_linux_26.1010.0622.2006
MODULE_NAMES="ieee80211_crypt-rtl(net:${S}/ieee80211) ieee80211_crypt_wep-rtl(net:${S}/ieee80211)
ieee80211_crypt_tkip-rtl(net:${S}/ieee80211) ieee80211_crypt_ccmp-rtl(net:${S}/ieee80211)
ieee80211-rtl(net:${S}/ieee80211) r8187(net:${S}/beta-8187)"
-#CONFIG_CHECK="NET_RADIO CRYPTO CRYPTO_ARC4 CRC32 !IEEE80211"
-ERROR_IEEE80211="${P} requires the in-kernel version of the IEEE802.11 subsystem to be disabled (CONFIG_IEEE80211)"
BUILD_TARGETS=" "
MODULESD_R8187_ALIASES=("wlan0 r8187")
@@ -34,40 +33,49 @@ pkg_setup() {
fi
linux-mod_pkg_setup
+
+ # Needs NET_RADIO in kernel, for wireless_send_event
+ local CONFIG_CHECK="NET_RADIO CRYPTO CRYPTO_ARC4 CRC32 !IEEE80211"
+ local ERROR_IEEE80211="${P} requires the in-kernel version of the IEEE802.11 subsystem to be disabled (CONFIG_IEEE80211)"
+ check_extra_config
+
BUILD_PARAMS="KSRC=${KV_DIR}"
}
src_unpack() {
- unpack ${A} || die "Could not extract ZIP file."
- cd ${S}
- tar xzf stack.tar.gz || die "Could not extract IEEE80211 stack."
- tar xzf drv.tar.gz || die "Could not extract driver."
+ unpack ${A}
+ cd "${S}"
- sed -i -e 's:MODVERDIR=$(PWD) ::' {beta-8187,ieee80211}/Makefile
- epatch ${FILESDIR}/module-param-and-isoc.patch
+ unpack ./stack.tar.gz
+ unpack ./drv.tar.gz
+
+ edos2unix beta-8187/r8187_core.c || die
+ edos2unix beta-8187/r8187.h || die
+
+ cp -f ieee80211/readme ieee80211.txt
+ rm -f beta-8187/*~
+
+ epatch "${FILESDIR}/kernel-2.6.19.patch"
+
+ einfo "Ignore the 'ieee80211* undefined' warnings."
}
src_install() {
linux-mod_src_install
- dodoc ${WORKDIR}/r8187_release_note.txt ReadMe.txt wpa1.conf \
- beta-8187/AUTHORS beta-8187/CHANGES beta-8187/README
+ dodoc *.txt wlan0* beta-8187/{authors,changes,readme}
}
pkg_postinst() {
linux-mod_pkg_postinst
- einfo "You may want to add the following modules to /etc/modules.autoload.d/kernel-2.6"
- echo
- einfo "For WEP and WPA encryption"
- echo ieee80211_crypt-rtl
- einfo "WEP encryption"
- echo ieee80211_crypt_wep-rtl
- einfo "WPA TKIP encryption"
- echo ieee80211_crypt_tkip-rtl
- einfo "WPA CCMP encryption"
- echo ieee80211_crypt_ccmp-rtl
- einfo "For the r8187 module"
- echo ieee80211-rtl
- einfo "The module itself"
- echo r8187
+
+ elog "You may want to add the following modules to"
+ elog "/etc/modules.autoload.d/kernel-2.6"
+ elog
+ elog "The module itself: r8187"
+ elog "WEP and WPA encryption: ieee80211_crypt-rtl"
+ elog "WEP encryption: ieee80211_crypt_wep-rtl"
+ elog "WPA TKIP encryption: ieee80211_crypt_tkip-rtl"
+ elog "WPA CCMP encryption: ieee80211_crypt_ccmp-rtl"
+ elog "For the r8187 module: ieee80211-rtl"
}