Commit Graph

405 Commits

Author SHA1 Message Date
Piotr Dymacz
eb9ba2b91e ar71xx: add support for YunCore CPE870
YunCore CPE870 is an outdoor CPE/AP based on Atheros AR9341.
Short specification:

- 535/400/200 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, passive PoE support
- 64/128 MB of RAM (DDR2)
- 8 MB of FLASH
- 2T2R 2.4 GHz with external PA (SKY65174-21), up to 30 dBm
- internal 14 dBi panel antenna
- 8x LED, 1x button
- UART (JP1) header on PCB

Flash instruction (do it under U-Boot, using UART):

1. tftp 0x80060000 lede-ar71xx-generic-cpe870-squashfs-sysupgrade.bin
2. erase 0x9f020000 +$filesize
3. cp.b $fileaddr 0x9f020000 $filesize
4. setenv bootcmd "bootm 0x9f020000"
5. saveenv && reset

Vendor firmware access (login/password): Admin/5up

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-11-21 10:05:40 +01:00
Piotr Dymacz
01dda0659e ar71xx: add support for YunCore AP90Q
YunCore AP90Q is an outdoor CPE/AP based on Qualcomm/Atheros QCA9531 v2.
Short specification:

- 650/600/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, passive PoE support
- 64/128 MB of RAM (DDR2)
- 16 MB of FLASH
- 2T2R 2.4 GHz with external PA, up to 29 dBm
- 2x internal 5 dBi omni antennas
- 4x LED, 1x button
- UART (JP1) header on PCB

Flash instruction under U-Boot, using UART:

1. tftp 0x80060000 lede-ar71xx-generic-ap90q-squashfs-sysupgrade
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9f050000"
5. saveenv && reset

Flash instruction under vendor fimrware, using telnet/SSH:

1. Connect PC with 192.168.1.x address to WAN port
2. Power up device, enter failsafe mode with button (no LED indicator!)
3. Change root password and reboot (mount_root, passwd ..., reboot -f)
4. Upload lede-ar71xx-generic-ap90q-squashfs-sysupgrade.bin to /tmp using SCP
5. Connect PC with 192.168.188.x address to LAN port, SSH to 192.168.188.253
6. Invoke:
- cd /tmp
- fw_setenv bootcmd "bootm 0x9f050000"
- mtd erase firmware
- mtd -r write lede-ar71xx-generic-ap90q-squashfs-sysupgrade.bin firmware

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-11-21 10:05:40 +01:00
Piotr Dymacz
16afa08d19 ar71xx: add support for COMFAST CF-E380AC v1 and v2
COMFAST CF-E380AC v1/v2 is a ceiling mount AP with PoE
support, based on Qualcomm/Atheros QCA9558+QCA9880+AR8035.

There are two versions of this model, with different RAM
and U-Boot mtd partition sizes:
- v1: 128 MB of RAM, 128 KB U-Boot image size
- v2: 256 MB of RAM, 256 KB U-Boot image size

Version number is available only inside vendor GUI,
hardware and markings are the same.

Short specification:

- 720/600/200 MHz (CPU/DDR/AHB)
- 1x 10/100/1000 Mbps Ethernet, with PoE support
- 128 or 256 MB of RAM (DDR2)
- 16 MB of FLASH
- 3T3R 2.4 GHz, with external PA (SE2576L), up to 28 dBm
- 3T3R 5 GHz, with external PA (SE5003L1), up to 30 dBm
- 6x internal antennas
- 1x RGB LED, 1x button
- UART (T11), LEDs/GPIO (J7) and USB (T12) headers on PCB
- external watchdog (Pericon Technology PT7A7514)

Flash instruction:

Original firmware is based on OpenWrt.
Use sysupgrade image directly in vendor GUI.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-11-21 10:05:40 +01:00
Piotr Dymacz
31952dbd1c ar71xx: add support for COMFAST CF-E320N v2 and CF-E520N/CF-E530N
As we already have support for CF-E316N v2 and many devices from
this vendor look similar, the support was included in existing
mach-*.c file, with few cleanups and fixes.

All 3 devices are based on Qualcomm/Atheros QCA9531 v2.

COMFAST CF-E320N v2 is a ceiling mount AP with PoE support.
Short specification:

- 650/393/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, both with PoE support
- 64 MB of RAM (DDR2)
- 16 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- 2x internal antennas
- 1x RGB LED, 1x button
- UART (J1), GPIO (J9) and USB (J2) headers on PCB
- external watchdog (Pericon Technology PT7A7514)

COMFAST CF-E520N/CF-E530N are in-wall APs with USB and PoE support.
They seem to have different only the front panel.
Short specification:

- 650/393/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, WAN with PoE support
- 1x USB 2.0 (in CF-E520N covered by panel, available on PCB)
- 32 MB of RAM (DDR2)
- 8 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- 2x internal antennas
- 1x LED, 1x button
- UART (J1) headers on PCB

Flash instruction:

Original firmware is based on OpenWrt.
Use sysupgrade image directly in vendor GUI.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-11-21 10:05:40 +01:00
FUKAUMI Naoki
0165203304 ar71xx: add support for Buffalo BHR-4GRV2
Signed-off-by: FUKAUMI Naoki <naobsd@gmail.com>
2016-11-16 10:54:33 +01:00
Henryk Heisig
1b2b3cb8be ar71xx: wpa8630: change board name to tl-wpa8630
Signed-off-by: Henryk Heisig <hyniu@o2.pl>
2016-11-08 11:17:10 +01:00
Henryk Heisig
8cc0c34ef5 ar71xx: Add support to Powerline ac TP-Link WPA8630
Signed-off-by: Henryk Heisig <hyniu@o2.pl>
2016-10-31 17:13:37 +01:00
Stijn Tintel
e3875350f3 ar71xx: add support for D-Link DAP-2695 rev. A1
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: John Crispin <john@phrozen.org>
2016-10-27 01:50:42 +03:00
Julius Schulz-Zander
a71a8955f2 ar71xx: add support for TP-Link WR802N v1
This patch adds support solely for version 1 of the TP-Link WR802N.
It is based on Rick Pannen's patch posted on the OpenWrt devel list.

Signed-off-by: Julius Schulz-Zander <julius@inet.tu-berlin.de>
2016-10-26 12:37:45 +02:00
Jing Lin
7ba9a3a504 ar71xx: Add support to DomyWifi DW33D
Signed-off-by: Jing Lin <mumuqz@163.com>
2016-10-25 17:51:08 +02:00
Henryk Heisig
f5aa459043 ar71xx: Add support to TP-Link EAP120
Signed-off-by: Henryk Heisig <hyniu@o2.pl>
2016-10-18 09:18:55 +02:00
Christian Lamparter
098f7156cc ar71xx: add support for the Airtight C-60
This patch adds support for the Airtight C-60.

SOC:	Atheros AR9344 rev 2 (CPU:560.000MHz)
RAM:	128 MiB
NOR:	MX25L3205D 4MiB
NAND:	ST Micro NAND 32MiB 3,3V 8-bit
SW-NET:	AR8327N (2 Ports)
WLAN1:	Dual-Band AR9340 Rev:2 (built-in SoC)
WLAN2:	Dual-Band AR9300 Rev:4 PCIe Chip

The switch is setup for an accesspoint:
	LAN1: (gigabit) is the wan-port.
	LAN2: (fast ethernet) is bridged with the br-lan.

Flashing Guide (via initramfs):
  1. Connect a PC to the serial port of the C-60.
     power up the C-60.

     Enter u-boot command prompt:
     #> nand erase
     #> setenv bootcmd "bootm 0x9f060000"
     #> saveenv
     #> setenv ipaddr 192.168.1.1
     #> setenv netmask 255.255.255.0
     #> setenv serverip 192.168.1.100
     #> setenv bootfile lede-ar71xx-nand-c-60-initramfs-kernel.bin
     #> tftpboot
     #> bootm

  2. Wait for the C-60 to boot LEDE.
     On the root prompt. Enter:
     # ubiformat /dev/mtd4
     # ubiattach -p /dev/mtd4

  3. After that copy the sysupgrade.tar onto the router and run:
     # sysupgrade sysupgrade.tar

     to flash the image.

Special thanks to Chris Blake <chrisrblake93@gmail.com>. He provided
a C-60 unit and he helped with debugging the switch, LEDs and platfrom
support.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2016-10-15 11:36:50 +02:00
Florian Beier
5abeba3450
ar71xx: add userspace support for D-Link DIR-869 A1, generate images
Signed-off-by: Florian Beier <beier.florian@gmail.com>
[Matthias Schiffer: fix factory image, improve commit message]
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-10-11 22:58:37 +02:00
Piotr Dymacz
c166b050fd ar71xx: base-files: fix boards order in lib/upgrade/platform.sh
Keep also case sections in alphabetical order.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-10-04 11:50:50 +02:00
Piotr Dymacz
8be47007a9 ar71xx: base-files: cleanups in lib/upgrade/platform.sh
This includes:

- code style fixes
- fix boards order within case sections

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-10-04 11:50:50 +02:00
Martin Blumenstingl
e7be0decf6 ar71xx: Do not use a hardcoded ath10k firmware mac address
ar71xx has an init-script for special devices where the ath10k OTP
calibration data is stored on the PCIe card's EEPROM (and thus can only
be read by ath10k). Unfortunately the OTP data uses the default mac
address (= all devices come with the same mac address, which leads to
problems when you have multiple of these devices in the same network).

To work around this the mac address is patched in the firmware during
the first boot of the device. To prevent flash wear this was only done
if the ath10k firmware matched a hardcoded md5sum.
However, if the md5sum does not match this can mean that either the mac
address was already patched (which is fine) - unfortunately it can also
mean that the firmware version was updated without updating the
hardcoded md5sum.

Change the "was the mac address already patched" check to actually
compare the mac address inside the ath10k firmware.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
2016-09-28 08:39:01 +02:00
Chris Blake
68d649f5cd ar71xx: add support for Cisco Meraki Z1 Cloud Managed Teleworker Gateway
This patch adds support for Cisco's Z1.
Detailed instructions for the flashing the device can
be found in the OpenWrt wiki:
<https://wiki.openwrt.org/toh/meraki/z1>

Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
2016-09-27 17:50:22 +02:00
Neal Oakey
524d4110f9
ar71xx: add model detection for many Ubiquiti AirMax XM devices
Signed-off-by: Neal Oakey <neal.oakey@bingo-ev.de>
[Matthias Schiffer: minor adjustments]
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-09-24 19:07:27 +02:00
Piotr Dymacz
f478fba663 ar71xx: add support for Zbtlink ZBT-WE1526
Zbtlink ZBT-WE1526 is based on Qualcomm Atheros QCA9531 v2.
Short specification:

- 650/400/200 MHz (CPU/DDR/AHB)
- 5x 10/100 Mbps Ethernet
- 1x USB 2.0
- 128 MB of RAM (DDR2)
- 16 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- two external, non-detachable antennas
- 8x LED, 1x button
- UART header (pinout: VCC, RX, TX, GND)

Flash instruction:

Use sysupgrade in vendor firmare which is based on OpenWrt.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-08-18 09:49:18 +02:00
Chuanhong Guo
d1b20a3659 ar71xx: fix profile name of Mercury MW4530R
The mw4530r-v1 profile in tp-link.mk is for Mercury MW4530R.
There is no such a device called TL-WDR4530.
Also change MERCURY to Mercury in /lib/ar71xx.sh

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
2016-08-15 15:18:35 +02:00
Matthias Schiffer
500a67a167
ar71xx: add revision detection for D-Link DIR-505 A1/A2
The A1 image also works on the A2, correctly set AR71XX_MODEL in this case.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-07-28 15:44:52 +02:00
John Crispin
96fa9aa13b ar71xx: add a missing ;; to ar71xx.sh
commit 42305ae24a ("ar71xx: add support for gl-mifi")

was missing a ;; breaking boot up

Signed-off-by: John Crispin <john@phrozen.org>
2016-07-24 11:17:34 +02:00
Zhao Gang
42305ae24a ar71xx: add support for gl-mifi
This add initial support for gl-mifi.
Product page: http://www.gl-inet.com/mifi/

Signed-off-by: Zhao Gang <gang.zhao.42@gmail.com>
2016-07-24 06:38:30 +02:00
Zhao Gang
d963ddf042 ar71xx: add support for gl-ar300m
This add initial support for gl-ar300m router.
Product page: http://www.gl-inet.com/ar300m/

Signed-off-by: Zhao Gang <gang.zhao.42@gmail.com>
2016-07-20 00:21:48 +02:00
Piotr Dymacz
d2c9b169b3 ar71xx: add support for jjPlus JWAP230
jjPlus JWAP230 is based on Qualcomm Atheros QCA9558 + QCA8337.
Short specification:

- 720/600/200 MHz (CPU/DDR/AHB)
- 2x 10/100/1000 Mbps Ethernet
- 128 MB of RAM (DDR2)
- 16 MB of FLASH
- 3T3R 2.4 GHz with external PA (SST12LP15A), up to 28 dBm
- 3x MMCX connectors
- power input: 802.3at PoE or wide range DC (36-57 V)
- optional 802.3af PSE
- 1x mini-PCIe connector with PCIe, USB buses and SIM slot
- 1x mini-PCIe connector with PCIe bus
- 1x USB type-A connector
- 6x LED, 1x button (hardware reset)
- RS232 (MAX3223) and (E)JTAG headers

Default configuration:

- WAN on eth1 (RJ45 near LEDs with PoE input)
- LAN on eth0 (RJ45 near DC jack)
- left top LED set to be status LED
- all LEDs configurable form user space

Flash instruction (do it under U-Boot, using RS232):

1. tftp 0x80060000 lede-ar71xx-generic-jwap230-squashfs-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9f050000"
5. saveenv && reset

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-07-13 20:03:10 +02:00
Piotr Dymacz
e767980eb8 ar71xx: add support for Wallys DR531
Wallys DR531 is based on Qualcomm Atheros QCA9531 v2.
Short specification:

- 550/400/200 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet
- 64 MB of RAM (DDR2)
- 8 MB of FLASH
- 2T2R 2.4 GHz with external PA (SE2576L), up to 30 dBm
- 2x MMCX connectors
- mini-PCIe connector with PCIe/USB buses and SIM slot
- 7x LED, 1x button, 1x optional buzzer
- UART, (E)JTAG and LED headers

Default configuration:

- WAN on eth1 (RJ45 near DC jack)
- LAN on eth0 (RJ45 near button)
- S4 LED set to be status LED
- all LEDs configurable form user space
- button configured for reset

Flash instruction (do it under U-Boot, using UART):

1. tftp 0x80060000 lede-ar71xx-generic-dr531-squashfs-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9f050000"
5. saveenv && reset

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-07-13 20:03:10 +02:00
Allan Nick Pedrana
e61fe4e4d7 ar71xx: add support for OpenEmbed SOM9331
This patch adds the target profile SOM9331 and configures hardware
functionality for the 3x Eth Ports & corresponding LED's, the USB Host,
the USART to USB bridge and the System LED.

Signed-off-by: Allan Nick Pedrana <nik9993@gmail.com>
2016-06-07 11:21:55 +02:00
KeLei Liang
563e9d5e1b ar71xx: add WRTnode2Q support
Signed-off-by: KeLei Liang <xzmu@wrtnode.com>
2016-06-06 14:58:11 +02:00
Stijn Segers
d2a91f9853
ar71xx: Fix TL-WR841N v11 LEDs, use separate machine
Signed-off-by: Stijn Segers <francesco.borromini@inventati.org>
2016-05-31 17:36:51 +02:00
Alexander Couzens
c5ff273d85 ar71xx/cpe510: split profile into 2 profiles cpe210 and cpe510
Split profile into 2GHz and 5GHz. The 5GHz devices are
quite "special". The 2 GHz works perfect.

Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
2016-05-23 13:39:49 +02:00
Sven Eckelmann
77cb985022 ar71xx: enable sysupgrade for the OpenMesh MR1750v2
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
2016-05-23 12:19:25 +02:00
Sven Eckelmann
58dc285cd6 ar71xx: add user-space support for the OpenMesh MR1750v2
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
2016-05-23 12:19:25 +02:00
Sven Eckelmann
222dfb3d6a ar71xx: enable sysupgrade for the OpenMesh OM2P-HSv3
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
2016-05-23 12:19:24 +02:00
Sven Eckelmann
e10d12411c ar71xx: add user-space support for the OpenMesh OM2P-HSv3
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
2016-05-23 12:19:23 +02:00
Sven Eckelmann
823cea2d5d ar71xx: Allow OpenMesh CE images with more than 3 files
The CE image format used by OpenMesh can contain extra blocks which
are not used for flashing. Only the first three embedded images
(fwupgrade.cfg, kernel, rootfs) are required in this order to successfully
flash an image via sysupgrade. All extra embedded images should be ignored
for the available devices.

Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
2016-05-23 12:19:23 +02:00
Sven Eckelmann
d1b4a8cfcf ar71xx: Move OpenMesh image target validation into subfunction
The platform_check_image_openmesh function used break statements to signal
that the board name matched the image target. This worked because the
sysupgrade binary checked the image inside a loop. The break statement
stopped the loop and skipped any additional check.

Instead the check should be done without such sideeffects by simply
combining the board names and image targets. Only a mismatch should cause a
negative result for the caller and skipping of the additional checks.

Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
2016-05-23 12:19:23 +02:00
Cezary Jackiewicz
0b45bec22c
ar71xx: add support for TP-LINK TL-WR842N/ND v3
- CPU QCA9531-BL3A
- RAM: 64MB
- flash: 16MB
- USB

AP143 platform, similar to tl-wr841n v10/v11, but with USB

Signed-off-by: Cezary Jackiewicz <cezary@eko.one.pl>
2016-05-14 21:45:16 +02:00
P.Wassi
8307c2fe68 ar71xx: Add support for Ubiquiti UniFi AP AC PRO
Add support for the Ubiquiti UniFi AP AC PRO
Signed-off-by: P.Wassi <p.wassi at gmx.at>
2016-05-12 03:29:36 +02:00
P.Wassi
c855e70491 ar71xx: Rename unifiac to unifiac-lite
To avoid confusion with different unifiac devices, rename existing target
"unifiac" to "unifiac-lite", before "unifiac-pro" is introduced.

Signed-off-by: P.Wassi <p.wassi at gmx.at>
2016-05-12 03:29:36 +02:00
blogic
75629fb2a8 ar71xx: add TP-Link TL-WR810N support
This patch adds support for the TP-Link TL-WR810N.
https://wiki.openwrt.org/toh/tp-link/tl-wr810n

Signed-off-by: Jens Steinhauser <jens.steinhauser@gmail.com>

SVN-Revision: 49286
2016-05-10 10:43:12 +02:00
John Crispin
ee53a240ac ar71xx: Add support for the OMYlink OMY-G1
https://wiki.openwrt.org/toh/omylink/omy-g1

http://www.omylink.com/

Signed-off-by: L. D. Pinney <ldpinney@gmail.com>

SVN-Revision: 49258
2016-04-26 11:44:36 +00:00
John Crispin
5f1a82ec4f ar71xx: add TP-Link TL-WA901ND-v4 support
Signed-off-by: Tiziano Bacocco <tizbac2@gmail.com>

SVN-Revision: 49158
2016-04-09 10:26:46 +00:00
John Crispin
d9799dea89 ar71xx: add support for Compex WPJ342
OpenWrt can be flashed with following uboot commands:

tftpboot 0x80500000 openwrt-ar71xx-generic-wpj342-16M-squashfs-sysupgrade.bin
erase 0x9f030000 +$filesize
cp.b $fileaddr 0x9f030000 $filesize

Signed-off-by: Christian Mehlis <christian@m3hlis.de>

SVN-Revision: 49157
2016-04-09 10:26:41 +00:00
John Crispin
3dabaef6a1 ar71xx: enable sysupgrade for the OpenMesh OM5P-ACv2
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>

SVN-Revision: 49151
2016-04-09 10:26:22 +00:00
John Crispin
7461604bd9 ar71xx: add user-space support for the OpenMesh OM5P-ACv2
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>

SVN-Revision: 49150
2016-04-09 10:26:18 +00:00
John Crispin
0ae22974eb ar71xx: enable sysupgrade for the OpenMesh OM5P-AC
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>

SVN-Revision: 49144
2016-04-09 10:25:57 +00:00
John Crispin
2fa2d97ae2 ar71xx: add user-space support for the OpenMesh OM5P-AC
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>

SVN-Revision: 49142
2016-04-09 10:25:51 +00:00
John Crispin
3c91d5a479 ar71xx: fix the revision of a few TP-LINK devices in AR71XX_MODEL to match labels/image names
Let's not confuse users about the revisions of their devices when we can
easily avoid it.

Not tested on real hardware.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

SVN-Revision: 49107
2016-04-01 07:12:00 +00:00
John Crispin
85c540b94e ar71xx: avoid AR71XX_MODEL ending with a space on some TP-LINK-like devices
Instead of adding the space when combining $model and $hwver, add the space
to the beginning of $hwver, so the resulting string won't end with a space
when $hwver is set to the empty string.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

SVN-Revision: 49106
2016-04-01 07:11:56 +00:00
John Crispin
dfed41d3d8 ar71xx: check both HWID and HWREV on upgrades of TP-LINK devices
There's no reason for us to be more lenient than the stock firmware, so
better check the HWREV as well to avoid bricked devices.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

SVN-Revision: 49105
2016-04-01 07:11:53 +00:00