Our clock project

Dependencies:   SPI_TFT_ILI9341 TFT_fonts Adafruit_RTCLib RTC-DS1307 TSI

IoT Clock

We have been given a task to design a clock with internet features, the 'Internet Clock'. First of all, we identified what features we want:

Display: Split into 4 parts:

  • Analogue clock - the good ol' fashioned circle display, complete with minute, hour and second hands.
  • Digital clock - equipped with date for the modern human.
  • Weather display - for those who cannot be bothered to look out of the window.
  • Alarm - just what you need when you have to get up or be somewhere.

Wifi module:

  • For collecting data for weather, alarm times and so it can be an 'Internet Clock'.

Speaker:

  • To make the annoying sound to let you know your alarm is going off.

Range finder:

  • To wave your hand in front of to turn the alarm off, because pressing a button is too last centurary.

The roles:

  • Soroush's first task was to get the LCD screen to work. Meanwhile Adam sorted out the speaker system.
  • When these were done, Adam worked on the screen to display a clock face and date/year. Soroush then connected the wifi module to extract data for weather, location and date. /media/uploads/amilner1/img_0285.jpg Connecting the wifi module.
  • The next part was to get the range-finder hooked up and responding to a hand passing, and switch the alarm off.
  • Finally, it was time for assembly.

Difficulties: There were many issues faced throughout the project. First of all, Adam's coding knowledge was a lot less than Soroush's which slowed down some completion of tasks. Although, this did help us sort out the roles. Next was the wifi connectivity which caused several problems during the project, and we couldn't get the connection or fetch data, which further slowed the process. Another difficulty was finding the range-finder's set-up page for mbed. However, when we got past these set backs we managed to put everything together quickly, /media/uploads/amilner1/img_0294.jpg All the hardware wired in.

Outcome:

  • Our LCD screen has 2 displays:
  1. 1 An analogue clock filling the screen.

/media/uploads/amilner1/img_0304.jpg

  1. 2 An analogue clock, date and year, weather and location, and alarm time.

/media/uploads/amilner1/img_0305.jpg

This is changed by holding (not passing quickly) your hand in front of the range-finder.

  • An RTC to keep track of the time rather than collecting the information from then internet. However, we have had a lot of problems setting this up, and it doesn't seem to respond.
  • Wifi is also not connected, so we have the default date, time, weather and location.
  • You are able to change the alarm time by swiping the touch pad on the back.

Perhaps given more time we'd be able to fix these problems. But a key point is that we have got all the other features working, except the correct time. /media/uploads/amilner1/img_0303.jpg

Committer:
sfaghihi
Date:
Fri May 26 11:59:44 2017 +0000
Revision:
21:fe1769d5a01c
Parent:
19:450dbcda696e
Something (Not nothing)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amilner1 15:452425c099ef 1
sfaghihi 2:56a27b66d03a 2 #include "Display.h"
sfaghihi 2:56a27b66d03a 3
sfaghihi 17:7ba6c8e4945b 4 static const struct {
sfaghihi 17:7ba6c8e4945b 5 unsigned int width;
sfaghihi 17:7ba6c8e4945b 6 unsigned int height;
sfaghihi 17:7ba6c8e4945b 7 unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */
sfaghihi 17:7ba6c8e4945b 8 unsigned char pixel_data[80 * 80 * 2 + 1];
sfaghihi 17:7ba6c8e4945b 9 } weat_ico = {
sfaghihi 17:7ba6c8e4945b 10 80, 80, 2,
sfaghihi 17:7ba6c8e4945b 11 "\"\000\"\000\"\000\"\000\"\000#\000#\000$\000$\000%\000%\000F\000F\000G\000H\000H\000I\000I\000J\000j\000j\000k\000k"
sfaghihi 17:7ba6c8e4945b 12 "\000k\000l\000l\000l\000l\000l\000m\000m\000m\000m\000\215\020\215\020m\000m\000m\000m\000m\000m\000m\000m\000m\000"
sfaghihi 17:7ba6c8e4945b 13 "m\000m\000m\000m\000l\000l\000l\000l\000l\000k\000k\000k\000j\000j\000I\000I\000H\000H\000G\000G\000F\000E\000%\000$\000"
sfaghihi 17:7ba6c8e4945b 14 "$\000#\000#\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000#\000#\000$\000$\000"
sfaghihi 17:7ba6c8e4945b 15 "%\000F\000F\000G\000G\000H\000I\000I\000j\000j\000k\000k\000k\000l\000l\000l\000l\000m\000m\000m\000m\000m\000m\010m\000"
sfaghihi 17:7ba6c8e4945b 16 "\255\030N\000.\000\316\030n\000n\000n\000n\000n\000n\000n\000n\000m\000m\000m\000m\000m\000m\000m\000l\000l\000l"
sfaghihi 17:7ba6c8e4945b 17 "\000l\000k\000k\000k\000j\000J\000I\000I\000H\000H\000G\000F\000F\000%\000%\000$\000#\000#\000#\000\"\000\"\000\"\000\""
sfaghihi 17:7ba6c8e4945b 18 "\000\"\000\"\000\"\000\"\000\"\000\"\000#\000#\000$\000%\000%\000F\000F\000G\000H\000H\000I\000I\000j\000j\000k\000k"
sfaghihi 17:7ba6c8e4945b 19 "\000l\000l\000l\000m\000m\000m\000m\000m\000m\000n\000n\000n\000\256\030\016\000n\000\316\040\017\000\256\030"
sfaghihi 17:7ba6c8e4945b 20 "n\000\216\010\216\000\216\000\216\000\216\000\216\000n\000n\000n\000n\000m\000m\000m\000m\000m\000m\000l\000"
sfaghihi 17:7ba6c8e4945b 21 "l\000l\000k\000k\000k\000j\000J\000I\000H\000H\000G\000G\000F\000%\000%\000$\000$\000#\000#\000\"\000\"\000\"\000\"\000"
sfaghihi 17:7ba6c8e4945b 22 "\"\000\"\000\"\000\"\000#\000#\000$\000%\000E\000F\000G\000G\000H\000I\000I\000j\000j\000k\000k\000l\000l\000l\000m\000"
sfaghihi 17:7ba6c8e4945b 23 "m\000m\000m\000m\000n\000n\000n\000\216\000n\000\317\030\017\000-b\305\354\003\365\355\212\020\000\317"
sfaghihi 17:7ba6c8e4945b 24 "\040\217\000\217\010\217\010\217\010\217\010\217\010\217\010\217\010\217\000\216\000\216"
sfaghihi 17:7ba6c8e4945b 25 "\000n\000n\000n\000m\000m\000m\000m\000l\000l\000l\000k\000k\000j\000j\000I\000I\000H\000G\000G\000F\000E\000%\000$\000$"
sfaghihi 17:7ba6c8e4945b 26 "\000#\000#\000\"\000\"\000\"\000\"\000\"\000\"\000#\000#\000$\000%\000%\000F\000G\000G\000H\000I\000I\000j\000k\000k"
sfaghihi 17:7ba6c8e4945b 27 "\000l\000l\000l\000m\000m\000m\000m\000n\000n\000\216\000\216\000\217\000\217\010\217\010\217\010\260"
sfaghihi 17:7ba6c8e4945b 28 "\020\020\000\306\344\200\375`\375\"\365\217I\021\000\260\030\220\010\220\010\220\010"
sfaghihi 17:7ba6c8e4945b 29 "\220\010\220\010\220\010\220\010\217\010\217\010\217\010\217\010\216\000\216\000n\000n"
sfaghihi 17:7ba6c8e4945b 30 "\000m\000m\000m\000m\000l\000l\000l\000k\000k\000j\000J\000I\000H\000H\000G\000F\000F\000%\000$\000$\000#\000#\000\"\000"
sfaghihi 17:7ba6c8e4945b 31 "\"\000\"\000\"\000#\000#\000$\000%\000E\000F\000G\000H\000H\000I\000J\000j\000k\000k\000l\000l\000m\000m\000m\000m\000"
sfaghihi 17:7ba6c8e4945b 32 "n\000n\000\216\000\217\000\217\010\217\010\217\010\220\010\220\000\360\040\021\000\214\253"
sfaghihi 17:7ba6c8e4945b 33 "`\375B\375B\375\200\375+\304\022\000\361\040\221\000\221\010\221\010\221\010\221\010"
sfaghihi 17:7ba6c8e4945b 34 "\221\010\221\010\220\010\220\010\220\010\220\010\217\010\217\010\217\010\216\000n\000"
sfaghihi 17:7ba6c8e4945b 35 "n\000m\000m\000m\000m\000l\000l\000k\000k\000j\000j\000I\000H\000H\000G\000F\000F\000%\000$\000$\000#\000#\000\"\000\""
sfaghihi 17:7ba6c8e4945b 36 "\000\"\000#\000$\000%\000E\000F\000G\000H\000H\000I\000j\000j\000k\000l\000l\000l\000m\000m\000m\000n\000n\000\216\000"
sfaghihi 17:7ba6c8e4945b 37 "\217\010\217\010\217\010\220\010\220\010\220\010\221\010\261\020\022\000\221I\003\365"
sfaghihi 17:7ba6c8e4945b 38 "`\375@\375@\375@\375@\375pr\023\000\362\040\222\010\222\010\222\010\222\010\222\010"
sfaghihi 17:7ba6c8e4945b 39 "\222\010\221\010\221\010\221\010\221\010\220\010\220\010\217\010\217\010\217\010\216"
sfaghihi 17:7ba6c8e4945b 40 "\000n\000n\000m\000m\000m\000l\000l\000l\000k\000k\000j\000I\000I\000H\000G\000F\000F\000%\000$\000$\000#\000#\000\"\000"
sfaghihi 17:7ba6c8e4945b 41 "\"\000$\000%\000E\000F\000G\000H\000H\000I\000j\000k\000k\000l\000l\000m\000m\000m\000m\000n\000\216\000\217\000\217"
sfaghihi 17:7ba6c8e4945b 42 "\010\217\010\220\010\220\010\221\010\221\010\221\010\222\010\362\040\023\000\014\304`"
sfaghihi 17:7ba6c8e4945b 43 "\375#\375B\375B\375C\375`\375\212\334\024\000\324\030\264\010\263\010\263\010\263"
sfaghihi 17:7ba6c8e4945b 44 "\010\263\010\263\010\222\010\222\010\222\010\222\010\221\010\221\010\220\010\220\000"
sfaghihi 17:7ba6c8e4945b 45 "\220\000\217\010\217\010\216\000n\000n\000m\000m\000m\000l\000l\000k\000k\000j\000I\000I\000H\000G\000F\000F"
sfaghihi 17:7ba6c8e4945b 46 "\000%\000$\000$\000#\000\"\000\"\000%\000E\000F\000G\000H\000H\000I\000j\000k\000k\000l\000l\000\255\030\315\040"
sfaghihi 17:7ba6c8e4945b 47 "\355\040\315\040\216\010n\000\217\000\217\010\220\010\220\010\221\010\221\010\222\010"
sfaghihi 17:7ba6c8e4945b 48 "\222\010\222\010\323\030\024\000qr`\375`\375`\375`\375`\375`\375`\375`\375\021\223"
sfaghihi 17:7ba6c8e4945b 49 "\025\000\024!\264\010\264\010\264\010\264\010\264\010\264\010\263\010\263\010\263\010"
sfaghihi 17:7ba6c8e4945b 50 "\222\010\222\000\261\020\361\040\360(\260\030\217\000\217\010\217\000\216\000n\000m\000m\000"
sfaghihi 17:7ba6c8e4945b 51 "m\000l\000l\000k\000k\000j\000I\000I\000H\000G\000F\000F\000%\000$\000#\000#\000\"\000%\000F\000G\000H\000H\000I\000j\000"
sfaghihi 17:7ba6c8e4945b 52 "k\000k\000l\000l\000\255\020\015\000\016\000\016\000\017\000o\000\357\040\320\030\220\010\221\000\221"
sfaghihi 17:7ba6c8e4945b 53 "\010\222\010\222\010\263\010\263\010\263\010\324\030\024\000k\324\040\375\310\354\251"
sfaghihi 17:7ba6c8e4945b 54 "\344\252\334\252\334\251\344\350\354\"\375\347\354\365\040\226\000\325\020\265"
sfaghihi 17:7ba6c8e4945b 55 "\010\265\010\265\010\265\010\265\010\264\010\264\010\264\020\363\040\363\040\063\000\022"
sfaghihi 17:7ba6c8e4945b 56 "\000\022\000\021\000\260\020\220\000\217\010\217\010\216\000n\000m\000m\000m\000l\000l\000k\000k\000j\000"
sfaghihi 17:7ba6c8e4945b 57 "I\000I\000H\000G\000F\000%\000%\000$\000#\000#\000F\000G\000H\000H\000I\000j\000k\000k\000l\000l\000\255\030\015\000"
sfaghihi 17:7ba6c8e4945b 58 "\253\202G\324\351\273\215z\017\000\021\000\021\000\321\030\361\040\222\010\263\010\263"
sfaghihi 17:7ba6c8e4945b 59 "\010\264\010\264\010\264\020\325\020\025)Tj\225I\326\020\026\000\026\000\027\000\026\000\026"
sfaghihi 17:7ba6c8e4945b 60 "!\265I\224zv\071\267\000\326\020\266\010\266\010\266\010\266\010\266\010\325\030\025"
sfaghihi 17:7ba6c8e4945b 61 "!\265\000\025\000\025\000\063)\017\223\255\263\360Y\022\000\261\030\220\000\220\010\217\010"
sfaghihi 17:7ba6c8e4945b 62 "\216\010\216\000n\000m\000m\000l\000l\000k\000k\000j\000I\000I\000H\000G\000F\000%\000%\000$\000#\000G\000G\000H\000"
sfaghihi 17:7ba6c8e4945b 63 "I\000j\000k\000k\000l\000l\000\215\020\015\000\355\040\003\365\200\375`\375@\375\306\344\314"
sfaghihi 17:7ba6c8e4945b 64 "\263\060j\022\000\023\000\263\020\264\010\264\010\325\020\365\040\325\030\026\000\027\000\027"
sfaghihi 17:7ba6c8e4945b 65 "\000\027\000\027\000\267\000\367\040\367\040w\000\030\000\030\000\031\000\030\000W\000\367\040\027!\327"
sfaghihi 17:7ba6c8e4945b 66 "\020\267\010\267\010\326\020\027\000\027\000u\000\262z\015\304\006\365`\375\200\375\346"
sfaghihi 17:7ba6c8e4945b 67 "\354\022)r\000\261\020\220\010\220\010\217\010\217\000\216\000n\000m\000m\000l\000l\000k\000k\000"
sfaghihi 17:7ba6c8e4945b 68 "j\000I\000H\000H\000G\000F\000%\000$\000$\000G\000H\000I\000J\000k\000k\000l\000l\000m\000\255\030\016\000\255I\""
sfaghihi 17:7ba6c8e4945b 69 "\365@\375A\375@\375`\375`\375!\375\250\344n\243T\000\325\030\025!\066\000\027\000\027"
sfaghihi 17:7ba6c8e4945b 70 "\000\325Q\363\212\320\263M\314\253\334\312\354\351\354\351\354\312\344\214"
sfaghihi 17:7ba6c8e4945b 71 "\334.\314\261\263\324\202\227A\030\000\030\000\230\000\027!\367\030w\000\224r\357\273"
sfaghihi 17:7ba6c8e4945b 72 "\311\344@\375`\375`\375A\375A\375@\375Qj\023\000\322\030\221\010\221\010\220\010"
sfaghihi 17:7ba6c8e4945b 73 "\217\010\217\010n\000n\000m\000m\000l\000l\000k\000k\000j\000I\000H\000G\000G\000F\000%\000$\000H\000I\000J\000j"
sfaghihi 17:7ba6c8e4945b 74 "\000k\000l\000l\000m\000m\000\216\020N\000N\000\305\354`\375@\375@\375A\375C\375\200\375!"
sfaghihi 17:7ba6c8e4945b 75 "\375p\243\225\000\066\000\027\000\225Aq\243\214\334$\365`\375\200\375`\375`\375`"
sfaghihi 17:7ba6c8e4945b 76 "\375`\375`\375`\375`\375\200\375`\375`\375\006\365m\324\063\223\067)\031\000\330"
sfaghihi 17:7ba6c8e4945b 77 "\010X\000r\243`\375\200\375C\375B\375@\375@\375`\375\005\365\223A\064\000\263\020"
sfaghihi 17:7ba6c8e4945b 78 "\222\010\221\010\221\010\220\010\217\010\217\010n\000n\000m\000m\000l\000l\000k\000k\000j\000I\000"
sfaghihi 17:7ba6c8e4945b 79 "H\000G\000F\000E\000%\000H\000I\000j\000k\000l\000l\000m\000m\000n\000\216\010\317\030\020\000h\324`\375A"
sfaghihi 17:7ba6c8e4945b 80 "\375A\375@\375`\375L\314T\061\026\000\027\000\325Q\017\304\005\365`\375`\375`\375B"
sfaghihi 17:7ba6c8e4945b 81 "\375B\375B\375B\375B\375A\375A\375B\375B\375B\375C\375A\375`\375`\375`\375"
sfaghihi 17:7ba6c8e4945b 82 "\347\354\261\263\067\061\031\000\031\000\366Y\214\334`\375B\375@\375A\375`\375\251"
sfaghihi 17:7ba6c8e4945b 83 "\344\025\000\324\030\264\010\263\010\222\010\222\010\221\010\220\010\217\010\217\010"
sfaghihi 17:7ba6c8e4945b 84 "\216\000n\000m\000m\000l\000l\000k\000j\000J\000I\000H\000G\000F\000%\000I\000j\000k\000k\000l\000m\000m\000m\000n\000"
sfaghihi 17:7ba6c8e4945b 85 "o\000\357\040\021\000\313\273\200\375B\375`\375@\375o\243\025\000\026\000\366\030\320"
sfaghihi 17:7ba6c8e4945b 86 "\263\"\375\200\375`\375B\375B\375A\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 87 "@\375@\375@\375@\375@\375A\375B\375B\375`\375\200\375\007\365S\233\030\000\031"
sfaghihi 17:7ba6c8e4945b 88 "\000\030\000\360\273`\375@\375C\375`\375M\314\026\000\365\040\265\010\264\010\263\010"
sfaghihi 17:7ba6c8e4945b 89 "\222\010\222\010\221\010\220\010\217\010\217\010\216\000n\000m\000m\000l\000l\000k\000j\000I\000"
sfaghihi 17:7ba6c8e4945b 90 "H\000H\000G\000F\000J\000k\000k\000l\000m\000m\000m\000n\000\216\000\217\000\360\040\021\000.\233`\375`\375"
sfaghihi 17:7ba6c8e4945b 91 "\040\375\321\202\026\000\026\000Tj\311\344\200\375@\375C\375A\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 92 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 93 "A\375C\375`\375`\375m\324\267I\031\000\031\000r\243`\375B\375`\375\260\263\027\000"
sfaghihi 17:7ba6c8e4945b 94 "\026!\265\010\265\010\264\010\263\010\262\010\222\010\221\010\220\010\217\010\217\010"
sfaghihi 17:7ba6c8e4945b 95 "n\000m\000m\000m\000l\000k\000k\000j\000I\000H\000G\000F\000j\000k\000l\000l\000m\000m\000n\000\216\000\217\010\220"
sfaghihi 17:7ba6c8e4945b 96 "\010\320\030\022\000Pr`\375\"\375rr\026\000\026\000Q\233@\375`\375C\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 97 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 98 "@\375@\375@\375@\375@\375A\375C\375`\375\005\365\265\202\031\000\031\000\063\233@"
sfaghihi 17:7ba6c8e4945b 99 "\375`\375\364\212\030\000\366\040\266\010\265\010\265\010\264\010\263\010\222\010\222"
sfaghihi 17:7ba6c8e4945b 100 "\010\221\010\220\010\217\010\217\000n\000m\000m\000l\000l\000k\000j\000J\000I\000H\000G\000k\000k\000l\000"
sfaghihi 17:7ba6c8e4945b 101 "m\000m\000n\000\216\000\217\010\220\010\220\010\261\020\022\000\222I\345\354\322\202\026"
sfaghihi 17:7ba6c8e4945b 102 "\000\026\000\260\263`\375@\375B\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 103 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 104 "@\375@\375C\375`\375@\375\063\233\031\000\031\000r\243`\375\066b\030\000\367\030\267"
sfaghihi 17:7ba6c8e4945b 105 "\010\266\010\265\010\265\010\264\010\263\010\222\010\221\010\221\010\220\010\217\010"
sfaghihi 17:7ba6c8e4945b 106 "\216\000n\000m\000m\000l\000l\000k\000j\000I\000H\000G\000k\000l\000l\000m\000m\000n\000\217\000\217\010\220\010"
sfaghihi 17:7ba6c8e4945b 107 "\221\010\262\010\223\000\363\040\323Q\025\000\026\000\317\263`\375A\375A\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 108 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 109 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375B\375@\375`\375S\233"
sfaghihi 17:7ba6c8e4945b 110 "\031\000\070\000\023\223\227Ax\000\330\020\327\010\267\010\266\010\265\010\265\010\264\010"
sfaghihi 17:7ba6c8e4945b 111 "\263\010\222\010\221\010\220\010\220\010\217\010\216\000n\000m\000m\000l\000k\000k\000J\000I\000"
sfaghihi 17:7ba6c8e4945b 112 "H\000l\000l\000m\000m\000n\000\216\000\217\010\220\010\221\010\222\010\223\010\263\010\224\000"
sfaghihi 17:7ba6c8e4945b 113 "\225\000\026\000\260\253`\375B\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 114 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 115 "@\375@\375@\375@\375@\375@\375@\375B\375@\375`\375\364\212\031\000\030\000\230"
sfaghihi 17:7ba6c8e4945b 116 "\000\330\020\330\010\330\010\327\010\267\010\266\010\265\010\264\010\264\010\263\010"
sfaghihi 17:7ba6c8e4945b 117 "\222\010\221\010\220\010\217\010\217\010n\000m\000m\000l\000l\000k\000j\000I\000H\000l\000m\000m\000n"
sfaghihi 17:7ba6c8e4945b 118 "\000\216\000\217\010\220\010\221\010\221\010\222\010\263\010\264\000\365\040\026\000\362"
sfaghihi 17:7ba6c8e4945b 119 "\212`\375A\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 120 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 121 "@\375@\375@\375@\375@\375@\375B\375`\375\"\375\026Z\030\000\030!\330\010\330\010"
sfaghihi 17:7ba6c8e4945b 122 "\330\010\330\010\327\010\267\010\266\010\265\010\264\010\263\010\263\010\222\010\221"
sfaghihi 17:7ba6c8e4945b 123 "\010\220\010\217\010\216\000n\000m\000m\000l\000k\000k\000J\000I\000l\000m\000m\000n\000\217\000\217\010"
sfaghihi 17:7ba6c8e4945b 124 "\220\010\221\010\222\010\263\010\264\010\325\030\026\000\265I$\365`\375A\375@\375"
sfaghihi 17:7ba6c8e4945b 125 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 126 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 127 "@\375@\375@\375C\375`\375\252\344\030\000\330\020\330\020\330\010\330\010\330\010"
sfaghihi 17:7ba6c8e4945b 128 "\330\010\327\010\266\010\266\010\265\010\264\010\263\010\222\010\221\010\220\010\217"
sfaghihi 17:7ba6c8e4945b 129 "\010\217\010n\000m\000m\000l\000l\000k\000j\000I\000m\000m\000n\000\216\000\217\010\220\010\221\010\222"
sfaghihi 17:7ba6c8e4945b 130 "\010\223\010\263\010\264\010\365\040\026\000l\324\200\375C\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 131 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 132 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 133 "@\375@\375C\375`\375\261\263\031\000\030)\330\010\330\010\330\010\330\010\327\010"
sfaghihi 17:7ba6c8e4945b 134 "\267\010\266\010\265\010\265\010\264\010\263\010\222\010\221\010\220\010\217\010\216"
sfaghihi 17:7ba6c8e4945b 135 "\010n\000m\000m\000l\000k\000k\000J\000m\000m\000n\000\217\010\217\010\220\010\221\000\262\020\363\040"
sfaghihi 17:7ba6c8e4945b 136 "\264\010\365\040\026\000\363\212`\375B\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 137 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 138 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 139 "@\375@\375\"\375\366Q\030\000\370\030\330\010\330\020\330\010\330\010\327\010\267"
sfaghihi 17:7ba6c8e4945b 140 "\010\266\010\265\010\264\010\263\010\222\010\221\010\220\010\220\010\217\010n\000m\000"
sfaghihi 17:7ba6c8e4945b 141 "m\000l\000l\000k\000j\000m\000m\000\216\000o\000\220\010\321\030\361\040S\000\024\000\225\000\325\020"
sfaghihi 17:7ba6c8e4945b 142 "\026\000\252\344`\375B\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 143 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 144 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375B\375`\375"
sfaghihi 17:7ba6c8e4945b 145 "/\304\030\000\030)\270\000\270\000\030)\370\040\330\020\267\010\266\010\266\010\265\010"
sfaghihi 17:7ba6c8e4945b 146 "\264\010\263\010\222\010\221\010\220\010\217\010\216\000n\000m\000m\000l\000k\000j\000m\000n\000"
sfaghihi 17:7ba6c8e4945b 147 "\256\030\357\040\220\010\022\000\023\000\363\040\261\202T\071\027\000\363\212`\375A\375"
sfaghihi 17:7ba6c8e4945b 148 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 149 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 150 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375!\375\026Z\030\000\030"
sfaghihi 17:7ba6c8e4945b 151 ")\230\000\031\000\031\000\370\030\027!\367\030\266\010\265\010\264\010\263\010\222\010\221"
sfaghihi 17:7ba6c8e4945b 152 "\010\220\010\217\010\217\010n\000m\000m\000l\000l\000k\000m\000\316\030\017\000\020\000\021\000or\354"
sfaghihi 17:7ba6c8e4945b 153 "\273\004\365\310\344\225\000\027\000l\324`\375B\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 154 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 155 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 156 "@\375@\375@\375@\375C\375`\375\320\273\031\000w\071l\324\360\273\066j\030\000\031"
sfaghihi 17:7ba6c8e4945b 157 "\000\030\000\366\040\326\030\265\010\264\010\263\010\222\010\221\010\220\010\217\010\216"
sfaghihi 17:7ba6c8e4945b 158 "\000n\000m\000l\000l\000k\000\216\020\017\000\316Y\253\253\247\344@\375`\375\200\375\257"
sfaghihi 17:7ba6c8e4945b 159 "\253\027\000\025Z#\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 160 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 161 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 162 "@\375A\375`\375\351\354\027!\030\000m\324\240\375@\375\253\334\222\253\366Q\027"
sfaghihi 17:7ba6c8e4945b 163 "\000\026\000\325\020\264\010\263\010\222\010\221\010\220\010\217\010\216\000n\000m\000m\000l"
sfaghihi 17:7ba6c8e4945b 164 "\000k\000\016\000k\243@\375`\375`\375@\375B\375@\375sr\027\000r\243`\375B\375@\375"
sfaghihi 17:7ba6c8e4945b 165 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 166 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 167 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375A\375@\375\264\202"
sfaghihi 17:7ba6c8e4945b 168 "\031\000\063\233`\375B\375`\375`\375\"\375M\324\325Q\026\000\325\030\264\010\263\010"
sfaghihi 17:7ba6c8e4945b 169 "\222\010\221\010\220\010\217\000n\000m\000m\000l\000k\000\355(\"\365`\375A\375A\375A\375"
sfaghihi 17:7ba6c8e4945b 170 "`\375\347\354\065\061\027\000M\314`\375B\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 171 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 172 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 173 "@\375@\375@\375@\375@\375C\375\200\375\321\263\031\000\066j@\375@\375B\375C\375"
sfaghihi 17:7ba6c8e4945b 174 "@\375\200\375\213\334\026\000\325\030\264\010\263\010\222\010\221\010\220\010\217"
sfaghihi 17:7ba6c8e4945b 175 "\010\216\000m\000m\000l\000l\000\016\000\207\334\200\375B\375@\375B\375`\375k\324\026\000"
sfaghihi 17:7ba6c8e4945b 176 "\366\030\351\354`\375A\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 177 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 178 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 179 "@\375@\375B\375`\375m\324\030\000\027!\350\354`\375A\375@\375$\375`\375\252\344"
sfaghihi 17:7ba6c8e4945b 180 "\026\000\325\020\264\020\263\010\222\010\221\010\220\010\217\010\216\000n\000m\000m\000l\000"
sfaghihi 17:7ba6c8e4945b 181 "\017\000nA\246\344\200\375B\375B\375`\375\356\273\027\000\025Z#\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 182 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 183 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 184 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375A\375`\375\350\354"
sfaghihi 17:7ba6c8e4945b 185 "\027!\030\000\214\334`\375B\375C\375`\375\040\375\224z\027\000\365\030\265\010\264"
sfaghihi 17:7ba6c8e4945b 186 "\010\222\010\221\010\220\010\217\010\217\000n\000m\000m\000l\000\316\030\020\000p\000i\324\200"
sfaghihi 17:7ba6c8e4945b 187 "\375C\375`\375\220\253\030\000\264\202@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 188 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 189 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 190 "@\375@\375@\375@\375@\375@\375@\375A\375`\375$\365\326Q\031\000/\314`\375$\375"
sfaghihi 17:7ba6c8e4945b 191 "`\375\347\354Vj\030\000\367\040\266\010\265\010\264\010\263\010\222\010\221\010\220"
sfaghihi 17:7ba6c8e4945b 192 "\010\217\000n\000m\000m\000l\000o\000\317\030Q\000\022\000\354\273`\375`\375\062\233\030\000\023"
sfaghihi 17:7ba6c8e4945b 193 "\223`\375A\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 194 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 195 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 196 "@\375@\375@\375@\375ur\031\000\320\273`\375`\375\213\334w\071\031\000\027!\267\010"
sfaghihi 17:7ba6c8e4945b 197 "\266\010\265\010\264\010\263\010\222\010\221\010\220\010\217\010n\000m\000m\000l\000\217"
sfaghihi 17:7ba6c8e4945b 198 "\010\220\000\321\030\262\020\023\000O\233`\375\022\223\030\000R\233`\375B\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 199 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 200 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 201 "@\375@\375@\375@\375@\375@\375@\375@\375B\375B\375B\375B\375C\375@\375\224"
sfaghihi 17:7ba6c8e4945b 202 "z\031\000\361\273\240\375\017\304\030\000\070\000\030!\270\010\327\010\266\010\265\010\264"
sfaghihi 17:7ba6c8e4945b 203 "\010\263\010\222\010\221\010\220\010\217\010\216\000m\000m\000l\000\217\010\220\010\221\000"
sfaghihi 17:7ba6c8e4945b 204 "\262\020\363\040\025\000\322\202Tj\030\000s\243`\375B\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 205 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 206 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 207 "@\375@\375A\375B\375@\375`\375`\375\200\375`\375\200\375\200\375\264z\031"
sfaghihi 17:7ba6c8e4945b 208 "\000\222\253\360\273\031\000\330\010\370\040\330\010\330\010\327\010\266\010\265\010"
sfaghihi 17:7ba6c8e4945b 209 "\264\010\263\010\222\010\221\010\220\010\217\010\216\000n\000m\000l\000\217\010\220\010\221"
sfaghihi 17:7ba6c8e4945b 210 "\010\222\010\263\010\364\040\026\000\226\000\030\000\063\223`\375B\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 211 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 212 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 213 "@\375@\375@\375B\375`\375`\375$\375\253\334\017\304\261\263\222\253\261\263"
sfaghihi 17:7ba6c8e4945b 214 ".\314Ub\230\000\367\020\030\000\370\020\370\030\330\010\330\010\330\010\327\010\266\010"
sfaghihi 17:7ba6c8e4945b 215 "\265\010\264\010\263\010\222\010\221\010\220\010\217\010\216\000n\000m\000l\000\217\010\220"
sfaghihi 17:7ba6c8e4945b 216 "\010\221\010\222\010\263\010\264\010\365\040\026)\030\000\364\212`\375A\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 217 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 218 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 219 "@\375@\375A\375@\375`\375\350\354q\243\365\070\027\000w\000\267\001\327\001x\001\030\000"
sfaghihi 17:7ba6c8e4945b 220 "\027\000\030\000\270\000\070!\330\020\330\010\330\010\330\010\330\010\327\010\266\010\266"
sfaghihi 17:7ba6c8e4945b 221 "\010\265\010\264\010\222\010\221\010\220\010\217\010\216\000n\000m\000m\000\217\010\220\010"
sfaghihi 17:7ba6c8e4945b 222 "\221\010\222\010\263\010\264\010\265\010\366\040\030\000ur@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 223 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 224 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 225 "B\375`\375@\375\260\263\026\000\027\001\326s\366\234v\255\226\265\225\265\226\265"
sfaghihi 17:7ba6c8e4945b 226 "V\255\266\224Wk\267\010\030\000\030\031\330\010\330\010\330\010\330\010\327\010\267"
sfaghihi 17:7ba6c8e4945b 227 "\010\266\010\265\010\264\010\222\010\221\010\220\010\217\010\216\000n\000m\000m\000\217\010"
sfaghihi 17:7ba6c8e4945b 228 "\220\010\221\010\222\010\263\010\264\010\265\010\326\030\027\000\266I%\365@\375@\375"
sfaghihi 17:7ba6c8e4945b 229 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 230 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 231 "@\375B\375`\375$\365tr\027\000\366{u\265\326\275\266\275\266\265\266\265\266"
sfaghihi 17:7ba6c8e4945b 232 "\265\266\265\266\265\326\275\266\265\066\245\027c\030\000\370\020\370\020\330\010"
sfaghihi 17:7ba6c8e4945b 233 "\330\010\327\010\267\010\266\010\265\010\264\010\262\010\221\010\220\010\217\010\216"
sfaghihi 17:7ba6c8e4945b 234 "\000n\000m\000m\000\217\010\220\010\221\010\222\010\263\010\264\010\265\010\326\020\327\020"
sfaghihi 17:7ba6c8e4945b 235 "\030\000\312\344`\375A\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 236 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 237 "@\375@\375@\375@\375@\375A\375`\375#\375\364a\267\000\365\244\326\275\266\265"
sfaghihi 17:7ba6c8e4945b 238 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 239 "\266\265\266\265\026\204\030\000\330\010\330\020\330\010\327\010\267\010\266\010\265"
sfaghihi 17:7ba6c8e4945b 240 "\010\264\010\262\010\221\010\220\010\217\010\216\000n\000m\000m\000\217\010\220\010\221\010"
sfaghihi 17:7ba6c8e4945b 241 "\222\010\263\010\264\010\265\010\266\010\027)\030\000/\314`\375B\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 242 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 243 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375`\375\323"
sfaghihi 17:7ba6c8e4945b 244 "\202w\000\065\255\326\275\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 245 "\265\226\265\226\265\226\265\226\265\226\265\226\265\326\275V\214\030\000\370"
sfaghihi 17:7ba6c8e4945b 246 "\020\330\010\327\010\267\010\266\010\265\010\264\010\262\010\221\010\220\010\217\010"
sfaghihi 17:7ba6c8e4945b 247 "\216\010n\000m\000m\000\217\010\220\010\221\010\222\010\263\010\264\010\265\010\326\020"
sfaghihi 17:7ba6c8e4945b 248 "\027)\030\000\064\223`\375B\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@"
sfaghihi 17:7ba6c8e4945b 249 "\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 250 "@\375@\375@\375@\375@\375C\375`\375\016\304\027\000\325\234\326\275\226\265\226"
sfaghihi 17:7ba6c8e4945b 251 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 252 "\265\226\265\226\265\226\265\226\265\326\275\327{\030\000\030\031\327\010\326\010"
sfaghihi 17:7ba6c8e4945b 253 "\266\010\265\010\263\010\222\010\221\010\220\010\217\010\216\000n\000m\000m\000\217\010\220"
sfaghihi 17:7ba6c8e4945b 254 "\010\221\010\222\010\263\010\264\010\325\020\226\000W\000\070\000wA\006\365`\375A\375@\375"
sfaghihi 17:7ba6c8e4945b 255 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 256 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375A\375C\375`\375\"\375\325"
sfaghihi 17:7ba6c8e4945b 257 "(\366{\366\305\266\265\266\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 258 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\266"
sfaghihi 17:7ba6c8e4945b 259 "\265\226\265WB\030\000\327\020\366\020\025\031\324\020\263\010\222\010\221\010\220\010"
sfaghihi 17:7ba6c8e4945b 260 "\217\010\216\000n\000m\000l\000\217\010\220\010\221\010\222\010\263\010\264\020U\000u\071."
sfaghihi 17:7ba6c8e4945b 261 "\304w\071\031\000/\314`\375B\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 262 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 263 "@\375B\375`\375`\375$\365\221\243\027\000\025c\326{v\214\066\245\266\265\266\265"
sfaghihi 17:7ba6c8e4945b 264 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 265 "\226\265\226\265\226\265\226\265\326\275v\214\030\000\067\031\026\000\025\000\024\000\363"
sfaghihi 17:7ba6c8e4945b 266 "\030\262\010\221\010\220\010\217\010\216\000n\000m\000l\000\217\000\220\010\221\010\222\010"
sfaghihi 17:7ba6c8e4945b 267 "\223\010\364\040\026\000\260\253\200\375\324\202\031\000\225z@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 268 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 269 "@\375@\375@\375@\375@\375@\375@\375B\375`\375\006\365Q\233\025\000\026\000vJ\226"
sfaghihi 17:7ba6c8e4945b 270 "J\366\061\026\000\026\000\026[\066\245\266\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 271 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\266\265v\255"
sfaghihi 17:7ba6c8e4945b 272 "\027\031\226s\025\245\025\204TJ\023\000r\000\321\020p\000\217\010\216\000m\000m\000l\000\217\000"
sfaghihi 17:7ba6c8e4945b 273 "\217\010\220\010\222\010\322\030\024\000\323Q$\365\200\375m\324\030\000\030\000m\324`"
sfaghihi 17:7ba6c8e4945b 274 "\375C\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 275 "@\375@\375@\375@\375@\375@\375@\375@\375@\375B\375`\375\253\334u\040\227\000"
sfaghihi 17:7ba6c8e4945b 276 "\066\204\066\255\226\265\266\265\266\265V\255v\214\066\031VB\266\265\226\265"
sfaghihi 17:7ba6c8e4945b 277 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 278 "\226\265\226\265\226\265\326\275\027[\366Z\326\275\326\275\226\265T\214\222"
sfaghihi 17:7ba6c8e4945b 279 "\000\021\000\320\020o\000\216\000m\000m\000l\000\216\000\217\010\220\010\221\010\362\040\024\000,"
sfaghihi 17:7ba6c8e4945b 280 "\314\200\375B\375@\375ur\031\000ur@\375@\375@\375@\375@\375@\375@\375@\375@"
sfaghihi 17:7ba6c8e4945b 281 "\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 282 "B\375`\375\252\344\026\000\326Ju\255\326\275\266\265\266\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 283 "\266\265\326\275v\255\066\245\266\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 284 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\326"
sfaghihi 17:7ba6c8e4945b 285 "\275\366{\366\020\226\265\226\265\226\265\326\275\365\234\021\031\020\000\257\020"
sfaghihi 17:7ba6c8e4945b 286 "n\000m\000m\000l\000\216\000\217\010\220\000\321\040\023\000qr@\375@\375B\375`\375m\324\030"
sfaghihi 17:7ba6c8e4945b 287 "\000\031\000\020\304\200\375C\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 288 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375`\375#\375uA\226B"
sfaghihi 17:7ba6c8e4945b 289 "\265\265\266\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 290 "\266\265\266\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 291 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\266\265V\255\326"
sfaghihi 17:7ba6c8e4945b 292 "\234\266\265\226\265\226\265\226\265\326\275\264\224\017\000\257\020\216\010m"
sfaghihi 17:7ba6c8e4945b 293 "\000m\000l\000n\000\217\010\220\010\261\020\022\000\211\334`\375A\375@\375B\375`\375\024"
sfaghihi 17:7ba6c8e4945b 294 "\213\031\000\067\061\311\354`\375C\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 295 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375B\375`\375\320\263\027\000"
sfaghihi 17:7ba6c8e4945b 296 "U\255\266\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 297 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 298 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\266"
sfaghihi 17:7ba6c8e4945b 299 "\265\266\265\226\265\226\265\226\265\226\265\226\265\326\275qk\016\000\316\020"
sfaghihi 17:7ba6c8e4945b 300 "m\000m\000l\000n\000\217\000\317\040\021\000\317\202`\375B\375A\375A\375B\375`\375\350"
sfaghihi 17:7ba6c8e4945b 301 "\354W\061\031\000Uj\040\375`\375B\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 302 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375B\375UI\266k\326\275\226"
sfaghihi 17:7ba6c8e4945b 303 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 304 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 305 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 306 "\265\226\265\226\265\226\265\226\265\226\265\326\275\364\234\016\000\215\010"
sfaghihi 17:7ba6c8e4945b 307 "\215\010l\000l\000n\000n\000\317\040\021\000\356\212\200\375`\375`\375`\375`\375`\375"
sfaghihi 17:7ba6c8e4945b 308 "\200\375m\324\230\000\031\000\364\212@\375@\375A\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 309 "@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375A\375`\375\252\344\027\000"
sfaghihi 17:7ba6c8e4945b 310 "\366\234\326\275\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 311 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 312 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 313 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 314 "\226\265/B\015\000\255\020l\000k\000m\000\216\000\217\010\220\010\061\000\314\263\307\354"
sfaghihi 17:7ba6c8e4945b 315 "\350\354\350\354\351\354\351\354\352\354\007\365\364\212\030\000\031\000\063\223@"
sfaghihi 17:7ba6c8e4945b 316 "\375@\375B\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 317 "@\375@\375B\375`\375M\314\027\000V\255\266\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 318 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 319 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 320 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 321 "\226\265\226\265\326\275\326\275\020c\015\000\315\020l\000k\000m\000n\000\217\000\217\010"
sfaghihi 17:7ba6c8e4945b 322 "q\000\022\000\022\000\263\010\224\000\225\000\266\000\267\000\270\000\030!\270\000\070)\031\000\024"
sfaghihi 17:7ba6c8e4945b 323 "\213@\375`\375C\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 324 "@\375@\375B\375\200\375\016\304\027\001v\265\266\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 325 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 326 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 327 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 328 "\226\265\266\265\226\265S\214oJ\015\000\014\000\214\010\214\010K\000m\000n\000\216\010\217"
sfaghihi 17:7ba6c8e4945b 329 "\000\220\010\361\040\262\010\223\000\224\000\225\000\226\000\267\000\227\000\270\000\330\020"
sfaghihi 17:7ba6c8e4945b 330 "\330\010\070)\031\000ur\347\354\200\375B\375B\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 331 "@\375@\375@\375@\375@\375B\375`\375m\324\027\000V\255\266\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 332 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 333 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 334 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 335 "\226\265\266\265\226\265\361Z\015\000\020c\362{Pk\014\000\013\000\213\010m\000m\000n\000\217"
sfaghihi 17:7ba6c8e4945b 336 "\010\220\010\221\000\261\010\262\020\263\020\264\020\325\020\326\020\327\020\327\020"
sfaghihi 17:7ba6c8e4945b 337 "\330\010\330\010\330\010\070)\030\000W\061N\314`\375`\375C\375B\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 338 "@\375@\375@\375@\375@\375@\375A\375`\375\311\344\027\000\326\234\326\275\226"
sfaghihi 17:7ba6c8e4945b 339 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 340 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 341 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 342 "\265\226\265\226\265\326\275\023\204\016\000\324\234\326\275\326\275\326\275"
sfaghihi 17:7ba6c8e4945b 343 "\323\234k\000\012\000m\000m\000n\000\216\000\217\010\220\010\221\010\222\010\263\010\264\010"
sfaghihi 17:7ba6c8e4945b 344 "\265\010\266\010\266\010\327\010\330\010\330\010\330\010\270\000\030!x\000\030\000\023\223"
sfaghihi 17:7ba6c8e4945b 345 "\311\354`\375`\375A\375C\375B\375@\375@\375@\375@\375@\375@\375@\375@\375"
sfaghihi 17:7ba6c8e4945b 346 "@\375\265Ywc\326\275\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 347 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 348 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 349 "\265\226\265\226\265\226\265\226\265\226\265\266\265\065\245\364\234\326\275"
sfaghihi 17:7ba6c8e4945b 350 "\226\265\226\265\226\265\327\275\361{\010\000l\000m\000m\000n\000\217\010\220\010\221"
sfaghihi 17:7ba6c8e4945b 351 "\010\221\010\222\010\263\010\264\010\265\010\266\010\267\010\327\010\330\010\330\010"
sfaghihi 17:7ba6c8e4945b 352 "\330\010\330\010\330\020\030\000\031\000\027\031S\233\253\344@\375\200\375`\375@\375"
sfaghihi 17:7ba6c8e4945b 353 "A\375B\375B\375B\375B\375B\375D\375`\375\360\273\030\000\065\255\266\265\226"
sfaghihi 17:7ba6c8e4945b 354 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 355 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 356 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 357 "\265\226\265\226\265\266\265\266\265\226\265\226\265\226\265\226\265\266"
sfaghihi 17:7ba6c8e4945b 358 "\265\263\224\010\000l\000m\000m\000n\000\216\000\217\010\220\010\221\010\222\010\263\010\264"
sfaghihi 17:7ba6c8e4945b 359 "\010\265\010\265\010\266\010\267\010\327\010\330\010\370\030\070\000\267I\320\263\366"
sfaghihi 17:7ba6c8e4945b 360 "Q\031\000\031\000X\000\265z\360\273\312\344\"\375`\375`\375`\375`\375`\375`\375`"
sfaghihi 17:7ba6c8e4945b 361 "\375\200\375`\375\025j\227B\226\265\266\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 362 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 363 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 364 "\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265"
sfaghihi 17:7ba6c8e4945b 365 "\226\265\226\265\226\265\226\265\326\275\222\224\007\000l\000l\000m\000m\000n\000\217\010"
sfaghihi 17:7ba6c8e4945b 366 "\220\010\220\010\221\010\222\010\263\010\264\010\265\010\266\010\266\010\327\010\327"
sfaghihi 17:7ba6c8e4945b 367 "\010\330\020\230\000\030!\005\365\"\375\321\263\026Z\030\000\031\000\031\000\230\000\066b\023"
sfaghihi 17:7ba6c8e4945b 368 "\223\261\253\017\304N\314m\324m\324N\314\360\273\221\253Uj\030\000\026cv\255\326"
sfaghihi 17:7ba6c8e4945b 369 "\275\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 370 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 371 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\226"
sfaghihi 17:7ba6c8e4945b 372 "\265\226\265\226\265\226\265\226\265\226\265\226\265\226\265\266\265\016c"
sfaghihi 17:7ba6c8e4945b 373 "\007\000k\000l\000m\000m\000n\000\216\000\217\010\220\010\221\010\221\010\222\010\263\010\264\010"
sfaghihi 17:7ba6c8e4945b 374 "\265\010\266\010\266\010\327\010\327\010\370\030\030\000m\324\200\375`\375\"\375M"
sfaghihi 17:7ba6c8e4945b 375 "\324\063\223\326Q\030\000\031\000\031\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\030"
sfaghihi 17:7ba6c8e4945b 376 "\000\067!\030\000\067B\266\224\226\265\326\275\326\275\326\275\326\275\326\275\326"
sfaghihi 17:7ba6c8e4945b 377 "\275\326\275\326\275\326\275\326\275\326\275\326\275\326\275\326\275\326"
sfaghihi 17:7ba6c8e4945b 378 "\275\326\275\326\275\326\275\326\275\326\275\326\275\326\275\326\275\326"
sfaghihi 17:7ba6c8e4945b 379 "\275\326\275\326\275\326\275\326\275\326\275\326\275\326\275\326\275\266"
sfaghihi 17:7ba6c8e4945b 380 "\265\021\204\010\000\250\020k\000l\000l\000m\000m\000n\000\217\000\217\010\220\010\221\010\222"
sfaghihi 17:7ba6c8e4945b 381 "\010\263\010\263\010\264\010\265\010\266\010\266\010\267\010\027!\031\000\360\273`\375"
sfaghihi 17:7ba6c8e4945b 382 "$\375`\375`\375`\375\005\365\214\334\017\304\066b\270\000\067)\030!\030!\027!\027!\027"
sfaghihi 17:7ba6c8e4945b 383 ")\027)\367\030\330\000\070\031\030\000\030\000wJ\326{V\214V\214V\214v\214v\214v\214W"
sfaghihi 17:7ba6c8e4945b 384 "\214W\214v\214v\214v\214\226\224\226\224\226\224\226\224\225\224u\214u\214"
sfaghihi 17:7ba6c8e4945b 385 "u\214t\214t\214T\214T\214S\214s\214s\214S\214S\214S\214s\214\062\204\316Z"
sfaghihi 17:7ba6c8e4945b 386 "\010\000i\000h\000k\000k\000l\000m\000m\000n\000\216\000\217\010\217\010\220\010\221\010\222\010\263"
sfaghihi 17:7ba6c8e4945b 387 "\010\263\010\264\010\265\010\266\010\266\010\027!\030\000S\233`\375B\375@\375B\375"
sfaghihi 17:7ba6c8e4945b 388 "C\375@\375\240\375\252\344\227Ax\000\370\020\330\010\330\010\330\010\330\010\330"
sfaghihi 17:7ba6c8e4945b 389 "\010\330\010\330\010\330\010\330\010\030\021\030\021\030\000\030\000\030\000\027:\027Bw!\030\000"
sfaghihi 17:7ba6c8e4945b 390 "\070!\027B\027BX\000\030\000\030\000\030\000\030\000\027\000\026\000\026\000\024\000\024\000\023\000\022\000\021"
sfaghihi 17:7ba6c8e4945b 391 "\000\261\061\020:\360\071\016\000\015\000\356\071\016:\215\061\012\000\011\000\011\000\251\020h\000"
sfaghihi 17:7ba6c8e4945b 392 "G\000j\000k\000l\000l\000m\000m\000n\000n\000\217\010\220\010\220\010\221\010\222\010\263\010\264"
sfaghihi 17:7ba6c8e4945b 393 "\010\264\010\265\010\266\010\366\040\027\000\224z@\375@\375@\375A\375@\375`\375\017"
sfaghihi 17:7ba6c8e4945b 394 "\304\030\000\030\000\370\030\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330"
sfaghihi 17:7ba6c8e4945b 395 "\010\330\010\330\010\330\010\330\010\070!\030\000V\214\326\275\266\265\267s\030\000\026"
sfaghihi 17:7ba6c8e4945b 396 "\245\326\275\226\265wJ\270\020\030\000\222\254\256\325n\315\255\325\357\274\064"
sfaghihi 17:7ba6c8e4945b 397 "\000\023\031\062!\021\000QBv\255\326\275\025\245\015\000\221s\266\265\326\275R\214\012"
sfaghihi 17:7ba6c8e4945b 398 "\000+!\312\020I\000H\000G\000J\000j\000k\000l\000l\000m\000m\000n\000\216\000\217\010\220\010\220\010\221"
sfaghihi 17:7ba6c8e4945b 399 "\010\222\010\263\010\264\010\264\010\265\010\325\030\026\000\265I$\365@\375C\375`\375"
sfaghihi 17:7ba6c8e4945b 400 "`\375\222\253\031\000\370\020\370\030\330\010\330\010\330\010\330\010\330\010\330\010"
sfaghihi 17:7ba6c8e4945b 401 "\330\010\330\010\330\010\330\010\330\010\330\010\370\020\230\000\070\031V\245\326\275"
sfaghihi 17:7ba6c8e4945b 402 "v\255\030\031\227R\226\265\326\275\326\234\027\000\027\000uR\302\376\040\377\000\377"
sfaghihi 17:7ba6c8e4945b 403 "\040\377\060\234\023\000\022!\362\030\020\000\363{\266\265\326\275\362{\014\000\364\234"
sfaghihi 17:7ba6c8e4945b 404 "\326\275\226\265\256R\012\000\252\020I\000H\000G\000F\000I\000j\000k\000k\000l\000m\000m\000m\000n\000"
sfaghihi 17:7ba6c8e4945b 405 "\216\000\217\010\220\010\220\010\221\010\222\010\263\010\263\010\264\010\265\020\325"
sfaghihi 17:7ba6c8e4945b 406 "\020\026\000\252\344\200\375`\375!\375\364\212\031\000\030!\330\020\330\010\330\010"
sfaghihi 17:7ba6c8e4945b 407 "\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330"
sfaghihi 17:7ba6c8e4945b 408 "\010\030\031\030\000\067c\266\265\266\265\226\224\030\000V\214\266\265\266\265vk\027"
sfaghihi 17:7ba6c8e4945b 409 "\000\027\000/\275\000\377\246\376\000\377-\275\024\000\362\030\261\010\261\010\020\000\025\245"
sfaghihi 17:7ba6c8e4945b 410 "\326\275\226\265\316\061\016:\226\265\326\275\024\235\012\000\212\010i\000H\000G\000F"
sfaghihi 17:7ba6c8e4945b 411 "\000F\000H\000I\000j\000k\000k\000l\000m\000m\000m\000n\000\216\000\217\010\220\010\220\010\221\010\222"
sfaghihi 17:7ba6c8e4945b 412 "\010\263\010\263\010\264\010\324\030\026\000sr\252\344l\324\065b\030\000\027)\330\020\330"
sfaghihi 17:7ba6c8e4945b 413 "\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010"
sfaghihi 17:7ba6c8e4945b 414 "\330\010\330\010\330\010\030\031\030\000\226\224\326\275\266\265\367Z\030\000V\255\326"
sfaghihi 17:7ba6c8e4945b 415 "\275V\255\266\061\027\000\065J\245\366\343\376\002\377)\346\362\030\222\000q\000\261"
sfaghihi 17:7ba6c8e4945b 416 "\010\020\000\261R\226\265\326\275\324\234\013\000\022|\326\275\266\265\321{\011\000"
sfaghihi 17:7ba6c8e4945b 417 "\312\020I\000H\000G\000F\000%\000H\000I\000I\000j\000k\000l\000l\000m\000m\000m\000n\000\216\000\217\010\220"
sfaghihi 17:7ba6c8e4945b 418 "\010\220\010\221\010\222\010\222\010\263\010\264\000\324\030\025\000\026\000\026\000\027\000\026"
sfaghihi 17:7ba6c8e4945b 419 "!\267\010\327\010\327\010\330\010\330\010\330\010\330\010\330\010\330\010\330\010\330"
sfaghihi 17:7ba6c8e4945b 420 "\010\330\010\330\010\330\010\330\010\370\020\030\000\367\071v\255\326\275\066\245\027"
sfaghihi 17:7ba6c8e4945b 421 "\000\066c\266\265\326\275v\214\026\000\026\000\357\264\000\377\305\376\343\376\207\366"
sfaghihi 17:7ba6c8e4945b 422 "I\356g\356G\356OR\017\000S\214\326\275\266\265qk\014\000\065\245\326\275u\255\354"
sfaghihi 17:7ba6c8e4945b 423 "\071\011\000\211\010H\000G\000F\000%\000%\000G\000H\000I\000J\000j\000k\000l\000l\000m\000m\000m\000n\000\216\000"
sfaghihi 17:7ba6c8e4945b 424 "\217\010\220\010\220\010\221\010\221\010\222\010\263\010\223\000\324\030\324\030\365"
sfaghihi 17:7ba6c8e4945b 425 "\030\365\030\266\010\266\010\266\010\267\010\327\010\327\010\327\010\327\010\330\010"
sfaghihi 17:7ba6c8e4945b 426 "\330\010\330\010\330\010\330\010\330\010\330\010\330\010\030\031\030\000\266s\266\265"
sfaghihi 17:7ba6c8e4945b 427 "\266\265\066\204\027\000\266\224\326\275\266\265\025c\025\000\064J\206\366\002\377\344"
sfaghihi 17:7ba6c8e4945b 428 "\376\344\376\342\376\001\377\040\377J\305\017\000O)U\255\326\275U\255m\000\317R\266"
sfaghihi 17:7ba6c8e4945b 429 "\265\326\275\263\224\010\000\311\020H\000G\000F\000F\000%\000$\000F\000G\000H\000I\000J\000j\000k\000l"
sfaghihi 17:7ba6c8e4945b 430 "\000l\000m\000m\000m\000n\000\216\000\217\010\217\010\220\010\221\010\221\010\222\010\222\010"
sfaghihi 17:7ba6c8e4945b 431 "\263\010\263\010\264\010\264\010\265\010\265\010\266\010\266\010\266\010\266\010\267"
sfaghihi 17:7ba6c8e4945b 432 "\010\267\010\267\010\327\010\327\010\327\010\327\010\327\010\327\010\327\010\367\020"
sfaghihi 17:7ba6c8e4945b 433 "\027\000\366\234\326\275\226\265VB\226)v\255\326\275\065\245\064!\025\000\060\234"
sfaghihi 17:7ba6c8e4945b 434 "\340\376\304\376\304\376\344\376\304\376\001\377J\305\020\000\016\000Qk\266\265\326"
sfaghihi 17:7ba6c8e4945b 435 "\275s\214\012\000r\214\326\275\266\265Ok\010\000\311\020G\000G\000F\000%\000$\000#\000F\000G\000"
sfaghihi 17:7ba6c8e4945b 436 "G\000H\000I\000J\000j\000k\000l\000l\000m\000m\000m\000n\000\216\000\217\010\217\010\220\010\220\010\221"
sfaghihi 17:7ba6c8e4945b 437 "\010\221\010\222\010\222\010\263\010\263\010\264\010\264\010\265\010\265\010\265\010"
sfaghihi 17:7ba6c8e4945b 438 "\265\010\266\010\266\010\266\010\266\010\266\010\266\010\266\010\266\010\266\010\366"
sfaghihi 17:7ba6c8e4945b 439 "\020\026\000vJ\226\265\266\265\365\234\025\000\265s\266\265\326\275\025\204\023\000"
sfaghihi 17:7ba6c8e4945b 440 "\323\020r)\320b\060J\252\325\342\376\001\377\251\325\017\000\317\020\015\000\263\224"
sfaghihi 17:7ba6c8e4945b 441 "\326\275\266\265\317Z\014\000U\255\266\265U\255*!\010\000h\010G\000F\000%\000$\000$\000#\000"
sfaghihi 17:7ba6c8e4945b 442 "%\000F\000G\000G\000H\000I\000J\000j\000k\000l\000l\000m\000m\000m\000n\000n\000\216\000\217\010\217\010\220"
sfaghihi 17:7ba6c8e4945b 443 "\010\221\010\221\010\221\010\222\010\222\010\263\010\263\010\264\010\264\010\264\010"
sfaghihi 17:7ba6c8e4945b 444 "\265\010\265\010\265\010\265\010\265\010\265\010\265\010\265\010\265\010\265\010\025"
sfaghihi 17:7ba6c8e4945b 445 "\031\025\000\365{\326\275\326\275\325s\024\000\365\234\326\275\226\265\223J\022\000"
sfaghihi 17:7ba6c8e4945b 446 "\362\020\262\020\022\000\257b\244\376\040\377\350\335\017\000.\000-\000\356\071u\255\326"
sfaghihi 17:7ba6c8e4945b 447 "\275\065\245\013\000/c\266\265\327\275r\214\006\000\310\030'\000F\000%\000%\000$\000#\000#\000$"
sfaghihi 17:7ba6c8e4945b 448 "\000%\000F\000G\000H\000H\000I\000J\000j\000k\000l\000l\000m\000m\000m\000n\000n\000\216\000\217\010\217\010\220"
sfaghihi 17:7ba6c8e4945b 449 "\010\220\010\221\010\221\010\221\010\222\010\222\010\263\010\263\010\263\010\263\010"
sfaghihi 17:7ba6c8e4945b 450 "\264\010\264\010\264\010\264\010\264\010\264\010\264\010\264\010\264\010\364\030\024"
sfaghihi 17:7ba6c8e4945b 451 "\000\024c\266\265\065\245\023\031SJ\226\265\326\275\365\234\022\000\262\020\261\010"
sfaghihi 17:7ba6c8e4945b 452 "\021!\020\000\310\335@\377\007\346\356\030\016\000.!\014\000\261s\266\265\326\275\022\204"
sfaghihi 17:7ba6c8e4945b 453 "\011\000MJu\255v\255lJ\007\000\247\020F\000%\000%\000$\000#\000#\000\"\000$\000%\000%\000F\000G\000H\000H\000"
sfaghihi 17:7ba6c8e4945b 454 "I\000j\000j\000k\000k\000l\000l\000m\000m\000m\000n\000n\000\216\000\217\010\217\010\220\010\220\010\220"
sfaghihi 17:7ba6c8e4945b 455 "\010\221\010\221\010\222\010\222\010\222\010\222\010\263\010\263\010\263\010\263\010"
sfaghihi 17:7ba6c8e4945b 456 "\263\010\263\010\263\010\263\010\263\010\263\010\263\010\023\000\063B\323\071\022\000\024"
sfaghihi 17:7ba6c8e4945b 457 "\204\326\275\266\265\263s\021\000\361\020\020!\020\000\355\223\040\377F\356\256\071"
sfaghihi 17:7ba6c8e4945b 458 "\016\000\015!\215\010\014\000\364\234\326\275\226\265mJ\012\000\011\000\313\071\353\071\007"
sfaghihi 17:7ba6c8e4945b 459 "\000\207\010&\000E\000%\000$\000#\000#\000\"\000\"\000#\000$\000%\000%\000F\000G\000H\000H\000I\000J\000j\000k\000k"
sfaghihi 17:7ba6c8e4945b 460 "\000l\000l\000m\000m\000m\000m\000n\000n\000\216\000\217\010\217\010\220\010\220\010\220\010\220\010"
sfaghihi 17:7ba6c8e4945b 461 "\221\010\221\010\221\010\222\010\222\010\222\010\222\010\222\010\222\010\222\010\222"
sfaghihi 17:7ba6c8e4945b 462 "\010\222\010\222\010\222\010\322\020\022\000\022\000\361\020\065\245\266\265v\255\361"
sfaghihi 17:7ba6c8e4945b 463 "\071\020\000\360\030\017\000.)\205\366\205\366\355A\016\000\015!\255\010\014\000\216J\226"
sfaghihi 17:7ba6c8e4945b 464 "\265\266\265\364\234\012\000\212\010\211\010\010\000\007\000\207\010&\000E\000%\000$\000#\000#\000"
sfaghihi 17:7ba6c8e4945b 465 "\"\000\"\000\"\000#\000#\000$\000%\000%\000F\000G\000G\000H\000I\000I\000j\000k\000k\000l\000l\000l\000m\000m\000m\000"
sfaghihi 17:7ba6c8e4945b 466 "m\000n\000n\000\216\000\217\010\217\010\217\010\220\010\220\010\220\010\220\010\220\010\221"
sfaghihi 17:7ba6c8e4945b 467 "\010\221\010\221\010\221\010\221\010\221\010\221\010\221\010\221\010\221\010\221\010"
sfaghihi 17:7ba6c8e4945b 468 "\021\031\020\000\362Z\266\265\326\275\264\224\017\000\317\020\017!\017\000\312\264\303"
sfaghihi 17:7ba6c8e4945b 469 "\376MR\016\000\015!M\000\355\030\013\000\062\204\326\275\326\275\260s\010\000\311\020H\000"
sfaghihi 17:7ba6c8e4945b 470 "\210\010\207\010F\000E\000%\000$\000$\000#\000\"\000\"\000\"\000\"\000\"\000#\000#\000$\000%\000%\000F\000G\000"
sfaghihi 17:7ba6c8e4945b 471 "G\000H\000I\000I\000j\000j\000k\000k\000l\000l\000l\000m\000m\000m\000m\000n\000n\000n\000\216\000\217\000\217\010"
sfaghihi 17:7ba6c8e4945b 472 "\217\010\217\010\217\010\220\010\220\010\220\010\220\010\220\010\220\010\220\010\220"
sfaghihi 17:7ba6c8e4945b 473 "\010\220\010\220\010\220\010\320\020\017\000PBu\255\226\265\320Z\016\000\316\020\256"
sfaghihi 17:7ba6c8e4945b 474 "\020\016\000\314b\214Z\015\000\015!M\000l\000\314\020\013\000pk\266\265\065\245j)\010\000\210"
sfaghihi 17:7ba6c8e4945b 475 "\010G\000G\000F\000E\000%\000$\000$\000#\000#\000\"\000\"\000\"\000\"\000\"\000\"\000#\000#\000$\000$\000%\000F\000"
sfaghihi 17:7ba6c8e4945b 476 "F\000G\000H\000H\000I\000J\000j\000k\000k\000k\000l\000l\000l\000m\000m\000m\000m\000m\000n\000n\000n\000\216\000\216"
sfaghihi 17:7ba6c8e4945b 477 "\000\217\000\217\010\217\010\217\010\217\010\217\010\217\010\217\010\217\010\217\010\217"
sfaghihi 17:7ba6c8e4945b 478 "\010\217\010\217\000\257\010\016\000\357\071OB\016\000\256\010n\000m\000\255\020\015\000\015\000"
sfaghihi 17:7ba6c8e4945b 479 "\354\040L\000l\000l\000k\000k\000\012\000mJ\253\061\010\000\210\010G\000G\000F\000%\000%\000$\000#\000#\000"
sfaghihi 17:7ba6c8e4945b 480 "#\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000#\000#\000$\000$\000%\000F\000F\000G\000G\000H\000I\000I\000J"
sfaghihi 17:7ba6c8e4945b 481 "\000j\000k\000k\000k\000l\000l\000l\000m\000m\000m\000m\000m\000m\000n\000n\000n\000n\000\216\000n\000\216\000\216"
sfaghihi 17:7ba6c8e4945b 482 "\000\216\000\216\000\216\000\216\000\216\000n\000\216\000n\000\256\020\015\000\015\000\255\020m\000m"
sfaghihi 17:7ba6c8e4945b 483 "\000m\000m\000\314\020\314\030L\000l\000k\000k\000j\000j\000\211\010\010\000\010\000\210\010'\000F\000F\000"
sfaghihi 17:7ba6c8e4945b 484 "%\000$\000$\000#\000#\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000",
sfaghihi 17:7ba6c8e4945b 485 };
sfaghihi 17:7ba6c8e4945b 486
sfaghihi 17:7ba6c8e4945b 487
sfaghihi 2:56a27b66d03a 488 Display::Display ()
sfaghihi 2:56a27b66d03a 489 : myTFT(DISPLAY_MOSI_PIN, DISPLAY_MISO_PIN, DISPLAY_SCLK_PIN, DISPLAY_CS_PIN, DISPLAY_RST_PIN, DISPLAY_DC_PIN, "TFT")
sfaghihi 2:56a27b66d03a 490 {
sfaghihi 2:56a27b66d03a 491 //myTFT = new SPI_TFT_ILI9341(DISPLAY_MOSI_PIN, DISPLAY_MISO_PIN, DISPLAY_SCLK_PIN, DISPLAY_CS_PIN, DISPLAY_RST_PIN, DISPLAY_DC_PIN,"TFT");
sfaghihi 16:a639477091ad 492 //myTFT.claim(stdout); // send stdout to the TFT display
sfaghihi 2:56a27b66d03a 493 myTFT.set_orientation(1);
sfaghihi 2:56a27b66d03a 494 myTFT.background(Black); // set background to black
sfaghihi 2:56a27b66d03a 495 myTFT.foreground(White); // set chars to white
sfaghihi 2:56a27b66d03a 496 myTFT.cls(); // clear the screen
sfaghihi 2:56a27b66d03a 497 myTFT.set_font((unsigned char*) Arial12x12);
sfaghihi 2:56a27b66d03a 498 myTFT.locate(0,0);
sfaghihi 10:e5bcd9088d5d 499 //LOG("O HOH O\r\n");
sfaghihi 16:a639477091ad 500 //myTFT.printf("O HOH O ");
sfaghihi 3:6795b827060b 501 }
sfaghihi 3:6795b827060b 502
sfaghihi 11:80a6facfd9f1 503 void Display::drawClock(TimeClass *time, bool face, TimeClass *prevTime)
sfaghihi 3:6795b827060b 504 {
sfaghihi 8:e7fce7d9ebdd 505 //LOG("Small\r\n");
sfaghihi 11:80a6facfd9f1 506 /*myTFT.circle(70, 70, 60, 0xFFFFFF); // clock circle
amilner1 4:519ffdf16d25 507 myTFT.line(70, 10, 70, 20, 0xFFFFFF); // 12 oclock
amilner1 4:519ffdf16d25 508 myTFT.line(70, 130, 70, 120, 0xFFFFFF); // 6 oclock
amilner1 4:519ffdf16d25 509 myTFT.line(10, 70, 20 , 70, 0xFFFFFF); // 3 oclock
amilner1 4:519ffdf16d25 510 myTFT.line(120, 70, 130 , 70, 0xFFFFFF); // 9 oclock
amilner1 4:519ffdf16d25 511 myTFT.line(100, 121.9615, 95, 113.301, 0xFFFFFF); // 7 oclock
amilner1 4:519ffdf16d25 512 myTFT.line(40, 18.0385, 45, 26.699, 0xFFFFFF); // 1 oclock
amilner1 4:519ffdf16d25 513 myTFT.line(121.9615, 100, 113.301, 95, 0xFFFFFF); // 8 oclock
amilner1 4:519ffdf16d25 514 myTFT.line(18.0385, 40, 26.699, 45, 0xFFFFFF); // 2 oclock
amilner1 4:519ffdf16d25 515 myTFT.line(121.9615,40,113.301,45, 0xFFFFFF); // 4 oclock
amilner1 4:519ffdf16d25 516 myTFT.line(18.0385,100,26.699,95, 0xFFFFFF); // 10 oclock
amilner1 4:519ffdf16d25 517 myTFT.line(100,18.0385,95,26.699, 0xFFFFFF); // 5 oclock
amilner1 4:519ffdf16d25 518 myTFT.line(40,121.9615,45,113.301, 0xFFFFFF); // 11 olcock
sfaghihi 8:e7fce7d9ebdd 519 //LOG("SO Near: %x\r\n", (void *)time);
sfaghihi 8:e7fce7d9ebdd 520 float h = time->hour % 12;
amilner1 5:fe6910712822 521 float m = time->minute;
amilner1 5:fe6910712822 522 float s = time->second;
sfaghihi 8:e7fce7d9ebdd 523 float htheta = (M_PI/6.0)*(h + (m/60.0) + (s/3600.0)); // hour hand angle
sfaghihi 8:e7fce7d9ebdd 524 float mtheta = (M_PI/6.0)*(m + (s/60.0))/5.0; // minute hand angle
sfaghihi 8:e7fce7d9ebdd 525 float stheta = (M_PI/6.0)*s/5.0; // second hand angle
amilner1 5:fe6910712822 526 float hx = 70.0 + 15.0*sin(htheta); // hour hand position
amilner1 5:fe6910712822 527 float hy = 70.0 - 15.0*cos(htheta); //
sfaghihi 8:e7fce7d9ebdd 528 float mx = 70.0 + 30.0*sin(mtheta); // minute hand position
sfaghihi 8:e7fce7d9ebdd 529 float my = 70.0 - 30.0*cos(mtheta); //
sfaghihi 8:e7fce7d9ebdd 530 float sx = 70.0 + 50.0*sin(stheta); // second hand position
sfaghihi 8:e7fce7d9ebdd 531 float sy = 70.0 - 50.0*cos(stheta); //
sfaghihi 10:e5bcd9088d5d 532 //LOG("SO Far: %f, %f\r\n", sx, sy);
sfaghihi 8:e7fce7d9ebdd 533 if (cls) {
sfaghihi 8:e7fce7d9ebdd 534 myTFT.line(70, 70, hx, hy, Black); // hour hand plot
sfaghihi 8:e7fce7d9ebdd 535 myTFT.line(70, 70, mx, my, Black); // minute hand plot
sfaghihi 8:e7fce7d9ebdd 536 myTFT.line(70, 70, sx, sy, Black); // second hand plot
sfaghihi 8:e7fce7d9ebdd 537 } else {
sfaghihi 8:e7fce7d9ebdd 538 myTFT.line(70, 70, hx, hy, Yellow); // hour hand plot
sfaghihi 8:e7fce7d9ebdd 539 myTFT.line(70, 70, mx, my, White); // minute hand plot
sfaghihi 8:e7fce7d9ebdd 540 myTFT.line(70, 70, sx, sy, DarkCyan); // second hand plot
sfaghihi 11:80a6facfd9f1 541 }*/
sfaghihi 11:80a6facfd9f1 542 int xc = 80;
sfaghihi 12:dd5d8eea2e47 543 int yc = 90;
sfaghihi 11:80a6facfd9f1 544 int r = 80;
sfaghihi 11:80a6facfd9f1 545 if (face) {
sfaghihi 11:80a6facfd9f1 546 myTFT.circle(xc, yc, r, White); // clock circle
sfaghihi 11:80a6facfd9f1 547 for (int i = 0; i < 12; i++)
sfaghihi 11:80a6facfd9f1 548 myTFT.line(xc+6*r/7*sin((float)i*M_PI/6.0), yc-6*r/7*cos((float)i*M_PI/6.0),
sfaghihi 11:80a6facfd9f1 549 xc + r*sin((float)i*M_PI/6.0), yc-r*cos((float)i*M_PI/6.0), 0xFFFFFF);
sfaghihi 8:e7fce7d9ebdd 550 }
sfaghihi 8:e7fce7d9ebdd 551
sfaghihi 8:e7fce7d9ebdd 552 //LOG("SO Near: %x\r\n", (void *)time);
sfaghihi 8:e7fce7d9ebdd 553 float h = time->hour % 12;
sfaghihi 8:e7fce7d9ebdd 554 float m = time->minute;
sfaghihi 8:e7fce7d9ebdd 555 float s = time->second;
sfaghihi 8:e7fce7d9ebdd 556 float htheta = (M_PI/6.0)*(h + (m/60.0) + (s/3600.0)); // hour hand angle
sfaghihi 8:e7fce7d9ebdd 557 float mtheta = (M_PI/6.0)*(m + (s/60.0))/5.0; // minute hand angle
sfaghihi 8:e7fce7d9ebdd 558 float stheta = (M_PI/6.0)*s/5.0; // second hand angle
sfaghihi 8:e7fce7d9ebdd 559 int hx = xc + r*sin(htheta)/4.5; // hour hand position
sfaghihi 8:e7fce7d9ebdd 560 int hy = yc - r*cos(htheta)/4.5; //
sfaghihi 8:e7fce7d9ebdd 561 int mx = xc + r*sin(mtheta)/1.9; // minute hand position
sfaghihi 8:e7fce7d9ebdd 562 int my = yc - r*cos(mtheta)/1.9; //
sfaghihi 8:e7fce7d9ebdd 563 int sx = xc + r*sin(stheta)/1.5; // second hand position
sfaghihi 8:e7fce7d9ebdd 564 int sy = yc - r*cos(stheta)/1.5; //
sfaghihi 11:80a6facfd9f1 565
sfaghihi 11:80a6facfd9f1 566 float ps = prevTime->second;
sfaghihi 11:80a6facfd9f1 567 float pm = prevTime->minute;
sfaghihi 11:80a6facfd9f1 568 float ph = prevTime->hour % 12;
sfaghihi 11:80a6facfd9f1 569 float hp_the = (M_PI/6.0)*(ph + (pm/60.0) + (ps/3600.0));
sfaghihi 11:80a6facfd9f1 570 float mp_the = (M_PI/6.0)*(pm + (ps/60.0))/5.0;
sfaghihi 11:80a6facfd9f1 571 float sp_the = (M_PI/6.0)*ps/5.0;
sfaghihi 13:334c591a982b 572 int hxp = xc + r*sin(hp_the)/4.0;
sfaghihi 13:334c591a982b 573 int hyp = yc - r*cos(hp_the)/4.0; //
sfaghihi 11:80a6facfd9f1 574 int mxp = xc + r*sin(mp_the)/1.9; // minute hand position
sfaghihi 11:80a6facfd9f1 575 int myp = yc - r*cos(mp_the)/1.9; //
sfaghihi 11:80a6facfd9f1 576 int sxp = xc + r*sin(sp_the)/1.5; // second hand position
sfaghihi 11:80a6facfd9f1 577 int syp = yc - r*cos(sp_the)/1.5;
sfaghihi 11:80a6facfd9f1 578
sfaghihi 12:dd5d8eea2e47 579 if (syp != sy || sxp != sx || face) {
sfaghihi 11:80a6facfd9f1 580 myTFT.line(xc, yc, sxp, syp, Black);
sfaghihi 11:80a6facfd9f1 581 }
sfaghihi 11:80a6facfd9f1 582
sfaghihi 12:dd5d8eea2e47 583 if (myp != my || mxp != mx || face) {
sfaghihi 11:80a6facfd9f1 584 myTFT.line(xc, yc, mxp, myp, Black);
sfaghihi 11:80a6facfd9f1 585 }
sfaghihi 11:80a6facfd9f1 586
sfaghihi 12:dd5d8eea2e47 587 if (hyp != hy || hxp != hx || face) {
sfaghihi 11:80a6facfd9f1 588 myTFT.line(xc, yc, hxp, hyp, Black);
sfaghihi 11:80a6facfd9f1 589 }
sfaghihi 11:80a6facfd9f1 590
sfaghihi 11:80a6facfd9f1 591 myTFT.line(xc, yc, hx, hy, Yellow);
sfaghihi 11:80a6facfd9f1 592 myTFT.line(xc, yc, mx, my, White);
sfaghihi 11:80a6facfd9f1 593 myTFT.line(xc, yc, sx, sy, Orange);
sfaghihi 11:80a6facfd9f1 594
amilner1 5:fe6910712822 595
amilner1 5:fe6910712822 596 }
amilner1 5:fe6910712822 597
sfaghihi 11:80a6facfd9f1 598 void Display::drawClockBig(TimeClass *time, bool face, TimeClass *prevTime)
sfaghihi 8:e7fce7d9ebdd 599 {
sfaghihi 8:e7fce7d9ebdd 600 int xc = myTFT.width()/2;
sfaghihi 8:e7fce7d9ebdd 601 int yc = myTFT.height()/2;
sfaghihi 11:80a6facfd9f1 602 int r = (myTFT.height()*5)/12;
sfaghihi 11:80a6facfd9f1 603 if (face) {
sfaghihi 11:80a6facfd9f1 604 myTFT.circle(xc, yc, r, White); // clock circle
sfaghihi 11:80a6facfd9f1 605 for (int i = 0; i < 12; i++)
sfaghihi 11:80a6facfd9f1 606 myTFT.line(xc+6*r/7*sin((float)i*M_PI/6.0), yc-6*r/7*cos((float)i*M_PI/6.0),
sfaghihi 8:e7fce7d9ebdd 607 xc + r*sin((float)i*M_PI/6.0), yc-r*cos((float)i*M_PI/6.0), 0xFFFFFF);
sfaghihi 11:80a6facfd9f1 608 }
sfaghihi 8:e7fce7d9ebdd 609
sfaghihi 8:e7fce7d9ebdd 610 //LOG("SO Near: %x\r\n", (void *)time);
sfaghihi 8:e7fce7d9ebdd 611 float h = time->hour % 12;
sfaghihi 8:e7fce7d9ebdd 612 float m = time->minute;
sfaghihi 8:e7fce7d9ebdd 613 float s = time->second;
sfaghihi 8:e7fce7d9ebdd 614 float htheta = (M_PI/6.0)*(h + (m/60.0) + (s/3600.0)); // hour hand angle
sfaghihi 8:e7fce7d9ebdd 615 float mtheta = (M_PI/6.0)*(m + (s/60.0))/5.0; // minute hand angle
sfaghihi 8:e7fce7d9ebdd 616 float stheta = (M_PI/6.0)*s/5.0; // second hand angle
sfaghihi 8:e7fce7d9ebdd 617 int hx = xc + r*sin(htheta)/4.5; // hour hand position
sfaghihi 8:e7fce7d9ebdd 618 int hy = yc - r*cos(htheta)/4.5; //
sfaghihi 8:e7fce7d9ebdd 619 int mx = xc + r*sin(mtheta)/1.9; // minute hand position
sfaghihi 8:e7fce7d9ebdd 620 int my = yc - r*cos(mtheta)/1.9; //
sfaghihi 8:e7fce7d9ebdd 621 int sx = xc + r*sin(stheta)/1.5; // second hand position
sfaghihi 8:e7fce7d9ebdd 622 int sy = yc - r*cos(stheta)/1.5; //
sfaghihi 11:80a6facfd9f1 623
sfaghihi 11:80a6facfd9f1 624 float ps = prevTime->second;
sfaghihi 11:80a6facfd9f1 625 float pm = prevTime->minute;
sfaghihi 11:80a6facfd9f1 626 float ph = prevTime->hour % 12;
sfaghihi 11:80a6facfd9f1 627 float hp_the = (M_PI/6.0)*(ph + (pm/60.0) + (ps/3600.0));
sfaghihi 11:80a6facfd9f1 628 float mp_the = (M_PI/6.0)*(pm + (ps/60.0))/5.0;
sfaghihi 11:80a6facfd9f1 629 float sp_the = (M_PI/6.0)*ps/5.0;
sfaghihi 11:80a6facfd9f1 630 int hxp = xc + r*sin(hp_the)/4.5;
sfaghihi 11:80a6facfd9f1 631 int hyp = yc - r*cos(hp_the)/4.5; //
sfaghihi 11:80a6facfd9f1 632 int mxp = xc + r*sin(mp_the)/1.9; // minute hand position
sfaghihi 11:80a6facfd9f1 633 int myp = yc - r*cos(mp_the)/1.9; //
sfaghihi 11:80a6facfd9f1 634 int sxp = xc + r*sin(sp_the)/1.5; // second hand position
sfaghihi 11:80a6facfd9f1 635 int syp = yc - r*cos(sp_the)/1.5;
sfaghihi 11:80a6facfd9f1 636
sfaghihi 12:dd5d8eea2e47 637 if (syp != sy || sxp != sx || face) {
sfaghihi 11:80a6facfd9f1 638 myTFT.line(xc, yc, sxp, syp, Black);
sfaghihi 8:e7fce7d9ebdd 639 }
sfaghihi 8:e7fce7d9ebdd 640
sfaghihi 12:dd5d8eea2e47 641 if (myp != my || mxp != mx || face) {
sfaghihi 11:80a6facfd9f1 642 myTFT.line(xc, yc, mxp, myp, Black);
sfaghihi 11:80a6facfd9f1 643 }
sfaghihi 11:80a6facfd9f1 644
sfaghihi 12:dd5d8eea2e47 645 if (hyp != hy || hxp != hx || face) {
sfaghihi 11:80a6facfd9f1 646 myTFT.line(xc, yc, hxp, hyp, Black);
sfaghihi 11:80a6facfd9f1 647 }
sfaghihi 11:80a6facfd9f1 648
sfaghihi 11:80a6facfd9f1 649 myTFT.line(xc, yc, hx, hy, Yellow);
sfaghihi 11:80a6facfd9f1 650 myTFT.line(xc, yc, mx, my, White);
sfaghihi 11:80a6facfd9f1 651 myTFT.line(xc, yc, sx, sy, Orange);
sfaghihi 11:80a6facfd9f1 652
sfaghihi 10:e5bcd9088d5d 653 }
sfaghihi 8:e7fce7d9ebdd 654
sfaghihi 9:c10fb4ac8aa7 655 char *month_names[] =
sfaghihi 9:c10fb4ac8aa7 656 {
sfaghihi 9:c10fb4ac8aa7 657 "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.",
sfaghihi 9:c10fb4ac8aa7 658 "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."
sfaghihi 9:c10fb4ac8aa7 659 };
sfaghihi 9:c10fb4ac8aa7 660 char *dow_names[] =
sfaghihi 9:c10fb4ac8aa7 661 {
sfaghihi 9:c10fb4ac8aa7 662 "Sunday", "Monday", "Tuesday", "Wednesday",
sfaghihi 9:c10fb4ac8aa7 663 "Thursday", "Friday", "Saturday"
sfaghihi 9:c10fb4ac8aa7 664 };
sfaghihi 9:c10fb4ac8aa7 665
sfaghihi 10:e5bcd9088d5d 666 void Display::cls()
sfaghihi 10:e5bcd9088d5d 667 {
sfaghihi 10:e5bcd9088d5d 668 myTFT.fillrect(0, 0, myTFT.width(), myTFT.height(), Black);
sfaghihi 10:e5bcd9088d5d 669 }
sfaghihi 9:c10fb4ac8aa7 670
amilner1 5:fe6910712822 671 void Display::drawDate(DateClass *date)
amilner1 5:fe6910712822 672 {
sfaghihi 8:e7fce7d9ebdd 673 /*int d = date->day;
sfaghihi 7:5269fbadd5d7 674 int m = date->month;
sfaghihi 8:e7fce7d9ebdd 675 int y = date->year;*/
sfaghihi 10:e5bcd9088d5d 676 //LOG("IN Date\r\n");
sfaghihi 9:c10fb4ac8aa7 677 //myTFT.set_font((unsigned char*)Arial28x28);
sfaghihi 17:7ba6c8e4945b 678 myTFT.fillrect(0, 185, 100, myTFT.height(), Black);
sfaghihi 13:334c591a982b 679 myTFT.foreground(Orange);
sfaghihi 12:dd5d8eea2e47 680 myTFT.locate(20,190);
sfaghihi 17:7ba6c8e4945b 681 text(20, 190, dow_names[date->dow]);
sfaghihi 10:e5bcd9088d5d 682 //LOG("OUTDATE\r\n");
sfaghihi 10:e5bcd9088d5d 683 //myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 17:7ba6c8e4945b 684 char buf[15];
sfaghihi 17:7ba6c8e4945b 685 sprintf(buf, "%d %s %d\n", date->day, month_names[(date->month)-1], date->year);
sfaghihi 12:dd5d8eea2e47 686 myTFT.locate(20,210);
sfaghihi 17:7ba6c8e4945b 687 text(20, 210, buf);
sfaghihi 13:334c591a982b 688 myTFT.foreground(White);
sfaghihi 13:334c591a982b 689 }
sfaghihi 13:334c591a982b 690
sfaghihi 14:85c51b4eff4b 691 void Display::drawImg(int x, int y, const unsigned char *img, int w, int h)
sfaghihi 13:334c591a982b 692 {
sfaghihi 13:334c591a982b 693 for (int i = 0; i < w; i++)
sfaghihi 13:334c591a982b 694 for (int j = 0; j < h; j++)
sfaghihi 17:7ba6c8e4945b 695 myTFT.pixel(x+i, y+j, (int)((((int)img[2*(w*j+i)+1]) << 8) & 0xff00) | ((int)img[2*(w*j+i)]&0x00ff));
sfaghihi 7:5269fbadd5d7 696 }
sfaghihi 7:5269fbadd5d7 697
sfaghihi 16:a639477091ad 698 void Display::text(int x, int y, const char *str)
sfaghihi 16:a639477091ad 699 {
sfaghihi 16:a639477091ad 700 while (*str != '\0')
sfaghihi 16:a639477091ad 701 myTFT.character(x++, y, *(str++));
sfaghihi 16:a639477091ad 702 }
sfaghihi 16:a639477091ad 703
sfaghihi 16:a639477091ad 704 extern DigitalOut led1;
sfaghihi 13:334c591a982b 705 void Display::drawWeather(WeatherClass *data, bool draw_img)
sfaghihi 7:5269fbadd5d7 706 {
sfaghihi 17:7ba6c8e4945b 707 if (draw_img)
sfaghihi 17:7ba6c8e4945b 708 drawImg(200, 10, weat_ico.pixel_data, weat_ico.width, weat_ico.height);
amilner1 15:452425c099ef 709 // if (data->type == sunny)
amilner1 15:452425c099ef 710 // drawImg(200, 10, sunny_pic.pixel_data, sunny_pic.width, sunny_pic.height);
sfaghihi 16:a639477091ad 711 myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 13:334c591a982b 712 myTFT.foreground(Yellow);
sfaghihi 17:7ba6c8e4945b 713 myTFT.locate(210, 95);
sfaghihi 17:7ba6c8e4945b 714 myTFT.fillrect(200, 90, 200+100, 140, Black);
sfaghihi 17:7ba6c8e4945b 715 text(210, 95, data->place);
sfaghihi 13:334c591a982b 716 myTFT.set_font((unsigned char*)Arial28x28);
sfaghihi 17:7ba6c8e4945b 717 myTFT.locate(200, 115);
sfaghihi 16:a639477091ad 718 char buf[30];
sfaghihi 16:a639477091ad 719 sprintf(buf, "%d %c\n", data->temp, data->isCelsius ? 'C' : 'F');
sfaghihi 17:7ba6c8e4945b 720 text(200, 115, buf);
sfaghihi 17:7ba6c8e4945b 721 myTFT.circle(244, 119, 3, Yellow);
sfaghihi 13:334c591a982b 722 myTFT.foreground(White);
sfaghihi 13:334c591a982b 723 myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 7:5269fbadd5d7 724
sfaghihi 7:5269fbadd5d7 725 }
sfaghihi 7:5269fbadd5d7 726
sfaghihi 7:5269fbadd5d7 727 void Display::drawAlarm(TimeClass *alarmTime)
sfaghihi 7:5269fbadd5d7 728 {
sfaghihi 18:2afeed90c051 729 myTFT.fillrect(160, 165, myTFT.width(), myTFT.height(), Black);
sfaghihi 19:450dbcda696e 730 if (alarmTime->second < 0)
sfaghihi 19:450dbcda696e 731 myTFT.foreground(Green);
sfaghihi 19:450dbcda696e 732 else
sfaghihi 19:450dbcda696e 733 myTFT.foreground(Red);
sfaghihi 17:7ba6c8e4945b 734 myTFT.set_font((unsigned char*)Arial24x23);
sfaghihi 18:2afeed90c051 735 myTFT.locate(160,200);
sfaghihi 17:7ba6c8e4945b 736 //LOG("OUTDATE\r\n");
sfaghihi 17:7ba6c8e4945b 737 char buf[15];
sfaghihi 17:7ba6c8e4945b 738 sprintf(buf, "%02d:%02d %s\n", alarmTime->hour == 12 ? 12 : alarmTime->hour%12, alarmTime->minute, alarmTime->hour>=12 ? "p.m." : "a.m.");
sfaghihi 18:2afeed90c051 739 text(160, 200, buf);
sfaghihi 17:7ba6c8e4945b 740 myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 17:7ba6c8e4945b 741 myTFT.foreground(White);
sfaghihi 7:5269fbadd5d7 742 }
sfaghihi 7:5269fbadd5d7 743
sfaghihi 19:450dbcda696e 744 void Display::flashAlarmSet(TimeClass *alarmTime, int set_alarm_state)
sfaghihi 19:450dbcda696e 745 {
sfaghihi 19:450dbcda696e 746 if (alarmTime->second < 0)
sfaghihi 19:450dbcda696e 747 myTFT.foreground(Green);
sfaghihi 19:450dbcda696e 748 else
sfaghihi 19:450dbcda696e 749 myTFT.foreground(Red);
sfaghihi 19:450dbcda696e 750 myTFT.set_font((unsigned char*)Arial24x23);
sfaghihi 19:450dbcda696e 751 if (set_alarm_state == 1)
sfaghihi 21:fe1769d5a01c 752 myTFT.fillrect(145, 195, 185, myTFT.height(), Black);
sfaghihi 19:450dbcda696e 753 else if (set_alarm_state == 2)
sfaghihi 21:fe1769d5a01c 754 myTFT.fillrect(200, 195, 245, myTFT.height(), Black);
sfaghihi 19:450dbcda696e 755 else if (set_alarm_state == 3)
sfaghihi 21:fe1769d5a01c 756 myTFT.fillrect(245, 195, 310, myTFT.height(), Black);
sfaghihi 21:fe1769d5a01c 757 wait(0.5);
sfaghihi 19:450dbcda696e 758 char buf[15];
sfaghihi 19:450dbcda696e 759 sprintf(buf, "%02d:%02d %s\n", alarmTime->hour == 12 ? 12 : alarmTime->hour%12, alarmTime->minute, alarmTime->hour>=12 ? "p.m." : "a.m.");
sfaghihi 21:fe1769d5a01c 760 myTFT.locate(150,200);
sfaghihi 21:fe1769d5a01c 761 text(150, 200, buf);
sfaghihi 19:450dbcda696e 762 myTFT.set_font((unsigned char*)Arial12x12);
sfaghihi 19:450dbcda696e 763 myTFT.foreground(White);
sfaghihi 19:450dbcda696e 764 }
sfaghihi 19:450dbcda696e 765
sfaghihi 11:80a6facfd9f1 766 void Display::drawAll(StateClass *state, bool doCls)
sfaghihi 7:5269fbadd5d7 767 {
sfaghihi 11:80a6facfd9f1 768 if (doCls)
sfaghihi 11:80a6facfd9f1 769 cls();
sfaghihi 8:e7fce7d9ebdd 770 if (!(state->screenActive))
sfaghihi 7:5269fbadd5d7 771 return;
sfaghihi 10:e5bcd9088d5d 772 if (state->screenState == 0) {
sfaghihi 11:80a6facfd9f1 773 drawClock(state->time, true, state->prevTime);
sfaghihi 12:dd5d8eea2e47 774 drawDate(state->date);
sfaghihi 13:334c591a982b 775 drawWeather(state->weather, true);
sfaghihi 10:e5bcd9088d5d 776 if (state->alarm)
sfaghihi 10:e5bcd9088d5d 777 drawAlarm(state->alarm);
sfaghihi 10:e5bcd9088d5d 778 } else if (state->screenState == 1) {
sfaghihi 11:80a6facfd9f1 779 drawClockBig(state->time, true, state->prevTime);
sfaghihi 8:e7fce7d9ebdd 780 }
sfaghihi 2:56a27b66d03a 781 }