From 8b14fc1fdb07b67e6ccc67aae2c2b376886faa2d Mon Sep 17 00:00:00 2001 From: Peter DeMartini Date: Sat, 18 Jan 2014 18:08:59 -0800 Subject: [PATCH] Fixes --- Adafruit_LEDBackpack/Adafruit_8x8.py | 30 ++++ Adafruit_LEDBackpack/Adafruit_8x8.pyc | Bin 0 -> 3817 bytes Adafruit_LEDBackpack/Adafruit_GFX.py | 2 +- Adafruit_LEDBackpack/Adafruit_GFX.pyc | Bin 0 -> 11361 bytes Adafruit_LEDBackpack/Adafruit_I2C.pyc | Bin 0 -> 6873 bytes Adafruit_LEDBackpack/Adafruit_LEDBackpack.pyc | Bin 0 -> 3301 bytes Adafruit_LEDBackpack/AlarmClock.py | 150 ++++++++++++++++++ Adafruit_LEDBackpack/AlarmClock.pyc | Bin 0 -> 5132 bytes Adafruit_LEDBackpack/alarm.py | 99 ++++++++++++ Adafruit_LEDBackpack/ex_8x8_color_alarm.py | 40 +++++ Adafruit_LEDBackpack/ex_8x8_color_alarm2.py | 61 +++++++ Adafruit_LEDBackpack/ex_8x8_color_text.py | 45 ++++++ Adafruit_LEDBackpack/glcdfont.pyc | Bin 0 -> 5684 bytes 13 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 Adafruit_LEDBackpack/Adafruit_8x8.pyc create mode 100644 Adafruit_LEDBackpack/Adafruit_GFX.pyc create mode 100644 Adafruit_LEDBackpack/Adafruit_I2C.pyc create mode 100644 Adafruit_LEDBackpack/Adafruit_LEDBackpack.pyc create mode 100644 Adafruit_LEDBackpack/AlarmClock.py create mode 100644 Adafruit_LEDBackpack/AlarmClock.pyc create mode 100644 Adafruit_LEDBackpack/alarm.py create mode 100644 Adafruit_LEDBackpack/ex_8x8_color_alarm.py create mode 100644 Adafruit_LEDBackpack/ex_8x8_color_alarm2.py create mode 100644 Adafruit_LEDBackpack/ex_8x8_color_text.py create mode 100644 Adafruit_LEDBackpack/glcdfont.pyc diff --git a/Adafruit_LEDBackpack/Adafruit_8x8.py b/Adafruit_LEDBackpack/Adafruit_8x8.py index f1446d79..5da731d0 100644 --- a/Adafruit_LEDBackpack/Adafruit_8x8.py +++ b/Adafruit_LEDBackpack/Adafruit_8x8.py @@ -98,3 +98,33 @@ def setPixel(self, x, y, color=1): self.disp.setBufferRow(y, buffer[y] | (1 << (x+8)) | (1 << x) ) else: self.disp.setBufferRow(y, buffer[y] & ~(1 << x) & ~(1 << (x+8)) ) + def drawPixel(self, x, y, color=1): + #"Sets a single pixel" + if ((y < 0) or (y >= 8)): + return + if ((x < 0) or (x >= 8)): + return + + # Added rotation code 4/16/13 - RH + if self.rotation == 1: + x, y = self.swap(x, y) + x = 8 - x - 1 + elif self.rotation == 2: + x = 8 - x - 1 + y = 8 - y - 1 + elif self.rotation == 3: + x, y = self.swap(x, y) + y = 8 - y - 1 + + x += 7 # ATTN: This might be a bug? On the color matrix, this causes x=0 to draw on the last line instead of the first. + x %= 8 + # Set the appropriate pixel + buffer = self.getBuffer() + if (color == 1): + self.setBufferRow(y, (buffer[y] | (1 << x)) & ~(1 << (x+8)) ) + elif (color == 2): + self.setBufferRow(y, (buffer[y] | 1 << (x+8)) & ~(1 << x) ) + elif (color == 3): + self.setBufferRow(y, buffer[y] | (1 << (x+8)) | (1 << x) ) + else: + self.setBufferRow(y, buffer[y] & ~(1 << x) & ~(1 << (x+8)) ) diff --git a/Adafruit_LEDBackpack/Adafruit_8x8.pyc b/Adafruit_LEDBackpack/Adafruit_8x8.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d8938117c76b24b5bb1786c4ee4c9ec51432abb GIT binary patch literal 3817 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 literal 0 HcmV?d00001 diff --git a/Adafruit_LEDBackpack/AlarmClock.py b/Adafruit_LEDBackpack/AlarmClock.py new file mode 100644 index 00000000..2bfc0674 --- /dev/null +++ b/Adafruit_LEDBackpack/AlarmClock.py @@ -0,0 +1,150 @@ +#!/usr/bin/python + +import time +import pygame + +class AlarmClock(object): + COLOR_TRANSPARENT=0 + COLOR_GREEN=1 + COLOR_RED=2 + COLOR_YELLOW=3 + current_color=1 + bg_color=0 + alarm_time='06:30' + org_alarm_time='06:30' + alarm_text='ALARM!!' + snooze_time=1 + org_snooze_time=0 + snooze_count=0 + debug=False + flash=True + sound='/home/pi/alarm.mp3' + + def __init__(self, debug=False): + self.debug=debug + self.alarm_time=self.get_time() + #copy over originals + self.org_alarm_time=self.alarm_time + self.org_snooze_time=self.snooze_time + + pygame.mixer.init() + pygame.mixer.music.load(self.sound) + #Debug Set Alarm for 2 minutes from now + if(self.debug): + self.set_snooze() + + def set_alarm(self, time=False): + " Set alarm time in Hours : Minutes (12:59) " + if(time): + self.alarm_time=time + else: + self.alarm_time=self.get_time() + self.org_alarm_time=self.alarm_time + + def set_snooze_time(self, mins=10): + " Set Snooze time, format in minutes " + self.snooze_time=mins + self.org_snooze_time=self.snooze_time + + def set_snooze(self): + " Set snooze " + if(self.debug): + print("Setting snooze") + ++self.snooze_count + # Increment Alarm Time + hrs = int(time.strftime('%I')) + mins = int(time.strftime('%M')) + self.snooze_time + if(mins > 59): + r = mins % 60 + hrs += (mins - r) / 60 + mins = r + if(hrs > 12): + hrs = hrs - 12 + if(hrs < 10): + hrs = "0" + str(hrs) + if(mins < 10): + mins = "0" + str(mins) + #Set alarm time + self.alarm_time="%s:%s"%(hrs, mins) + if(self.debug): + print("New Alarm Time %s" % self.alarm_time) + if(self.snooze_time > 3): + --self.snooze_time + #Stop Sound + self.tigger_sound(False) + + def stop_alarm(self): + " Stop Alarm and reset object " + if(self.debug): + print("Stopping alarm") + self.snooze_count=0 + self.alarm_time=self.org_alarm_time + self.snooze_time=self.org_snooze_time + self.tigger_sound(False) + + def tigger_sound(self, on): + " Trigger Sound " + if(on): + if(pygame.mixer.music.get_busy()): + return + if(self.debug): + print("Playing sound") + # Play sound up to 25 times + pygame.mixer.music.play(25) + else: + if(self.debug): + print("Pausing sound") + # Pause sound + pygame.mixer.music.pause() + + def get_time(self): + " Get Time " + return time.strftime("%I:%M") + + def get_dsp_time(self): + " GetDisplay Time " + return time.strftime("%I:%M%p")[:-1] + + def is_am(self): + " Returns true if it is AM " + return time.strftime("%p") == 'AM' + + def check_alarm(self): + " Check to see if the alarm should be triggered " + return self.get_time() == self.alarm_time + + def display_msg(self): + " Get the Current Display MSG" + self.set_colors() + if(self.check_alarm()): + self.tigger_sound(True) + return self.alarm_text + else: + return self.get_dsp_time() + + def set_colors(self): + " Get the Current Colors " + #Set the default BG to transparent + self.bg_color=self.COLOR_TRANSPARENT + if(self.is_am()): + self.current_color=self.COLOR_GREEN + else: + self.current_color=self.COLOR_YELLOW + #Check if alarm triggered + if(self.check_alarm()): + if(self.flash): + self.current_color=self.COLOR_TRANSPARENT + self.bg_color=self.COLOR_RED + self.flash=False + else: + self.current_color=self.COLOR_RED + self.bg_color=self.COLOR_TRANSPARENT + self.flash=True + + def get_color(self): + " Get the Current Color " + return self.current_color + + def get_bg(self): + " Get the Current BG " + return self.bg_color diff --git a/Adafruit_LEDBackpack/AlarmClock.pyc b/Adafruit_LEDBackpack/AlarmClock.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d3054616b32131051840fcac44555f1694e897f GIT binary patch literal 5132 zcmcIo-EtdM67CsE){o^lv12EJuuLcnB7`_VvAY;*YaPWHs%(WiGDV@ADOod?$JQTn zMg`d-SMUH_z??2Tnw{Ni5d%wHi*Jmt;#Nh_T@*MT_^qlG6uX|MZ&rPe zB>yYm`>#0cdsrg;domE|%xF(KoZyqV{dGO)#v@(#g|Tz8+S^|SEC>59@k?g3 z;)X=aO1vb|WhGvg=!z0IC0bG96^T}r_=7}Om3UR6H6;Qu?Z!H+O>ju!aiJFyI@^}8 z-23C!`}b@a)b`%C*}rwmu7KV=9uMQqNwV3c7w--y@Ar7y+0g`ThgiPzX>E$O?IjO18qI~a($DKsdL|Jte9BB@;8&tp5Si+i7 z^(a1^_OlA8ew>9_GK@9ws=b;-dtE*?xbHO}|q?Q)Vuy11t+Hn@BHv{@RNJhb@<7sMxtzbVH zO<_XNc=x@n4?cV=Xf>E)Mi<_1=sy8`X{wjx^*}w%Niki)>)a7pGH1_| zO!N2-S@f_l>`XMC(D_Xq_BJ?qVF8~!+5HqXyJ_B00Uer$aSFP+MlooXiCGK3un?wU&pnte-`S1^Rk?x z;QuaBh4=st6u1TnUdDsm<$s=CRu!oPE(1&5Lyvq}hk9Z8%*y`~WT|jj)@Q~7))!Te z8;UX|SzPpTKj6_-KGy>hw-sV+9gfq$yIKzHB`}cxSu*Mej%S%68=twa{p2H@B_DI) zy_#|vLvc@$cEfIMSbGKMt@xWjt2sDe5p7t7<5q(?svwc^e)ov52VBVz9&9+u469sg z-)89%%f~R`^fEYFZF+N-^!srdI#8m>C*6UKwMV-0z4Wv>1=#1Zon7VS~$;W@d}brh)OfNc-Y(9Fyo3n$hufcayHp)%5@WN?Qk@YD&) z7@ow`0BEC=P`&T4;gry(|x6|aa?t@v!Kl?#$prxNuwd;%cJy9X@^c9CUT=?(`z+uGQ7inE#x zyZ7AF#?T!R4#g(9Kw$!ri@H-7nGm$KXDdcg=?96WyK~(co(<~0G0`#mMVp{F#>pgSrX`m8ypKB7RJv#iX(#Mv|**&s`&7+j8m1nt`f+xvlo?+F?nhTs<-8BN~A zhTY+Ss_~&0g@^Vy@I%#-@I>t)LfTC%LGw87od(%Bu(8^c9mn}-W{=0yK@=RuuvH5( zjsh1gK25P}?g^K1u4!iQ`6T@*zw&aP98EkM`5z!yfwqM>(K5Q|2NgknEaUw83CsGaPOfB z56pI}{rR@pX&or4ANDcTARy*-%2C+K?V6pPRz@W4xrjP31p+7W)z04D!!I?CT1Q8N zu04hoXFHgk2ik_sn_$g7j^+*Q`WT0$`BGr-#p@PcxT@NRNue8`4Kn<0QkuxgxFCa7 zCrik`*n5Ff`W*<&U48Wv0acycgr*TyZ- z`P=UZZ|GsDB^-vsaWoy^)ZB)Exx?iim%Ci(PeU!;;HD!SM+G;%=^UrC9UFxk^_W10 zIBPhI8;&=I8Epv6I^!CSly35)8x=YbRyO#%u{8J+Q%+Ve<@IP J#(}?9{2wB9>=OV0 literal 0 HcmV?d00001 diff --git a/Adafruit_LEDBackpack/alarm.py b/Adafruit_LEDBackpack/alarm.py new file mode 100644 index 00000000..ff1099df --- /dev/null +++ b/Adafruit_LEDBackpack/alarm.py @@ -0,0 +1,99 @@ +#!/usr/bin/python +# Example code to test scrolling text across multiple 8x8 matrices. +# WARNING! Make sure to use a level shifter between the Raspberry Pi +# and matrices running at 5v to avoid overpowering the Pi. + +import RPi.GPIO as GPIO +import time +import random +from Adafruit_8x8 import ColorEightByEight +from AlarmClock import AlarmClock + +GPIO.setmode(GPIO.BOARD) + +ledbtns = [] +#Green +ledbtns.append({'led' : 11, 'button' : 12}) +#Yello +ledbtns.append({'led' : 13, 'button' : 16}) +#Red +ledbtns.append({'led' : 15, 'button' : 18}) + +for elm in ledbtns: + GPIO.setup(elm['led'], GPIO.OUT) + GPIO.output(elm['led'], GPIO.HIGH) + GPIO.setup(elm['button'], GPIO.IN) + +#GPIO.setup(11, GPIO.OUT) +#GPIO.output(11, GPIO.LOW) +#GPIO.output(11, GPIO.HIGH) + +MATRICES = 5 +matrix = [] + +alarm = AlarmClock(debug=True) + +message = alarm.display_msg() + +for i in range(0,MATRICES): + matrix.append(ColorEightByEight(address=0x70+i)) + matrix[i].setTextWrap(False) # Allow text to run off edges + matrix[i].setRotation(3) + matrix[i].setBrightness(1) + matrix[i].setTextSize(1) + matrix[i].setTextColor(alarm.get_color(), alarm.get_bg()) + +# Defintions for Alarm Hardware + +def update_matrixes(): + message = alarm.display_msg() + + for i in range(0,MATRICES): + # Draw message in each matrix buffer, offseting each by 8 pixels + #matrix[i].clear() + matrix[i].setCursor(x - i * 8, 1) + matrix[i].printMessage(message) + matrix[i].setTextColor(alarm.get_color(), alarm.get_bg()) + + # Write data to matrices in separate loop so it's less jumpy + for i in range(0,MATRICES): + matrix[i].writeDisplay() + +# Horiz. position of text -- starts off right edge +x = 2 +iter = 0 + +while True: + iter += 1 + + # Update Display + update_matrixes() + + if alarm.check_alarm(): + #Start Game + for i in range(0, 6): + #Get Random LEDBUTTON + current = random.choice(ledbtns); + #Turn it on + GPIO.output(current['led'], GPIO.LOW); + not_pressed = True + #Wait until it is pressed + s = 0 + while not_pressed: + if not GPIO.input(current['button']): + not_pressed = False + #TURN LIGHT OFF + GPIO.output(current['led'], GPIO.HIGH) + update_matrixes() + time.sleep(1) + #Update Display + if not s % 100: + update_matrixes() + s += 1 + #Sleep + time.sleep(0.01) + + #Stop Alarm + alarm.stop_alarm() + #Sleep for second before updating the display + time.sleep(1) diff --git a/Adafruit_LEDBackpack/ex_8x8_color_alarm.py b/Adafruit_LEDBackpack/ex_8x8_color_alarm.py new file mode 100644 index 00000000..4dc0c825 --- /dev/null +++ b/Adafruit_LEDBackpack/ex_8x8_color_alarm.py @@ -0,0 +1,40 @@ +#!/usr/bin/python +# Example code to test scrolling text across multiple 8x8 matrices. +# WARNING! Make sure to use a level shifter between the Raspberry Pi +# and matrices running at 5v to avoid overpowering the Pi. + +import time +from Adafruit_8x8 import ColorEightByEight + +def get_time(): + return time.strftime("%I:%M %p") + +MATRICES = 4 +matrix = [] +color = 2 + +for i in range(0,MATRICES): + matrix.append(ColorEightByEight(address=0x70+i)) + matrix[i].setTextWrap(False) # Allow text to run off edges + matrix[i].setRotation(3) + matrix[i].setBrightness(4) + matrix[i].setTextSize(1) + +message = get_time() + +# Horiz. position of text -- starts off right edge +x = 1 +while True: + message = get_time() + + for i in range(0,MATRICES): + # Draw message in each matrix buffer, offseting each by 8 pixels + matrix[i].clear() + matrix[i].setCursor(x - i * 8, 1) + matrix[i].printMessage(message) + + # Write data to matrices in separate loop so it's less jumpy + for i in range(0,MATRICES): + matrix[i].writeDisplay() + + time.sleep(60) diff --git a/Adafruit_LEDBackpack/ex_8x8_color_alarm2.py b/Adafruit_LEDBackpack/ex_8x8_color_alarm2.py new file mode 100644 index 00000000..3e57677c --- /dev/null +++ b/Adafruit_LEDBackpack/ex_8x8_color_alarm2.py @@ -0,0 +1,61 @@ +#!/usr/bin/python +# Example code to test scrolling text across multiple 8x8 matrices. +# WARNING! Make sure to use a level shifter between the Raspberry Pi +# and matrices running at 5v to avoid overpowering the Pi. + +import time +from Adafruit_8x8 import ColorEightByEight + +def get_time(): + s = time.strftime("%I:%M") + if(s[0] == '0'): + s=s[1:] + if(time.strftime('%p') == 'AM'): + s=s+'A' + else: + s=s+'P' + return s + +MATRICES = 3 +matrix = [] +color=2 + +info_matrix = ColorEightByEight(address=0x73) +info_matrix.setTextWrap(False) # Allow text to run off edges +info_matrix.setRotation(3) +info_matrix.setBrightness(4) +info_matrix.setTextSize(1) + +for i in range(0,MATRICES): + matrix.append(ColorEightByEight(address=0x70+i)) + matrix[i].setTextWrap(False) # Allow text to run off edges + matrix[i].setRotation(3) + matrix[i].setBrightness(4) + matrix[i].setTextSize(1) + +#message = 'Hello World!!!' +message = get_time() + +# Horiz. position of text -- starts off right edge +x = 0 +while True: + + for i in range(0,MATRICES): + # Draw message in each matrix buffer, offseting each by 8 pixels + matrix[i].clear() + matrix[i].setCursor(x - i * 8, 1) + matrix[i].printMessage(message) + + # Write data to matrices in separate loop so it's less jumpy + for i in range(0,MATRICES): + matrix[i].writeDisplay() + + #print('Test') + + info_matrix.clear() + info_matrix.setCursor(2,1) + info_matrix.printMessage(time.strftime('%p')[0]) + info_matrix.writeDisplay() + + time.sleep(60) + message = get_time() diff --git a/Adafruit_LEDBackpack/ex_8x8_color_text.py b/Adafruit_LEDBackpack/ex_8x8_color_text.py new file mode 100644 index 00000000..34d51026 --- /dev/null +++ b/Adafruit_LEDBackpack/ex_8x8_color_text.py @@ -0,0 +1,45 @@ +#!/usr/bin/python +# Example code to test scrolling text across multiple 8x8 matrices. +# WARNING! Make sure to use a level shifter between the Raspberry Pi +# and matrices running at 5v to avoid overpowering the Pi. + +import time +from Adafruit_8x8 import ColorEightByEight + +MATRICES = 4 +matrix = [] + +for i in range(0,MATRICES): + matrix.append(ColorEightByEight(address=0x70+i)) + matrix[i].setTextWrap(False) # Allow text to run off edges + matrix[i].setRotation(3) + matrix[i].setBrightness(4) + matrix[i].setTextSize(1) + +#message = 'Hello World!!!' +message = 'Super Sweet!!!' + +# Horiz. position of text -- starts off right edge +x = 8 * MATRICES + +while True: + for i in range(0,MATRICES): + # Draw message in each matrix buffer, offseting each by 8 pixels + matrix[i].clear() + matrix[i].setCursor(x - i * 8, 1) + matrix[i].printMessage(message) + + # Write data to matrices in separate loop so it's less jumpy + for i in range(0,MATRICES): + matrix[i].writeDisplay() + + #print('Test') + + # Move text position left by 1 pixel. + # When it's completely gone off left edge, start over off right. + length = len(message) * 6 * matrix[i].getTextSize() + x -= 1 + if(x < -(length)): + x = 8 * MATRICES + + time.sleep(0.15) diff --git a/Adafruit_LEDBackpack/glcdfont.pyc b/Adafruit_LEDBackpack/glcdfont.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf8db3e7808ab4aad54ed49fab6aa950e1f36c2a GIT binary patch literal 5684 zcmeI0%Wu?G6vt1eJX#dXLq!pJ3e*=Pi1@0!%0mzew2D%dv7I}`q0m-lP*DUFOmyc$ z7bcph(Ty>2Z(NwTap8a9#+_RejV5Z;&-WaDm!FTF?o>`ce(&qtbI$MnZl}}v-RxPF zkG~wO+r|Gn`Tu5qS_?rkYnY97Sn99~X6MZg4b!ODP_O2-yTFlS^)xm)(as(^=-kSW zdtkX%n3fM$F8Uenw85d?3Ulh3te>B!ne}VYuUD|GZ+MBU>$Eh@iN>aT6QXB0XBN84 zQn#g9PBf#JS-RYb#%5c(!ii?1m=DoCmgZQR>qN)sJfD+C=NF?_TDr>8)s_}my2jGA zmKIvN&WT>+yIgMxTU=@`v9#3EG7pcv2o+5{kq99zcZ*QzWN3w@8(cv2N;l#O!S1Vk zbhVTIUQ0Jxy2;YbmTvi@-D+u#rwP&QRrOjy^lg^bdK01}l679R&_qQu^zA-}X<_Rv z(UVDW?(n1_I!aXWLZJ!ruSPn#lZv5(q#Q*E@;HbA4L4Z2)6!iY(%qKsv2?GcK1=s` zA{*Ta(c))Q;hYpGQ(aE%aOB}yJ-lS9Au6vr%y;ci@0qVJ?J+BkATa8#KRu;lSv}@gq%`h z%Q2uIDZ(arbd2&&F$aCfYP zn3h8d!DRe%z}Pwp`?w{Ht(m~`!~e4TfUm_AlF|wmGCeJLKge#h5&pAl^qw5~YJWCiMVOcX& zUW=2fN*OUNqFw5t((LvCh=H23kOLOS5~5?23zG@xs94S-S!xu~L~}VDapMT_&R$)L`N`5FYx)7(WeI^@=UdZ^ z2g+e!#~7t2&IW0sV=_6e_q~q#9mqypXbgo7dNW+XXfhN%<3(QFgp?vuCJ~yPhaEmj zf-%ZQ$NcT1{tI2xF`wc@kn}`9JnjdQ!_#MpcNT`BF`jr>GzW?%&yms* zThxKl(IhtFVG9bvUK5rk-3XiXd5&S|(W30kM|bnYA2JMx+k#$)~)f6CHReo!Hr zX{$Wh6TVl=QoDGqHkA^LM@ASJ`w|185_Y6RB4l(&5eD}pDKHaK5NxL}Iq8?%KG&Qd zDvS{Z70yk1(BYZuC@O$wPUGJiLwMliKW*t5OV1Wfd>*iL%EKU%=L&(775*C>5+|0M z3_b7DI6N#tW9Upe!zdbpO~ayzpRn?1Xc#j&LI{{A*WFb#PrHsK_|I!&^aZ~nm>_8W=^5JDUnCB?irC+#2gvH zXhy!U?1~b_=${y+E02bsi1V+-iA`fPKa_HiQN7&5cA;V2V~A#68?K@hFozd9m#gd+ z53!s%Wuvofc_;@EBKpr-DjTl@uO}9Q8)=0u+hIq)!5$7zu=zs4(^bFq=SL}}F_YOC}YA2evn;T=d8#-S0VZTh!FZt*5 zW&SC2)IUMtCyd020Y72r$SyN-Us)7kk)>_E7yW1q!Pa!5@rF@Gylt{{-aog~jDBtd zY`PobUjGFL=eZ{Rvwm|zbS&xe-}s?nJahy}v0ZG$Ui5GbB8B*LebCYcOPtsZK1#u} zWp6Hy{53M++8!myw(0Gd|{%LOv9X1Acf>6>H1 ztHK+?QQ-;Ub>TgMKl`mYM_4M{BrFy#7w!_~2`hy80wuEMsIWoUB^(s?3!TCi;hZof z=!=Ht0b#qaRX8E+5S9shh1-SI!rj7dVXZJ%ST7tB9v23LmT;}GPFNz;g=d8kp-=TfWHI5wv2%+b>xsFR?#silkPwAoSJmFgUD4oZg73;*w&M{RYa(bjSA!hcJit)o}3 zz{RsVF><_7tF`q;)@sKm)5&8r2Xze%YSyJN{^`4+E5PKkr59sHrTaJQ9Plqu+v=Dc XJ=&