Last modified by Xiaoling on 2023/07/18 10:12

From version 170.24
edited by Xiaoling
on 2022/06/22 11:15
Change comment: There is no comment for this version
To version 179.1
edited by Bei Jinggeng
on 2022/06/28 15:05
Change comment: Uploaded new attachment "image-20220628150542-2.png", version {1}

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.Xiaoling
1 +XWiki.Bei
Content
... ... @@ -58,6 +58,8 @@
58 58  * Tri-color LED to indicate working status
59 59  * Datalog feature
60 60  
61 +
62 +
61 61  == 1.3 Specification ==
62 62  
63 63  
... ... @@ -82,23 +82,37 @@
82 82  * ±2°C accuracy from -55°C to +125°C
83 83  * Operating Range: -55 °C ~~ 125 °C
84 84  
87 +
88 +
85 85  = 2. Connect LHT65N to IoT Server =
86 86  
87 87  == 2.1 How does LHT65N work? ==
88 88  
93 +(((
89 89  LHT65N is configured as LoRaWAN OTAA Class A mode by default. Each LHT65N is shipped with a worldwide unique set of OTAA keys. To use LHT65N in a LoRaWAN network, first, we need to put the OTAA keys in LoRaWAN Network Server and then activate LHT65N.
95 +)))
90 90  
97 +(((
91 91  If LHT65N is under the coverage of this LoRaWAN network. LHT65N can join the LoRaWAN network automatically. After successfully joining, LHT65N will start to measure environment temperature and humidity, and start to transmit sensor data to the LoRaWAN server. The default period for each uplink is 20 minutes.
99 +)))
92 92  
93 93  
94 94  == 2.2 How to Activate LHT65N? ==
95 95  
104 +(((
96 96  The LHT65N has two working modes:
106 +)))
97 97  
98 -* (% style="color:blue" %)**Deep Sleep Mode**(%%): LHT65N doesn’t have any LoRaWAN activation. This mode is used for storage and shipping to save battery life.
99 -* (% style="color:blue" %)**Working Mode**(%%):  In this mode, LHT65N works as LoRaWAN Sensor mode to Join LoRaWAN network and send out the sensor data to the server. Between each sampling/tx/rx periodically, LHT65N will be in STOP mode (IDLE mode), in STOP mode, LHT65N has the same power consumption as Deep Sleep mode. 
108 +* (((
109 +(% style="color:blue" %)**Deep Sleep Mode**(%%): LHT65N doesn’t have any LoRaWAN activation. This mode is used for storage and shipping to save battery life.
110 +)))
111 +* (((
112 +(% style="color:blue" %)**Working Mode**(%%):  In this mode, LHT65N works as LoRaWAN Sensor mode to Join LoRaWAN network and send out the sensor data to the server. Between each sampling/tx/rx periodically, LHT65N will be in STOP mode (IDLE mode), in STOP mode, LHT65N has the same power consumption as Deep Sleep mode. 
113 +)))
100 100  
115 +(((
101 101  The LHT65N is set in deep sleep mode by default; The ACT button on the front is to switch to different modes:
117 +)))
102 102  
103 103  
104 104  [[image:image-20220515123819-1.png||_mstalt="430742" _mstvisible="3" height="379" width="317"]]
... ... @@ -252,7 +252,6 @@
252 252  * The 8(% _msthash="734578" _msttexthash="21372" _mstvisible="4" %)^^th^^(%%) ~~ 11(% _msthash="734579" _msttexthash="21372" _mstvisible="4" %)^^th^^(%%) byte: the value for external sensor value. The definition is based on external sensor type. (If EXT=0, there won’t be these four bytes.)
253 253  
254 254  
255 -
256 256  === 2.4.1 Decoder in TTN V3 ===
257 257  
258 258  When the uplink payload arrives TTNv3, it shows HEX format and not friendly to read. We can add LHT65N decoder in TTNv3 for friendly reading.
... ... @@ -294,6 +294,7 @@
294 294  
295 295  * Temperature:  (0xF5C6-65536)/100=-26.18℃
296 296  
312 +
297 297  === 2.4.4 Built-in Humidity ===
298 298  
299 299  [[image:image-20220522235639-4.png||_mstalt="432484" _mstvisible="3" height="138" width="722"]]
... ... @@ -300,6 +300,7 @@
300 300  
301 301  * Humidity:    0x025C/10=60.4%
302 302  
319 +
303 303  === 2.4.5 Ext # ===
304 304  
305 305  Bytes for External Sensor:
... ... @@ -528,7 +528,6 @@
528 528  1. Set [[PNACKMD=1>>||anchor="H4.13AutoSendNone-ACKmessages"]], LHT65N will wait for ACK for every uplink, when there is no LoRaWAN network, LHT65N will store the sensor data, and it will send all messages after network recover.
529 529  
530 530  
531 -
532 532  === 2.6.2 Unix TimeStamp ===
533 533  
534 534  
... ... @@ -551,20 +551,37 @@
551 551  
552 552  === 2.6.3 Set Device Time ===
553 553  
570 +(((
554 554  There are two ways to set device's time:
572 +)))
555 555  
574 +(((
556 556  **~1. Through LoRaWAN MAC Command (Default settings)**
576 +)))
557 557  
578 +(((
558 558  User need to set SYNCMOD=1 to enable sync time via MAC command.
580 +)))
559 559  
582 +(((
560 560  Once LHT65N Joined LoRaWAN network, it will send the MAC command (DeviceTimeReq) and the server will reply with (DeviceTimeAns) to send the current time to LHT65N. If LHT65N fails to get the time from the server, LHT65N will use the internal time and wait for next time request (AT+SYNCTDC to set the time request period, default is 10 days).
584 +)))
561 561  
586 +(((
562 562  (% style="color:red" %)Note: LoRaWAN Server need to support LoRaWAN v1.0.3(MAC v1.0.3) or higher to support this MAC command feature, Chirpstack,TTN V3 v3 and loriot support but TTN V3 v2 doesn’t support. If server doesn’t support this command, it will through away uplink packet with this command, so user will lose the packet with time request for TTN V3 v2 if SYNCMOD=1.
588 +)))
563 563  
590 +(((
591 +
592 +)))
564 564  
594 +(((
565 565  **2. Manually Set Time**
596 +)))
566 566  
598 +(((
567 567  User needs to set SYNCMOD=0 to manual time, otherwise, the user set time will be overwritten by the time set by the server.
600 +)))
568 568  
569 569  
570 570  
... ... @@ -731,9 +731,11 @@
731 731  (% _mstvisible="2" %)
732 732  (((
733 733  (% _msthash="736723" _msttexthash="2005003" _mstvisible="3" %)
767 +(((
734 734  Poll Message Flag: 1: This message is a poll message reply.
735 735  )))
736 736  )))
771 +)))
737 737  
738 738  (% _mstvisible="1" %)
739 739  * (% _mstvisible="3" %)
... ... @@ -741,17 +741,21 @@
741 741  (% _mstvisible="4" %)
742 742  (((
743 743  (% _msthash="1197157" _msttexthash="561548" _mstvisible="5" %)
779 +(((
744 744  Poll Message Flag is set to 1.
745 745  )))
746 746  )))
783 +)))
747 747  * (% _mstvisible="3" %)
748 748  (((
749 749  (% _mstvisible="4" %)
750 750  (((
751 751  (% _msthash="1197158" _msttexthash="9284964" _mstvisible="5" %)
789 +(((
752 752  Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
753 753  )))
754 754  )))
793 +)))
755 755  
756 756  (% _mstvisible="1" %)
757 757  (((
... ... @@ -758,12 +758,16 @@
758 758  (% _mstvisible="2" %)
759 759  (((
760 760  (% _msthash="736724" _msttexthash="2242344" _mstvisible="3" %)
800 +(((
761 761  
802 +)))
762 762  
763 763  (% _msthash="736724" _msttexthash="2242344" _mstvisible="3" %)
805 +(((
764 764  For example, in US915 band, the max payload for different DR is:
765 765  )))
766 766  )))
809 +)))
767 767  
768 768  (% _mstvisible="1" %)
769 769  (((
... ... @@ -770,9 +770,11 @@
770 770  (% _mstvisible="2" %)
771 771  (((
772 772  (% _msthash="736725" _msttexthash="1065532" _mstvisible="3" %)
816 +(((
773 773  a) DR0: max is 11 bytes so one entry of data
774 774  )))
775 775  )))
820 +)))
776 776  
777 777  (% _mstvisible="1" %)
778 778  (((
... ... @@ -779,9 +779,11 @@
779 779  (% _mstvisible="2" %)
780 780  (((
781 781  (% _msthash="736726" _msttexthash="3265665" _mstvisible="3" %)
827 +(((
782 782  b) DR1: max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
783 783  )))
784 784  )))
831 +)))
785 785  
786 786  (% _mstvisible="1" %)
787 787  (((
... ... @@ -788,9 +788,11 @@
788 788  (% _mstvisible="2" %)
789 789  (((
790 790  (% _msthash="736727" _msttexthash="1454115" _mstvisible="3" style="text-align: left;" %)
838 +(((
791 791  c) DR2: total payload includes 11 entries of data
792 792  )))
793 793  )))
842 +)))
794 794  
795 795  (% _mstvisible="1" %)
796 796  (((
... ... @@ -797,9 +797,11 @@
797 797  (% _mstvisible="2" %)
798 798  (((
799 799  (% _msthash="736728" _msttexthash="1483924" _mstvisible="3" style="text-align: left;" %)
849 +(((
800 800  d) DR3: total payload includes 22 entries of data.
801 801  )))
802 802  )))
853 +)))
803 803  
804 804  (% _mstvisible="1" %)
805 805  (((
... ... @@ -806,9 +806,11 @@
806 806  (% _mstvisible="2" %)
807 807  (((
808 808  (% _msthash="736729" _msttexthash="5848349" _mstvisible="3" style="text-align: left;" %)
860 +(((
809 809  If devise doesn’t have any data in the polling time. Device will uplink 11 bytes of 0   
810 810  )))
811 811  )))
864 +)))
812 812  
813 813  
814 814  (% _mstvisible="1" style="text-align: left;" %)
... ... @@ -854,55 +854,86 @@
854 854  [[image:image-20220523001219-13.png||_mstalt="451204" _mstvisible="3" height="421" style="text-align:left" width="727"]]
855 855  
856 856  (% _msthash="315271" _msttexthash="12012546" _mstvisible="1" style="text-align: left;" %)
910 +(((
857 857  7FFF089801464160065F977FFF088E014B41600660097FFF0885014E41600660667FFF0875015141600662BE7FFF086B015541600665167FFF08660155416006676E7FFF085F015A41600669C67FFF0857015D4160066C1E
912 +)))
858 858  
859 859  (% _msthash="315237" _msttexthash="1385839" %)
915 +(((
860 860  Where the first 11 bytes is for the first entry:
917 +)))
861 861  
862 862  (% _msthash="315238" _msttexthash="274846" %)
920 +(((
863 863  7FFF089801464160065F97
922 +)))
864 864  
865 865  (% _msthash="315239" _msttexthash="617435" %)
925 +(((
866 866  Ext sensor data=0x7FFF/100=327.67
927 +)))
867 867  
868 868  (% _msthash="315240" _msttexthash="270543" %)
930 +(((
869 869  Temp=0x0898/100=22.00
932 +)))
870 870  
871 871  (% _msthash="315241" _msttexthash="211783" %)
935 +(((
872 872  Hum=0x0146/10=32.6
937 +)))
873 873  
874 874  (% _msthash="315242" _msttexthash="1569776" %)
940 +(((
875 875  poll message flag & Ext=0x41,means reply data,Ext=1
942 +)))
876 876  
877 877  (% _msthash="315243" _msttexthash="1120509" %)
945 +(((
878 878  Unix time is 0x60065F97=1611030423s=21/1/19 04:27:03
947 +)))
879 879  
880 880  
881 881  
882 882  == 2.7 Alarm Mode ==
883 883  
953 +(((
884 884  when the device is in alarm mode, it checks the built-in sensor temperature for a short time. if the temperature exceeds the preconfigured range, it sends an uplink immediately.
955 +)))
885 885  
957 +(((
886 886  (% style="color:red" %)Note: alarm mode adds a little power consumption, and we recommend extending the normal read time when this feature is enabled.
959 +)))
887 887  
961 +(((
888 888  **AT COMMAND FOR ALARM MODE:**
963 +)))
889 889  
890 890  (% _mstvisible="1" class="box infomessage" %)
891 891  (((
967 +(((
892 892  **AT+WMOD=1**:  Enable/disable alarm mode. (0: Disabled, 1: Enabled)
969 +)))
893 893  
971 +(((
894 894  **AT+CITEMP=1**:  The interval between checking the alarm temperature. (In minutes)
973 +)))
895 895  
975 +(((
896 896  **AT+ARTEMP**:  Gets or sets the alarm range of the internal temperature sensor
977 +)))
897 897  
979 +(((
898 898  **AT+ARTEMP=? **:  Gets the alarm range of the internal temperature sensor(% _mstvisible="3" style="display:none" %)
981 +)))
899 899  
983 +(((
900 900  **AT+ARTEMP=45,105**:  Set the internal temperature sensor alarm range from 45 to 105.
901 901  )))
986 +)))
902 902  
903 903  
904 904  
905 -
906 906  == 2.8 LED Indicator ==
907 907  
908 908  The LHT65 has a triple color LED which for easy showing different stage .
... ... @@ -912,12 +912,11 @@
912 912  In a normal working state:
913 913  
914 914  * For each uplink, the BLUE LED or RED LED will blink once.
915 - BLUE LED when external sensor is connected.
999 +BLUE LED when external sensor is connected.
916 916  * RED LED when external sensor is not connected
917 917  * For each success downlink, the PURPLE LED will blink once
918 918  
919 919  
920 -
921 921  == 2.9 installation ==
922 922  
923 923  (% _mstvisible="1" %)
... ... @@ -931,8 +931,24 @@
931 931  
932 932  [[image:image-20220619092222-1.png||height="182" width="188"]][[image:image-20220619092313-2.png||height="182" width="173"]]
933 933  
934 -1m long breakout cable for LHT65N
1017 +**1m long breakout cable for LHT65N. Features:**
935 935  
1019 +* (((
1020 +Use for AT Command, works for both LHT52/LHT65N
1021 +)))
1022 +* (((
1023 +Update firmware for LHT65N, works for both LHT52/LHT65N
1024 +)))
1025 +* (((
1026 +Supports ADC mode to monitor external ADC
1027 +)))
1028 +* (((
1029 +Supports Interrupt mode
1030 +)))
1031 +* (((
1032 +Exposed All pins from the LHT65N Type-C connector.
1033 +)))
1034 +
936 936  [[image:image-20220619092421-3.png||height="371" width="529"]]
937 937  
938 938  
... ... @@ -953,29 +953,50 @@
953 953  * Working voltage 2.35v ~~ 5v
954 954  
955 955  
956 -
957 957  = 4. Configure LHT65N via AT command or LoRaWAN downlink =
958 958  
1057 +(((
959 959  Use can configure LHT65N via AT Command or LoRaWAN Downlink.
1059 +)))
960 960  
961 -* AT Command Connection: See [[FAQ>>||anchor="H6.FAQ"]].
1061 +* (((
1062 +AT Command Connection: See [[FAQ>>||anchor="H6.FAQ"]].
1063 +)))
962 962  
963 -* LoRaWAN Downlink instruction for different platforms: [[IoT LoRaWAN Server>>doc:Main.WebHome]]
1065 +* (((
1066 +LoRaWAN Downlink instruction for different platforms: [[IoT LoRaWAN Server>>doc:Main.WebHome]]
1067 +)))
964 964  
1069 +(((
965 965  There are two kinds of commands to configure LHT65N, they are:
1071 +)))
966 966  
967 -* (% style="color:#4f81bd" %)**General Commands**.
1073 +* (((
1074 +(% style="color:#4f81bd" %)**General Commands**.
1075 +)))
968 968  
1077 +(((
969 969  These commands are to configure:
1079 +)))
970 970  
971 -1. General system settings like: uplink interval.
972 -1. LoRaWAN protocol & radio-related commands.
1081 +1. (((
1082 +General system settings like: uplink interval.
1083 +)))
1084 +1. (((
1085 +LoRaWAN protocol & radio-related commands.
1086 +)))
973 973  
1088 +(((
974 974  They are the same for all Dragino Devices which supports DLWS-005 LoRaWAN Stack(Note~*~*). These commands can be found on the wiki: [[End Device Downlink Command>>doc:Main.End Device AT Commands and Downlink Command.WebHome]]
1090 +)))
975 975  
976 -* (% style="color:#4f81bd" %)**Commands special design for LHT65N**
1092 +* (((
1093 +(% style="color:#4f81bd" %)**Commands special design for LHT65N**
1094 +)))
977 977  
1096 +(((
978 978  These commands are only valid for LHT65N, as below:
1098 +)))
979 979  
980 980  
981 981  == 4.1 Set Transmit Interval Time ==
... ... @@ -997,6 +997,7 @@
997 997  
998 998  * **Example 2**: Downlink Payload: 0100003C ~/~/ Set Transmit Interval (TDC) = 60 seconds
999 999  
1120 +
1000 1000  == 4.2 Set External Sensor Mode ==
1001 1001  
1002 1002  Feature: Change External Sensor Mode.
... ... @@ -1094,7 +1094,6 @@
1094 1094  * There is no downlink command to set to Sleep mode.
1095 1095  
1096 1096  
1097 -
1098 1098  == 4.7 Set system time ==
1099 1099  
1100 1100  Feature: Set system time, unix format. [[See here for format detail.>>||anchor="H2.6.2UnixTimeStamp"]]
... ... @@ -1192,7 +1192,6 @@
1192 1192  * Example: 0xA301 ~/~/Same as AT+CLRDTA
1193 1193  
1194 1194  
1195 -
1196 1196  == 4.13 Auto Send None-ACK messages ==
1197 1197  
1198 1198  (% _msthash="315394" _msttexthash="51837149" _mstvisible="1" %)
... ... @@ -1271,16 +1271,11 @@
1271 1271  
1272 1272  (% _msthash="506061" _msttexthash="170755" %)**Connection:**
1273 1273  
1274 -(% _msthash="506062" _msttexthash="1187732" %)
1275 -**✓ (% style="background-color:yellow" %)USB to TTL GND <~-~->GND(%%)**
1393 +* (% style="background-color:yellow" %)**USB to TTL GND <~-~->GND**
1394 +* (% style="background-color:yellow" %)**USB to TTL RXD <~-~-> D+**
1395 +* (% style="background-color:yellow" %)**USB to TTL TXD <~-~-> A11**
1396 +* (% style="background-color:yellow" %)**USB to TTL 3.3V <~-~-> D-**
1276 1276  
1277 -(% _msthash="506063" _msttexthash="1158313" %)**✓  **(% style="background-color:yellow" %)**USB to TTL RXD <~-~-> D+**
1278 -
1279 -(% _msthash="506064" _msttexthash="1175629" %)**✓  **(% style="background-color:yellow" %)**USB to TTL TXD <~-~-> A11**
1280 -
1281 -(% _msthash="506065" _msttexthash="1164696" %)**✓  **(% style="background-color:yellow" %)**USB to TTL 3.3V <~-~-> D-**
1282 -
1283 -
1284 1284  (((
1285 1285  In PC, User needs to set serial tool(such as [[**putty**>>https://www.chiark.greenend.org.uk/~~sgtatham/putty/latest.html]], SecureCRT) baud rate to (% style="color:green" %)**9600**(%%) to access to access serial console for LHT65N. The AT commands are disable by default and need to enter password (default:(% style="color:green" %)**123456**) (%%)to active it. Timeout to input AT Command is 5 min, after 5-minute, user need to input password again. User can use AT+DISAT command to disable AT command before timeout.
1286 1286  )))
... ... @@ -1589,7 +1589,59 @@
1589 1589  Finally, unplug the DuPont cable on port4, and then use the DuPont cable to short circuit port3 and port1 to reset the device.
1590 1590  
1591 1591  
1706 +== 6.6 Using USB-TYPE-C to connect to the computer using the AT command ==
1592 1592  
1708 +[[image:image-20220623110706-1.png]]
1709 +
1710 +
1711 +[[image:image-20220623112117-4.png||height="459" width="343"]]
1712 +
1713 +(((
1714 +In PC, User needs to set serial tool(such as [[**putty**>>https://www.chiark.greenend.org.uk/~~sgtatham/putty/latest.html]], SecureCRT) baud rate to (% style="color:green" %)**9600** (%%)to access to access serial console for LHT65N. The AT commands are disable by default and need to enter password (default:(% style="color:green" %)**123456**(% style="color:red" %))(%%) to active it. Timeout to input AT Command is 5 min, after 5-minute, user need to input password again. User can use AT+DISAT command to disable AT command before timeout.
1715 +)))
1716 +
1717 +
1718 +Input password and ATZ to activate LHT65N,As shown below:
1719 +
1720 +[[image:image-20220615154519-3.png||height="672" width="807"]]
1721 +
1722 +
1723 +== 6.6 How to use  USB-TYPE-C to connect PC to upgrade firmware? ==
1724 +
1725 +[[image:image-20220623110706-1.png]]
1726 +
1727 +(% style="color:blue" %)**Step1**(%%): Install TremoProgrammer  first.
1728 +
1729 +[[image:image-20220615170542-5.png]]
1730 +
1731 +
1732 +(% style="color:blue" %)**Step2**(%%):wiring method.(% style="display:none" %)
1733 +
1734 +(% _msthash="506146" _msttexthash="52173160" %)
1735 +First connect the four lines;
1736 +
1737 +(% _msthash="506146" _msttexthash="52173160" %)
1738 +[[image:image-20220623113959-5.png||height="528" width="397"]]
1739 +
1740 +(% _msthash="506146" _msttexthash="52173160" %)
1741 +Press and hold the start key to restart and enter  (% _mstvisible="1" %)bootlaod(%%) mode.
1742 +
1743 +(% style="color:blue" %)**Step3:**(%%)Select the device port to be connected, baud rate and bin file to be downloaded.
1744 +
1745 +[[image:image-20220615171334-6.png]]
1746 +
1747 +
1748 +Click the (% style="color:blue" %)**start**(%%) button to start the firmware upgrade.
1749 +
1750 +
1751 +When this interface appears, it indicates that the download has been completed.
1752 +
1753 +[[image:image-20220620160723-8.png]]
1754 +
1755 +
1756 +Finally,restart reset device again
1757 +
1758 +
1593 1593  = 7. Order Info =
1594 1594  
1595 1595  
... ... @@ -1618,7 +1618,6 @@
1618 1618  * (% style="color:red" %)**E3**(%%): External Temperature Probe
1619 1619  
1620 1620  
1621 -
1622 1622  = 8. Packing Info =
1623 1623  
1624 1624  
... ... @@ -1637,6 +1637,7 @@
1637 1637  
1638 1638  * [[Datasheet, photos, decoder, firmware>>https://www.dropbox.com/sh/una19zsni308dme/AACOKp6J2RF5TMlKWT5zU3RTa?dl=0||_msthash="504975" _msttexthash="51420512"]]
1639 1639  
1805 +
1640 1640  = 10. FCC Warning =
1641 1641  
1642 1642  This device complies with part 15 of the FCC Rules.Operation is subject to the following two conditions:
image-20220623110706-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +689.7 KB
Content
image-20220623110723-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +501.5 KB
Content
image-20220623111949-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +1.6 MB
Content
image-20220623112117-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +513.9 KB
Content
image-20220623113959-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +834.2 KB
Content
image-20220628150112-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +220.3 KB
Content
image-20220628150542-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Bei
Size
... ... @@ -1,0 +1,1 @@
1 +45.6 KB
Content