2016-04-01 07:11:48 +00:00
|
|
|
#
|
|
|
|
# MT7621 Profiles
|
|
|
|
#
|
|
|
|
|
2016-04-09 10:24:29 +00:00
|
|
|
define Build/ubnt-erx-factory-image
|
2016-07-06 08:11:29 +00:00
|
|
|
if [ -e $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) -a "$$(stat -c%s $@)" -lt "$(KERNEL_SIZE)" ]; then \
|
2016-04-09 10:24:29 +00:00
|
|
|
echo '21001:6' > $(1).compat; \
|
|
|
|
$(TAR) -cf $(1) --transform='s/^.*/compat/' $(1).compat; \
|
|
|
|
\
|
|
|
|
$(TAR) -rf $(1) --transform='s/^.*/vmlinux.tmp/' $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE); \
|
2016-12-25 15:40:05 +00:00
|
|
|
mkhash md5 $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) > $(1).md5; \
|
2016-04-09 10:24:29 +00:00
|
|
|
$(TAR) -rf $(1) --transform='s/^.*/vmlinux.tmp.md5/' $(1).md5; \
|
|
|
|
\
|
|
|
|
echo "dummy" > $(1).rootfs; \
|
|
|
|
$(TAR) -rf $(1) --transform='s/^.*/squashfs.tmp/' $(1).rootfs; \
|
2016-04-01 07:11:48 +00:00
|
|
|
\
|
2016-12-25 15:40:05 +00:00
|
|
|
mkhash md5 $(1).rootfs > $(1).md5; \
|
2016-04-09 10:24:29 +00:00
|
|
|
$(TAR) -rf $(1) --transform='s/^.*/squashfs.tmp.md5/' $(1).md5; \
|
|
|
|
\
|
|
|
|
echo '$(BOARD) $(VERSION_CODE) $(VERSION_NUMBER)' > $(1).version; \
|
|
|
|
$(TAR) -rf $(1) --transform='s/^.*/version.tmp/' $(1).version; \
|
|
|
|
\
|
|
|
|
$(CP) $(1) $(BIN_DIR)/; \
|
2016-07-06 08:11:29 +00:00
|
|
|
else \
|
|
|
|
echo "WARNING: initramfs kernel image too big, cannot generate factory image" >&2; \
|
2016-04-01 07:11:48 +00:00
|
|
|
fi
|
|
|
|
endef
|
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/11acnas
|
|
|
|
DTS := 11ACNAS
|
2016-04-01 07:11:48 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-11-19 17:27:22 +00:00
|
|
|
DEVICE_TITLE := WeVO 11AC NAS Router
|
2017-01-13 15:14:38 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport kmod-mt76
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += 11acnas
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/ac1200pro
|
|
|
|
DTS := AC1200pro
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_32M)
|
|
|
|
DEVICE_TITLE := Digineo AC1200 Pro
|
2016-11-24 07:03:22 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-ata-core kmod-ata-ahci
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += ac1200pro
|
2016-04-01 07:11:48 +00:00
|
|
|
|
|
|
|
define Device/dir-860l-b1
|
|
|
|
DTS := DIR-860L-B1
|
2016-09-14 17:11:19 +00:00
|
|
|
BLOCKSIZE := 64k
|
2016-04-01 07:11:48 +00:00
|
|
|
IMAGES += factory.bin
|
|
|
|
KERNEL := kernel-bin | patch-dtb | relocate-kernel | lzma | uImage lzma
|
2016-04-09 10:24:55 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-04-01 07:11:48 +00:00
|
|
|
IMAGE/sysupgrade.bin := \
|
2016-09-03 07:56:35 +00:00
|
|
|
append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs | \
|
2016-04-01 07:11:48 +00:00
|
|
|
seama -m "dev=/dev/mtdblock/2" -m "type=firmware" | \
|
2016-11-17 12:02:26 +00:00
|
|
|
pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
|
2016-04-01 07:11:48 +00:00
|
|
|
IMAGE/factory.bin := \
|
2016-09-03 07:56:35 +00:00
|
|
|
append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | \
|
|
|
|
append-rootfs | pad-rootfs -x 64 | \
|
2016-04-01 07:11:48 +00:00
|
|
|
seama -m "dev=/dev/mtdblock/2" -m "type=firmware" | \
|
|
|
|
seama-seal -m "signature=wrgac13_dlink.2013gui_dir860lb" | \
|
|
|
|
check-size $$$$(IMAGE_SIZE)
|
2016-05-11 23:41:22 +00:00
|
|
|
DEVICE_TITLE := D-Link DIR-860L B1
|
2016-10-31 21:23:32 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-04-09 10:24:36 +00:00
|
|
|
TARGET_DEVICES += dir-860l-b1
|
2016-04-01 07:11:48 +00:00
|
|
|
|
|
|
|
define Device/firewrt
|
|
|
|
DTS := FIREWRT
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-05-11 23:41:22 +00:00
|
|
|
DEVICE_TITLE := Firefly FireWRT
|
2016-10-19 10:09:45 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-04-09 10:24:36 +00:00
|
|
|
TARGET_DEVICES += firewrt
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/mt7621
|
|
|
|
DTS := MT7621
|
|
|
|
BLOCKSIZE := 64k
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_4M)
|
|
|
|
DEVICE_TITLE := MediaTek MT7621 EVB
|
|
|
|
endef
|
|
|
|
TARGET_DEVICES += mt7621
|
|
|
|
|
2016-09-27 06:25:04 +00:00
|
|
|
define Device/newifi-d1
|
|
|
|
DTS := Newifi-D1
|
2016-11-01 01:40:31 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_32M)
|
2016-09-27 06:25:04 +00:00
|
|
|
DEVICE_TITLE := Newifi D1
|
2017-01-13 15:14:38 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport
|
2016-09-27 06:25:04 +00:00
|
|
|
endef
|
|
|
|
TARGET_DEVICES += newifi-d1
|
|
|
|
|
2016-04-01 07:11:48 +00:00
|
|
|
define Device/pbr-m1
|
|
|
|
DTS := PBR-M1
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-05-11 23:41:22 +00:00
|
|
|
DEVICE_TITLE := PBR-M1
|
2017-01-13 15:14:38 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport kmod-ata-core kmod-ata-ahci
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-04-09 10:24:36 +00:00
|
|
|
TARGET_DEVICES += pbr-m1
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/rb750gr3
|
|
|
|
DTS := RB750Gr3
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
|
|
|
DEVICE_TITLE := MikroTik RB750Gr3
|
2016-11-24 07:03:22 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 uboot-envtools -kmod-mt76 -kmod-rt2x00-lib -kmod-mac80211 -kmod-cfg80211 -wpad-mini -iwinfo
|
2016-11-19 17:27:22 +00:00
|
|
|
endef
|
|
|
|
TARGET_DEVICES += rb750gr3
|
|
|
|
|
|
|
|
define Device/re6500
|
|
|
|
DTS := RE6500
|
|
|
|
DEVICE_TITLE := Linksys RE6500
|
|
|
|
endef
|
|
|
|
TARGET_DEVICES += re6500
|
|
|
|
|
2016-04-01 07:11:48 +00:00
|
|
|
define Device/sap-g3200u3
|
|
|
|
DTS := SAP-G3200U3
|
2016-05-11 23:41:22 +00:00
|
|
|
DEVICE_TITLE := STORYLiNK SAP-G3200U3
|
2016-10-19 10:09:45 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-04-09 10:24:36 +00:00
|
|
|
TARGET_DEVICES += sap-g3200u3
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/sk-wb8
|
|
|
|
DTS := SK-WB8
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
|
|
|
DEVICE_TITLE := SamKnows Whitebox 8
|
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport uboot-envtools
|
|
|
|
endef
|
|
|
|
TARGET_DEVICES += sk-wb8
|
|
|
|
|
2016-08-10 00:18:32 +00:00
|
|
|
define Device/timecloud
|
|
|
|
DTS := Timecloud
|
|
|
|
DEVICE_TITLE := Thunder Timecloud
|
|
|
|
DEVICE_PACKAGES := kmod-usb3
|
|
|
|
endef
|
|
|
|
TARGET_DEVICES += timecloud
|
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/ubnt-erx
|
|
|
|
DTS := UBNT-ERX
|
|
|
|
FILESYSTEMS := squashfs
|
|
|
|
KERNEL_SIZE := 3145728
|
|
|
|
KERNEL := $(KERNEL_DTB) | uImage lzma
|
|
|
|
IMAGES := sysupgrade.tar
|
|
|
|
KERNEL_INITRAMFS := $$(KERNEL) | ubnt-erx-factory-image $(KDIR)/tmp/$$(KERNEL_INITRAMFS_PREFIX)-factory.tar
|
|
|
|
IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
|
|
|
|
DEVICE_TITLE := Ubiquiti EdgeRouter X
|
2017-04-22 16:54:07 +00:00
|
|
|
DEVICE_PACKAGES := -kmod-mt76 -kmod-mt7603 -kmod-mt76x2 -kmod-mt76-core -kmod-mac80211 -kmod-cfg80211 -wpad-mini -iwinfo
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += ubnt-erx
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/vr500
|
|
|
|
DTS := VR500
|
|
|
|
IMAGE_SIZE := 66453504
|
|
|
|
DEVICE_TITLE := Planex VR500
|
2016-05-11 23:41:22 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3
|
2016-04-26 11:43:53 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += vr500
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/w2914nsv2
|
|
|
|
DTS := W2914NSV2
|
2016-04-21 19:47:08 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-11-19 17:27:22 +00:00
|
|
|
DEVICE_TITLE := WeVO W2914NS v2
|
2017-01-13 15:14:38 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport kmod-mt76
|
2016-11-15 11:37:38 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += w2914nsv2
|
2016-11-15 11:37:38 +00:00
|
|
|
|
2016-04-01 07:11:48 +00:00
|
|
|
define Device/wf-2881
|
|
|
|
DTS := WF-2881
|
2016-09-04 06:56:05 +00:00
|
|
|
BLOCKSIZE := 128k
|
2016-04-01 07:11:48 +00:00
|
|
|
PAGESIZE := 2048
|
|
|
|
FILESYSTEMS := squashfs
|
2016-09-04 07:58:02 +00:00
|
|
|
IMAGE_SIZE := 129280k
|
2016-09-04 06:56:05 +00:00
|
|
|
KERNEL := $(KERNEL_DTB) | pad-offset $$(BLOCKSIZE) 64 | uImage lzma
|
2016-09-12 16:20:50 +00:00
|
|
|
UBINIZE_OPTS := -E 5
|
2016-11-17 12:02:26 +00:00
|
|
|
IMAGE/sysupgrade.bin := append-kernel | append-ubi | append-metadata | check-size $$$$(IMAGE_SIZE)
|
2016-05-11 23:41:22 +00:00
|
|
|
DEVICE_TITLE := NETIS WF-2881
|
2016-10-19 10:09:45 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-04-09 10:24:36 +00:00
|
|
|
TARGET_DEVICES += wf-2881
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/witi
|
|
|
|
DTS := WITI
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
|
|
|
DEVICE_TITLE := MQmaker WiTi
|
2017-01-13 15:14:38 +00:00
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport kmod-ata-core kmod-ata-ahci
|
2016-04-01 07:11:48 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += witi
|
2016-04-01 07:11:48 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/wndr3700v5
|
|
|
|
DTS := WNDR3700V5
|
2016-05-10 16:17:54 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-11-19 17:27:22 +00:00
|
|
|
DEVICE_TITLE := Netgear WNDR3700v5
|
|
|
|
DEVICE_PACKAGES := kmod-usb3
|
2016-05-10 16:17:54 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += wndr3700v5
|
2016-05-10 16:17:54 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/wsr-1166
|
|
|
|
DTS := WSR-1166
|
|
|
|
IMAGE/sysupgrade.bin := trx | pad-rootfs | append-metadata
|
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
|
|
|
DEVICE_TITLE := Buffalo WSR-1166
|
2016-10-10 01:24:42 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += wsr-1166
|
2016-10-10 01:24:42 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/wsr-600
|
|
|
|
DTS := WSR-600
|
ramips: add support for MikroTik hEX v3 (RB750Gr3)
The MikroTik hEX v3 (RB750Gr3) is a MT7621AT board which is similar to most MT7621 reference designs, it can be easily supported by this patch; however, the stock RouterBOOT bootloader has to be replaced by a MT7621 SDK U-Boot such as https://github.com/ndoo/RB750Gr3-U-Boot - U-Boot configured for the RB750Gr3 (16MiB SPI flash, 256MiB DDR3 RAM at 1200MHz).
RouterBOOT, the stock bootloader, does not initialize the UART and boots silently, making it preferable to replace it with a MT7621 SDK U-Boot with UART (57600 8N1) that supports HTTP, TFTP or serial upload of sysupgrade firmware and U-Boot.
Furthermore, RouterOS, the stock firmware, is contained in a proprietary modification of SquashFS without GPL sources; UART is also disabled in stock firmware.
The combination of LEDE firmware generated by this PR and MT7621 SDK U-Boot expects the printed MAC address to reside at offset `0xe000` of the factory partition (absolute offset is `0x4e000`); this is similar to the factory MAC address offset for several other MT7621 devices.
A 16MiB flash dump suitable for use with flashrom will be provided if/once this patch is accepted and binaries are built by LEDE buildbot. Alternatively, writing the U-Boot to the SPI flash starting at 0x0 offset and booting the board with serial console attached will allow TFTP, HTTP or serial upload of sysupgrade firmware.
Signed-off-by: Andrew Yong <me@ndoo.sg>
2016-10-18 20:05:32 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-11-19 17:27:22 +00:00
|
|
|
DEVICE_TITLE := Buffalo WSR-600
|
ramips: add support for MikroTik hEX v3 (RB750Gr3)
The MikroTik hEX v3 (RB750Gr3) is a MT7621AT board which is similar to most MT7621 reference designs, it can be easily supported by this patch; however, the stock RouterBOOT bootloader has to be replaced by a MT7621 SDK U-Boot such as https://github.com/ndoo/RB750Gr3-U-Boot - U-Boot configured for the RB750Gr3 (16MiB SPI flash, 256MiB DDR3 RAM at 1200MHz).
RouterBOOT, the stock bootloader, does not initialize the UART and boots silently, making it preferable to replace it with a MT7621 SDK U-Boot with UART (57600 8N1) that supports HTTP, TFTP or serial upload of sysupgrade firmware and U-Boot.
Furthermore, RouterOS, the stock firmware, is contained in a proprietary modification of SquashFS without GPL sources; UART is also disabled in stock firmware.
The combination of LEDE firmware generated by this PR and MT7621 SDK U-Boot expects the printed MAC address to reside at offset `0xe000` of the factory partition (absolute offset is `0x4e000`); this is similar to the factory MAC address offset for several other MT7621 devices.
A 16MiB flash dump suitable for use with flashrom will be provided if/once this patch is accepted and binaries are built by LEDE buildbot. Alternatively, writing the U-Boot to the SPI flash starting at 0x0 offset and booting the board with serial console attached will allow TFTP, HTTP or serial upload of sysupgrade firmware.
Signed-off-by: Andrew Yong <me@ndoo.sg>
2016-10-18 20:05:32 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += wsr-600
|
ramips: add support for MikroTik hEX v3 (RB750Gr3)
The MikroTik hEX v3 (RB750Gr3) is a MT7621AT board which is similar to most MT7621 reference designs, it can be easily supported by this patch; however, the stock RouterBOOT bootloader has to be replaced by a MT7621 SDK U-Boot such as https://github.com/ndoo/RB750Gr3-U-Boot - U-Boot configured for the RB750Gr3 (16MiB SPI flash, 256MiB DDR3 RAM at 1200MHz).
RouterBOOT, the stock bootloader, does not initialize the UART and boots silently, making it preferable to replace it with a MT7621 SDK U-Boot with UART (57600 8N1) that supports HTTP, TFTP or serial upload of sysupgrade firmware and U-Boot.
Furthermore, RouterOS, the stock firmware, is contained in a proprietary modification of SquashFS without GPL sources; UART is also disabled in stock firmware.
The combination of LEDE firmware generated by this PR and MT7621 SDK U-Boot expects the printed MAC address to reside at offset `0xe000` of the factory partition (absolute offset is `0x4e000`); this is similar to the factory MAC address offset for several other MT7621 devices.
A 16MiB flash dump suitable for use with flashrom will be provided if/once this patch is accepted and binaries are built by LEDE buildbot. Alternatively, writing the U-Boot to the SPI flash starting at 0x0 offset and booting the board with serial console attached will allow TFTP, HTTP or serial upload of sysupgrade firmware.
Signed-off-by: Andrew Yong <me@ndoo.sg>
2016-10-18 20:05:32 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/zbt-wg2626
|
|
|
|
DTS := ZBT-WG2626
|
2016-11-18 11:46:27 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-11-19 17:27:22 +00:00
|
|
|
DEVICE_TITLE := ZBT WG2626
|
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport kmod-ata-core kmod-ata-ahci
|
2016-11-18 11:46:27 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += zbt-wg2626
|
2016-11-18 11:46:27 +00:00
|
|
|
|
2016-11-19 17:27:22 +00:00
|
|
|
define Device/zbt-wg3526
|
|
|
|
DTS := ZBT-WG3526
|
2016-11-18 11:46:27 +00:00
|
|
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
2016-11-19 17:27:22 +00:00
|
|
|
DEVICE_TITLE := ZBT WG3526
|
|
|
|
DEVICE_PACKAGES := kmod-usb3 kmod-usb-ledtrig-usbport kmod-ata-core kmod-ata-ahci
|
2016-11-18 11:46:27 +00:00
|
|
|
endef
|
2016-11-19 17:27:22 +00:00
|
|
|
TARGET_DEVICES += zbt-wg3526
|
2016-11-18 11:46:27 +00:00
|
|
|
|
2016-04-01 07:11:48 +00:00
|
|
|
# FIXME: is this still needed?
|
|
|
|
define Image/Prepare
|
|
|
|
#define Build/Compile
|
|
|
|
rm -rf $(KDIR)/relocate
|
|
|
|
$(CP) ../../generic/image/relocate $(KDIR)
|
|
|
|
$(MAKE) -C $(KDIR)/relocate KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
|
|
|
|
$(CP) $(KDIR)/relocate/loader.bin $(KDIR)/loader.bin
|
|
|
|
endef
|