>>\x00???\x00AAA\x00BBB\x00CCC\x00DDD\x00FFF\x00GGG\x00HHH\x00III\x00JJJ\x00KKK\x00LLL\x00MMM\x00NNN\x00PPP\x00QQQ\x00RRR\x00SSS\x00TTT\x00VVV\x00WWW\x00YYY\x00ZZZ\x00[[[\x00\x5c\x5c\x5c\x00]]]\x00^^^\x00___\x00```\x00aaa\x00bbb\x00ccc\x00ddd\x00eee\x00fff\x00hhh\x00iii\x00jjj\x00kkk\x00lll\x00nnn\x00ooo\x00ppp\x00qqq\x00rrr\x00sss\x00uuu\x00vvv\x00www\x00xxx\x00yyy\x00yzy\x00zzz\x00{{{\x00|||\x00}}}\x00\x7f\x7f\x7f\x00\x81\x81\x81\x00\x82\x82\x82\x00\x85\x85\x85\x00\x86\x86\x86\x00\x87\x87\x87\x00\x88\x88\x88\x00\x89\x89\x89\x00\x8a\x8a\x8a\x00\xaeh\xf1\x00\x8c\x8c\x8c\x00\x8d\x8d\x8d\x00\x8e\x8e\x8e\x00\x8f\x8f\x8f\x00\x90\x90\x90\x00\x92\x92\x92\x00\x93\x93\x93\x00\x94\x94\x94\x00\x95\x95\x95\x00\xb2{\xe6\x00\x96\x96\x96\x00\x97\x97\x97\x00\x98\x98\x98\x00\x99\x99\x99\x00\x9a\x9a\x9a\x00\x9b\x9b\x9b\x00\xba~\xf3\x00\xbd|\xfa\x00\x9c\x9c\x9c\x00\x9d\x9d\x9d\x00\x9e\x9e\x9e\x00\x9f\x9f\x9f\x00\xa0\xa0\xa0\x00\xa1\xa1\xa1\x00\xa2\xa2\xa2\x00\xa3\xa3\xa3\x00\xa4\xa4\xa4\x00\xa5\xa5\xa5\x00\xa6\xa6\xa6\x00\xa7\xa7\xa7\x00\xa8\xa8\xa8\x00\xa9\xa9\xa9\x00\xab\xab\xab\x00\xac\xac\xac\x00\xad\xad\xad\x00\xae\xae\xae\x00\xaf\xaf\xaf\x00\xaf\xb0\xaf\x00\xb0\xb0\xb0\x00\xb1\xb1\xb1\x00\xb2\xb2\xb2\x00\xb3\xb3\xb3\x00\xb4\xb4\xb4\x00\xb5\xb5\xb5\x00\xcf\x9d\xfe\x00\xb6\xb6\xb6\x00\xb7\xb7\xb7\x00\xb8\xb8\xb8\x00\xb9\xb9\xb9\x00\xba\xba\xba\x00\xbb\xbb\xbb\x00\xca\xad\xe7\x00\xbc\xbc\xbc\x00\xbc\xbc\xbd\x00\xd5\xa6\xff\x00\xbd\xbd\xbd\x00\xbe\xbe\xbe\x00\xbe\xbf\xbd\x00\xbf\xbf\xbf\x00\xc8\xb8\xd7\x00\xc0\xc0\xc0\x00\xd2\xb1\xf1\x00\xc1\xc1\xc1\x00\xc2\xc2\xc2\x00\xc1\xc4\xbe\x00\xc1\xc4\xbf\x00\xc3\xc3\xc3\x00\xc2\xc5\xbe\x00\xc4\xc4\xc4\x00\xc5\xc5\xc5\x00\xc6\xc6\xc6\x00\xc7\xc7\xc7\x00\xc8\xc8\xc8\x00\xc9\xc9\xc9\x00\xd8\xbc\xf2\x00\xca\xca\xca\x00\xcb\xcb\xcb\x00\xcc\xcc\xcc\x00\xcd\xcd\xcd\x00\xce\xce\xce\x00\xdb\xc3\xf1\x00\xcf\xcf\xcf\x00\xd0\xd0\xd0\x00\xd1\xd1\xd1\x00\xd2\xd2\xd2\x00\xd3\xd3\xd3\x00\xd2\xd4\xd0\x00\xd4\xd4\xd4\x00\xe1\xc8\xf8\x00\xd5\xd5\xd5\x00\xd6\xd6\xd6\x00\xd7\xd7\xd7\x00\xd8\xd8\xd8\x00\xd9\xd9\xd9\x00\xda\xda\xda\x00\xdb\xdb\xdb\x00\xe5\xd3\xf5\x00\xdc\xdc\xdc\x00\xdd\xdd\xdd\x00\xde\xde\xde\x00\xe9\xd4\xfd\x00\xdf\xdf\xdf\x00\xdf\xdf\xe0\x00\xe0\xe0\xe0\x00\xe1\xe1\xe1\x00\xe2\xe2\xe2\x00\xe3\xe3\xe3\x00\xe4\xe4\xe4\x00\xe5\xe5\xe5\x00\xe6\xe6\xe6\x00\xe7\xe7\xe7\x00\xec\xe4\xf3\x00\xe8\xe8\xe8\x00\xe9\xe9\xe9\x00\xea\xea\xea\x00\xeb\xeb\xeb\x00\xec\xec\xec\x00\xee\xee\xee\x00\xef\xef\xef\x00\xf0\xef\xf1\x00\xf0\xf0\xf0\x00\xf1\xf1\xf1\x00\xf2\xf2\xf2\x00\xf3\xf3\xf3\x00\xf4\xf4\xf4\x00\xf5\xf5\xf5\x00\xf9\xf2\xff\x00\xf6\xf5\xf7\x00\xf5\xf6\xf4\x00\xf6\xf6\xf6\x00\xf7\xf7\xf7\x00\xf6\xf8\xf4\x00\xf8\xf8\xf8\x00\xf9\xf9\xf9\x00\xfa\xfa\xfa\x00\xfb\xfb\xfb\x00\xfb\xfb\xfc\x00\xfc\xfc\xfc\x00\xfe\xfc\xff\x00\xfd\xfd\xfd\x00\xfe\xfe\xfe\x00\xfe\xfe\xff\x00\xff\xfe\xff\x00\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xe7\xc1\xcf\xc3\xf4\xf4\xc2\xb6\xeb\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xe7\xc0\xd0\xc3\xf4\xd1\x97\xbe\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xa7m\xdf\xf4\xf4\xf4\xf4\xe6\xbf\xd2\xc3\xf4\x8f\x1a1\xc8\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xebW\x15p\xe7\xf4\xf4\xf4\xf4\xe6\xbc\xd6\xc4\xf4\xe6\x8b;\x09k\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd53+\xb4\xea\xf4\xf4\xf4\xf4\xf4\xf4\xc3\xe0\xcc\xf4\xf4\xbe\xa9\xa9\x17;\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd22=\xd8\xf4\xf4\xf4\xf4\xf4\xecI(!6\x5c\xc8\xf4\xbe\xad\xea\xdb\x1a)\xe6\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xddJ4\xe1\xf4\xf4\xf4\xf4\xf4\xf4\xeelt`^&\x01(y\xa7\xeb\xea\xa3%<\xf4\xf4\xf4\xf4\xf4\xf4\xee{\x1b\xd2\xf4\xf4\xe7f\xd6\xf4\xf4\xf4\xf4\xe9\xba\xdf\xce\xe1h\x05?\xd9\xe6\xa7\xb4\x0aa\xe6\xf4\xf4\xf4\xf4\xc4\x1d\x8b\xf4\xf4\xde8\x22\xc6\xf4\xf4\xec\xdd\xce\xb1\xde\xae\xc6\xf4\xa9\x128\xca\x9f\xc1w\x08\xb9\xf4\xf4\xf4\xe9_/\xf4\xf4\xeaE3\xda\xf4\xf1\xc2xH9\x80\xe6\xa7\xb3\xe7\xbf\x93%6\x92\xbf\xb2>K\xf4\xf4\xf4\xdd(\xa9\xf4\xf4o+\xc6\xf4\xeb|$-p\x93\xa3\xe0\xa9\x9f\xcd\xb6\x93\xdb\x12N\xc2\xb8q\x17\xd7\xf4\xf4\xe7\x85\xf4\xf4\xc71}\xf4\xf4b\x1d\x8f\xf4\xf4\xec\xb9\xde\xa4\x92sm\x89\xddz\x03\xa1\xb8\x87(y\xf4\xf4\xf4\xf4\xf4\xf4r9\xd7\xf4\x87\x19\xb9\xf4\xf4\xf4\xe1\xb7\xe0\x9d\x90]\x16j\xc8\x95\x1aE\xba\x93@>\xe0\xf4\xf4\xf4\xf4\xe1M]\xf4\xf4\x84\x95\xf4\xf4\xf4\xf4\xe8\xbb\xe5\x9a\x88\x94(;\xbc\x90[\x02\xba\x97S\x1f\xa3\xf4\xf4\xf4\xf4\xc4C\x87\xf4\xf4\xf0\xf4\xf4\xf4\xf4\xe3\xc5\xa0\xd4\x9e\x88\x93a\x17\xaa\x8e\x85V\xb0\x9de\x1c}\xe6\xf1\xe7\xeb\xa9:\x9c\xee\xe0\xe0\xe6\xe6\xe7\xe4\xbdun\xaf\xa5\x88\x8c\x88\x06~\x8c\x8d\x97\xa9\xac}\x1eo\xcac\xbf\xd3\x8b3\x8f\xdaiU\xbe\xcd\xcd\xcb\x98dv\xa2\xa8\x88\x8b\x95\x04r\x8c\x8b\x8d\x9d\xad\x82\x1bo\xe9\x15\xb9\xf4\xb1>\xa1\xf4\x80>\xd5\xf0\xee\xed\xc9\x91\x9b\xb5\xa6\x88\x8d\x81\x0bw\x8c\x8b\x8f\x8d\xaa\x80\x19\x88\xec*\x86\xf4\xc7D\x83\xf4\xcd\x18\xca\xf4\xf4\xf4\xf2\xef\xf3\xdc\x9f\x88\x92R }\x8c\x83J\x90\xaas\x16\xb0\xeeXL\xf4\xe7NY\xf4\xf45^\xea\xf4\xf4\xf4\xf4\xf4\xde\xa1\x89\x8e\x17T\x89\x8dR\x0f\x95\x9f]*\xc4\xf1\x9c\x11\xf4\xf4}6\xce\xf4\xcc\x0c\x96\xec\xf4\xf4\xf4\xf4\xde\xa1\x90? \xcf\xbc\x8f\x17O\x99\x8d7Q\xca\xf4\xde\x1a\x95\xf4\xcd5s\xf4\xf4\x97\x0dx\xd5\xe2\xee\xf4\xde\xa3\x8bPx\xe6\xf4b\x00\xc4\x9fk\x10\x85\xce\xf4\xeai-\xf4\xf4|+\xb2\xf4\xf4\xb7\x1d.b\x93\xf4\xdf\xa3\x87\x9d\x9f\xea\xd5\x0eN\xcf\x9d'8\xb0\xdb\xf4\xf4\xcf!\x7f\xf4\xf1M7\xbe\xf1\xf4\xf4\x8eMT\xf4\xdf\xa3\x86\xa1\xab\xc10)\x8e\xd1\x80\x13\xb6\xc1\xf4\xf4\xf4\xf0\x82\x1f\xbc\xf4\xdfF1\xd1\xf4\xf4\xf4\xf4\xf4\xf4\xdf\xa4\xa3\xbal&@\x8a\x88\x93\x1a\x82\xf4\xd7\xf4\xf4\xf4\xf4\xe2U-\xc7\xf4\xe2g\xd1\xf4\xf4\xf4\xf4\xf4\xf4\xde\x8dlG\x1bZ\xe7\x96\xaa\x89T\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd9I,\xb7\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xcaB)Hj\xe6\xf4\x95\xd9\xec\xe7\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd9Z\x1dr\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd6q\x8c\xd1\xb3\xe2\xf4\x96\xe6\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xe6\x87&$\x83\xf4\xf4\xf4\xf4\xf4\xf4\xe0\xa7\xc7\xdf\xb1\xe1\xf4\xc7\xee\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf0\xd3w%\x079k\x94\xae\xc3\xe7\xa1\xc2\xdf\xb3\xe1\xf4\xee\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xec\xdf\xb7h>#\x14A\xf4\xa3\xc1\xf0\xd8\xec\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf0\xee\xec\xeb\xf0\xe1\xa7\xc3\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xf9PyLoT - the Python picking and Localisation Tool\x0a\x0aPyLoT is a program which is capable of picking seismic phases,\x0aexporting these as numerous standard phase format and localize the corresponding\x0aseismic event with external software as, e.g.:
\x0a\x0a- NonLinLoc
\x0a- HypoInvers
\x0a- HypoSat
\x0a- whatever you want ...
\x0a
\x0aRead more on the\x0aPyLoT WikiPage.
\x0aBug reports are very much appreciated and can also be delivered on our\x0aPyLoT TracPage after\x0asuccessful registration.
\x0a\x0a"
+qt_resource_name = "\x00\x04\x00\x06\xec0\x00h\x00e\x00l\x00p\x00\x05\x00o\xa6S\x00i\x00c\x00o\x00n\x00s\x00\x09\x0aa\xba\xa7\x00p\x00i\x00c\x00o\x00n\x00.\x00p\x00n\x00g\x00\x0a\x0a\xc8\xf7'\x00f\x00i\x00l\x00t\x00e\x00r\x00.\x00p\x00n\x00g\x00\x08\x06`Gg\x00z\x00o\x00o\x00m\x00.\x00p\x00n\x00g\x00\x08\x0f\x9eY\x87\x00p\x00i\x00c\x00k\x00.\x00p\x00n\x00g\x00\x0b\x0a*w\xe7\x00p\x00r\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\x00\x09\x0aa\xa4\xa7\x00s\x00i\x00c\x00o\x00n\x00.\x00p\x00n\x00g\x00\x09\x03g\xbf\x9f\x00p\x00y\x00l\x00o\x00t\x00.\x00i\x00c\x00o\x00\x0a\x0c\xba\xf2|\x00i\x00n\x00d\x00e\x00x\x00.\x00h\x00t\x00m\x00l"
+qt_resource_struct = "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x92\xa6\x00\x00\x00P\x00\x00\x00\x00\x00\x01\x00\x00\x15\x06\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\x8c\x1f\x00\x00\x00\x98\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xcc\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x01\x00\x00\x02\xa6\x00\x00\x00f\x00\x00\x00\x00\x00\x01\x00\x002\xdd\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x9bh"
+def qInitResources():
+ QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/pylot/core/pick/earllatepicker.py b/pylot/core/pick/earllatepicker.py
new file mode 100755
index 00000000..ab241880
--- /dev/null
+++ b/pylot/core/pick/earllatepicker.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""
+ Created Mar 2015
+ Transcription of the rezipe of Diehl et al. (2009) for consistent phase
+ picking. For a given inital (the most likely) pick, the corresponding earliest
+ and latest possible pick is calculated based on noise measurements in front of
+ the most likely pick and signal wavelength derived from zero crossings.
+
+ :author: Ludger Kueperkoch / MAGS2 EP3 working group
+"""
+
+import argparse
+import obspy
+from pylot.core.pick.utils import earllatepicker
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--X', type=~obspy.core.stream.Stream, help='time series (seismogram) read with obspy module read')
+ parser.add_argument('--nfac', type=int, help='(noise factor), nfac times noise level to calculate latest possible pick')
+ parser.add_argument('--TSNR', type=tuple, help='length of time windows around pick used to determine SNR \
+ [s] (Tnoise, Tgap, Tsignal)')
+ parser.add_argument('--Pick1', type=float, help='Onset time of most likely pick')
+ parser.add_argument('--iplot', type=int, help='if set, figure no. iplot occurs')
+ args = parser.parse_args()
+ earllatepicker(args.X, args.nfac, args.TSNR, args.Pick1, args.iplot)
diff --git a/pylot/core/pick/fmpicker.py b/pylot/core/pick/fmpicker.py
new file mode 100755
index 00000000..0ccbc1d1
--- /dev/null
+++ b/pylot/core/pick/fmpicker.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""
+ Created Mar 2015
+ Function to derive first motion (polarity) for given phase onset based on zero crossings.
+
+ :author: MAGS2 EP3 working group / Ludger Kueperkoch
+"""
+
+import argparse
+import obspy
+from pylot.core.pick.utils import fmpicker
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--Xraw', type=~obspy.core.stream.Stream, help='unfiltered time series (seismogram) read with obspy module read')
+ parser.add_argument('--Xfilt', type=~obspy.core.stream.Stream, help='filtered time series (seismogram) read with obspy module read')
+ parser.add_argument('--pickwin', type=float, help='length of pick window [s] for first motion determination')
+ parser.add_argument('--Pick', type=float, help='Onset time of most likely pick')
+ parser.add_argument('--iplot', type=int, help='if set, figure no. iplot occurs')
+ args = parser.parse_args()
+ fmpicker(args.Xraw, args.Xfilt, args.pickwin, args.Pick, args.iplot)
+
diff --git a/pylot/core/pick/getSNR.py b/pylot/core/pick/getSNR.py
new file mode 100644
index 00000000..bbfbdba5
--- /dev/null
+++ b/pylot/core/pick/getSNR.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""
+ Created Mar/Apr 2015
+ Function to calculate SNR of certain part of seismogram relative
+ to given time. Returns SNR and SNR [dB].
+
+ :author: Ludger Kueperkoch /MAGS EP3 working group
+"""
+
+import argparse
+import obspy
+from pylot.core.pick.utils import getSNR
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--data', '-d', type=~obspy.core.stream.Stream,
+ help='time series (seismogram) read with obspy module '
+ 'read',
+ dest='data')
+ parser.add_argument('--tsnr', '-s', type=tuple,
+ help='length of time windows around pick used to '
+ 'determine SNR [s] (Tnoise, Tgap, Tsignal)',
+ dest='tsnr')
+ parser.add_argument('--time', '-t', type=float,
+ help='initial time from which noise and signal windows '
+ 'are calculated',
+ dest='time')
+ args = parser.parse_args()
+ print getSNR(args.data, args.tsnr, args.time)
diff --git a/pylot/core/pick/getnoisewin.py b/pylot/core/pick/getnoisewin.py
new file mode 100644
index 00000000..8c21913f
--- /dev/null
+++ b/pylot/core/pick/getnoisewin.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import argparse
+import numpy
+from pylot.core.pick.utils import getnoisewin
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--t', type=~numpy.array, help='numpy array of time stamps')
+ parser.add_argument('--t1', type=float, help='time from which relativ to it noise window is extracted')
+ parser.add_argument('--tnoise', type=float, help='length of time window [s] for noise part extraction')
+ parser.add_argument('--tgap', type=float, help='safety gap between signal (t1=onset) and noise')
+ args = parser.parse_args()
+ getnoisewin(args.t, args.t1, args.tnoise, args.tgap)
diff --git a/pylot/core/pick/getsignalwin.py b/pylot/core/pick/getsignalwin.py
new file mode 100644
index 00000000..4b3013b8
--- /dev/null
+++ b/pylot/core/pick/getsignalwin.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import argparse
+import numpy
+from pylot.core.pick.utils import getsignalwin
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--t', type=~numpy.array, help='numpy array of time stamps')
+ parser.add_argument('--t1', type=float, help='time from which relativ to it signal window is extracted')
+ parser.add_argument('--tsignal', type=float, help='length of time window [s] for signal part extraction')
+ args = parser.parse_args()
+ getsignalwin(args.t, args.t1, args.tsignal)
diff --git a/pylot/core/pick/utils.py b/pylot/core/pick/utils.py
index 9bd5dfc9..15de2312 100644
--- a/pylot/core/pick/utils.py
+++ b/pylot/core/pick/utils.py
@@ -11,25 +11,25 @@
import numpy as np
import matplotlib.pyplot as plt
from obspy.core import Stream
-import argparse
+
def earllatepicker(X, nfac, TSNR, Pick1, iplot=None):
'''
- Function to derive earliest and latest possible pick after Diehl & Kissling (2009)
+ Function to derive earliest and latest possible pick after Diehl & Kissling (2009)
as reasonable uncertainties. Latest possible pick is based on noise level,
- earliest possible pick is half a signal wavelength in front of most likely
+ earliest possible pick is half a signal wavelength in front of most likely
pick given by PragPicker or manually set by analyst. Most likely pick
- (initial pick Pick1) must be given.
-
+ (initial pick Pick1) must be given.
+
:param: X, time series (seismogram)
:type: `~obspy.core.stream.Stream`
-
+
:param: nfac (noise factor), nfac times noise level to calculate latest possible pick
:type: int
:param: TSNR, length of time windows around pick used to determine SNR [s]
:type: tuple (T_noise, T_gap, T_signal)
-
+
:param: Pick1, initial (most likely) onset time, starting point for earllatepicker
:type: float
@@ -39,14 +39,15 @@ def earllatepicker(X, nfac, TSNR, Pick1, iplot=None):
assert isinstance(X, Stream), "%s is not a stream object" % str(X)
- LPick = None
+ LPick = None
EPick = None
PickError = None
print 'earllatepicker: Get earliest and latest possible pick relative to most likely pick ...'
x = X[0].data
- t = np.arange(0, X[0].stats.npts / X[0].stats.sampling_rate, X[0].stats.delta)
- #get latest possible pick
+ t = np.arange(0, X[0].stats.npts / X[0].stats.sampling_rate,
+ X[0].stats.delta)
+ # get latest possible pick
#get noise window
inoise = getnoisewin(t, Pick1, TSNR[0], TSNR[1])
#get signal window
@@ -57,8 +58,8 @@ def earllatepicker(X, nfac, TSNR, Pick1, iplot=None):
ilup = np.where(x[isignal] > nlevel)
ildown = np.where(x[isignal] < -nlevel)
if len(ilup[0]) <= 1 and len(ildown[0]) <= 1:
- print 'earllatepicker: Signal lower than noise level, misspick?'
- return
+ print 'earllatepicker: Signal lower than noise level, misspick?'
+ return
il = min([ilup[0][0], ildown[0][0]])
LPick = t[isignal][il]
@@ -68,72 +69,67 @@ def earllatepicker(X, nfac, TSNR, Pick1, iplot=None):
zc = []
zc.append(Pick1)
i = 0
- for j in range(isignal[0][1],isignal[0][len(t[isignal]) - 1]):
- i = i+ 1
- if x[j-1] <= 0 and x[j] >= 0:
- zc.append(t[isignal][i])
- elif x[j-1] > 0 and x[j] <= 0:
- zc.append(t[isignal][i])
+ for j in range(isignal[0][1], isignal[0][len(t[isignal]) - 1]):
+ i = i + 1
+ if x[j - 1] <= 0 and x[j] >= 0:
+ zc.append(t[isignal][i])
+ elif x[j - 1] > 0 and x[j] <= 0:
+ zc.append(t[isignal][i])
if len(zc) == 3:
break
#calculate maximum period T0 of signal out of zero crossings
- T0 = max(np.diff(zc)) #this is half wave length!
+ T0 = max(np.diff(zc)) #this is half wave length!
#T0/4 is assumed as time difference between most likely and earliest possible pick!
- EPick = Pick1 - T0/2
+ EPick = Pick1 - T0 / 2
#get symmetric pick error as mean from earliest and latest possible pick
#by weighting latest possible pick two times earliest possible pick
- diffti_tl = LPick - Pick1
+ diffti_tl = LPick - Pick1
diffti_te = Pick1 - EPick
- PickError = (diffti_te + 2 * diffti_tl) / 3
+ PickError = (diffti_te + 2 * diffti_tl) / 3
if iplot is not None:
- plt.figure(iplot)
- p1, = plt.plot(t, x, 'k')
- p2, = plt.plot(t[inoise], x[inoise])
- p3, = plt.plot(t[isignal], x[isignal], 'r')
- p4, = plt.plot([t[0], t[int(len(t)) - 1]], [nlevel, nlevel], '--k')
- p5, = plt.plot(zc, [0, 0, 0], '*g', markersize=14)
- plt.legend([p1, p2, p3, p4, p5], ['Data', 'Noise Window', 'Signal Window', 'Noise Level', 'Zero Crossings'], \
+ plt.figure(iplot)
+ p1, = plt.plot(t, x, 'k')
+ p2, = plt.plot(t[inoise], x[inoise])
+ p3, = plt.plot(t[isignal], x[isignal], 'r')
+ p4, = plt.plot([t[0], t[int(len(t)) - 1]], [nlevel, nlevel], '--k')
+ p5, = plt.plot(zc, [0, 0, 0], '*g', markersize=14)
+ plt.legend([p1, p2, p3, p4, p5],
+ ['Data', 'Noise Window', 'Signal Window', 'Noise Level',
+ 'Zero Crossings'], \
loc='best')
- plt.plot([t[0], t[int(len(t)) - 1]], [-nlevel, -nlevel], '--k')
- plt.plot([Pick1, Pick1], [max(x), -max(x)], 'b', linewidth=2)
- plt.plot([LPick, LPick], [max(x)/2, -max(x)/2], '--k')
- plt.plot([EPick, EPick], [max(x)/2, -max(x)/2], '--k')
- plt.plot([Pick1 + PickError, Pick1 + PickError], [max(x)/2, -max(x)/2], 'r--')
- plt.plot([Pick1 - PickError, Pick1 - PickError], [max(x)/2, -max(x)/2], 'r--')
- plt.xlabel('Time [s] since %s' % X[0].stats.starttime)
- plt.yticks([])
- ax = plt.gca()
- ax.set_xlim([t[inoise[0][0]] - 2, t[isignal[0][len(isignal) - 1]] + 3])
- plt.title('Earliest-/Latest Possible/Most Likely Pick & Symmetric Pick Error, %s' % X[0].stats.station)
- plt.show()
- raw_input()
- plt.close(iplot)
+ plt.plot([t[0], t[int(len(t)) - 1]], [-nlevel, -nlevel], '--k')
+ plt.plot([Pick1, Pick1], [max(x), -max(x)], 'b', linewidth=2)
+ plt.plot([LPick, LPick], [max(x) / 2, -max(x) / 2], '--k')
+ plt.plot([EPick, EPick], [max(x) / 2, -max(x) / 2], '--k')
+ plt.plot([Pick1 + PickError, Pick1 + PickError],
+ [max(x) / 2, -max(x) / 2], 'r--')
+ plt.plot([Pick1 - PickError, Pick1 - PickError],
+ [max(x) / 2, -max(x) / 2], 'r--')
+ plt.xlabel('Time [s] since %s' % X[0].stats.starttime)
+ plt.yticks([])
+ ax = plt.gca()
+ ax.set_xlim([t[inoise[0][0]] - 2, t[isignal[0][len(isignal) - 1]] + 3])
+ plt.title(
+ 'Earliest-/Latest Possible/Most Likely Pick & Symmetric Pick Error, %s' %
+ X[0].stats.station)
+ plt.show()
+ raw_input()
+ plt.close(iplot)
return EPick, LPick, PickError
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument('--X', type=~obspy.core.stream.Stream, help='time series (seismogram) read with obspy module read')
- parser.add_argument('--nfac', type=int, help='(noise factor), nfac times noise level to calculate latest possible pick')
- parser.add_argument('--TSNR', type=tuple, help='length of time windows around pick used to determine SNR \
- [s] (Tnoise, Tgap, Tsignal)')
- parser.add_argument('--Pick1', type=float, help='Onset time of most likely pick')
- parser.add_argument('--iplot', type=int, help='if set, figure no. iplot occurs')
- args = parser.parse_args()
- earllatepicker(args.X, args.nfac, args.TSNR, args.Pick1, args.iplot)
-
def fmpicker(Xraw, Xfilt, pickwin, Pick, iplot=None):
'''
Function to derive first motion (polarity) of given phase onset Pick.
Calculation is based on zero crossings determined within time window pickwin
- after given onset time.
-
+ after given onset time.
+
:param: Xraw, unfiltered time series (seismogram)
:type: `~obspy.core.stream.Stream`
-
+
:param: Xfilt, filtered time series (seismogram)
:type: `~obspy.core.stream.Stream`
@@ -152,149 +148,146 @@ def fmpicker(Xraw, Xfilt, pickwin, Pick, iplot=None):
FM = None
if Pick is not None:
- print 'fmpicker: Get first motion (polarity) of onset using unfiltered seismogram...'
+ print 'fmpicker: Get first motion (polarity) of onset using unfiltered seismogram...'
- xraw = Xraw[0].data
- xfilt = Xfilt[0].data
- t = np.arange(0, Xraw[0].stats.npts / Xraw[0].stats.sampling_rate, Xraw[0].stats.delta)
- #get pick window
- ipick = np.where((t <= min([Pick + pickwin, len(Xraw[0])])) & (t >= Pick))
- #remove mean
- xraw[ipick] = xraw[ipick] - np.mean(xraw[ipick])
- xfilt[ipick] = xfilt[ipick] - np.mean(xfilt[ipick])
+ xraw = Xraw[0].data
+ xfilt = Xfilt[0].data
+ t = np.arange(0, Xraw[0].stats.npts / Xraw[0].stats.sampling_rate,
+ Xraw[0].stats.delta)
+ # get pick window
+ ipick = np.where(
+ (t <= min([Pick + pickwin, len(Xraw[0])])) & (t >= Pick))
+ #remove mean
+ xraw[ipick] = xraw[ipick] - np.mean(xraw[ipick])
+ xfilt[ipick] = xfilt[ipick] - np.mean(xfilt[ipick])
- #get next zero crossing after most likely pick
- #initial onset is assumed to be the first zero crossing
- #first from unfiltered trace
- zc1 = []
- zc1.append(Pick)
- index1 = []
- i = 0
- for j in range(ipick[0][1],ipick[0][len(t[ipick]) - 1]):
- i = i+ 1
- if xraw[j-1] <= 0 and xraw[j] >= 0:
- zc1.append(t[ipick][i])
- index1.append(i)
- elif xraw[j-1] > 0 and xraw[j] <= 0:
- zc1.append(t[ipick][i])
- index1.append(i)
- if len(zc1) == 3:
- break
+ #get next zero crossing after most likely pick
+ #initial onset is assumed to be the first zero crossing
+ #first from unfiltered trace
+ zc1 = []
+ zc1.append(Pick)
+ index1 = []
+ i = 0
+ for j in range(ipick[0][1], ipick[0][len(t[ipick]) - 1]):
+ i = i + 1
+ if xraw[j - 1] <= 0 and xraw[j] >= 0:
+ zc1.append(t[ipick][i])
+ index1.append(i)
+ elif xraw[j - 1] > 0 and xraw[j] <= 0:
+ zc1.append(t[ipick][i])
+ index1.append(i)
+ if len(zc1) == 3:
+ break
- #if time difference betweeen 1st and 2cnd zero crossing
- #is too short, get time difference between 1st and 3rd
- #to derive maximum
- if zc1[1] - zc1[0] <= Xraw[0].stats.delta:
- li1 = index1[1]
- else:
- li1 = index1[0]
- if np.size(xraw[ipick[0][1]:ipick[0][li1]]) == 0:
- print 'earllatepicker: Onset on unfiltered trace too emergent for first motion determination!'
- P1 = None
- else:
- imax1 = np.argmax(abs(xraw[ipick[0][1]:ipick[0][li1]]))
- islope1 = np.where((t >= Pick) & (t <= Pick + t[imax1]))
- #calculate slope as polynomal fit of order 1
- xslope1 = np.arange(0, len(xraw[islope1]), 1)
- P1 = np.polyfit(xslope1, xraw[islope1], 1)
- datafit1 = np.polyval(P1, xslope1)
+ #if time difference betweeen 1st and 2cnd zero crossing
+ #is too short, get time difference between 1st and 3rd
+ #to derive maximum
+ if zc1[1] - zc1[0] <= Xraw[0].stats.delta:
+ li1 = index1[1]
+ else:
+ li1 = index1[0]
+ if np.size(xraw[ipick[0][1]:ipick[0][li1]]) == 0:
+ print 'earllatepicker: Onset on unfiltered trace too emergent for first motion determination!'
+ P1 = None
+ else:
+ imax1 = np.argmax(abs(xraw[ipick[0][1]:ipick[0][li1]]))
+ islope1 = np.where((t >= Pick) & (t <= Pick + t[imax1]))
+ #calculate slope as polynomal fit of order 1
+ xslope1 = np.arange(0, len(xraw[islope1]), 1)
+ P1 = np.polyfit(xslope1, xraw[islope1], 1)
+ datafit1 = np.polyval(P1, xslope1)
- #now using filterd trace
- #next zero crossing after most likely pick
- zc2 = []
- zc2.append(Pick)
- index2 = []
- i = 0
- for j in range(ipick[0][1],ipick[0][len(t[ipick]) - 1]):
- i = i+ 1
- if xfilt[j-1] <= 0 and xfilt[j] >= 0:
- zc2.append(t[ipick][i])
- index2.append(i)
- elif xfilt[j-1] > 0 and xfilt[j] <= 0:
- zc2.append(t[ipick][i])
- index2.append(i)
- if len(zc2) == 3:
- break
+ #now using filterd trace
+ #next zero crossing after most likely pick
+ zc2 = []
+ zc2.append(Pick)
+ index2 = []
+ i = 0
+ for j in range(ipick[0][1], ipick[0][len(t[ipick]) - 1]):
+ i = i + 1
+ if xfilt[j - 1] <= 0 and xfilt[j] >= 0:
+ zc2.append(t[ipick][i])
+ index2.append(i)
+ elif xfilt[j - 1] > 0 and xfilt[j] <= 0:
+ zc2.append(t[ipick][i])
+ index2.append(i)
+ if len(zc2) == 3:
+ break
- #if time difference betweeen 1st and 2cnd zero crossing
- #is too short, get time difference between 1st and 3rd
- #to derive maximum
- if zc2[1] - zc2[0] <= Xfilt[0].stats.delta:
- li2 = index2[1]
- else:
- li2 = index2[0]
- if np.size(xfilt[ipick[0][1]:ipick[0][li2]]) == 0:
- print 'earllatepicker: Onset on filtered trace too emergent for first motion determination!'
- P2 = None
- else:
- imax2 = np.argmax(abs(xfilt[ipick[0][1]:ipick[0][li2]]))
- islope2 = np.where((t >= Pick) & (t <= Pick + t[imax2]))
- #calculate slope as polynomal fit of order 1
- xslope2 = np.arange(0, len(xfilt[islope2]), 1)
- P2 = np.polyfit(xslope2, xfilt[islope2], 1)
- datafit2 = np.polyval(P2, xslope2)
-
- #compare results
- if P1 is not None and P2 is not None:
- if P1[0] < 0 and P2[0] < 0:
- FM = 'D'
- elif P1[0] >= 0 and P2[0] < 0:
- FM = '-'
- elif P1[0] < 0 and P2[0]>= 0:
- FM = '-'
- elif P1[0] > 0 and P2[0] > 0:
- FM = 'U'
- elif P1[0] <= 0 and P2[0] > 0:
- FM = '+'
- elif P1[0] > 0 and P2[0] <= 0:
- FM = '+'
+ #if time difference betweeen 1st and 2cnd zero crossing
+ #is too short, get time difference between 1st and 3rd
+ #to derive maximum
+ if zc2[1] - zc2[0] <= Xfilt[0].stats.delta:
+ li2 = index2[1]
+ else:
+ li2 = index2[0]
+ if np.size(xfilt[ipick[0][1]:ipick[0][li2]]) == 0:
+ print 'earllatepicker: Onset on filtered trace too emergent for first motion determination!'
+ P2 = None
+ else:
+ imax2 = np.argmax(abs(xfilt[ipick[0][1]:ipick[0][li2]]))
+ islope2 = np.where((t >= Pick) & (t <= Pick + t[imax2]))
+ #calculate slope as polynomal fit of order 1
+ xslope2 = np.arange(0, len(xfilt[islope2]), 1)
+ P2 = np.polyfit(xslope2, xfilt[islope2], 1)
+ datafit2 = np.polyval(P2, xslope2)
+
+ #compare results
+ if P1 is not None and P2 is not None:
+ if P1[0] < 0 and P2[0] < 0:
+ FM = 'D'
+ elif P1[0] >= 0 and P2[0] < 0:
+ FM = '-'
+ elif P1[0] < 0 and P2[0] >= 0:
+ FM = '-'
+ elif P1[0] > 0 and P2[0] > 0:
+ FM = 'U'
+ elif P1[0] <= 0 and P2[0] > 0:
+ FM = '+'
+ elif P1[0] > 0 and P2[0] <= 0:
+ FM = '+'
if iplot is not None:
- plt.figure(iplot)
- plt.subplot(2,1,1)
- plt.plot(t, xraw, 'k')
- p1, = plt.plot([Pick, Pick], [max(xraw), -max(xraw)], 'b', linewidth=2)
- if P1 is not None:
- p2, = plt.plot(t[islope1], xraw[islope1])
- p3, = plt.plot(zc1, np.zeros(len(zc1)), '*g', markersize=14)
- p4, = plt.plot(t[islope1], datafit1, '--g', linewidth=2)
- plt.legend([p1, p2, p3, p4], ['Pick', 'Slope Window', 'Zero Crossings', 'Slope'], \
- loc='best')
- plt.text(Pick + 0.02, max(xraw) / 2, '%s' % FM, fontsize=14)
- ax = plt.gca()
- ax.set_xlim([t[islope1[0][0]] - 0.1, t[islope1[0][len(islope1) - 1]] + 0.3])
- plt.yticks([])
- plt.title('First-Motion Determination, %s, Unfiltered Data' % Xraw[0].stats.station)
+ plt.figure(iplot)
+ plt.subplot(2, 1, 1)
+ plt.plot(t, xraw, 'k')
+ p1, = plt.plot([Pick, Pick], [max(xraw), -max(xraw)], 'b', linewidth=2)
+ if P1 is not None:
+ p2, = plt.plot(t[islope1], xraw[islope1])
+ p3, = plt.plot(zc1, np.zeros(len(zc1)), '*g', markersize=14)
+ p4, = plt.plot(t[islope1], datafit1, '--g', linewidth=2)
+ plt.legend([p1, p2, p3, p4],
+ ['Pick', 'Slope Window', 'Zero Crossings', 'Slope'], \
+ loc='best')
+ plt.text(Pick + 0.02, max(xraw) / 2, '%s' % FM, fontsize=14)
+ ax = plt.gca()
+ ax.set_xlim(
+ [t[islope1[0][0]] - 0.1, t[islope1[0][len(islope1) - 1]] + 0.3])
+ plt.yticks([])
+ plt.title('First-Motion Determination, %s, Unfiltered Data' % Xraw[
+ 0].stats.station)
- plt.subplot(2,1,2)
- plt.title('First-Motion Determination, Filtered Data')
- plt.plot(t, xfilt, 'k')
- p1, = plt.plot([Pick, Pick], [max(xfilt), -max(xfilt)], 'b', linewidth=2)
- if P2 is not None:
- p2, = plt.plot(t[islope2], xfilt[islope2])
- p3, = plt.plot(zc2, np.zeros(len(zc2)), '*g', markersize=14)
- p4, = plt.plot(t[islope2], datafit2, '--g', linewidth=2)
- plt.text(Pick + 0.02, max(xraw) / 2, '%s' % FM, fontsize=14)
- ax = plt.gca()
- ax.set_xlim([t[islope2[0][0]] - 0.1, t[islope2[0][len(islope2) - 1]] + 0.3])
- plt.xlabel('Time [s] since %s' % Xraw[0].stats.starttime)
- plt.yticks([])
- plt.show()
- raw_input()
- plt.close(iplot)
+ plt.subplot(2, 1, 2)
+ plt.title('First-Motion Determination, Filtered Data')
+ plt.plot(t, xfilt, 'k')
+ p1, = plt.plot([Pick, Pick], [max(xfilt), -max(xfilt)], 'b',
+ linewidth=2)
+ if P2 is not None:
+ p2, = plt.plot(t[islope2], xfilt[islope2])
+ p3, = plt.plot(zc2, np.zeros(len(zc2)), '*g', markersize=14)
+ p4, = plt.plot(t[islope2], datafit2, '--g', linewidth=2)
+ plt.text(Pick + 0.02, max(xraw) / 2, '%s' % FM, fontsize=14)
+ ax = plt.gca()
+ ax.set_xlim(
+ [t[islope2[0][0]] - 0.1, t[islope2[0][len(islope2) - 1]] + 0.3])
+ plt.xlabel('Time [s] since %s' % Xraw[0].stats.starttime)
+ plt.yticks([])
+ plt.show()
+ raw_input()
+ plt.close(iplot)
return FM
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument('--Xraw', type=~obspy.core.stream.Stream, help='unfiltered time series (seismogram) read with obspy module read')
- parser.add_argument('--Xfilt', type=~obspy.core.stream.Stream, help='filtered time series (seismogram) read with obspy module read')
- parser.add_argument('--pickwin', type=float, help='length of pick window [s] for first motion determination')
- parser.add_argument('--Pick', type=float, help='Onset time of most likely pick')
- parser.add_argument('--iplot', type=int, help='if set, figure no. iplot occurs')
- args = parser.parse_args()
- earllatepicker(args.Xraw, args.Xfilt, args.pickwin, args.Pick, args.iplot)
-
def getSNR(X, TSNR, t1):
'''
@@ -314,35 +307,28 @@ def getSNR(X, TSNR, t1):
assert isinstance(X, Stream), "%s is not a stream object" % str(X)
- SNR = None
- SNRdB = None
x = X[0].data
- t = np.arange(0, X[0].stats.npts / X[0].stats.sampling_rate, X[0].stats.delta)
- #get noise window
+ t = np.arange(0, X[0].stats.npts / X[0].stats.sampling_rate,
+ X[0].stats.delta)
+
+ # get noise window
inoise = getnoisewin(t, t1, TSNR[0], TSNR[1])
+
#get signal window
isignal = getsignalwin(t, t1, TSNR[2])
if np.size(inoise) < 1:
- print 'getSNR: Empty array inoise, check noise window!'
- return
+ print 'getSNR: Empty array inoise, check noise window!'
+ return
elif np.size(isignal) < 1:
- print 'getSNR: Empty array isignal, check signal window!'
- return
+ print 'getSNR: Empty array isignal, check signal window!'
+ return
#calculate ratios
- SNR = max(abs(x[isignal])) / np.mean(abs(x[inoise]))
+ noiselevel = np.mean(abs(x[inoise]))
+ SNR = max(abs(x[isignal])) / noiselevel
SNRdB = 20 * np.log10(SNR)
-
- return SNR, SNRdB
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument('--X', type=~obspy.core.stream.Stream, help='time series (seismogram) read with obspy module read')
- parser.add_argument('--TSNR', type=tuple, help='length of time windows around pick used to determine SNR \
- [s] (Tnoise, Tgap, Tsignal)')
- parser.add_argument('--t1', type=float, help='initial time from which noise and signal windows are calculated')
- args = parser.parse_args()
- getSNR(args.X, args.TSNR, args.t1)
+ return SNR, SNRdB, noiselevel
def getnoisewin(t, t1, tnoise, tgap):
@@ -352,7 +338,7 @@ def getnoisewin(t, t1, tnoise, tgap):
:param: t, array of time stamps
:type: numpy array
-
+
:param: t1, time from which relativ to it noise window is extracted
:type: float
@@ -361,26 +347,18 @@ def getnoisewin(t, t1, tnoise, tgap):
:param: tgap, safety gap between t1 (onset) and noise window to
ensure, that noise window contains no signal
- :type: float
+ :type: float
'''
-
+
inoise = None
- #get noise window
+ # get noise window
inoise = np.where((t <= max([t1 - tgap, 0])) \
- & (t >= max([t1 - tnoise - tgap, 0])))
+ & (t >= max([t1 - tnoise - tgap, 0])))
if np.size(inoise) < 1:
- print 'getnoisewin: Empty array inoise, check noise window!'
-
+ print 'getnoisewin: Empty array inoise, check noise window!'
+
return inoise
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument('--t', type=array, help='numpy array of time stamps')
- parser.add_argument('--t1', type=float, help='time from which relativ to it noise window is extracted')
- parser.add_argument('--tnoise', type=float, help='length of time window [s] for noise part extraction')
- parser.add_argument('--tgap', type=float, help='safety gap between signal (t1=onset) and noise')
- args = parser.parse_args()
- getnoisewin(args.t, args.t1, args.tnoise, args.tgap)
def getsignalwin(t, t1, tsignal):
'''
@@ -389,27 +367,21 @@ def getsignalwin(t, t1, tsignal):
:param: t, array of time stamps
:type: numpy array
-
+
:param: t1, time from which relativ to it signal window is extracted
:type: float
:param: tsignal, length of time window [s] for signal level calculation
:type: float
'''
-
+
inoise = None
- #get signal window
+ # get signal window
isignal = np.where((t <= min([t1 + tsignal, len(t)])) \
- & (t >= t1))
+ & (t >= t1))
if np.size(isignal) < 1:
- print 'getsignalwin: Empty array isignal, check signal window!'
-
+ print 'getsignalwin: Empty array isignal, check signal window!'
+
return isignal
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument('--t', type=array, help='numpy array of time stamps')
- parser.add_argument('--t1', type=float, help='time from which relativ to it signal window is extracted')
- parser.add_argument('--tsignal', type=float, help='length of time window [s] for signal part extraction')
- args = parser.parse_args()
- getsignalwin(args.t, args.t1, args.tsignal)
+
+
diff --git a/pylot/core/util/widgets.py b/pylot/core/util/widgets.py
index 7dd35262..1d62c65e 100644
--- a/pylot/core/util/widgets.py
+++ b/pylot/core/util/widgets.py
@@ -14,34 +14,18 @@ matplotlib.rcParams['backend.qt4'] = 'PySide'
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvas
+from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg
from matplotlib.widgets import MultiCursor
-from PySide.QtGui import (QAction,
- QApplication,
- QComboBox,
- QDateTimeEdit,
- QDialog,
- QDialogButtonBox,
- QDoubleSpinBox,
- QGroupBox,
- QGridLayout,
- QHBoxLayout,
- QIcon,
- QKeySequence,
- QLabel,
- QLineEdit,
- QMessageBox,
- QSpinBox,
- QTabWidget,
- QToolBar,
- QVBoxLayout,
- QWidget)
-from PySide.QtCore import (QSettings,
- Qt,
- QUrl,
- Signal,
- Slot)
+from PySide.QtGui import QAction, QApplication,QComboBox, QDateTimeEdit,\
+ QDialog, QDialogButtonBox, QDoubleSpinBox, QGroupBox, QGridLayout,\
+ QIcon, QKeySequence, QLabel, QLineEdit, QMessageBox, QPixmap, QSpinBox,\
+ QTabWidget, QToolBar, QVBoxLayout, QWidget
+from PySide.QtCore import QSettings, Qt, QUrl, Signal, Slot
from PySide.QtWebKit import QWebView
+from obspy import Stream, UTCDateTime
+from obspy.core.event import Pick, WaveformStreamID
from pylot.core.read import FilterOptions
+from pylot.core.pick.utils import getSNR
from pylot.core.util.defaults import OUTPUTFORMATS
from pylot.core.util import prepTimeAxis, getGlobalTimes
@@ -71,6 +55,7 @@ class MPLWidget(FigureCanvas):
self._parent = None
self.setParent(parent)
self.figure = Figure()
+ self.figure.set_facecolor((.92, .92, .92))
# attribute plotdict is an dictionary connecting position and a name
self.plotdict = dict()
# create axes
@@ -91,39 +76,58 @@ class MPLWidget(FigureCanvas):
def setPlotDict(self, key, value):
self.plotdict[key] = value
+ def clearPlotDict(self):
+ self.plotdict = dict()
+
def getParent(self):
return self._parent
def setParent(self, parent):
self._parent = parent
- def plotWFData(self, wfdata, title = None):
- self.axes.lines = []
+ def plotWFData(self, wfdata, title=None, zoomx=None, zoomy=None):
+ self.axes.cla()
+ self.clearPlotDict()
wfstart = getGlobalTimes(wfdata)[0]
for n, trace in enumerate(wfdata):
+ channel = trace.stats.channel
station = trace.stats.station
- print('plotting station: %s' % station)
+ msg = 'plotting %s channel of station %s' % (channel, station)
+ print(msg)
stime = trace.stats.starttime - wfstart
time_ax = prepTimeAxis(stime, trace)
trace.detrend()
trace.detrend('demean')
trace.normalize(trace.data.max() * 2)
self.axes.plot(time_ax, trace.data + n, 'k')
- self.axes.hold(True)
xlabel = 'seconds since {0}'.format(wfstart)
ylabel = ''
self.updateWidget(xlabel, ylabel, title)
- self.setPlotDict(n, station)
+ self.setPlotDict(n, (station, channel))
self.axes.autoscale(tight=True)
+ if zoomx:
+ self.axes.set_xlim(zoomx)
+ if zoomy:
+ self.axes.set_ylim(zoomy)
+ self.draw()
+
+ def setYTickLabels(self, pos, labels):
+ self.axes.set_yticks(pos)
+ self.axes.set_yticklabels(labels)
+ self.draw()
def updateXLabel(self, text):
self.axes.set_xlabel(text)
+ self.draw()
+
def updateYLabel(self, text):
self.axes.set_ylabel(text)
+ self.draw()
def updateTitle(self, text):
self.axes.set_title(text)
+ self.draw()
def updateWidget(self, xlabel, ylabel, title):
self.updateXLabel(xlabel)
@@ -237,6 +241,12 @@ class PickDlg(QDialog):
self.station = station
self.rotate = rotate
self.components = 'ZNE'
+ self.picks = {}
+
+ # initialize panning attributes
+ self.press = None
+ self.xpress = None
+ self.ypress = None
# set attribute holding data
if data is None:
@@ -259,17 +269,50 @@ class PickDlg(QDialog):
# plot data
self.getPlotWidget().plotWFData(wfdata=self.getWFData(),
title=self.getStation())
+ self.limits = {'xlims' : self.getPlotWidget().axes.get_xlim(),
+ 'ylims' : self.getPlotWidget().axes.get_ylim()}
+ self.apd = self.getWFData()
+
+ # set plot labels
+
+ self.setPlotLabels()
+
+ # connect button press event to an action
+ self.cidpress = self.connectPressEvent(self.panPress)
+ self.cidmotion = self.connectMotionEvent()
+ self.cidrelease = self.connectReleaseEvent()
+ self.cidscroll = self.connectScrollEvent()
def setupUi(self):
+ # create matplotlib toolbar to inherit functionality
+ self.figToolBar = NavigationToolbar2QTAgg(self.getPlotWidget(), self)
+ self.figToolBar.hide()
+
+ # create icons
+ filter_icon = QIcon()
+ filter_icon.addPixmap(QPixmap(':/icons/filter.png'))
+
+ zoom_icon = QIcon()
+ zoom_icon.addPixmap(QPixmap(':/icons/zoom.png'))
+
+
# create actions
self.filterAction = createAction(parent=self, text='Filter',
slot=self.filterWFData,
- icon=QIcon(':/filter.png'),
- tip='Filter waveforms',
+ icon=filter_icon,
+ tip='Toggle filtered/original'
+ ' waveforms',
checkable=True)
self.selectPhase = QComboBox()
- self.selectPhase.addItems(['Pn', 'Pg', 'P1', 'P2'])
+ self.selectPhase.addItems([None, 'Pn', 'Pg', 'P1', 'P2'])
+
+
+
+ self.zoomAction = createAction(parent=self, text='Zoom',
+ slot=self.zoom, icon=zoom_icon,
+ tip='Zoom into waveform',
+ checkable=True)
# layout the outermost appearance of the Pick Dialog
_outerlayout = QVBoxLayout()
@@ -280,19 +323,64 @@ class PickDlg(QDialog):
_dialtoolbar.addAction(self.filterAction)
_dialtoolbar.addWidget(self.selectPhase)
- _innerlayout = QHBoxLayout()
+ _innerlayout = QVBoxLayout()
- _toolslayout = QVBoxLayout()
- _toolslabel = QLabel('Place for Tools')
- _toolslayout.addWidget(_toolslabel)
-
- _innerlayout.addLayout(_toolslayout)
_innerlayout.addWidget(self.multicompfig)
+ _buttonbox = QDialogButtonBox(QDialogButtonBox.Apply |
+ QDialogButtonBox.Ok |
+ QDialogButtonBox.Cancel)
+
+ _innerlayout.addWidget(_buttonbox)
_outerlayout.addWidget(_dialtoolbar)
_outerlayout.addLayout(_innerlayout)
+
+ self.selectPhase.currentIndexChanged.connect(self.verifyPhaseSelection)
+
self.setLayout(_outerlayout)
+ def disconnectPressEvent(self):
+ self.getPlotWidget().mpl_disconnect(self.cidpress)
+
+ def connectPressEvent(self, slot):
+ widget = self.getPlotWidget()
+ return widget.mpl_connect('button_press_event', slot)
+
+ def reconnectPressEvent(self, slot):
+ self.disconnectPressEvent()
+ return self.connectPressEvent(slot)
+
+ def disconnectScrollEvent(self):
+ widget = self.getPlotWidget()
+ widget.mpl_disconnect(self.cidscroll)
+
+ def connectScrollEvent(self):
+ widget = self.getPlotWidget()
+ return widget.mpl_connect('scroll_event', self.scrollZoom)
+
+ def disconnectMotionEvent(self):
+ widget = self.getPlotWidget()
+ widget.mpl_disconnect(self.cidmotion)
+
+ def connectMotionEvent(self):
+ widget = self.getPlotWidget()
+ return widget.mpl_connect('motion_notify_event', self.panMotion)
+
+ def disconnectReleaseEvent(self):
+ widget = self.getPlotWidget()
+ widget.mpl_disconnect(self.cidrelease)
+
+ def connectReleaseEvent(self):
+ widget = self.getPlotWidget()
+ return widget.mpl_connect('button_release_event', self.panRelease)
+
+ def verifyPhaseSelection(self):
+ phase = self.selectPhase.currentText()
+ if phase:
+ self.disconnectReleaseEvent()
+ self.disconnectScrollEvent()
+ self.disconnectMotionEvent()
+ self.reconnectPressEvent(self.setIniPick)
def getComponents(self):
return self.components
@@ -303,14 +391,196 @@ class PickDlg(QDialog):
def getPlotWidget(self):
return self.multicompfig
+ def getChannelID(self, key):
+ return self.getPlotWidget().getPlotDict()[int(key)][1]
+
def getWFData(self):
return self.data
- def filterWFData(self):
- data = self.getWFData().copy().filter(type='bandpass', freqmin=.5, freqmax=15.)
- title = self.getStation() + ' (filtered)'
- self.getPlotWidget().plotWFData(wfdata=data, title=title)
+ def selectWFData(self, channel):
+ component = channel[-1].upper()
+ wfdata = Stream()
+ def selectTrace(trace, components):
+ if trace.stats.channel[-1].upper() in components:
+ return trace
+ if component == 'E' or component == 'N':
+ for trace in self.getWFData():
+ trace = selectTrace(trace, 'NE')
+ if trace:
+ wfdata.append(trace)
+ elif component == 'Z':
+ wfdata = self.getWFData().select(component=component)
+ return wfdata
+
+ def getPicks(self):
+ return self.picks
+
+ def getAPD(self):
+ return self.apd
+
+ def updateAPD(self, wfdata):
+ self.apd = wfdata
+
+ def setIniPick(self, gui_event):
+ channel = self.getChannelID(round(gui_event.ydata))
+ wfdata = self.selectWFData(channel)
+
+ self.disconnectScrollEvent()
+
+ self.cidpress = self.reconnectPressEvent(self.setPick)
+
+ ini_pick = gui_event.xdata
+
+ # calculate the resolution window width from SNR
+ # SNR >= 3 -> 2 sec HRW
+ # 3 > SNR >= 2 -> 5 sec MRW
+ # 2 > SNR >= 1.5 -> 10 sec LRW
+ # 1.5 > SNR -> 15 sec VLRW
+ # see also Diehl et al. 2009
+
+ res_wins = {
+ 'HRW' : 2.,
+ 'MRW' : 5.,
+ 'LRW' : 10.,
+ 'VLRW' : 15.
+ }
+
+ result = getSNR(wfdata, (10., 2., 1.5), ini_pick)
+
+ snr = result[0]
+ noiselevel = result[2] * 1.5
+
+ if snr < 1.5:
+ x_res = res_wins['VLRW']
+ elif snr < 2.:
+ x_res = res_wins['LRW']
+ elif snr < 3.:
+ x_res = res_wins['MRW']
+ else:
+ x_res = res_wins['HRW']
+ x_res /= 2
+
+ zoomx = [ini_pick - x_res, ini_pick + x_res]
+ zoomy = [noiselevel * 1.5, -noiselevel * 1.5]
+ self.getPlotWidget().plotWFData(wfdata=wfdata,
+ title=self.getStation() +
+ ' picking mode',
+ zoomx=zoomx,
+ zoomy=zoomy)
+ self.updateAPD(wfdata)
+
+ # reset labels
+ self.setPlotLabels()
+
+ def setPick(self, gui_event):
+ pick = gui_event.xdata
+ ax = self.getPlotWidget().axes
+
+ ylims = ax.get_ylim()
+
+ ax.plot([pick, pick], ylims, 'r--')
+ self.getPlotWidget().draw()
+
+ def panPress(self, gui_event):
+ ax = self.getPlotWidget().axes
+ if gui_event.inaxes != ax: return
+ self.cur_xlim = ax.get_xlim()
+ self.cur_ylim = ax.get_ylim()
+ self.press = gui_event.xdata, gui_event.ydata
+ self.xpress, self.ypress = self.press
+
+ def panRelease(self, gui_event):
+ ax = self.getPlotWidget().axes
+ self.press = None
+ ax.figure.canvas.draw()
+
+ def panMotion(self, gui_event):
+ ax = self.getPlotWidget().axes
+ if self.press is None: return
+ if gui_event.inaxes != ax: return
+ dx = gui_event.xdata - self.xpress
+ dy = gui_event.ydata - self.ypress
+ self.cur_xlim -= dx
+ self.cur_ylim -= dy
+ ax.set_xlim(self.cur_xlim)
+ ax.set_ylim(self.cur_ylim)
+
+ ax.figure.canvas.draw()
+
+ def filterWFData(self):
+ ax = self.getPlotWidget().axes
+ ylims = ax.get_ylim()
+ xlims = ax.get_xlim()
+ if self.filterAction.isChecked():
+ data = self.getAPD().copy()
+ data.filter(type='bandpass', freqmin=.5, freqmax=15.)
+ title = self.getStation() + ' (filtered)'
+ else:
+ data = self.getAPD().copy()
+ title = self.getStation()
+ self.getPlotWidget().plotWFData(wfdata=data, title=title, zoomx=xlims,
+ zoomy=ylims)
+ self.setPlotLabels()
+
+ def setPlotLabels(self):
+
+ # get channel labels
+ pos = self.getPlotWidget().getPlotDict().keys()
+ labels = [self.getPlotWidget().getPlotDict()[key][1] for key in pos]
+
+ # set channel labels
+ self.getPlotWidget().setYTickLabels(pos, labels)
+
+ def zoom(self):
+ if self.zoomAction.isChecked():
+ self.disconnectPressEvent()
+ self.figToolBar.zoom()
+ else:
+ self.connectPressEvent(self.setIniPick)
+
+ def scrollZoom(self, gui_event, factor=2.):
+
+ widget = self.getPlotWidget()
+
+ curr_xlim = widget.axes.get_xlim()
+ curr_ylim = widget.axes.get_ylim()
+
+ if gui_event.button == 'up':
+ scale_factor = 1/factor
+ elif gui_event.button == 'down':
+ # deal with zoom out
+ scale_factor = factor
+ else:
+ # deal with something that should never happen
+ scale_factor = 1
+ print gui_event.button
+
+ new_xlim = gui_event.xdata - scale_factor * (gui_event.xdata - curr_xlim)
+ new_ylim = gui_event.ydata - scale_factor * (gui_event.ydata - curr_ylim)
+
+ new_xlim.sort()
+ new_xlim[0] = max(new_xlim[0], self.limits['xlims'][0])
+ new_xlim[1] = min(new_xlim[1], self.limits['xlims'][1])
+ new_ylim.sort()
+ new_ylim[0] = max(new_ylim[0], self.limits['ylims'][0])
+ new_ylim[1] = min(new_ylim[1], self.limits['ylims'][1])
+
+ widget.axes.set_xlim(new_xlim)
+ widget.axes.set_ylim(new_ylim)
+ widget.draw()
+
+ def apply(self):
+ picks = self.getPicks()
+ for pick in picks:
+ print pick
+
+ def reject(self):
+ QDialog.reject(self)
+
+ def accept(self):
+ self.apply()
+ QDialog.accept(self)
class PropertiesDlg(QDialog):
diff --git a/qrc_resources.py b/qrc_resources.py
deleted file mode 100644
index fdaeb26c..00000000
--- a/qrc_resources.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Resource object code
-#
-# Created: Di. März 10 11:47:00 2015
-# by: The Resource Compiler for PySide (Qt v4.8.6)
-#
-# WARNING! All changes made in this file will be lost!
-
-from PySide import QtCore
-
-qt_resource_data = "\x00\x00\x02\xa2\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x000\x00\x00\x000\x08\x06\x00\x00\x00W\x02\xf9\x87\x00\x00\x02iIDATx^\xedYM\x8b\xc20\x10\x9d\x96\xbd(\xa8\xa8\x08\xa27\xaf\xfe\x01\xf5\xa8\xff\xdb\xbb\x07\xaf\x1e\x14\xc4\x83\x17\x11\x05\x11?@\xa1K\x02sI\x98}\xc9NYYHaH\xda\xa6\x9d\xf7\xe6\xcd\xb4i\x9a\x15EA\xffy\xcb?\xe8;\x11H\x04\x12\x81D \x11H\x04\x12\x81\xaf\x90A\xdb\xed\xb6\xe0~\x96e\xdc\x8a}n\xdd\xad(\x0a\xb7\x95\xfa\xb6\x1d\x0c\x06\x19\xc2\xc6s!\x08\xbeV\xab10\xdc\xca\x1b\x03\x84\xed\xf5z\x0d\x22\xf1\x15\x0a\xbe\xd3\xe9\xd0\x1fo\x86\x84\xc5 \x90\xc0\x04\x18|\xb5Z\xa5\xdb\xed\xc6\xd1\x95\x22\x1e\xa7\x80\xac\x881\x0e\x18+\xa1.b\x00\xde\xf6\xfd}6\xff\x9c2\x18\x98\x00p&\x163\x9b|/\x7f\xbc\x8aD\x1e\x10u\x09\xbcD\x0c\x19R\xd4%\xa8R \xc6Ih\x0a\xc5(PN\x0aE\xa4\x99\x00\x16\x8c\xf3M\xa9\x00\x96\x16\x83\xc3\xfb\xc0\x8fB\x01l\xb2\xb3\xe7\xf3I\xa7\xd3\x89\x0e\x87\x03m6\x1b:\x9f\xcf\xe6\x98\xa0(\x04\xadV\xc0u\x08#\xb7\xdf\xefi\xb9\x5c\xd2n\xb73\xe0-\x89\xf9|N\x8b\xc5\x82\xde\xef7V\xd2\xef\x97V\xc4\xc1\xe7\x1b\x8d\x06\x8d\xc7c6\x9aN\xa7\xf4z\xbd\x0c1\x10q\xbd\x02\xd8\xe2\xa3d\xdf\xe4\xc3\xe1\xd0\xa6\xd6\xe3\xf1\xd0\xdcKO \xf6\xbd\xc1\xd6n\xb7\xed\xb1\xfb\xfd\x0e\x80~\x80\x00\x00\xc4\xc0Y\x0d\x97\xf0\xe7\x09\x84,O\xaeV+\xaa\xd7\xebT\xa9T\xc0u\xda\x0f\x1a=\x11S\xb0&\xdf9\xf2\xf6\xc9t\xb9\x5ch2\x99(\x81\xeb\x15`\x00b\x14\x19\xf4z\xbd6f\xc1w\xbb]\x9a\xcdffj\x8e\xee\xa5P\x00\x8369\x0b\xcf\xf3ct4\x1a\xa1\xaf\xb1R\xd23\x07\xa0\x8d\x81\x889\xad|\xddO\xe3\x7f\xadH\xae\xccwD\x90-\xf0k\xac|\x05@\xeb\x81\x15#\xee\xefc%\xf55\xc0 \xf1\x18\xb0\x94\x22\xf4\xb1o\x9d\x02X\x0d?\xd2\xadV\x8b\xfa\xfd>\x1fg\x93\x22\x1e\x12}u\x0a\xb1\x05\x15_\xb3\xd9\xa4^\xaf\xc7\xe0D\x228\x85\xf4\x0a\xa0|\x05\xb9.\xde+F\x81\xd2S(\xb6\x88\xd9\xc0X\x00\x1e\x16q\xfc\xcb\x8c\xfbN\x01\x03\xa7\x8a\x02\xc7\x0a\xe8\x9d\xb2!\xd0lj\xf0X\x01\xac\x84\xab\x80b\x9a\xa0\x98\x0b\x81\x05V\x9e\xc7\xbb\xceD\xd0\xf8\x9d\x80\xc9\x1c\x8fG\xf6]\xda\xf2z\xf8\xea\x9d>\xf2\xce\xf2:&\x00ID/A\xea\xd3F\xff\x83\x03[\xfaG\x96\x08|\x03\xf7\x03\x9fA\x22K\x9b\x82\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00Y>\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x01X\x00\x00\x01O\x08\x06\x00\x00\x00\x08\xbf\xd6c\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x1e\xc2\x00\x00\x1e\xc2\x01n\xd0u>\x00\x00\x00\x07tIME\x07\xdf\x03\x09\x16+\x08u\x14\x9b\x99\x00\x00 \x00IDATx\xda\xec\x9dw\xb8\x5cE\xf9\xc7?\xef\xde\x92\xdc$\x84\x90\x84\xde\x12@\x04\x04\xe9M\x8a\x14\x15\xa9\x82 *\x22\x0a\xa8`\xe1'\x0a\x22X\xe9 X\xc0\x02\x82\x88\xa0\x14\x05\x95^\xa4\x83\xa8\x80 5\x02\xd2;\x81\xf4r\xfb\xdd\xf7\xf7\xc7\xcc\xb9w\xb3\xd9\xdd\xbb3{\xce\xee9\xbb\xf3}\x9e\xf3,\xe4\x9e:g\xe6{\xbe\xf3\xce[DU\x09\x08\xa8\x07D\xa4\x0bX\xb1\xcc\xb6\x92\xfd\x9d\x02\xe4\x00\xf5\xdcnP\xd5S\x1d\xef+\x07\xb4\xd9kO\x01&\xdb\xcd\x05\x8b\xed\x86\xaa\xfe+\xbc\xed\x00\x80\xf6\xd0\x04\x011\x91\xe7d`\x13\xe0=\x15\x08t\x99:\xdc\xca\x8c\xf06\x02\x02\xc1\x06d\x99L\xa7[2-\xdc\xd6H\xc9\xed\xe5\x1b\xd5,V\x05\xc7\xdd\xd696\xa7\x8dGh+\x18\xaf\xfdV)\xf7\x87\xde\x18\x086 \xbbD\xda\x09lP\x82L\x97M\xf1m\x07\x9bW@ \xd8\x80\xd4\x91\xa9\x00[\x01\xdb\x14\x10\xe9\xfb\x80\x8e\x8c=J\xa3\x086g\xb7\xf8\x94\xab9\xdf\x14\x9ed\x0a\x9d\xe4\xe8G\xec\x9f\xbb\xed>\xaf\x05%\x1b\x086 \xbd\xa4:\x09\xf8\x08\xb0'\xf0Q`\x85&x\xacZM\x04\x92\x12\x13A\xce~\xdc\x96\xa7\x9f\xb5\x8b\xfe6\xdf\xfe\xce,4\x19\x04\x04\x82\x0dh<\xa9nd\x09u\x0f`\xdb&\xec\x03\xc1D\x10\x10\x086\xa0n\x84:\x1e\xd8\xd5\x92\xea\xee\xc0\xeaM\xfe\xc8\x8d4\x11\xc49\x9e\xa6`&\x95\xf8[\xe4\x8d1\xdd\xfe>\x19zz \xd8\x80\xfa\x91\xea{\xacB\xdd\x13\xd8\x11\x18\xd3B\x8f\x9f\x0f= \x10l@\xdc\xa4\xba\x1ep8\xb0/\xb0N\x0b7E#M\x04\x12\xe3\xb9\x96\xc5\xb8\xbeI\x19\xb5L\x8b}8\x03\xc1\x06\xd4\x9dT;\x81\x8f\x03G\x00;\x85\x16\x09\x0a6 \x10l@\xed\xc4\xba6\xf0%\xe0P`\xf9&z\xb4A\xe0]`\x81Ui2\xcao\xa9\x7f\xeb\xaeAyJ\x02J4q\xc5l]\xba\x00TC\xec{ \xd8\x00/Rm\x07>\x06\x1c\x89Y\xb4\xca\x0a\x09\xf4c\xdc\x89Jm\xef\x14\xfd\xff\xec\x06\x12D\xd6\xc8\xb5\xd0T\x90+P\xef\x81`\x03\xc1\x068\x10\xeb4\xe0\x8b\xc0a\x98U\xe5\xb4N\xcb\xff\x07<\x0a\xad\xf5\xceE\x10\xd0\xaa\x04[@\xaeG\xd4x\xaa9\xc0GU\xf5\x9c\xd0M\x02\xc1zb\x0d\xe0x\xe0I\x11yLD\x8e\x15\x91UC\x13\x07\x82\xcd2\xb9\xfe:\x06r\x9d\x01l\xa5\xaaw\x84.\xd2R\x18\x07\xac\x9f\xd0\xb97\xc6dU{UD\xee\x14\x91\x83l\x82\xa1b\xb4\xd9\xadZ7\xadz\xa8K\x97H\xae\xe1\xb1\x18U\xd7\x0d\x04\xdb\x5c\xe4\xfa\xa5\x1aOu\x1d\xb0m(\xdf\xd2\xb2\xea\xb5\xbd\x0ecn\x17\xe0r\xe09\x119RD\xc6\x84\xa6\x0f\x04\x9bvr\xbd\xa0FrU\xe0\x14\x8c\xa7@\xa8\x88\xd9Z\x88\x94\xd66u\xbe\xeet\x8c9\xeb%k>\x98@:m\x9d>J\xd9%\xafm \xd8\x94\x93\xeb\x85\xc0\x17k8\xcdb\xe0@U\xfd\x81\xc7\xaao@\xf3\x90\xec6\x0d\xba\xf6\xca\x91\xf9\x00\xf8\x0a\xb0\x9c\xa7\x89 I\x9e\xc89^'\x10l\xd6\x1b\xa0\x80\x5c\xbfP\xc3i^\x05>\xa0\xaa\x7f\x0e\x1c\xd3\xf2x\x12x\xb9\x81\xd7_\xce\x0a\x85\x9b,\xd1N\xf6P\x98A\xc1\xa6\x89\xa3\xb2*\xd8,\xb9\xfe\x068\xbc\x86\xd3\xbc\x0c\xec\xa4\xaa\xaf\x04ni\xe1A \x12\x959\x99\x0a,\x0f\xaci\xd5\xec\x86v[\xbdA\xb76\x08\xdc\x85\xa9\x0f\xf7v\x89\xbf\xf7\xda\xdfg\xec\xef@\xf2\x09\xa6\xdb0\xd9\xbdv\x04~[p\x1f\x85SxH\xd7\xc2\xd8X\xfb\xdb]0n\xa3-\x87YTV\xabr\x9b6\xd5g\xe6L\x04\x22R\xeb\x82\xd6\x8b\xd6,\xf0Z\xe0\x8d\x802&\x82\x89v\xab\x06\x9d\xc0\x96\x96\xfc\xea\xe1\xe6\x05&\xef\xc1\x85\xb6/\x03<[`\x22\x98\x97\x12\x13\xc1\xdf-y\xceie\x82m\xcf\xd8@8\xb6Fr}\xc1*\xd7@\xae\x01q\xa1\xdf\x9a\x12\xee\xb5JvG\x84-\xd1\xe1D0I`\x13\xe0\xe7\xc0_\x80+R\xda.]v\xccv\x15|\x88\xc6\x14l\x83\xc0\x80\xddg\x96%\xda\xbeQ\xc6\xff\x11\xc0\x0bY\x0a\x00\xca\xcc*\x9f\x88|\x14\xf8Q\x0d\xa7x>(\xd7\x80:\x98\x12nD\xd9\x15c\xab\xfd\x01\x90TB\xf6v\xe0\x93\x98\xb5\x88\x8f\x92\xbe\x1c\x01Qm\xae.\xbb-kg\x08\xab\x00\xd3\x80\xd50\xeei+\x17\x90n\xd9\x19\x86\x88\x9c\x8f\x09$\xfa\x93\x88\xac\x1d\x086^r}/\xa6\xac\xb6\xef\xfdF\xe4\xfaz\xe0\x80\x80:\xe1%U=EU\xdf\x8bIk\xf8GL\xf2\xa0\xb8\xb1\x02&X\xe1w\xc0Z\xcd\xd6\x88\x22\xb2<&qN\x94\xb8i2p\x9d\x0d\xcaH\xff\xfd\xa7\xdd\x06+\x22\x930\xb9X\xd7\xf5<\xc5s\xd6,\xf0F\x86:\xd5\xa4$li\x01\xe5\x15\x92\x9d\xc2F6\xd8e\xa8\xde\x06\x1ba\xd0nX\x93\x01\xaa\xba\xa8\xe8:k\x03\xdf\x06>g\xaf\x177\xfa\x80S\x81\xd3\xe3\xac\xb6\xe1i\x83\x1d\xb0\xbfs\xec\xefxL\x1e\xddr\x02\x08\xac\xbbYd\x93\x15\x91M0\xa1\xebk\x948\xe6:L\xd4e\xaa\x09,\x97\xf2\x8e\xdf\x06\x5cY\x03\xb9\xfe\xcf*\xd7722\xd0\xdbE\xe4t\xe0\xd9\x90u\xa9\xf9\xa0\xaa/\xa8\xea\x970!\xb2?\xc1TF\x88\x13c0\xe1\xdew\x88\xc8J\x19\xff\xe8\x1dh?Tk\x94\xd9\xe5c\xc0\x89\xc1DP\x1b~\x84\xb1/\xf9\xe0YK\xaeof\xa4C\xad\x06\xdc\x0d\x9c`\xa7}W\x96\xc9\xb6\x14\x90}\xa2}SU\x8f\xc5\x044\x9cX\xa0\xf2\xe2\xc2\xce\xc0\xe3\x22\xf2\xe1\x06sK\xce*\xd7\xf1\x15\x15{'9:\x87Cq\xdbD\xe44\x8c\xcf\xefh\xeeo\xdf\x17\x91\xfd\x03\xc1\xfa\x11\xce!\xc015\x90\xeb\xceY)\xef\x22\x22{`\x5co\xb6/\xf8\xe7\x1d\x80\x93\x03\x1deKx\xe1\x10N\xaa\xaasT\xf5$\xab\xd2\x8e\xc1\xd4|\x8b\x0b+\x00\xb7\x8a\xc8\xa9\x0d\xfaPGi\x17'\xd8\xad<\xc1*9\x94\x1c0\x09\xb8\x06\xf8\x8eC{_*\x22\x1b\x05\x82u#\x9c\xad1~~>\x88\xfc\x5cSO\xae\xd6$p\x16p#0\xa5\xc4.'4X\x85\x04\xd4F\xb4\xd5*\xda\xc5\xaa\xfaSk:\xb8\x00\xe8\x89q|\x7f\x17\xb8+\x03&'\x01n\x06\xf6p\xc7\x01\x9f\xf1<\xfc*U=-\xe5\xe4:\xd6N\xff\xbe\xe9\xfb\x01\x11\x91]\x02\x07\xb6\x1c\x860&\xb3\xaf2\x92\xdd\xabV|\x00\xf8\xa7\x88\xac\x9f\xd2g\xfe<\xf0\xb8\xe7\xb1\xe7\x89\xc8\xb6\xa9\x19\xf7i\xf0\xd3\xb5\xab\xe87x\x12\xfe\xa3\xc0\xf6i\xce;i\x83%n`I/\x01\x1f\xbc\x0dl\xa2\xaa3\x03\xef\xc4\xfa~\xa2@\x83\xe5\x19\x094X\xc6\xf14\xc3\xc9K\x80Y\xf6w\xb6\xfd\x8d\x02\x10\xfa\xed\xd6\x8bY\xc8\x1a*\x0e\x08(X\xd4\x8c\x12\xd0\x14ccLi\xa48\x16\xad\xe6\x00{\xa9\xea\xbf\xca)X\xfb\x9f\x91\x1f\xfaz\x09\xbd\x82(\xab\xdd\xd3\x00\xaa\xda+\x22\xd3\x80\x7f[\xd3\x86\xcf8\xd9\x22\x0d\xfe\xef\xb9\x14t\xee\x95\x81\xcb<\xef\xe5\x1d`\xdf\x94\x93\xeb\xaa\x98\xccB\xdb\xc7p\xba\x97\xc8h\x0e\xdf\x161/D\xbe\x9fS\xed\xb6f\xd1\xb6\x8a%\xf0\x09\x96<}\xdc\xa7\x1e\x07\xben?\xd8\xb5b2&(a\xcf*L&\x92p\xdb-q\x1dU}\x19\xf8D\xc1\xc7\xc9\x05+\x01\xd7\x8aHg\xa3;E\x1aL\x04\xbf\xc6\x94\xcapE?\xb0\x7f\x9as\xba\x8a\xc8z\x98\xdc\x9d\x1b\xd6x*\xc5,z\xec\x98\xa5\x90\xdf\x80\xc40\x88\xc9\x0b{*\xc6s\xa6\x16\x8c\xb3d\xf4\xb9\xb4=\xa4\xaa\xdec?&>\xd8\x02\xe3\xa2\xd6\xba\x04+\x22\x9f\x01\xf6\xf1<\xfc\xab\xaaz\x7f\x8a\xc9uk\xe0~\xca\x87\xfaU\x8bY\xc0\x9e\xaa\xfamU\x1d$\xa0.\x0a*\x86q\x95c$\xa3T\x94_ve`\x9d\x025;\xd1.z\xf9\x8e\xc3\x7f\x03\xdf\xc0\xdf^\x19\xa1\x1d\xb8\xc4\xae\x83Tj\x9f\xa4\x10-\x0e.U\xc7KU\xcf\xc3d\x0c\xf3\xc1\x09\x22\xf2\xfe\x98\xc6s\xcen]v\x1b[\xb0\x80Yv\xe12\xd7@\x02Z\x11\x93\xd3\xd2\x07\xbfT\xd5\x8bRL\xae\xbb\x03wR:x\xc0\x05\xf7al\xae\xb7\x04\x0e\x0c(\x83w\x81C\x80\x8b\xf1\xf3!-\xc4\x8fD\xe4\xa7\x0e^\x0e\xf5\xc2\xd7\xf0[\xe0\xeb\x00~\xd7H\xb7\xb4F*\xd8\xf3qsU\x8ap\x97\xfdj\xa7\x95\x5c?\x8bq\xc3\x1a_\xc3i\xf2\xc0i\xc0.\xc1$\xd0\x94h\xc3,\xaa\xb5G\xea\xad\xc0%\xca\xb7\xbf\xfc\x0c\xe3\x853\xab\xc6{\xfb\x06\xf0\x07\xbb\xf0W\xef\x19D9SA?\xb0?~>\xc1\x9b\x01\xc7\xd5\xaa\x5c-WMf\xc4\x9e>\xcdn+ar\xdd\x8eM\x0d\xc1\x8a\xc8\xa705\x86\x5c\xf1\x22p`Z\xa7\xca\xb6\xe2\xc2\xa5\xd4\xb6\x105\x13\xd8MU\xbf\xd7\xcc\xa54\x02\xc1\xd2\xc9\xc8BW\xc9\xe9\xb1\x87i\xe3NL\xb5\x83\xbf\xd7x\x7f\x9f\xc1,\xa2M\xa0A\x8b\x5c%Hv&\xb0/~a\xc4?\xa8\xc1%-z?\x11\xc1F\xc4\x1a\x91\xec\x8a\x96`\xc7\x94\xfaH\xe6\x1a@B+\x00\xbf\xf08t\x11\xf01U\x9d\x9dRr=\x198\xbb\xc6\x8ex\x8f5\x09\xdc\x118(\xc0\x07v\xc6\xb33\xc6a\xbf\x16\xec\x86\x89\xaa\xecL\xd1\xb3\xfd\x07\xbfJ\xd2c\xac\xa9\xa0\xee|\xd7\x08\x05\xfb+\xfc|\xdb\x8eR\xd5\xa7RJ\xaeGa\xc2\x1ak\xc1\x9f\xacr};\xd0D\xd3\xa3\x13cB*,\xa9\x12\xf9\xbd\xd6\xac\x16UuHU\xbf\x83\xa9\x02PK\xe2\xed\x9d\x81\xdf\xd3I\x1b\x9d\x89*\xd8\x5c\xd1V\xe9\xd9\xae\x04\xce\xf5\xb8\xc6\xd68\x98\x16\x0b\xd4h\xe4\x13\xbd\xbe\xdd\xa2\xf26c\xed6\xc1*\xd8\xf1\x94(}\x93\xab3\x11}\x028\xc0\xe3\xd0[T\xf5\x92\x94\x92\xeb'\x81sj<\xcd/\x81\x83\xac\xad) .\xc5w\x01\xc6\x97\xb4\xaf\x86\xd3\x1c@?'\xa4\xec\xd1N`\xa4\x0a\x82\x0bN)\xa8\xce\xd0\x5c\x0aVD\xa6Z\xf5\xea\x8a\xf9\x98\xc8\x954\x92\xeb\xae\xc0\xefkl\xc7\xef\xa9\xeaQq\x96\xf8\x08\xa8\xed\xb5\x92|\x01\xc1\x8e\x22\xf5\xda\x85\xb1\xdb\xb7\x13\xb3\xcdSU\xffj\xa7\xfb\xf3k8\xcd\xa7\xe9\x1f\xae\x89\x95\x9c\x82\x9dd\xb7\xd1\x9f\xa9\x078\x0cw\xaf\x89.\xe0\xb7\xa3-&\x16\xe5_\x18\xad\x84{\x8e\x91\xc5\xca\xa5\x14x=\x15\xec/1Q,\xae8&\x8d\xc5\x0aEd3L\x8c\xb8\xaf\x8dj\x08\xf8b\xdas(\x044\x85\x92\xbd\x17\x93\xb2\xb0\x96\x1c\xc9_\x03>\x92\xa2g\xfa\xbb\xa7`\xdb\x01\x93\xd7\xa1y\x14\xac\x88|\x1cSb\xd8\x15\xb7\xa9\xeaoSH\xae\xeb\x00\xb7\xe0\x1e\xaf\x1e\xa1\x178 \xcd\xbe\xbc-\xac^\xeb5\xee\xda\x0b\x94\x8f\xaf\x17\x81\x0b!=\x01l\x87)\x02\xea\x8b#1\xb6\xccdf\x0d\xf3\x00\xb7R\x9f\xc7c\xc2\xc7]q\xa6\xcduP\xcdL\xa6bI\xf1\xd1\xfaN\xe2\x04k3\x8d\x9f\xe7q\xe8B\xe0\x8b)$\xd7\x95\x80\xbfaR\xd2\xf9`>f1\xeb\xda\xc0g-I\xae\xd1\xb8\xeb( \xd9\xf6\xa4\x09\xd6\x92\xecK\x96d\x1f\xae\xe1\xbe\x8f\xc1\xad\xbal\xf5\x04\xebQ\x09\xc2\x93#\xc6cR\xa3Vs?\xd1bV5}g\xa9\xfb\xaf\x87\x82\xfd9\xc6W\xcc\x15\xc7\xa6-\xcf\x80\x88L\xb4\xca\xd5\xb7\xfe\xfc[\x98|\x02\xf7\x05>\x0bh\xd0\xd4\xfa]\x8cw\xc0\xed\x9e\xa7\xe8\xc4\xc4\xf8\xaf\x99\x92\xe7\xb9\x13\xbf\xf2R\xbb\x8aH\xe2\x02.\xd1t\x85\xb6D\x85O\x98\xe7\x1d\xaa\x9a\xaaZT\x222\xc6>\xcb\xce\x9e\xa7x\x11\xd8\xd5f\x09\x0aX\xb2m\xc71\x92*pj\xd1\xef\x98\x83I\xde\xfdn\x0c\xed\x10\x19\x06\x9e\xb2\xa49\xdb\xe1\xdd\xb5a\x16\xa1f\xe0^\x09e\x01\xf0\xbe\xe25\x1e\xeb/\x1be:\x8b\x0a\x00\x94[?Zd\xb7w\xa2\xb6P\xd5\xe1r\xec\xed\x09vZ\xc1\xd4\xd8q\xc5\x22\xe0\x0b)\xe4\x81\x0bk \xd7\x99\xc0GZ\x9d\x5cmL\xf8\xba\xc0\xfb\xed\xb6\x11&\xbf\xe9\xea\x15\x0e{\x16\x93I, ^\xe57`#*o\xc3,\xfc\xb8b2p\x12p,\xd0\xe8t\xa1\x0b0\x95h\x7f\xe7x\xdcD\xcbQ\x9fI\xea\xc6\x92L\x82\xf0i;\x88\x5cq\x9c\xaa\xbe\x922b8\x14\x93P\xc3\x07\x0b\x81\xddU\xf5\x85\x16$\xd4\x951.B;Y\x22\x8d\x1c\xb5]\xb0B\xb37S\xd1o=I\xb6WD\xf6\xc1$\x15\xf2)}\xbd\x0afE\xfe\xec\x06\xb6A\xa44\x9f\xc0\x84\xf7\xee\xedx\xfc\xa7D\xe4\x8c\xa2 \xa6B[jG\x95\xf7_\xd2~\xdc\x9e\xd0\xc0\xea\xc0\xafx\xd9\xdd\x98\xfc\xb0i\x22\x89\x0d0.f>\xe8\xc3$\x04\x7f\xb4E\x08\xb5\x03\xb3\x88\xf2Q\xbbm\x1c\xc3i\x97\x13\x91\x0eU\x1d\xa83\xe1\xd5\xebZ\xd1\xf5\x1a\x92\x17DU\xe7YS\xde?\xf1\xb3\xabng\xa7\xf6\xb7\xc4\xd0\xe6>m\x1fq\xd8r\x98\x1c\xb9\x1f\xc0-\x8b]\x0e\x93Ww\xdf2\xf7\xd4Y\xe5;,I\xb0I\xbd\xd4\xc3\x81\xb5\x1d\x8fY\x0c\x1c\xaei\xa8a3B\x18\xe30v\xaaq\x1e\x87\xe7\x81\x83U\xf5\xae&'\xd5\x89\x22r\x98\x88\x5c\x8b)\x91r7\xc66\xb7q\x8c\x97Y\x9e\x80$I\xf6M;\xd3\xf0\xcd\xc4u\x18\xfe\x0b\xbfqb\x91\xa7\x18\xfa\x98\x88l\x95\xc4\x0d\xe5\x12\x18p]\xf8U@=\xde\xba\x91\xa4\x09\xbf\xc4\xdf%\xe5(U\xfds\xb3\x0eJ\x11\xd9VD.\x06\xde\xb4\xca\xe1c\xf8\xfb\x05\xb7\xaa\x99\xa0\xb0\xccL\x22\x91\x5c\x0e$\xfb,\xb0\xa7\x15:\xae\xe8\xc0\xd8b\xbbj\xe0\xa1\xaar\x11\x14\xce\x96\xec\x8ci\x9a\xdd\xa2\x85\xc9G\x81{=\xee\xa1\x5c\xc0\xcf\xb8Q\x04V\xdd#\xb9\xfe\x0f\xf7\xd5\xbc\xfb\xf1\x8b\xcaH\x92@>\x0b\x1c\xeay\xf8\xc96\x13{\xb3\x91\xea\x14\x119ZD\x9e\xb2S\xcaC\xa9-\xefm\xb5X\x91\x80z\x90\xecC\x98\xbc\xab>\xe6\x98U\x80\xaf\xa4\xe4Q.\xc25d\x01>$\x22;\xc7}#\xb9\x98\x07\xe0$;=t\xc5q)3\x0d\xac\x87I\x08\xee\x83\x0bT\xf5\x87MF\xac[\x8b\xc8\x95\xc0\x1b\x98\xc4\xce\xef\xab\xf3-$\xad`\x1b\xb6\xd0T\xa0V\x13\x0f4\xa8\x92d\xfff?\x9c>\xe3q\x07\xfc\xc2i}\x14\xfb\xcav\x8b\xf2\xb4\x16b!&G\x88+N/\xba\x9fj\xee\xa9\x1d\x13\x88\xd0e\x7f\xc7\x16\xe6\x85\x8d\xfb\x85~\x0b\xf7\x02\x86\xd7\x97+\x1b\xdc 2\xe9\x02\xae\xf2Tf7\xa4\xe8+\x1eG[l!\x227\x01\x0f\x00\x9f\xc2\xdd\x03 K&\x82F\x92kj\x08\xd6\x92\xec\xe5v\xca\xef\x83/\xd8)\xbbo;T\xfb\x1eV\xb1\xdb\x14J/j\xdd\x03\xb8\xe60\xd9FD\xf6v$\xfd\x88`#\x92\xed*|\x97\xb9\x18\x07\xe3\x8a\xb8W\x80\xcc\x93\x82\xca\x8fE\xf89~.+/\x03\x874CV,\x11\xd9TD\xae\xc7\x14\xd5\xdb#\x05\xb7To\x1bl#<\x09RC\xb0\x96d\x7f\x0a\x5c\xe1qh\xa7\x15Zc=\xda\xa0\x22\xa9\x89H\xa7\x88,#\x22\xcbX\x014~\x14n\xb9\xd2\xe3\xfeO\xb5\xa4\x19\xe5\xe7\xad\xf6\xfe'`LY+\x02\xab\x02\xab\x8a\xc8\xd48_\xe8\xf7=T\xdf\x15iJ\xa2-\x22\x07\xe1\x17\xe40\x00|RU\xe7\x91a\x88\xc8\xfbE\xe4\xaf\xc0#\xb8\xfb\x136\x0b\xc16\x82\x5c\x0b\x09\xb6\xee\x0b\x5c\x15\xf0uL\xa0\x87+V\x05\xbe\x9c\x80\x82\x1d\xc3H\x02\xecj\xa2\xed\xfe\x89{2\x98\xf7\x03\x07:\x10\xac\x94 \xd8\xd5\xec\x16\x0f\xc1\x8a\xc8t\xdcs\xb6\x0e\xe0\xe7m\x90\x14\xb9\xac\x86\xbf\x0f\xeeqv\x81 \xab\xc4\xba\x82\x88\x5c\x06<\x86\xa9\x95\xd6\xe8\x01\xde\x8f\xb1\xf7>\x86\x89\x99\x9fA@#\xb0\x188\x18\xbf\x84\xdd\x1f$\x99\xcc[NB\x1c\xb8\xdcS,\xc6\x12#\x10W\xa0\xc1I\x0er:\xc2\x85)s\xcb\xfa)~nF\xd7\xaa\xea9Y\x1dA\x22r\x88}\xf6)u\xbet\xaf%\xce\xc7\x80\xc71\x918o\x02\xef\xa8\xea|Z\x03R`\x16\xe8H\xe9\xfd\xfd\x17\xf81~\xa6\xbc/\xdaw\xdb[\xe5\xaca\xb4\x0f\xfb2\x18\xbb\xab\x0b\x1e\xb6*\xfc\xbd\x0e\xc7\xac\x03|\x1eS\xc6\xc9\x07\x91\xdf\xf6\xf2\xed1\x0c\xd0\x0dq\x8f\xe5\xed\xb6\xb6\x8e\xb4\x90\xcc\x870\xa55\x5c\xf12\xfe\xae\x5c\x8d~\xe6i\xc0\x05\xd4/\x89\xf23\x984\x8f\x0f\xd9A\xf7lZ\xab\x03\x07,\x85k0IhvsD\xc8\x9c\xdd\xd5\xd6\x86\xff\x975\x09$A\xae\xb31\x05 w\x04\xa6\xa8\xea\xc7U\xf5\xc2\x8c\x91k\xbd\x89\xad\x5c$WZ\xda$\xdaz0I]\x5c\x83\x10\xda\x80#\x1c\xae#U\x10\xac\x0f\xc9\xfa\xd8b\xbf\x8c\x9b7D\xbc\x04\x8b\xdbJa\x84\xb3\xd2\xa2\xfaDd\x0d\xfc\xcamg\xce\xee*\x22\x07\xda\xafq\xdc1\xd7\x8a\xc9?p\x10\xb0\xaa\xaa~CU\xff\x1e\xa6\xffM\x89\x970a\xd1\xae\xd8\x08\xbf\x94\x88q\xe2\x19\xe0\xef\x8e\xc7L\xf60\x8b\xc4C\xb0\xd6\x17\xed`\xc7\xc3\xde\xc2\xf8\x99\xa6\x05?\xc3=\x91\xcb\x1bd\xc8\xee*\x22m\x22r6\xc6`\x1f\xa7j\x9d\x09\x9c\x09\xac\xab\xaa\xbb\xa8\xea\x95\xaa\xdaG\x80\xeb\xf8\x8b\x94k\x94\xec\xbb\xb0FW\x9a\xd4}\xa4,o\x05\x1e\xf48\xc7a\x15\xc6Z\xb5\xb9\x08\xda\xa8\xbeFV)\x9c\x8f{\x84Zc\x08\xd6\x92\xabk\xd6\xf7ST\xb5;%\xc4\xb3\x1b\xf0q\x8fC\xbf\x91\x15\xbb\xab-\x95~\x1b\xfeQ9\xe5\x88\xf5\x9b\xc0tU=AU\x9f'\xa0\xd5p\x11\xa3{\x06\x14c9L\x8e\xe8F\xe2i\x8c=\xd8\x05\xab\x00\x1b6\x82`]\xcd\x03/R\xb9\xd0X=\x89g\x0c\xf0\x0b\x8fCoW\xd5\xab3B\xae\x9bc\x02\x06v\x89\xe9\x94\xefZ\xa2^KU\x7ffk\xd3\x07\xd4\xae`\xebRU6f\xbc\x8b\x09'w\xc5\x9e\x94\x0e\xa3\xad\xd6\x06[\xd8^\xbeJ\xfc|L\x94W]Tl\xces\xf0n\x87{8\xe9O\xeb\x984y4|\x0bx\x8f\xe31}\xd4\xb1\x9ez\x8d\xe4\xfayL\x86\xb25b8\xdd,L\x02\x9f\xe9\xaa\xfa\x93\xb4\xcc@\x9a\xd0D\x90F\x82\xadD|\xd7\xe1\x1e\xeb\x9f\xc3\x94\xfe\x962&\x82\xd1\x08Vb \xd8\x97p\xf7o\xdd\x16S^\xa6n\x0a\xd6U\xbd.\x06\xfe\x90\x12\xf2\x99\x86\xa9\xdf\xe3\x8a\xb3T\xf5\xb9\xb4\x8fX\x11\x89j\x13\x8d\xad\xf1Tj\xbf\xf6k\xab\xeaY\xb6Dr@@\x84!\x8c\x1f\xb5+\xd6\xc3x\x994\x12\xa7\xe3f\x8bm\x07v\xad\x0b\xc1Z\xbb\xde\x01\x8e\x87]\xae\xaa\x0bR\xd21N\xc2=1\xf0K\x8c\xa42K3\xb9\x9eH\xf9\xc4\xc1.x\x16S^\xfc+)zo\xf5Vl\xf5@;#\x19\x98\xda\x0a\xb64\xbai\x95\xba\xa7'q_\x99\x07\x13\xd4\xd3\x88g\x8c\x94\xf2\x8b\xb8\xdbb?\xecs\xcf>\x0a\xf60\xdcW\xf1RQgKD\xd6\xc4\xb8\x13\xb9\xe2(U\xedM53\x88\x9c\x06\xd4\x9a\x87v\xc0\x12\xf4\xc6\xaaz\x7f\x10iuG\x07p\x02p\x14\xe9\x0b4(\x87\x8bq\xaf*\xbb\x1a\xa6vV#\xe1\xean\xb6\x0a\x1eY\xf6r\x8e\x83X\x18\xddi\xb8\x18\x0f\xa6\xa8\xe8\xdf\xb7p\x8f^\xbbVUoJ9\xb9\x9e\xedi\xf6(\xc4\xc3\xc0\x16\xaa\xfa\xbd\xe0nU7t2\x92vo\x9c\xfd@n\x81Y\x98<2\x85\xca\xbe\x14\xe6\xe2\x97\x16\xb0\x11*\xb6\xd0\xd6{3\xe0\x1aM\xba\x9b\xcf\x05]/\xe0Z\xdc\xec\xfcT\xf4\x10\x91\x15\xac\xfavA7\xee9n\xeb\xfd\x5c\xe7P\xbb\x1b\xd6\xd9\xc06\xaa\xfaD\xe0\xbc\x86`,&\xb3\xdc&Ec\xed\x0b\x19\xb9\xff\x9b0y9\x5c0\xcd~L\x1a\x85A\xab\xbe]\xb0\x0d\xb0l\x92\x04\xeb\xba\xb85\x07\xff\x8c4q\xe3h\xdcm\xaf'\xab\xea\xab)%V\x11\x91\xf3j\xfc\x00,\x06>\xa5\xaa\xc7\xa9\xeaP\x0b\x13\x5c#\xa7\xe3]V\xb9\x96\xf2\xb5\xdc\x0b\xf8\x5c\xbd\x9f\xa3\xa0\xe4\xc9\x98\xa2\xad\x1c\xf2\x183\xa0\xab\x13\xff\x81um\xe9\x8e\x0e\xa1\xa3\xa3\xb0\x8d.r\xbc\xe76\x1c\x17\xbbr\x0e\x8d\xbe:\xc6\x8f\xcd\x05\x97\xa4\xc1v)\x22\x13q/\xe5\xf2\x1a&f?\xad8\x15\xbfP\xe5\x08/\x00\xdb\xaa\xea\x9f\x08h\x14\xc9\x8e\xc7,\xba\xae_a\x9f\xfd0\xe5z\xaa\x9a\xc2G\xb5\xa0j!\xd7\x82\xf3\x8d-\xda*\xe1\x19\x8ck\xa0\x0b\xdeS\xa4\xda\xebe\xea\x10@l\xba\xd4\xdb\x1c\xcf\xf1\x11\x97\xbe\xe2\xa2`\xbf\x84\x9b\xff\x99\xe2\xe7\xc6\x91\x04\xbe\xe2*\xed\x81\x9f\xa4\xc8o\xb7x\x10\x1cLm6\xd7[\x81-U\xf5\xc9\xc0\xab\x0d\xc3\x04L\x0a\xbdu\xab\xd8\xf7S\x96h\xd3\x8e\xabS\xafb\x97\xc6\x85\x8e\xfb\xaf\x04l\x1c+\xc1\xda\xfa\xe3\xae\xf6\xa0\xbbT\xf5\x7f) \xa3\xb1\xd6<\xe0\x82Y\xc0oRJ\xae\xdbR[D\xdc\xb9\xc0\x9e\xaa:7p\x5c\xc30\xd1\xce@\xd6v8\xe6\x10`\xcb\x04\xfbU\xce\x8e\xf3\xa9\xf6\xbe\xd6\x066\xb7[5\x0a\x16\xe0U\xdc\xf3\x14l\xc0H\x95b)\xb0PH\x19e\xed\x8f\x81\x81\x1c\x03\x03\xc5\x01\x0d\xd7\xe3\xbe\xd8Uu\x0e\xe5j\x15\xec\xde\x96\xb9]p~J:\xf3a\x98:9N$\x94\xc6\x88%\x9b\xfd\xeb\x1a\xfc\x93]\x9c\xa6\xaaG7Ca\xc6\x0c\xa3\xdd\x92\xeb4\x8f\xe9\xed7p\xcf\xc7\xda\x08\x15\xeb\x8aO4\xeafm\xd67\xd7\xc5\xae\xad\x81Iq\x12\xec\xfe\x8e7\xf0\x16&\x94\xae\xd1\x84\xd4\x8eq\xcdr\xc1B\xfc\x12p'\xfd,\x130e\xc1W\xf4<\xc5\xf7T\xf5{\x81\xdfF%\xb1\xa41\x08\xdc\xe81\x95\x06\xe3\xca\xf5\x1d\xca/\xd6:\xdba\x0b\xd4\xe28Lz\xbe)\x8cd\xf6\xf2\xc1\x0b\x80\xab[\xe6&\xd6T2\xc9n\xe3\x80q6\x19>\x22\xd2\x86\xf1\x11\xae-\x94\xb8\x1d\xa1\xbd\xe4;\xfe\x0dn\xf9\x09\xda\x80\x0f\xc5B\xb0\xf6\xe1vw|\x94\xdf\xa4$\x1f\xe8\xa7<\x94\xc2yi\xcb\x96e\xab\x10\x5c\x8e\xa9x\xe9\x83cT\xf54\x02\xd2B\xb2\xb7\xe1o\x82Z\x0d\xf8\xbf\x0a\xf7\xe9s\xff\xb9\x02\x82\x9dZ#\xc1\xfa\xaa\xd8\xfd1\x19\xb7\x96c\xc47\xb8\xc3\x92\x7fD\xb0m1\xbc\xdb\xa5\x22\xd3T\xf5eLqM\x17|\xa0\xda\x86\x1d\x0d\xdb\xd9\x87\xae\x16C\xa4\xc7~\xe9\xea\x1f\xda\x8b\xc9\x11\x9b6\x9c\x84{\xe5\x08\xacJ\xfa\x8a\xadq\x1f\x90.\xdc\x8c_\xf2j0\xc9G\xf6O\xf1\xb3\xfd\x17\xf7J\xc0[R\xff\xc2\x9b\x85p]\x90_\xcb~\x90j&\xd8\xbd\x1c/|\xa3\xaa\xbe\xde\xe87,\x22\x1b\xe1\xb0\xdagq\xb1\xaa\xceL\x99z\xdd\x16\x13>\xe9\x83/\xab\xea\xf9\x04\xa4\x157\x00\x97z\x1e\xfb\x19`\xb3\x22e\xe6\x83(\xa3\xd7TL5\xd5\xc91=\xdb\xd5\x1e\xf7\xb1\x07\xa6r\xec\xb6v\xdb\x1c\x13\x9e\xba\x1ef\xd1mrM\xcf:H\x8e\xc1\xb2Y\xbbn\xc0\x986]\xb0y\x1c\x04\xbbw\x1d\xa6\x07I\xe03\xce\xcdo\x22\x9a\xd2D\xae\xe3\xec\x00\xf4\x99\x1a\xfdDU/ \xed\xb8\x06\xbfzQ\x82I|>9\xa5\xcf\xf5\x18\xe0\x9a\x8c}\xe7F\xdd\xac5i^RW\x82\x15\x91\xb5\xed\xd7\xc3\xc5\x08\xac\xee\xf2\x01\xb3d\x96&\xf5\xba\x0b\xf05\x8fC\x9f\x00\x0e\x0a\xaeX\xde\x83\xafQa\xb3\x97\x00Oy\x1c\xb75K\xaehK\x8a\x9e\xff!\xdc}L\x0bU\xecXF\x16\xbe\x96\xb3\x84+1\x7f\xf1\xc5\x5c\xed\xaf\x8f\xa4\xe4\xa5\xb9\x12l\xc3\x15\xac\x88l\x82[\xec\xf8\x10\x10\xeaj\x05\xfc\xc9\xf6\x05\x17U\xb5a\x8a\xee\x7f.\xf0\x9a\xc3\xfe\x13JM\xbd\xeb\x04\x05^r\xd8\xbf\x13S3\xad,\xc1\xba\xda_\x1bN\xb0\x22\xb2\x02nI\xc1_MIbmW\xf5z\xbd\xaa\xbeF@b]\x89\xf4\xda_\x0b\xf1\x16\xee\xeb\x1e\x1f\x0bf\x02`\xc4U\xad\x9c\x92\x95\x82\xbfGx\xb1\x163A\xad\x0a\xf6\xe1\x14\xbc,W\xfbk\xc3\xcd\x03\x222\x19\xf7\x8a\x0b\xbf$ \xc0\xe0\xcf\xb8\xd9bw\xa1|\xa9\xef,\x10l#\x03\x0e^r\xdc\x7f\xadJ\x04\xeb\xb2\xc0\xd5O:\x16\xb82g\x1e\xc0\xe4\xabu\xe9\xf0\xffU\xd5\xbb\x02\xaf\x04X\xbc\xed8\xf6\xba<\x84H\x92x\x0a\x13xP-\xd6\xa5>A\x12\xa5<\x0c\x5c\x15\xec\x12\x04\xdb^\xa0\xaa\xa6\xe3\x16M\xf4\xa4\xaa\xf6\xa7\xe0ee\xd1\x83\xc0u\xca\xf6\xab\xc0)u5\x15d\x01w8*\xbb\x0f\x03\x7fK\xc9\xbd/\x06^\xa0|\xbd9\xc5\xf8\xcc>a\xb7\x19\xb8\xd9\x9d}\xdf\xad\x94\x10\x9d\xafa\xf2\xc3V[\xf1azI\x82%\x9b\xf6\xd7\xc9\x98U\xc6j\xf1\x86\xaa\xbe\xd0\xe0{\x9e\x00\xec\xeap\xc8\x02\xe0\xf7\x81\xf7\x02\x8a\xf0\x80%\xaa\xf1U\xee\xbf\x0e\xc6q?-\x99\xd7\x9e(\x22\xd87\x0b\x08\xf5I`aJ\xees\x08x\x85\xea\xfd\xec'\x14\xb6s!\xc1f\xd1\x83`\x1bG\xc5qO\x0a\xeey7\xdcR*^\x1ajl\x05\x94@?\xf0w\xdc\xfc\x5c7\xc5$\xf3N\x03\x1e\x06\xa6\x14\x90\xea\xac\x94\xcc^\xdaJ\xa8\xd8\x97p\x0bdZ+\x22\xd8\x5c\x0d\x0a6\x0d\x0b\x5c\xeb\xb4\x80y\xe0\xb2\xc0%\x01ep\xbb\xe3\xfe\x9b\xa6\xe8\xde\x9f\x06\xce\x01\xeeJ\x09\xb9V\x82\xb7\x1d\xd6\x97`\xfb\xf1+1\xdch\x82}\xb0\x917kCc\xf7t8\xe4ML)\xe1\x80\x80Rx\x01c\xab\xac\x16\x1b\xd3\xd8\x8cZiG\xb90ZWO\x82\xe9K\x10\xac\x88\xacn\xed\x06\xd5\xe2\x89\x94,p\xb9\x10\xac\x02\xcf7\xf8~\xb7\xc7m!\xf1\xfa\x90\xd4%`\x14\xfc\xd3a\xdfq\xc0{C\x93U$\xd8R\xfe\xb1/\xe1\xe6\x16\xb7\x94\x82\xcdj\x04\xd7{\x1c\xf6}KU\xbb\x1b|\xbf\xfb:\xee\x7f]\xe8\xf3\x01\xa3\xe0Q\xc7\xfd7\x0bM\xe6\x8c^\xdc\xea\xa3M\xc5\x96\xed\x89\x08vm\xc7\x0b6\xdc\xfej\xa7\xdb\xd3\x1c\x0ey.\x05/j'\x87}\x17\x92\x82Le-85\xccJDW\x84\xe715\xf1\xaa\xc5\xa6\xe1u\x8f\xaa`K\xbd\x7f/;lD\xb0\xae9\x17\xd3\x10`\xb0&\xd5\xfb\xa6\xd1h\xf3\x80\x88t\xe1V)\xe2\xd6\x14\xd5\x0b\x0bH/\x14\xb7\x82\x82k\x91\xbeD\xdcY\x80+\xc1\xaeRH\xb0\xab8\x1e\xfcF\x0a\x1e\xd8u\x81\xab\xd1\xf6\xd7M\x1c?\x08\xd7\x87>\x1dP%\x5c\x16o\xc5c\xc6\xdaJ\x0a\xb6\x94\x9b\x96\x0f\xc1.K\xc1\x80w!\xd8\x87h;\x92/<&G.T|\x18\x81\xab{\xdf\xb2MD\xb0\xfd\x05\xfd\xaf\x8d\xda\xbc\x08\xa4\xccuz0\xc9\xb7\xc7\xba\x98\x08\x22\x05\xfb\x8e\xdd\x9e\xacp\xf11\x94/-#u\x1c\xc8\xae$?\xae\x22)/\x06:\x11:\x0b^S|p\xbd\xd7I\xf6\xe3Vk\x9b\xd6\xfb\xbdH\x99\xdf\xe1\x0e\xfa2s'\x83.\x13\x11\xe8\x08\x91\xb2\xc4\xff\xb7\x91\xcb\x9b_\xc9\xb7\x91\xcbw\x90\x1b\xea\xa0m\xa8\x93\xb6\xa1<9\x01\x18K[R\x09\x87\xb2\x9a\x8b\x00`\xae\xe3q\xcb4\xd1\xc7%2]\xb6\x01\x1d\xa3(X\xf1$X0v\xeej\xd7T&\xb9L]\xd5\xb2w\x1a\xd0\xe5\xb8\x7f#\xef\xdb5=\xdfP\x10b\x01\x9ep\xfd\xe8\x04\xf5\xef\x0e\x97yn{;\xeei\xff\xd2\x00W\xdf\xdd\x15FU&\xc9\x95p\x5c\xcd\xe3\xd9\x9a\xb2\xe3\xbf\xcd\xa2\xc9\x13\x19\xe3\xed\x7f\x99\xb3\x8a\x16`E&\xcc\x05X\x95\x89\xf3\x00:i\xab\xe5\xc3\x94U\xf7\xacbE\xe6Z1\xb6\x19\xf2\xe2\xe6\x8bDT\x0e\xb3\xd05\xaa\x82\x15\x11\x01((,ZI\xc1v{|\xc44\x97\xd1F\xedt\xdc\xbf\x91\xa5W\x82\x82\x0dHk_\x0b\x0a\xd6\xffcVU\xfb\xb6{L+\xd2\x80!\x8f\xfd\x1b\xe5^\xe6\xaa\x12\xfa\xeat\xafu\x1f\x5c\x1d\xe4\x06\xdb\xc8\x0d-}#\xbaD\xe7\xcd\x97\xf9\xf0+\xc8\x10\xf9\x1c\xc0B\xfa\xba\x00z\x18X\x1c\x83\x82m\x96A\xdf\x96\xf6>Ptm\xad\xf1\x03Q\xf8\x0c\x83\x05c}\xb4PY\xf1\x98\xc9\xf8\xb4\x95\xb6\xd7\xa8\x98\x1a\xf5\x82\x16:\xee?\xb6\x81\x1f\x12W\x82\xedo\x12\x82]\xea\xfc\xed\xe4\x86\xda\x0b\x08VQ)l \x1d\x1e`Z\xe6\x84*j;\xff\x22\xfa\xbb\xcc\xbcm\xa0\x13`\x19:\xfb\xcc\x08mI\xaf\x82,\x9a\x084\xe6>8T\xf0\x9b\xa7\xb6E\xaeX\x15l\x16\xe1\xeaP5\xae\x81\xf7\xfa\x16p&9r\xe4\x87_`\x94s\xb2\xd4\xb6\x88\x80\x80\xfa\x98\x08\xf2\xa1\xc9\x927\x11\xdc\x99\xc1\x87\x9c\x0e|\xc1a\xff\x17\x80\xbb\x1bx\xbf\xd7%\xdc\x953\xa1\xda\xf6c\x83\xa9\x1d\x05\x0a3_\xa6\xb3\xf61\xd0\x06\xb0\x80\xfe\xaeE\xf4\x8d]\xcc\xc0\xd8\xc5V\xb1\x8e\xc8\x95|\x1b@/\x83\x1d\xd6\xac \xd1YkT\xb1Y\x5c\xec\xca\x0dO\x12\xb2\xd3o\xfa\x19Y\x1b\x89\xd4\xe7\xe4\x1a\xfa\xfe@\x81\xa9\xa0Z\x13A\xb4\xd8\x15-tE\x0bd\xb9\x0a\xd7q\x22\xd8\xac.r\xb9FT\x84\xb8\xeb\x80V\xc0\x04\xc7\xfd\x83\x82\xad\x83\x82\xcd\xe2\xe2\x80\xabC\xf5D\xc2\xea|\xc3\xd1I[^\x0a\x94E\xaeHeD*t\x0c\x1dC\x00c\xc9\x0f\xe4Q\xe9'\xdf\x9eC\xf2\x0a\xa2\xc3JuX\xc9\xe6\x0a\xd5p\xae6U\x96u7\xad\x95\x1c\x8fkt\x14\x97\xc6\xa8\xa4\x0b\xcf\xa5\x9e\xefy\xf4E.A\x1c\xeeV\xdbU5s_1\x11q&\xd8,>g\xf3}\xfbO\xad\xd8\xf9\x8b\xc9\xb1\x8b\x8e\x01\x80n\xfa\xc7\x98(/E\x8b:\xff\x08\xc1\x0e/\x98I\xce?L2\xeb\xaaj\x05\x87c\x06=f\x82q\x93kR\x04;\xda9+\xbd\xeb\x5c\xc5\xbf\xbb\xddi\xbeUL\x04\x93\x02\xbb\x05\xb4\x00\x5c\x08v\x0e\xc1\x0f6\xf1YNV\xbd\x08\x02\xc1\xb6\x00\xda\xc9\xe5;i\x1b\xea\xa4}p,\xed\xfd\x03\x0c\xb5\xf73\x94[R\x86\x99\xc5\xae\x11\x05+R\xcf\x01\x94\x12\xe4<\x08vv\x0a\xee;\x22\xf8|\x8c\xe7\xaa\xc5D\x10\xe51\x88k\x91+\x1f\x16\xb9\x02\x02ZS\xc1\xce\x0a\xcd\x95\xf8\x078\x9b~\xb0\xaa\xda-\x22\x03\xf6k\x13\x14lS\xf7f\xd16$\xdfNn(R\xab\x85\xe8'\xdf\x0e#\xb6\xd8\xe2\xd4\x87-#\xf6\x0d\x5c2\xb7E\x04\xbb\x18\x13g\x1f\xb5\xdbx\xdc\x13\xda\xfb*\xce8l\xb0\x83^\xdd\xaa\xbc\x82\xed\x1cE!\xb7\x84\x9b\x96\xab\x8a]\x81\x80\x80\xe6'Y\x97\xc4B\xb3C\x93\x05\x05;Z\x07\xa9\xb6\x1a\xc3z\xa1_d\x139D#\x15+%\xd4\xe9H\xb8\xad\xc6\x91\xf76\xad\xf6W\x1d\xe5\xde\x04\x13|\xd3\xe1p\xce\xb71\xae\x8b\x0b\x81w\x19\x89.\x14F\xd2\x81\xe6\x12|\x9e\xc2\xb2.y\x0f\x95\x18\xed;T\xc3\xfb\x1e\xfe\x7f\x9bX\xab\x9a~\xe0\xd2&\xf9,+\xd8\xe7\x1d\xf6\x9d(\x22\xab\x10\x901rEM\x15\x83\x5c^\x10-\xe5~5\x84\xe6\x86\xe2\x99\x89\xa5\x99\x5cG\x9bF\xe7\x80u=\xc6O\xde\x12\xecLK\xb2s\xac\xb9`\xb4X\xfe\xb8\x9e\xa7x\xf3\xc1\x90\x07\xc9\xe6\x0a>&\xa3%\x8a/\x86K\x89\xad\xfe,\x13\xec\xd3\x8e\xfb\xaf\x1f(+\xa0\x89\xe1\x92\xd7y\xbe%\xd4\x007\x8c\xc7-\xd9\xff\x9c,\x9b\x08\xfe\xebA\xb0w\x86>\x92=\x08\x945\x11\xe4\x97\x0a4\xd08\xdc\xb4\xd2\xa4f#\x85\xd6Fe\xb7J\x17\x82}\xde\x9a\x08\xc0DEv\xdbswX\xf2\x8djN\xad\x98\xc0\xf3D\xea\xb8\x8f\x91$\xd6\xc5\xf9\x04\xaa\xcf\xf7\xdca\x17\xb9\x06\x9c\x14p\x94\xb0\xbfw\xf8,f[n\x14\xe5=\xc5\xf1Ygg\x99`\x83\x82\xcd\x1c\x06\xff\x09\x17;\xecJ\x22\x12\x02\x0e\x02\x9a\x11\xdb\xb8\xa8*\xdc\xb3\xd1\x05\x18Lu\xdc?\xf3\x04\x1b\xcc\x04\xad\xa1\x5c\xa3\xe9d\xa9)d\xb4@Q\xe8z\xe3\x8b4&\xdb\xcec\xa2\x95\xcaM\x9fW\x03Vu8\xdf3E\xd3\xf4%\x15\xdfX\x94\x0e\xf2t$\xea\xa6\x95\xa7\x83!r|\x916\xb6\xc3\xd8\x90\x07ps\xb9\xd2\x02\xf3\xc9P\x99\xbf\xc5}\xdf\xae\x0a\xf6\xdd\xf6\x8c\x0f@WO\x82\xf5\x80\x7f\x05\xde\x0ahQ\xf5\x0a\xf0`J>\x1b+\x93\xe7\xe8\x02\xb2\x7f\xda\x92\xff\xe3\xc0\x8b\xa4\xb3t\x92\x8b\x82\x1d\x04\xe6\xb7\x1a\xc1\xbe/\x8c\xc7L\xaaX*(\x12i\x81\xe7\xafd\x83u!\xd8!\xe0\x91\x0a\xed\xaa\xf4.\x11a\x95\xdc3\x0d\xb1I\xc1\xff\xe7\xec\xd8|\x1f\xb0\xbf\xbd\xa7W\x80\x19\x18\xaf\x93\x19\xc0\x82\x0a\x0a\xbf\xf8y\x0ag>q\xcdJ\xdc\x14\xac\xf0\x0ej\x13e\xb4\x90\x89`\xc7\xc0W\x996\x15h\x05\x82m\xd64\x85\x95\x9e}\x0a\xb0\x8e\xc3\xb9f0R0T+|\xc8\x92^\xe4\x82\xca\x0bs\x02L\xb3\xdb\x9e\xf6\xdf\xce\x06\xfeQ\x81`K\xb5\x97\xc6\xf8n\xd5I\xc1\xaa\xf1\x96\xc9\xb4\x0dVU\xdf\xc5-i\xc5fa\xa1+\xb3\xe4Z\x8f\x8a\x14i\xf5D(\xf7\xec\xdb;\x9e\xe7\xa1\xa2s\xe6\xcb\x10m>\xe1\xf6V`s\xc7c\x9e\xaf\xd06y\x96\xce\xce\x15\xf7\x87b<#\x01\x18\xd5\xe0-`A\xae\x09\x06\xe0?\x1c\xf6m\x03v\x0a\x9c\x95I\xf3@=\xfc3\xd3H\xae\xe5\x9e]\x80\x8f\xd6@\xb0\xe5\xce\x9bt[GSm\xd7\xcc_3G!\xd8r\x0a6\xae\xe7p\xf5 x\xb3Y\x08\xd65\xfcu\xd7\xc0[\x01M\x80M\x19\x09\xf9\xac\x06/\x03\xef\xa4\xe4\xde7v\xdc\xff\xa9\x14\xdc\xb3\xab\x07\xc1[\x90\xdd\x921\x81`[K\xc5\x96\x9b\xce\xb6\x02\xca\xb9\xa8\xedQ\x83z-4;h\x09\xf5\x97\xb49&N\x82\x1d*3\xdb\x89\xfaL\x5c3\x92\xe5\x1d\xf7\x7f\x0bx+\xf3\x0aVUg0\x92\xb8\xa2\x1a\xac\x9f\xc5\xd4\x85\x22\xd2I@\x80\xc1\x8a\xb8\xdb0\xefK\xd1\xfd\xbb\x12\xec\x8c\x14\xdc\xf3j\x8e\xfb\xbf\x05\x19_\xe4*\xc0]\x8e\xfb\xef\x92!b\xddSD\x1e\x01Nla\x05[M\xb8hM\xcd\x9c\x816(\xc4\xee\x8e\xf7\xfc\x04\xf0z\x09\x05[\xcd\x0a|\xdcX\xce\x91\xac\xe6P9\x7fE9;21?\x83k\xd2\xfe\xd7\xc9x>\xd8\xa66\x13\x88\xc8n\x22\xf2 p#\xc6\xa5\xe5(\x11Y\x9e\x16\x82\xaa\xd6s\x91KHg$W\xf1\xb3w\x02\x1fr<\xc7-U\x9c\xb7^m\xbdQ\xcc\xeaUK\x989H\xe0\xfe\xdf\xeb\xb0\xef\x00\xc6G?\x10l\x0a\x89u\x17\x11\xb9\x1f\xb8\x15\xd8\xaa\xe0O\x13\x80o\x87\xd9q\xcb\xe3\xc3\xb6/T\x8b\xd9\xa4%z\xcb\x8f`\xd3\xb0\xc05\x197/\x82\x19\xaa\xda\xd74&\x02U}\x05\x93!\xa8Z\xac.\x22\xeb\xa6\xe9\x19Dd\x07\x11\xb9\xc7~,\xb6+\xb3\xdbWDd\xa5\x16T\xb1\xd5\x98\x08\xd2\xaa@\xe3P\xb0C\xf6w\x1c\xf0I\xc7\xe3o\xa5\xf4\xa2U%?X\x9f2,\xd5\xc2\xd5v<\x9a\x82-\xbe\xd7\xc2\x05\xae8\xccJy`-\xc7c\xfec\xfbn>\xd7D\x1d\xd1U\xc5\xee\x93\x12b\xddFDn\xc7,B|p\x94\xdd\xbb\x80\xef\x04\x11\xd7\xb2\xf880\xd1a\xffA\xe0\xb6\x14\xdd\xff\xba\xb8\xb9\x96\xcdci\xdbq#\xb0\x8e\xe3\xfeQ82\xadL\xb0\x87\xa4\xe4\xbe\x0f\xc7\xcd\xa6\xf6%\x11Y\x8d\xd6\xc3hJ$N\x05+){\xee\xbc\x9d\xa2\xba\x8a\x82\xbfS\xbe\xbc})[k\xd2\x8b\x5c\x1ft\xdc\x7f\xc6(\xed2\xbcE(\xea+q=\x83+\xc1\xfe\xa7\x19\x09\xf6.\xc7\x06\xddHD6I\xc1}\x9f\x0a\xf4;\xec?\x068%\x90kY\x82\x1d\xae\xc1\xecA\xaai^\xe4:\x0c\x97ZU\x067Tq\xdej\x887\x0e\xe4p\x0f\xed}\xd2\xa1}(C\xaeq<\xc7\xda\x0e\xfb\x0ea2\x825\x17\xc1\xaa\xea,\x8c;\x8a\x0b>\x97\x82\xfb~\x05\xb8\xd8\xf1\xb0\xcf\x8b\xc8\xcea\xc6\xdc2X\x17\xd8\xcd\xf1\x98\x7f\x01\xcf\xa6\xe8\x196\x01\x96u\xd8?\x0f<\x90\x82\xfb\x9eB\xe5b\x88\xc5x\xba\xb0dQ\xae\xc9:\xe25\x8e\xfb\x1f$\x22i\x88f;\x0dSe\xd3\x05\x17\x88\xc8X\x02\x22D\xf5\xbbrV\xc4\xfa*\xd1\xb4)X\xc1\xd8\xdd]\xc6j\xbe\x8a\x8fv\xf1\x22Pqr\xf3\xb8\x17\xb9\x5c\xcd\x03\x8fcl\xb0\xd5(\xc6$\x17\xb9\xd6v\xdc\xff\x91b\xd9\xdeL\xf8\xbdc\x83\xae\xe0\xa1\x0c\x92P\xb1\xaf\x03\xbfq<\xec=\xc0\xf7\x03\xaf6=>\x8d\xc9;\xe0\x82\xbf\x01\xaf\xa6\xe8\x19\xc6\x00[;\x1esOJ\xee\xfd=\x8e\xfb\xff\xa7i\x09VU_\xc2\x18\xf6]\x90\x96\xc5\xae3\x18\xa9\xd3^-\xbe%\x22\x1b\x11P\xac`}Tb\x1a\xed\xaf\xd30\xb6W\x17\xf4Y\xa11\xda\xf3\x94Rx\xa5\x0a\x12\xc6\x81\xadpK\xf5\xd7G\xf5\xbe\xbb\x95\x22\xd2\x82\x82M\x00\x97:\xee\xbfO\x1ar\xc4\xaa\xea\x9b\xc0\x05\x8e\x87u\x00\xbf\x11\x91f|\x8f\xad\x8ev\xe0h\xfb\x8e]\xf0g\xdcr$\xd7\x03\xae\xe6\x81\x07=\xc4FRp\xf1 \xc8\x03\x8f5;\xc1^\x0dt;\xec?\x1680%\xf7~2\xe5\xf3^\x96\xc3\xd6\x84\x08\xaf\xb8Uh\xa5s\xd4+/\xed\xa7\xad\x82u\xc1\x02\xe0O\xd5~\xd3)\x1f\xc7\x1f\xa7\x82\x9d\xe8a\xe2\xb8\xd7E\x9b\x90\x5cN\xdb)\x80\x8b\xf8zVU\x1775\xc1\xaa\xeaB\xdc\x17\xbb\x0eI\xc9\xbd\xcf\x01\xfe\xcf\xe3\xd0SE\xe4#\x81`c\xa9H \x0e\x03;)\xac\x07\xec\xe7q\xdc\x95@O\x95\x1f\x9az\xb9im\x8f1\xddT\x8b\xb9\xc5*\xd0\xf19\xe2|/\xde\xfe\xaf\xcd\xac`}\xcc\x04\xdb\x89\xc8\xdai\xb8qU\xbd\x0a\x93\xe0\xc5\x059\xe0J\x11\x99\x1e\x84l\xe61\x01\xf8\x86\xc7\xd8|\xc1\xa3\xdf\xd4\xe3\xa3\xe7Zu\xe1v\x92\x0b\xd3u\xc5{\x1d\xf7\x7f\xa4U\x08\xf6N\xdcC\xec\xbe\x99\xa2\xfb\xff\x0a\xb0\xd0\xf1\x98\xc9\xc05\x222\xaeI\xdfi\xb1\xfbM1\x96p\xd3\xf2P\xb1\xd5\x9a\x18\x16\xdb\xad?\x01sA\x1bp<&\xdf\xab\x0b\xfa\x81sl\xbb\xe4\xaa|\xf6\xc8\xbd)o?\xec\xc5\xd5X\xe30\x11l\x05\xac\xe1x\xcc-N{/C\x9eeJ.r\xd5\xe2\xa65\x84\xc9\x88\xe5\x9a7\xa15\x14\xac\xaa\xe6\x81\xcb\x1c\x0f;LDVN\xc9\xfd\xbf\x06|\xd7\xe3\xd0\x8dqw\xf7\x0aH\x0f\x8e\x046\xf48\xeer\xe0\xb5\x14>\xcf\x01\x8e\xfb\xbfF:\xb2ga?rk:\xec\x9f\x07\x1em\x15\x05\xebc&\x18\x0b\x1c\x9b\xa2\xfb\xff\x15~\x91,\x07\x89\xc8\xd1M\xa8^GSWq,rUc\xc3\x1d\xb4[\xdc\x09\xc0?\x86IE\xe8\x8a\x19\xc0\xf5%\xda`\xb4\xb6\xa8d\x83\x8dC\xc1n\x8c\xbb\x0f\xe9-\x0emj\xee\x7f!y\x16\x96T\xb0\xd4\xf0~\x16\x01\xeb;\x1e\xf3\x80\xaa.h\x19\x82U\xd5gX\xba\x0e\xd1h8BD\xa6\xa6\xe4\xfe\xf3\xc0\x17\xedT\xc5\x15?\x16\x91O6\xdb+\xa5\xf2\x02L\xb5\xc4R-\xc9VC\xb0qa\x0b\xe0\xf3\x1e\xc7\xf5\x02?/j\x8fj\xdb \xe9\xaa\xb2\x07x\xbc\xdf\x9b=\xae\x9bD.\x82E\xb8\x07F\x94\xb4\x7f7\xbb\xff\xe4E\x8e\xfb\x8f\xc7,0\xa4\xe5#\xf1\x14\xc6\x17\xd2\x15m\xc0e\x22\xb2\x1f\x01i\xc7\x1a\xc01\x9e\x1f\x85\x8bqw\xeb\xab\x07\xde\x8b{b\xed\x1bRd\xe6\x18\x07l\xebq\xff-G\xb0\x97\x02o8\x1e\xf3\xb54\x04\x1e\x14\x90\xecy\xc0%\x1e\x87\xb6\x03\x7f\x14\x91=\x9bH\xbdVZ\xe4\xcaQ\xfd\x02\x8f\x0f\x06\xec\xd6g\xb7\xc1\x98\xce\xfb.\xa6\xbc\x88+\x1ea\xe9\x5c\xaf.&\x82\xa5\x16\x81\x8a\x16\xbajQ\xb0\x9f\xf08\xe6\x0c\xcfk\x95\xeb\x0f\xb5Drm\x8e[\x80\xc7\xcbV\x0c\xb5\x16\xc1\xaaj?\xf0c\xc7\xc3&\x02G\xa5\xecQ\xbeL\x09\x17\x90*\xd0\x09\xfcED>L@Z\xd1\x83I\xf6s\x83\xc3131^\x03i\xc44k\xf2p\xc1]\xc0\xbfS\xf4\x0c;\xc5a\x1eh\x05\x05\x0bp\xa1U\x09.8ZD&\xa4\xe5\x01T\xb5\x17\xd8\x1f\x98\xe5q\xf8\x18\xe0:\x11\xf9`\xc6\xdf\xe3h\x8b\x5c\x85\x0a6\x89\xbc\x02=v\xeb\xb7[\x9c\xbe\x9ay\xe0\xb7\xc0\xf9U\x9c\xb7\x1b\x93C\xb8\x94\x1b\x9f0\xe2\xaa6\x9a\x9a\xaf\xe4\xc6T\x8b\x82=\xc0\xe3\x98\xd3\xf1_\x5c+\x95\xf9\xab\x16\x15.\xc0\x0eq\x98\x07Z\x82`U\xb5\x1b\xf8\x99\xe3a\x93\xadjL\xd3s\xbc\x02|\xcas`w\x017\x8a\xc8n\x04\xa4\x19\x7f\x03N\xc2,\xb2\x94#\xc5\x1f\x93N\x97,\x80U(_O\xae\x1c\x1e\x04\xeeN\xd13\xbc\x17\xb7\xfc\xaf\x8b\xa8\x90\xf9\xabU\x92\x84\xfc\x8a\xearK\x16\xe2\x18\x11\xe9J\x19\xc9\xde\x89\x7fM\xae\x09\xc0M\x22\xf2\xd5\x8c+\xd8j\xbc\x08\x92@\xa1c~\xdc.Z\x85x\x02\x93[\xe2\xcd\x12\x7f\xfb\x1d%\x9c\xd9K\xb4A5\xb6\xe8$r*|\xdc\xa3\xfdO\xa7\xb6R5\xe59\xb3\x06bM\x02+\xe2\x16\xda\x9b\xc7\xf8\xee\xd6\x87`Ed{\x11Y3\x8d=@Ug\x03\xbfv\xa1i\xf6\xbbv{\xd1*\xd8\xcf\x02{`rkD[\x9c\x8a\xbc\xf8\xfe\xfb\xad\x10YD\x07o\xd0\xb1\x84\x9bc\xb4\xd0\xf76\xf0?L\x14\xd9c\x98\xa8-\xd7\xc8\xa7Wk\x98\x89\x95z\x0e\x97\xbe\x12\x97z}HU\xdfI\x94`Ed9\x11\xf9\xba\x88\xcc\xc0T\x13\xf8z\x8a\x07\xe9OpO\xe4\xbb\xaf\x88\xec\x91B\x92\xed\xc7\xd8\xbc\xee\xa8\xe14\x1b\x02\xff\x16\x91}\x08H3zS|o\x13\xf1K\xb1y\x9e\xaa\x0e\xa5\xecYb5\x0f\xd4D\xb0\x22\xb2\x9d\x88\xfc\x1ec\x8c?\x07\xd8\xc0\xfe\xe9si-\xc6\xa7\xaaoc\xdca\x5c\xf1\x8b4>\x93u\xdf\xfa\x18n\x09\x8a\x8b\xb1<\xc6\x8d\xeb\x12\x11Y6\xc5\x03y4\xdbZ\xd2\x8b\x5c\xf5\xb2\xc1F\x0av\xa1U\x93\x83\x8c,\xb0E\xc1\x0eq>O1F\xae\xd3\xceL\xda\x99\x09\xbcb\xb7W\xed\xf6\x16\xc6ep\x9e\x15T\x93\x1d\xaf=\x0b\xb8*\xe6\x99M9\x05[-\xa6\xe2\x17}\x16\x1f\xc1Z\xb5\xfa\x7fV\xad\xdeo\xa7/\xc5\xc43\x19?_\xb8z\xe1Gv\x9a\xe3\x82\xb5\x80\x13R\xfa\xd1\xe8\x06\xf6\x02\xfeY\xe3\xa9>\x07<\x95\xd2\xc4\xddiX\xe4*\xf6\xc3M\x8a`g\xd9m\xa15\x05E\x04[h\x9e\x88\xdb\xe4R\xd8\x9f\xf2\xaa:\xa0\xaa\x03\xf40\x93\x9e\x8a\x04;\x0d8\xd4\xe3\xda\x17\xda\x8fG\x12\x04[M_)\x85\x8f8\xf2\xe1+\xaa\xfad,\x04+\x22\x9b\x89\xc8\xa5V\xad\x9e[\xa0V\xcb\xe1K\xa9\x95A&\x15\xe0i\x1e\x87~[D\xd6I\xe93-\xc2\xd8T\x1f\xaa\xf1T\xab\x01\x7f\x13\x91_\xa7)\xd0\x22 \x95\x10\x8c\xfb\xa3\xeb,\xf8i\xdc\xa2\xd6\xea\x816\xdc3\x99U\x95\xdc\xbc\xda\xc6\xf9\x00f\xe5\xba\xdai\xf2\x0e\x22\xb2A\x8a;\xc7\xd9\x18#\xbd\x0b\xc6\x00\xbfL\xf1\x87c\x01\xb03\xa6\xe8]\xad8\x02\x98!\x22\x07\x8bHZ*\xad\x8e\xb6p\x91t.\x82\xa1\xa2-\x9f\xd0u\xa2\x5c\x07\xa5\xa2\x93\xe2\xac\x955\xaa\x12W\xd5~\xbb\xcd\xb5[\xb7\xdd\x060\xd5n\xb7\xf2\xb8\xe6\xb91\xa9\xff\xa8\x1f\xc4\x11\xc9\xb5\x0dn\xc1\x050\x92\x222\x16\x82\xbd\xcccZ\x9df\x15\xdb\x8f\xf13t\xc5n\x22\xb2\x7f\x8a\x9f\xab\x1b\xe3]pJ\x0c\xa7[\x03\xf8\x03\xf0\xb0\x88\xec\x1a\x04[@\xc1\x8cv2p\xa6\xc7\xa1\xb7\x02\xcf\xa7\xf0\x91\x5c\xcb\xda\xbcL\x95\x8b\xcb\xb9*\x07\xee<\xaa\xafV\x19\xe1\x90\xb4.v\xd9g\xba\x1d?C\xfb\xb9\x222%\xc5\xcf\xa5\xaa\xfa\x03\xe0 \xe2Y}\xde\x0c\xb8CDn\x16\x91\x0d\x1b\xf9hU*\x938\x0a\x1f\xd6r}_D\xa5h\xca+\xcbN\xbb\xd5I\xc1V\x1a\x03\x98\x8a\xab.\x98\x8f\xa9\xbc\x90T\xbf(\xfe7\xaa|\xb6\xd5p_\xdc\xba\xd0\xe6k\x8eM\xc1\x02\x5c\xe0x\x13\xcb\xe1\x97\xb6\xac\x9e\xf8&\xee\xc1\x07\xab\x02\x97\xa6h\xea\x5c\x8eh\xaf\xc4d\x05z;\xa6S\xee\x0e<.\x22\x97\x8a\xc8f\x0d \xd7Q\x85U\x82\xe4Z\x8a`\xe3&\xd9n\xbb\x95>\x7f\xfc\x16q/\x82\x15\x91\xcf\x03\x07{\x5c\xefR\xfb\x01IBP\xd4\x92p\xdbU\xbd\x0e`\xf2\xf0V\x85\x9c\xc3\x83<\x00<\xe9x3G\xa4\x9c\x84\xde\x00N\xf48tO\xd2U$\xb1\xdc\xf3=\x88\xb1\x93=\x16\xd3)s\x18[\xfc#\x22\xf2/\x11\xf9\x8c\x88t\xd6\xebqhl.\x82\xa4\x15\xec<\xbbE6\xc5%\xaf\xb1\x08E\xec\x16\xe3\xf3\xb8DR\x89\xc8\xfa\x98\x85-W<\xcd\x92\x09]\xb4\x0e}\xa5\x9a\xeb\x8c\xc1=\xbc\xf7\x1aU\x9d\xe92`\x5c\xe0\xaab\xb7\x13\x91\xf7\xa5\x9c\x87\xce\xc5\xaf\xd0\xda\x19\x22\xb2U\xca\x9f-\xf2\x9a\xd8\x0e\x93\x8b!\xce\x8e\xbd\x0d\xc66\xff\x9a\x88\x9c*\x22\xab\xd7\x99d+)\xd8,b\xbe\xdd\xca+\xcb>\x94\xbex\xde\xa1k\xfc\xbfM|t\x15&\xba\xd1U)_@\xedu\xb2\xe2\xec+\x11v\xf4x\x9e\xf3]\x15\x89\x0b.\xb3\xd3\x18\x17|)\xe5\x044\x08\xf8d\x98\xea\xc0T\x0cX6\xed#\xd7\xae\xfc\xfe\x1f\xf0!\x8c\x1fc\x9cX\x01S\x01\xf7%\x11\xb9^D>g\x17A\x02\x9a\x0b\xbf\xc0\xaf\xe2\xed\xcd\x98E\xa14\xc2\xd5<\xf0\x8c\xaa\xde\xe3r@\xbb\xe3@\x9d/\x22\x7f\xc2\xcd\xb9\xf8\x10\x119^U{\xd2\xdasT\xf5>\x1b\x95v\x88\xe3\xa1\xd31\x91a\x07da\x84\xa8\xea]\x22\xb2\x91U\xed\x9f\x8f\xf9\xf4m\xc0\xdev\x1b\x12\x91\xfb\x80k\x80k\xad\x8aNzz\x9e+\xf8M\xca\x06\xeb2\xfd\x84\x11g\xfa\xe8\xa3\xb6\x00\x13\xa1U\xca\xc5\xa8/R\x96%\xcf\xb4L\xc1\xd9\xfa\xea\xdboD\xe4 \xe0p\x8fC\xe7\x02W\x14\xb5W\x9e\xf8\x8bF\x96\xea+\xa3\xd9\x98\xdf\x03\xac\xedxn\xd7\x5c&^\xa1\xb2\xaef\x82I\x18\xd7\xa1\xb4\xe3[v\x8a\xe6\x8a\xfdE\xe4+Y\x91!\xaa\xba@U\x0f\x05\xf6\x05\xdeI\xe82m\x18\x9f\xdc\x9f\x03\xaf\x8a\xc8\xc3\x22\xf2c\x119PD\xa6\x071\x98\x1d\x88\xc8\xba\x1ec>\xc2%\x1e3\xdezaw\xc7\xfd{0\x0bu\xc9\x12\xac]8y\xc2\xf1\xb0#\xd2\xde\x91lV\x9c/z\x1e\xfeS\x11\xd98K\x03GU\xaf\xb3S\xbe?\xd7\xe1r\x9bc*\xa7\xfe\x09xQD\xde\x11\x91\x9bD\xe4\x87\x22\xb2\xa7\x88l\xe0`jit\xa8\xac\xcb\x22W\x94;`\x81\xdd\x16c\x5c\xe7z\xad\x0e\x8dr\x0d\x0cVi\x13Mj\x81\xad\x1c\xb9\x8e\xc5\xd8]}|\x18\xeeg\xe9\x1c\x19\x85\xea\xb2\x1e\xcfQ\xee\x1a\x13\x80\xed\x1d\xcf\xf5G\xeb\xae\xea\x84v\xcf\x1b\xbf\x00\xb7\xd5\xc4mEdsU}$\xe5\xa4s\xb5\x88\x9c\x07\xb8*\xd21\xc0U\xf6\x19\x17\x91\x11\xa8\xea\xbb\xc0'DdGLt[\xbd\x16\xed\x96\xc7\xa4\xe0\xdb\xa3h@/\xc2$\x9b~\xdd\xfe\xbea\x95CD\x9c]v\x1b\xb2\xffvo\x11\xc1B\xba\x16\xba\x06\x0aL\x03\x00\xbd\xaa\xea7\xc1_\x882\xa6\xee\xf7\xffSL*BW\xbc\x0d\x9cW\xc5\x87\xaaQ\xd8\x15w\x8f\xe2_\xfb\x5c\xc8\x97`/\xb3\x03\xd2e\x05\xee\x94\xe2\x01\x95R|\x13\x13\x1a\xbc\x89\xe3q\xeb\x02\xbf\x13\x91OV\xeb\x84\x9c\x22\xa2\xbd\x0f\xd8ZD\x0e\xc4\x94\xf0X\xbbA\xb72\x01S\x13\xe9\xbdU\x0e\xe2{\x09HJ\xbd\x1e\x89_]\xbaA\xcb\x0di5\x0d\xb4y\xf0\xd0\x7fT\xd5+\xcfG\xces@.\xc0=Y\xee\xee\x22\xb2]\xda;\x96U\x18\x07\xe2\x1e\x80\x00f\xb1\xeb\xe7Y\x1dT\xaaz\x15&q\xf2\xd7\xf1\xab`[O\xe4K\xf4\xe5$\xab\xca\xfa\xdec\xb4\xa8S\xeb\xc2\x8e\xd2G\x9e\xbe\x9a\x17\x87\xa2\x5c\x07\x95\xc8u\x7f\xfc\xfc]\xc1\xd4\x0d{\xa1\x82r\xadG\xc9\x9dJ\xe6\x9c\x0fc*\x17$\xae^\xbd\x09\xb6\xc0L\xe0\x8a\xd33B4\xcf\xe1o7\xfe\xaa\x88|?\xc3$;\xa0\xaa?\xb7*\xf6tJ\x97\x87N\x03\x86\x08HB\xb9\xee\x84\x09i\xf5\xe1\x86\x7f\x007\xa5\xf8\xf1:q_p_\xc0\x88'D\xfd\x08\xd6J\xe6\xc7\x1d\x0f\xdb1\xa5\xf9FK=\xdf\x15\xc0E\x9e\x87\x9f,\x22Gdy\xa0Yo\x83\xefbb\xb5\xff\x0fx&\xe5\x0av\x98#\x1a\xa0\x8a\xe2<\xa6\x9a\xf3\xd5\x82\xb29e\xedB\xedu\xe0e\xed\x9diM\x03\xa3\xdd?\xd4'\x92\xabT[\xed\x89{r\xf0?\xa8\xaaw\x88o\xad%c~\xe2q\xcci\x19\xe2\x99\xff\xc3/\xca\x0b\xe0<\x11\xf9x\xd6\x15\x8d%\xda_\xa8\xea\xfa\x98@\x85kS\xa2\x1e\x87J\x10k=\xcd\x02\xea8\xd0\x1b\xbd\xb0S\x91`\xad\xfb\xdc\xad\x98\x120>\xe7<\x95\xea\xccjI\xb7E\xb9\x84\xdb\xe3\x00\x9fLx\xbf\xae\xe5fj%\xd8\xcb1\x85\xcf\x5c\xb0\x85\x88\xec\x97\x11r\xe9\xb1S\x8an\xcf\xb6\xbd\xc2N\xb9\x9a\x02\xaaz\xa7\xaa\xee\x87\xa9\xf0p\x06\xf1%\x92\x89S\xc1\x06\xb8\x9b\x05V\x00n\x03V\xf2<\xc5\xd9\x98|\x03i\xc6\xbe\xb8\xbb\x9b\xdd\xaa\xaaO\xd5r\xd1\x5c\x8d\x03.\x0f\xf8\xd8\x1bO\x11\x91L\x94\x0cW\xd5\xa7\xf1\x0b\xa5\xc5N\xb5\xae\x13\x91M\x9ai@\xaa\xea\xab\xaa\xfa\x1dk>\xf8 \xf03\xe0\xa5\x06+\xd8\xe2E\xae\xa4M\x04\xd5\xa8\xb08\x17v\xe2R~\xfd\x14\x94k\xb1\xa5\xdbo\x06|\xabu\xdc\x8c\x9b)\xad\x92\x1fla2\xf3Z\xda\xab\xb8\xad\x96\x05\xf6\xf18\xc7wj\xed4\xb9\x18\x06\xdb5\xc0\xc3\x8e\x87\xbd\x0f\x93\xaf4+\x84r\x09\xf0{\xcf\xc3'\x02\xb7\x88\xc8Z\xcd\xa6|TuHU\xefS\xd5o\xaa\xeaZ\x18\xd7\xb6\x13\x89/{WP\xb0\xc9*\xd7N\xe0\xaf\x98@\x10\x1f\xbc\x82\x09/\xd7\x94?\xea\x01T_\x8d%\xc2U\xaa\xfah\xc3\x09\xd6\xe2{\x1e\xc7\x9c$\x22\x1d\x19\xea\x8f_\x04\xee\xf2\xae\xaa'\xa9\xea\xa6\x98\x82x\x87clX\x0f\x13_\x91\xbbr\x04\x9bt\xc9\x18\x1f\xf5X\x9cs \x0dD4\x00\x0c\x88H;\xa6b\xc5\x87<\xcf3\x1b\xf8\xa8\xaa\xcevl\x8bJ\xea\xb4\xf0o\xa3\xb5w\xa9R1\x14]c\x08\x13\xd4\xe2\x9a\xd4e\xd0sf\x9e\x0c\xc1\xaa\xea\xdf\x80\xfb\x1c\x0f[\x0bS\xd7'+\xe4\xd1o\xed8\xbe_\xb5\xb5\x81\x7f\xd8\xd8\xee\xa6\x87\xaa\xbe\xa2\xaa\x17\xab\xea\x97UuKL\xba\x92-1\xce\xeb\x17c\xc2\xadk)A\x1d\xdc\xb4\xfc1\x16\xe3-\xe0\x9b#d1\xb0\xa7\xaa>\x93\x81g=\x1c\x93\xf9\xce\x05\x7f\xb4\xae\x9a5\xa3=\xc6\x07\xf9.\xf0w\xc7c\xbe\xc0\xf8\x04#\x00\x00\x18\xb3IDAT/\x22\x97\xaajoFHc\xa1\x88\xec\x8e\xf1\xf7\xf3\x89v\x9afIv\x0fU\xfdw+\x8dh\xfb\x81z\xd8n\xbf\xb6S\xd4\x1c\xc6\xe9{\xb52\xdb\xb2\x98\xc8\x9b\x0e\xdbW;\x0a\xfe\xbb81\x8f\x94\xf9MB\xc9\xba\xee\x1b\x97{R\x1c\x0ax<&\x18f#\xcf\xe3\x07\x80\x03lN\x92b\xd5X\xebs\x14\xb7\x93\xb8~`UUm\xb1\x11\xb5\xe3\xcd5\xa9K\x1ffM!\x16\xb4\xc78\x80\xee\x17\x91[\x1d\xe5\xf8\xaa\x98\xb8\xff\x9ff\x88(f\x8a\xc8n\x96dW\xf48\xc5T\xe0.\x11\xd9_Uoke\x19e\x17I\xdf\xb2[\xd9\x0f\x8e5%u\xda\xb6\x9bj\xffy\xb5\x0a\x04\x9b\xa6J\xb8q\x11c\x1c\x98j\xc9cz\x0d\xcfs\xa8\xaa\xdeZfZ\xeeb*\xd0\x1a? \xf9\x0a\xfdJE$\x0f|\xc3c\x96~\x151z\xc7\xc4\xbd\x92\xff=\x8f\xcet\x82]\xc9\xcc\x121\xbc`\xbf\x8c\xbeQN\x13\x80\x1bm\x9e\xcd\x80\x80z`\x0d\xe0G5\x90+\xc01\xaazyF\x9ew\x13`7\xc7c\x16aR,\xc6\x86X\x09\xd6f\xcb\xfa\xab\xc7W\xf5\xbb\x19T_\x8fbl\xb2\xbe\x8b7\x1d\xc0e\x22rt\x18\xfb\xce\xcaG\xcb\xf4\xe5z,r9\xbbK\xa9j\xden\x8dr\xd3Z\x0f\x13\xf6\x5cK5\xe4\x1f\xa9\xea\xcf*\xdc[\xb9E\xa7R\xcf\x10\xc7\x22W\xd9\x884\x8b\xef{\xf4\x85?b\x92\x84\xc7\xe6\xa1\x92\x84/\xea\x0f\x89I\xf8\xee\x82\xb9$\x90\x1b9v\x82U\xd5\xff\xe2^\xff\xbc\x1d\xb88cn[\xd1\xf3^\x8d\x09\xa9\xad\x05\xdf\x16\x91\xdfY\xd7\x99\x00?\x05\x9b\xf5\xaa\xb2\xa3]\x1b\x8fk\xef\x0a\x9c\x80{\xee\xd3B\xdc\xc0\xe8\x89\xe8\xabU\xf7\xd5\xfe\xbd\x1a\xe4K\x09\x1b\x11Y\x1e\xf8\xa5\xc7s^\x85I\x84\x1ek\xa6\xaf\xa4\xa2\xa9N\xc4\xdd\x05\xe7\xfd\xb63do\xe4\xab\xfe\x0a\x13\x8b]\x0b>\x0f\x5c/\x22\xcb\x05.-K0\xa3\xf5\xe5zGr\xd5\xa3o\xa9\x87\x89 \x87\x09\xe49\xaa\xc61~?\xf0IU\x1drh\x9fj?\x12\xb5\xb6_\xbe\xcc\xcc\xf1W\x8c,\x84V\x8b\xb71\xa1\xc2\xb1W[\xc8%\xd4)^\xc4\xf8:\xba\xe2\xbb\x22\xb2a&\x19@\xf5\xfb\xd6-\xd8\x0c8\x07\x13\x8a^\x0b\xae\x00\xf6vH\xd3\x97\xa7\xfaE\xaeh\xdfj\x16\xb9\xaay\x1f\x11\xb9N\xc5/I\xf8\xcb\x8c\xf8\xefW\xba\xb7t\x11\xac\xaa\xbe\x81\x9f\x7f\xeb\x96\x98\xb2-\xd9d\x01\xd5\x0b\xecW\xb4\x96\xe2\xca\xed\x18\x97\x9a\x9bl\xc7\x09\x08\xa8\x846\xe0s\x98\x95\xf3\x895\x9e\xeb\x1c\xe0`U\x1d\xc8X\x1b\xfc\x02X\xc1\xe3\xb8\xcbH\xd0\xdc\x93tF\xab\x93\xf1K\xd4|r\x96CJU\xf5\xaf\x98\x80\x8b\x051\x99\x0cv\x0c\x1c2\xeaBO\xae`K\x02\xa5\x14\xec,\x8c\xefd\x7f\x91z\x8b\xaa\xc9\xce\xc7\xaf\x14|\xa56(~\xf6\xe51.X\xfb\xc5\xa0\xdaOP\xd5ox\xba\x93\xe5q\x0f6(\xf7\xef\xd5(\xd8\xe1\xeb\xd9\xf4\xa7\x9f\xf2\xb8\xe7\xc7X2Q\x95fF\xc1Z\xa2\xe9\x03\x0e\xf5\x982\x8f\x05.\xca\xf2\x14YU\xef\xc1\xa4\xf2\x9bY\xe3\xa9V\xc5D~}/+)\x1e\x13&\xd7J}9\xc9E\xaeh@G\xe4\x19\x11\xecB\xfb\xff\x85\x04\x1b\xf9h\xc6I\xb0\xa5\x9e}kLd\xd6{k<\xf7\x10p\xb8\xaa\x9eY\xc3\xbdU\xbbp\xe5Z\x11\xa2\xe2yDd2p\xbe\xc7=\xf7\x940)\xa8\xe3\x87\xa2\xe1\x0a\x16U}\xc0N;\x5c\xb1\x03\xfeyX\xd3B\xb2\x8fa*\xd4\xbe\x10\xc3\x14\xf0\x14\xe0o\x22\xb2\x22\xad\x89\xd1\x14l\xd2!\xb2\x85\x19\xb1\x22\xa5\xd3\x87\xc9*\xf5\x0a\xf0\x1a\xa6\xdcxa\xc9\xf1E\xf8\x15\xcf\x1c\x8d\x9c:\x81/`\xbcn&\xd4x\xce\x1e\xe0\xe3\xaazq\x8d\xf7U\x0d1\x8d\x16h\xe0S\x8e\xe7\xe7\xf8\x85\xac_\x82\xb1\xa1\x17\xbf\xe3\xfeL\x11\xac\xc5\xf7\x80\xe7=\x8e;CD\xa6e\x9cd_\x04\xb6\xc3?\x0bW!>\x04\xb4\xb2\x87A\xa5\xc1\x97\xb4\x1fl1\x81\x0c\xda\x19\xdal\xe0\xd5\x22\x82}\xd3n\x8b\x89\x7f\x11l\x17\x8c\xbdq\xaf\x18\xce5\x0f\xf8\x88\xaa^\x1f\x13\xf1\xd7\xd3MK\x81\x1d\x81\xcfx\x1c\xfb\x04\xc6-\xab\xd4G\xb4x6\x92~\x82\xb5\xae\x1e\x87y4\xea\x04\xe0\xc2\xcc\xb3\x82\xeaL`'\xe0\xee\x1aO\xf5+U\xbd\x96\x80V\xc4j\x98\xca\x01\xbf\xf7Tl\xc5x\x13\xd8AU\xef\xcfh{L\xc4\xaf\xe2@/&\x10\xa1.~\xccu\xb3\xe9\xa9\xea\xdf\xf1s\xa3\xf8\xb0\x88\x1c\xde\x04$\xbb\x00\xb3\xf0\xf5K\xcfS<\x06\x1c\xd3\xe2$\x13\xbb\x8d\xccS\xa5i\xb4\x10d\xab:\xf4\xa9\xea|U\x9di\xb7\xb9v\xcb\xdb\x8ca\xde\xb0\xd1\x8d\xc7c\x16c>\x1a\xd3\xb3\xfc\x1d\xd8\xb2\xd6zSE\xea>\xb2;\x8f\x16\xa9\x15\x97\x9b\xd67q\x0f(\xc0~\xa4\xde)\xf3\xb7>\x8c\xcd<\xb6\xf4\xa9\xf5^49\x1e\xbf\xdaM?\x11\x915\x9b\x80d\xfbU\xf5(L\x09\x0b\x97\xc5\x8f\x85\xc0\x81vJ\x1a\xd0\x22\x10\x91]\xect\xf6t\xa0+\xa6\x8f\xc4\xe9\x98\x00\x8273\xdc4[\x00{{\x9a\x06n\xaa\xe7\x8d\xd6\x95`\xad\xe3\xf2\x17<\xe4\xf9\xb2\xc0\xb5\x222\xae)d\x98\xea_\x80M\xa9\x90\x03\xb5\x08G\xc6\x95a=\xe3\xea\x15\x1aW\xfe\xban\xd7\x15\x91\x95E\xe4\x0a\xe0NL&\xac80\x17\xb3(v\x12\x95\xb3P\xf9\xb6M\xb5\x81\x06\x95\xda\xb2\x1a7\xadI\x98\x1c\xd2\xae\xe8\xc6T\xbf\xad\xe4\xdf\x9b\xd9E\xaeBr\xb9\x0b\xf8\x8d\xc7\xa1\x9b\x00\xbfk\x1a\xb6P}\x09\xd8\x1e8w\x94]\x7f\xab\xaaW\x04r]\xe2\xb7Y\x15k\x97\x88\x1c\x83\xf1\x1d\xfft\x8c\xa7~\x02\x13a\xf8H\x82\xefg4\xd3\x8d\xcf\x07\xb2x\xbfv;\x0b\x9e\xecq\x8f\xa7`\x16\x22+}\x5c\x86Tu\xa0\xca\xdc\x0b\xe9$X\x8bc\xed\xc3\xba\xe2@\x11\xf9N\xd3\xb0\x861\x19\x1c\x8dq\x12\x9f[b\x97\x19\x98\x84\x1d\x01\xcdM\xac\x13D\xe48L\xd8\xe6\x8f\xa9=\x1a\xab\x90\xa0\xfe\x08\xfc\x10\x98\xd3\x04Mu\xa4\xa7\xa2\xff\x17n\xa5\xc5\xb3i\x22( \x96\x85\xc0\x97<\x0f?ED\xf6j\xa6\x01f=\x036\x05\x1e,\x9a\xd2\x1c\x98\xa5d\x1bu\x9a\xa27\xcaD\x90\x04\xb1.+\x22\xdf\xc7\xf8\xd1\xfe\x08\xbfP\xcfJ&\x81\x1fX\x82\xadv\x0a\xef\x8b\xc2E\xaej\x94\xeeP\x19\xb5[\xe9\x1d\xef\x85_\x05\xdcnL\xb0\xd3\xf8\x1e\xb5\x07\xfax\xa3\xd1\x09\x9e\xbf\x89\xa9\x9b\xb3\x8a\xe3q\x13\x81\xebDdkU\x9d\xd7D$;\x00\x1c+\x22W\xa8\xea\x7f\x02\x15-\xa5nh\xa0z\xad\xf9\xba6\x0a\xef\x18L\xe9\xf2\x09\x09\xdcc\x9fU\xac\xd7\x96\xb8\xdf|\xc2m\x93\xafr\xbf\xd1\xdc\xb8\x8a\xb1\x12p\x1c&\x9a\xd1\x15\xff\xc0DzE\xe7\x9d]$,\xa3s.\xb4[\xec\xd5\xad\xdb\x1bL(\xf3D\xe4H\xc0'\x92d]\xe0\x0a\x11\xd9\xabV_\xc3\x14\x12m \xd7\xa5\x07\x9ed\xd5< \x22\xdba\xb2]\x1dL<\xeeV\xa5\xf0 \xc6\xce\xf8nR\x1f\x88\x1a\x09\xb6\x9aH\xae\xe2\x7f\xeb\xc2\xd4\xeb\xf3\xf9\x18\xf5\x00\x87\x15-X\xcd\xb6\xef\xc3D\xd7M\xb3\xff\xfa2\x83\x98\x05\xae\xd8\xdb(\x97\x022\xb9\x01c\x7f\xf2\xc1\xee\xc0\x19\x81\x7f\x02RH\xaa\xd3E\xe4\x07\x22\xf2<\xa62\xc0\x17\x13\x22\xd7\x99\x98j\x1agT \xd7L6!\xf0-`u\xcf\xe3\xbf\xa5\xaa\xffk\xf4C\xa4\xa5\x06\xd4w\xac\x9dew\x8fc\x8f\x13\x91\xc7T\xf5\xca0\xac\x9b^\xc5\xa6Z\xc1\x8a\xc8DL.\xe0C0\xf6\xf4$\x93\xcf\x0cb*8\xff\x99\xea*\x1b\x0f%\xa8d\xa3E\xaej\xce_)%`\xa1\xca=\x14\x93-\xcc\x07\x17\xd92N\xe5D]o\xbd\xfaD*\x08VU\xf3\x22\xf2i\xe0!;\xf5w\xc5oE\xe4\xd90\xb5\x0eh\x00\xa9\xb6aV\xb7\x0f\xc1\xb8\xdbu\xd5\xe1\xb2\x8f\x03\x17`\xf2\x094#v\xc2\xdf\x0f\xf8~R\x94\x85/5ULUu\xbe\x88|\x0ccKr\xf5\x03\xec\xc2Dzm\xa1\xaa\xef\x84a\xdf\xf4*\xb6Q\xd7\x8e\xb0\xacM\x82\xfe!`\x7f\xdc\x17i}\xf16\xc6\xf5\xca\xa7\x8f\x0f%x_\x85\x0av\xb46\x1c\xcdMk#\x8c\x9f\xbc\x0f^\x05\xf6W\xd5\xfe\xb4t\xd8T\x95\x89V\xd5gD\xe43\xc0u\xb8\xdb\x87W\x07\xfe\x22\x22\xbbd\xb0\xdcE@\xba\xd1i\xa7\xfc;`\xd2En\x8e\xdf\xaa\xb6/\xfa1Y\xe5~\x8a\xc9/\xfb\x81&m\xe7\xe51\xae\x9bc<\x8e\xed\x06\xf6M\x9b\xc0jO[\x0b\xab\xea\x8d\xd6\xf9\xfa4\x8f\xc3\xb7\xc7d\xab:\x22pBS\xaaW\xea\xa4`s\xc0{0\xeb\x02\x1ba\xa2\x87:\x1b\xf0\xcc\xbd\x98\xb0\xf2\xb31\x91X\xb5\x98\x1fR\xed\xa6%\x22\x9d\x18/\x08\xdf\xd9\xc0\xe7U\xf5\xd1\xb4u\xda\xf6T\x8e$\xd5\xd3Edc\xfcJ\x0f\x7fID\xe6\xa8\xea\x09\x81\x93\x1a\x07[~}7\xe09L\xb2\xf5\x17|\xb3\x81\xa9\xaa\xda\xf2A\xb1\x9b\x08Dd\x05Lv\xa6\xf7c\xf2]\xbc\x17\xb3\x0e\xd0\xc8\xc4B\x8b\x80_\x03?V\xd5\x99\xf6\xd9k\xb5\xed&\xed\xa6\xa5U^\x7f)\x92\xb5\xe4z5\xa6\xe0\xa9\x0fNU\xd5\xab\xd38\x0e\xdaSg\x9f#V\xc5-\x88\xd8\xff\x88\xc6\xe2j\x98$\xe0\xb5\x98\x05\x1e\x02\xben\xc9\xb5\x0dS\x12\xa7\xbf\xe89R=n\xdb\xb3<\x90U\xf5\xb5\x02%\xebK\xb2_\x05\xd6\x13\x91\x03\x83\xed,6l\x83I\x96\xb2N\xc1\x16\xfd\xff\x8a)\xb9\xc7!\xe0%\x8cm\xefEK\xa8s1\xa5F\xba\x9b\xf0\x9dh\xb2'7JM\x90W1\xb9\x1c~[\xc3\xec\x12\xccb\xf6\x01\xf6\xbe\xdb\xed\xd6m\xdf\x0fY\x11D\xed\x99\xef5\xf1\x90\xec\xae\xc0C\x22\xb2\xb7\xaa>\x1d\xf8\xb1\xe6w\xb2\x00x\xc4n\xc5Jl\x99\x22\xe2]\xc7\x0e\xc4\xa9\x98\x90\xd7h\xeb\xf2\xe8\x9fj\x07\xe1|K\x96s\xed\x7f\xcf\xc7\x94m~\x07\xf8/\xf0\x0c\xf0\xbf\x025\xb4\xac\xddV\xb2[\x80?\xf6\x00.\xb5\xed\xe9\x8b\xfb0~\xb2y\xea\x93\xc0<\x10l\x15$\xbb\xb3%\xd9\xe9\x9e\xa7Y\x1bx@D\x0eR\xd5\x9b\xc28I\xec]-\x04\x1e\xb5\xdbh\xd3\xe2\x8e\x22\xd2]\xd1nc1)\x04{-\xa1.\xb6\xbf\xdd\xc0\x1b\x98L\xff\x0b1\x8b\x22Z.V\xddf\xa9\x1a\x99\xe5\xa6_\x81\xa6\xd5M+j\xcf\xe31iFk\x89\x10\xbd\x17\xd8\xb3 \xbamQ\x96\xfb{{\x13\x0d\xdcW\x0b\x94\xac/\xc9N\x04\xae\x17\x91\x13T\xf5\xac@\x87\x0d\x7f\xa7\x03\x05\x0a\x14\x11\x99\x83\x89\xdf\xa7I\xa7\xf1\x99\x84\x88\x8c\x03.\x06>Y\xe3\xa9\xee\x01\xf6j\xa6\xbc\x0c\xb9&\x1b\x90\xafb\xea\xf9\xbc\x5cc\x9b\xfcHD\xfe`\x17\x16\x0228\xe63\xa0H\xeb\xadb\xa3\x5c\x04\xb1\xe6\xd4\x15\x9150u\xb0\xe2 \xd7=\x9b-\xe9M\xae\xe9z`<$\x0b\xa6\x86\xfd\xbd\x22\xb2r\xe0\xab@\xae-N\xce\xe5\xc8uG\xe0a`\xd3\x1aOu\xb7%\xd7\xa6\x9b\x95\xe4\x9a\xb2'\xa9\xbe\x12\x13\xc9n\x05<,\x22[\x86\xf1\x19\x10\xb0\x04\xb9~\x19\x93\x15l\xf9\x18\xc8u\xaff$W\x80\x5c\x7f\x7f?\xfd\xfd\xfdM\xf7`\x05$[kJ\xb3U\x80\xfbD\xe4\xa00\xac\x9aL\xc5\x9e\x88p\x22\xc2\xb2\x99P\xbc\x1a\x93\x89\xa0Vb\xed\x10\x91\x0b0I[jM\xe8\xd3\xd4\xe4\xba\x84\x82\x8d\x88\xb6pk\x12\x92\xdd\x16\xe3\xb0\x5c\x0b\xc6\x02\x97\x8b\xc8\x19\x22\x92# \xa05U\xeb\x8a\xc0]\xc0\x97b8\xdd\x15\xcdj\x16X\x82`s\xb9\x1c\xd1V\x8c\xfe\xfe~\xc4 \xb3\xa4\xa2\xaaob\x22_.\x8b\xe1t\xc7\x03\xd7\x89\xc8\xf2a\xb85\x5c\xc5\x95SsF\xbd\xba\xa8\xd2\xf9K\x1c\x9b\x85\xe7\xaf\xbb\x82\x15\x91\xcd1\xe5\x9b\xb6\xaf\xf1\x19\xf2\xc0\xb7U\xf53\xaa\xda\xd3\xec\x1d6\x07088\xc8\xe0\xe0 \x85d\x1b\x11n__\x9fb\xea\xe7\xe4D$\xab\xb9\x0bzU\xf5\xb3\xc0q1L\x93\xf6\x02\xfe+\x22\x9f\x0a|\x97\x0a\x92]\x12\x1d\x08c\xc9U\x95\x0a\xe4D\xbbe\x83\x5c\x1bB\xce\x22\xd2&\x22\xdf\xc2DV\xad^\xe3=\xcc\x07\xf6n%\x17\xc8\x5c__\x1f\xf9|\x9e|>O\x7f\x7f\xff0\xd9ZyK.\x97\x1b&YK\xb4\x99\xf5\x9dU\xd5\xb31\x11\x22\x0bj<\xd5T\xe0J\x11\xb9FDB\xe4O\x9a\x14\xec\x00&\xfc`b\xf0$\xa8\x95`m\xe9\xf5\x7f\x01gQ{D\xd5\xff\x80\xadU\xf5\xe6Vj\xf4\xdc\xc0\xc0\x00CCC\x0c\x0d\x0d\x91\xcf\xe7\x19\x1c\x1c\x1c\xfe-$\xda\x81\x81\x81%H6\xabf\x03\xfb\x82\xb7\xc6&\x8b\xa8\x11\xfb\x023D\xe4\xe00~S\xa2`#5\xba 4T\x0d\xe6\x80\x0e\x11\xf9\x01&\xd49\x0e\x0f\x9a[\x80\xadT\xf5\xd9Vk\xcb\x5c__\x1f===\x0c\x0d\x0d\xd1\xdb\xdb\x8b\xaa\xd2\xd7\xd7W\x92h\x0b:\xf5\x90}\x11Y%\xd9g,\xc9\xde\x1e\xc3\xe9&\x03\x7f\x10\x91\x1bDd\x950<\x032N\xae\x9ba|[O\xc2T~\xad\x15gc<\x05\xe6\xb7b{\xe6\x06\x07\x07\x19\x18\x18`\xc1\x82\x05\xf4\xf5\xf5\xb1p\xe1B\xf2\xf9<\x03\x03\x03\xc3\xa6\x83\x88h\x0bT\xac\x90pv\x9e:\x90\xec\x5c`w\xe0\xdc\x98N\xb9\x97U\xb3\x87\x86aZ\x17\xf5Zn\xd1F0k\x0b!\xe0`IT\x5c\xe4\x12\x911\xb6\xfa\xf2\x83\xc0\xfbc\xb8^/p\xb0\xaa\x1e\xa7\xaa\xf9Vm\xf4\xdc\xe2\xc5\x8b\xe9\xe9\xe9a``\x80\xc1\xc1A\x86\x86\x86\x222]B\xc9\x96 \xd9\x5c\x96U\xac%\xd9!U=\x1aS\xad6\x0e\xbf\xb4I\xc0\xc5\x22r\xab\xcdU\x1b\x10\x90\x05\xd5\xfa\x01LB\xf1\xe3\x89'?\xc9\x1b\xc0\x0e\xaazy\xab\xb7mn\xf1\xe2\xc5\xcc\x9f?\x9f\x9e\x9e\x1e\x22\xb2\xed\xed\xed\x1d\xb6\xcb\xf6\xf7\xf7\x0f/\x80E$[\xa4(\xc8\xbao\xa8\xaa^\x0c\xec\x02\xcc\x8c\xe9\x94\xbb\x01O\x89\xc8\x97\xc2\xf0MT\xc5\x96w\xd3rS\xaf\xd2\x8a\xed&\x22\xe3D\xe4\x1c\x8c\x87\xc0z1]\xe7_\xc0\x16\xa1\x8an\x01\xc1vww\x0f\x93kww7\x03\x03\x03\xf4\xf6\xf6\xd2\xd3\xd3C__\xdfR\xe6\x82\x02\x15K\xd6M\x05\x05$\xfb\x0f\x8cA\xff\xd1\x98N9\x11\xb8@D\xee\x10\x91i\xa1\xab\xc5\x80\xc9\x98\xb5\xec\xd1\xd7\xb3}\x08\xb3\xa5\xcc\x096\xbd\xe7\x93\x98\x8a\x01q\x09\xa4\x8b\x81\x9dT\xf5\xed\xd0Y-\xc1\xce\x9d;\x97\x85\x0b\x172\x7f\xfe|\x16/^\xe0\x86\x18O\xbb:\xa6V\xd1S\x22\xb2\x7f\xe8~\x01u@;\xb0'\xf0\x00\xf0\x1d`\xb9\x98\xce\x9b\x07~\x02l\xac\xaa\xf7\x87f.\xd3\xf8\xf3\xe6\xcd\xa3\xaf\xaf\x8f\xae\xae.\x86\x86\x86\xe8\xeb\xebc\xdc\xb8q\x00\x8c\x1f?\x9e\xee\xeen\xc6\x8d\x1b7\xece0~\xfcx\xfa\xfb\xfb\xe9\xec\xec\xa4\xd9\xd4k\x09\x92}\x13\xd8\xc7\x06\x12\x9c\x8b\xb1\x02\xc6\x81\xf5\x80?\x8b\xc8\xc3\xc0\x09\xaazG\xe8\x8a\xd5\xbf\x96Q\xfa\x9d\xcf\x22W\xe1\xb1M#\x9e0\xd9\xe4>M\xed)\x05\x8b\xf14p\x98\xaa>\x10\xba\xe3(\x04;{\xf6l\xc6\x8e\x1d\xcb\xc4\x89\x13\x89\xa2\xba\xa2\x12F\xaaJ.\x97\xa3\xad\xad\x8d\x5c.GWW\x17\xf9|~8OA\x7f\x7f?===\xda\xd5\xd5\xd5\xd4\xd31U\xbdLD\xee\x00\xce\xc7Do\xc5\x85-\x80\xdbE\xe4.K\xb4\x0f\x85.Y\x15\xb9&A\x94\xcd\xd2\x87\x05\x93A\xee L\xe9\xec81\x84\x09\x1c8QU\xfbBw\xac\x82`\xe7\xcc\x99\xc3\x84\x09\x13\x86}_#\x92\x15\x11\xc6\x8c\x19COO\x0f\xb9\x5c\x8e1c\xc6D\xd9\xb5\x18?~\xfc\x12D\x0b044\xa4M=\xb2\xcd\xca\xe8~\x22\xf2i\xe0\x17\xc0\x94\x18O\xbf\x0b\xf0\xa0\x88\x5c\x03|7T\xb6\x0d\xf0\xc4f\xc0g\xa8\xad\x5cv9<\x09\x1c\xaa\xaa\x8f\x84fv\x98Ftvv\xb2p\xe1B\x1e\x7f\xfcqn\xbc\xf1\xc6\xe1\x05\xae\xde\xde\xde\xe1\xff\x1e\x1c\x1c\x1c\x0e:\x88l\xb0\x91\xeb\x16@OOO\xe4W'\xcdf\x8b-A\xb4W\x02\x1b\x00\x7fM\xe0\xf4\xfba<\x0e~'\x22k\x86\xeeYV\xc5\x8e\xe6\x07\x9b\xa3\xb5\xa2\xb96\x00\xce\x00~\x90\x00\xb9\x0e\x00'\x03\x9b\x07r\xf5 \xd8\x05\x0b\x160o\xde\xbca\x9f\xd7h\xa1\xab\xbb\xbb\x9b\xee\xeenz{{\xe9\xeb\xebchhh\x98T\x0b\x93q\xb7\x92\x8a- \xd9wTu\x7fL\xa1\xb7Y1\x9f\xbe\x0d\xe3\xc1\xf0\xac\x88\x9c\x13\x12|\x07T\xc0\xda\x96TO\x07\xd6O\xe0\xfc\x8f\x02[\xaa\xea\x0fm\x85\xdf\x00W\x13\xc1\xec\xd9\xb3\xe9\xeb\xebc\xd1\xa2E,^\xbc\x98E\x8b\x16\x0d\x9b\x06\xc6\x8f\x1f?L\xac\x03\x03\x03\xb4\xb7\xb7\x0f\x07\x1b\x00\xc3\xbfK\x18iZ\x84d-\xd1^%\x22w\x03\xbf\x02>\x11\xf3\xe9\xc7\x00k\xb5r\x1cw\x05\xf5\x0a\xe5\xe3\xea]\xdc\xb4\xa4\xe07+Jw,f\xf1j\xb7\x84H\x15L\xd8\xf8\xc9\xc0\x8fTu0t\xbb\x1a\x14l\xa4\x5c\xfb\xfb\xfb\xe9\xeb\xeb\x1b\x8e\xe0\xea\xed\xed\xa5\xb7\xb7w\xd8<\xd0\xd7\xd7\x87\x88,\x11\xd1\x05\x14\x87\xce\xb6\xde\x88W}WU\x0f\x04\x0e\x00\xde\x89\xf1\xd4y\x8c[M@\x00\x18\xcf\x9331yU\x8fN\x90\x5c\x1f\x026S\xd5\xd3\x02\xb9\xc6@\xb0\x03\x03\x03\xcc\x9d;\x97E\x8b\x16-\x11\x1e\x1b%~\xe9\xeb3\x8b\x85\x91\x1fl\xa1z-$\xdaf,\x9c\xe8H\xb4\x7f\xc1\xd8\xc2.\xc4D\xb6\xd4\x8a\xcbU\xf5\xa9\xd0E\xcb\xaa\xd8\xd1r\x11d\x1e6\xc3\xd5A\x22r/\xf08\xf0U\xe2\xf3c-F\x0f\xa6\xe2\xc7\x07TuF\xe8f1\x11\xec\xacY\xb3\xe8\xee\xee&\xaalP\x98I\xab0\xcbV.\x97#\x9f\xcf\x0f\x9b\x0c\x02J\x92\xeclU=\xc2\x12\xed\x9f\xf0\xf7\x11\xee\x07~\x18Z\xd4\x9f\x9b\xb2L\xb2\x22\xb2\xae\x88\xfc\x18\x93\x95\xear`\xc7\x04/7\x80\x09\x9d]GU\xcfV\xd5\xa1\xd0}b$\xd8\xee\xee\xee\xe1P\xd8(UaD\xb2\x91+\xd6\xe0\xe0\xe0\x12Q\x5cmmm\xc1DP\x99h\x9fS\xd5O\x01\x9bc\xb2\xb9\xbb\xe2BU})\xb4d\x0b}\x11D:E\xe4S\xd6\xa6\xff,p\x0c\xf1\xba\x02\x16#\x0f\xfc\x01XOU\xbfl\x83j\x02\xe2&\xd8\x88\x5c\xf3\xf9<\xaa:\x9c\xa60\x22\xcf\xe8\xff#RU\xd5\xe1@\x84\x80Q\x89\xf6QU\xdd\x03S\xd5\xf6\x1fU\x1e\xb6\x1885\xb4^Y\xf3@\x94\x83`47\xadL(X\x11YGD\xce\x02^\x07\xae\xc4,`\xfd\x7f{\xe7\xaf\x225\x14\x85\xf1\xdf1\xf7Q\x14\x9bE\xb0\xb7\xf6\x01\xf6\x01\xf6\x01\x04\x1ba\x0b\xb1\x11l\xb4\xd2B\x10\x1b\x0b\x85-\xb6\xb1\xd0b\xb1\xb0P\xb0\x16\x15\xacV\x0bY\x16A\x11A\x161\x83\x9f\xc5\xcd\x8d\xd7\xd98\x7fv\x93M\xc2\x9c\x0f\x86If2\x19\xb8I~|\xf7\xdc{\xcf\xe9Z\x8f\x81s\x926$}\xf0\xdb\xaac\xc0\xe65\xb9\x12<\xcb\xb2D\x12eY\xd6pm\x9aA\x90f\x16\xb8f\x82\xf6\x85\xa4\x0b\xc4\x82\x8bo\xe6\x1c~[\xd2go\xb5\x95\xd1u`\x93\xf6\x97\xb36\xe99q\xda\xd5\xba\xc7YO\x08\xb0)4\x90\x96\xc8\xa6\xfd\xa4\x14s\xcd]k\x0e\xd4U\x1f\xdcZ\x12\xb4O\x81\xf3\xc4\xd56\xbb\x0d\x87|%.Et\xcdv\xb1]%\xdc\xee\xc3\xf5\xde?\x81\xffxOL\xf8\xb2\xee\x89\xb0{\x00l\xde\xf5\xcf_\xe9\xf3ys_]KA\xf6\xb7\xa4-\xe24\x9bK\xc0~\xf6\xf5MI^\x0fu6\x5c\xbb\x02\xa6\xf5t?\xbc\xac\x00\xd8\x85>\x027\x80\xab,\x1e\xa2r\xb5\x09\xd8\x1c\xa0\xf9vZ\xf1\x9a\x06\xba\xf2\x81\xad&'\xebZ\xfa\xc1*%\xdd\x03N\x13k!\xbd\x05\xeez\xcb\xac\xa4\xdav\xb1{UO\xe8\x0a\xb1\xf4\xb6\xabO\xc0N\x0f\x5c\x99Y\xbd\x046\x815\x9f\x9a\xe5`m\x15\xb4\x07\x92n\x11\xf3j\xfe\xf4\x16i%D0\xb6\x84\xdb\x0f\x89UX\x8f\xabO\xc4DD\x97+\xc7\xea\xa3\xd1=+\xe4p\x95\x84\x99\xd5\xfby,\xf6\xbf'\x08\xc1[\xb1\x1d\xd0\xfa\xc3\xb0\xba\xd7\xfe\x9b\x99m\x03\x1bG\xf8\xf9/b\xa1\xc1\x9d\x0eC\x0d\xae\xa3\x026\xbb\xc8\x7fmm\xb5\xa8 \x84@Q\x14\xff8\xd7\x10B\x0d\xd5\xc9d\xe2\x80u\xf5\xe1`\xa1\x9b\x84\xdb}\x87\x09\x96\x01\xec\x1e\xf0\x8cX[\xeb\x87\xdf\x16\x03v\xb0\xd3\x8e4A\xb5(\x0a$9D]C\x83+s\xba\xbf\x8b\xc2u0\x10\x96\xf4\xca\xcc\xde\x01ks\xdc\xea\x13\xe051f\xef\x1a\xb8NM\xbbW3\xab\xc3\x04\x1eku\x0d\x14\xb2]M\xd3\x1a\x82\x8bm\xd2.p\x0d8KLe\xe9p\x1d\x0b`\xa7\x1dl\x82j\xeeb\xd3\xbb;Y\xd7H4\xd6\x921\x8f\x80\x83j{BL\xea~\x118C\xacJ\xfc\xc5/\xed\xc8B\x04\x87\x88[\xcd\x1e\xc8\x13i/t\x22\x87\xaf\xcbu\xdc0\xc1w3\xbbSA\xf6\x81\xa4\xfd\xbcg\xe9\x1a\x9f\xfe\x00\x89\x0bY\xd4\x9e\xe4\xf2`\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x03\xa9\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x19tEXtSoftware\x00Adobe ImageReadyq\xc9e<\x00\x00\x03KIDATx\xda\xd4W\xcdk\x13A\x14\x7f\x93\x9d\xcdWs\xc8\xc1\xe6RZAj\x03\xb6H\xdb`\x9b\xda\xd8\x8f\x80\x0azmZ\xfc\x0b\xbc+\x88\xff\x83\xf4PDA\xf0\x1f\x90\xeaE\xb1\xa0B/F\x1b?\xaa=\xa8\xa0\xf6b\xa1XTj\x0e%i\xd2d\xc7\xf7\xa6\xd9\xb8\x99\xec\x96\xacn+\xbee\x98\xccn\xe6\xfd~\xf3\xe6\xbd7o\xd8\xf7\x9f\xdf`\xe0\xf8 XE\xd34\xd0u]P\xef\x85T\xabU\xd8\xd9\xd9a\xd4\xab\xc2\xed& 8D\xa3Q\x08\x06\x83\x9e\x10\xd8\xde\xde\x86|>\x0f\xce\x04D\xe3K\x9f\xcf\x07\xc1@\x10\xc2\xe1\xb0'\x04H?\xe9Tq\x1c-@\x7f\x14\xf4\x08\xe1\x11\xbe\xb0\x05\xaf\x13\x10\xcaW\x13\xdc3\x02B\x80\xf9\xb4\xb4\x05\x92\xb0\xc7\x04$\x86\xf8_,@\xde\xfa`\xe1>x)C\x89ag\x0b\xa0\x87vh\x5c\x9b\xd5|Z\x8a1\xd6A\xf1?\x9e\x9a\x00\x1c{\x93\x07\x8c*\xe8\x5c\x17\xbe\x90\x8f\xac\xb1\x8e\xe3l\xb5R\xbdl\x18\xc6:\xeb\xec\xec\x8cc\xb8\xe5\xfc\x01\x7f\xd4\xef\xf7\xcbpa\xf8\xec\x87\xd0\x16 (\x94\xcbe(\x97\xca\xf9B\xa1\x90\xe4\xed\xb1\xf69d\x15\x0d\x85B2\x03\xa2\x05`?\x85\xfc!\x10\x08@\x91\x17\xa3m\x91\xb69\x8e\x80is\xe5^:\xde^BXD\x02\xd3s\x9a\xa3\xc3\xe948\x08`\x95\x04as\xd3\xe4\x07M\x80\x84\xb0\xb9\x99t\xfe\x89 ,7\x84!=\xd3*4^x\xf4\xd0S\xacsg\xcf\xef\x1eHV\x1c\xc4\xe6v\x8e\x87\xce\x01\xa3\xc3)\x86D\x84:\xc9\xad\xd0bP\x07\x0b\xb7\x85\x059\xbb\x1a\x11\xb6\x04(\x13R\xf2\xe0\x9c\x83:\xc9\xadP\xccW*\x15\xa9S\xc5q$@cr\x10*L(B\xfe6\xeeMp{\x02\x86h\xf2\x01z''\xd4\xbeQ{\xb2\xf8\xd8\x15\xf0\xe9\xf4\x99\xdd\xdc\xa2\xe8Rq\xb8]\xe1Q?\x0dk=\xad`4\x99\x92\xa6lEh\xeb\xc8rdEU\x97\x8a\xe3\xb8\x05\xd6\x9a\x80\xda\xb3\x5c\xd6\x95\x05&\xc7\xd2\xbf\xcd\xeeP_\xc8-\x90,m>Xk\x02j#C'm\x8bJ;\xa13\xc5\xcc\xae\xaa\xae\xa6D\x14\x8b\xc5`ss\xb3\x99\x80\xa5\xd1\x0a\x96^>we\x81\x89\xd4d\x93\x1e\x95\x00a\xf3\x99\x0b\xd3?n\x5c\xbfy\xc8z\x0a6M\xc4'yb\xc4\xb5\x0f\xecE\x80~\x136\x9f\xcaL]\xdd\xf8\xbaq\xfb\xee\xfc=h8\x17\x14\x1f\xc8\xbdZre\x81\xb1\xd1qG\x1f\xa0~z&\x03\x84\xcd\xe8f\x842\xbb\xf6e\xed\xd2\xf2\xf2\x1bX\xfd\xbc*\xf7z\xfe\xce<\xc3U\x08,T\xe4\xb8T*\xb9\xf6\x01\xea\xb1\xf0\xa0\xb9,3\x93\x917\xad\xee\xa3\xdd\x90H\x0cB\xd7\xe1\xaek\xbd\xf1\xbe+\x92\xc0\xb1\x9e^\xf8\xf0\xe9}\x1c\xe7\xa6\xb1\xf5\x93\x92\xfe\xbe\x81\x8b\xa1pH\xa6O\x02\xce.=ue\x81\xd4\xc8\xa9]\x02\x98\x09\x8b\x85\x22[y\xf7\xf6V\xed\xd3\x0a\xb6E\xc4\xfcHz%\x81\x9e#qi~\xb3\xc9\xf8\xc4}\x8cD\x22u\x02\xb4\x127\x16 \xcb\x99\x04\xb6\xb6\xb6\x18\xf9\x0f\x95z\xaaoqk\xe2\xb1V\xad\x5c\xe3\x8d\xe1\xa2s\xc0\xc2\xb5\xe5s\xbe\xa1\xb4\x13\xe0H\xde\xfeb\xa2\xdc\x0d$\x01\xce\xff\xec>P[\xe9\x9eW3\xdb\xc9\x98\xa7_\xbc\xceyR\x0b\x90\x8f9\xc9/\x01\x06\x00oO\x87\x87}~\xb3\xc0\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x02\xd6\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x000\x00\x00\x000\x08\x06\x00\x00\x00W\x02\xf9\x87\x00\x00\x02\x9dIDATx^\xedY\xc1\xebqA\x14\xbdOoC\xa1H\x14\xa5\xec\xec\xac\x84\x85\x85\x7f\x5c$v\xb2S\x14\x16\x16J,\x08%\xf5\xbe\xee\xab[\xfa\xee\xef}\xc74\xd3\xa7_\xcd\xa9i\xe65c\xe6\x9c{\xee\xbc\xf7\xe6\x09\xa2(\xa2\xdf\x8c\x14}\x0f^\x80\x17\xe0\x05x\x01^\x80\x17\xe0\x05\x84\x84A\x9b\xcd&\x92v\x10\x04R'\xb6\xa5\xfe\x1bQ\x14\xa9:\xa9\xcdh4\x1a\x01\x01\x042\x18\x91\xcff\xb3B\x0c\xd6\x00L\x10\xd6\xd7\xeb\xf5#\x11\xe1\xa7\xe4K\xa5\x12\xfdo\xb0\x08\xe6 \x22\x8c\x05\x08\xf9L&C\xb7\xdbM\xa2\x9b\x14q3\x07\x92\x1dap\xc0D\x84\x93M\x8c\xc8s[_K\xd1}N\x82\x81\x05\xe0\xc5\xa4_\x91N\x9eK\x8f\xc7\x22\xcc\x05$M\xa6k\xdd\x87\x0arT\x09t\x98B\xd8\x01\x9cBd\xe2\x80\x9b\x14\x02PD\x14Y4N\xc3\xd2\x01l-&\x87\xaf\xc1:\x16\x0e`\xe0M\xf7x\xd3v\xbb\xa5~\xbfO\xb9\x5c\x8e\x04\xf7\xfb\x9d\xd2\xe9\xb4<\xb0x|\x5c#`\x07\x8c\x80\xa3\xc4Q\xafT*B^\xc0OsM\xc6<\xe2\xf6\x02\x0c\x9f\x1b \x0d\xed\x91rM\xbcX,\xd2\xe1p`'\x0c\x04\x7fY\x80\xe4\xb2\x08\xa8\xd5j4\x9b\xcdh\xb1X\xf0\x06\x06\xbf\xfb\x82\x00D\xa8\xd5jQ\xb7\xdb\x8d7\xeeh4\xa2\xe9t\xcamD\xdc\xbd\x00\x1c9i\xeb~v\x82E\x0c\x06\x03b\x8c\xc7c\x16\x81\xe6r+\x00\xdb\x8d\x8f\x8b|\xeb\xect:\x94\xcf\xe7i\xb5Z\xa9q\x16\xebB\x01B\x02FL\xd7\xfaw\x85B\x81\x1dH\x1a\x0f\x1c\xb1p\x008\x82\x04J18\x8d\xb9u\x00\xd4\x8a,\xdfu\x14\xf1\xe7\xf3I\xfb\xfd\x9e\xca\xe5\xb2r\x08\xcc\x0b\x11\xda\xe6\xa0\x8c\x91\xfb\xfa|>'F\xb5Z%\xc6\xeb\xf5b\xf2\xf1\x93\xb9^\xaf\x9b\x90\x14\xa1.71\xfe\xb6\xd3\xeb\xf5\x98(\xbf\x8d\xf2{Q\xdc\xd7l6\xa9\xddn\xff4\x17\x88>Fh\x10}y\x09S\xf5{_\x18\x86,\x00\xce\x85S\xc8\xdc\x01l#v@\xca\xbf\xe62q\xc0y\x0a\x81M\xac\xae\xa5\x80\xb1\x98>>\x00???\x00AAA\x00BBB\x00CCC\x00DDD\x00FFF\x00GGG\x00HHH\x00III\x00JJJ\x00KKK\x00LLL\x00MMM\x00NNN\x00PPP\x00QQQ\x00RRR\x00SSS\x00TTT\x00VVV\x00WWW\x00YYY\x00ZZZ\x00[[[\x00\x5c\x5c\x5c\x00]]]\x00^^^\x00___\x00```\x00aaa\x00bbb\x00ccc\x00ddd\x00eee\x00fff\x00hhh\x00iii\x00jjj\x00kkk\x00lll\x00nnn\x00ooo\x00ppp\x00qqq\x00rrr\x00sss\x00uuu\x00vvv\x00www\x00xxx\x00yyy\x00yzy\x00zzz\x00{{{\x00|||\x00}}}\x00\x7f\x7f\x7f\x00\x81\x81\x81\x00\x82\x82\x82\x00\x85\x85\x85\x00\x86\x86\x86\x00\x87\x87\x87\x00\x88\x88\x88\x00\x89\x89\x89\x00\x8a\x8a\x8a\x00\xaeh\xf1\x00\x8c\x8c\x8c\x00\x8d\x8d\x8d\x00\x8e\x8e\x8e\x00\x8f\x8f\x8f\x00\x90\x90\x90\x00\x92\x92\x92\x00\x93\x93\x93\x00\x94\x94\x94\x00\x95\x95\x95\x00\xb2{\xe6\x00\x96\x96\x96\x00\x97\x97\x97\x00\x98\x98\x98\x00\x99\x99\x99\x00\x9a\x9a\x9a\x00\x9b\x9b\x9b\x00\xba~\xf3\x00\xbd|\xfa\x00\x9c\x9c\x9c\x00\x9d\x9d\x9d\x00\x9e\x9e\x9e\x00\x9f\x9f\x9f\x00\xa0\xa0\xa0\x00\xa1\xa1\xa1\x00\xa2\xa2\xa2\x00\xa3\xa3\xa3\x00\xa4\xa4\xa4\x00\xa5\xa5\xa5\x00\xa6\xa6\xa6\x00\xa7\xa7\xa7\x00\xa8\xa8\xa8\x00\xa9\xa9\xa9\x00\xab\xab\xab\x00\xac\xac\xac\x00\xad\xad\xad\x00\xae\xae\xae\x00\xaf\xaf\xaf\x00\xaf\xb0\xaf\x00\xb0\xb0\xb0\x00\xb1\xb1\xb1\x00\xb2\xb2\xb2\x00\xb3\xb3\xb3\x00\xb4\xb4\xb4\x00\xb5\xb5\xb5\x00\xcf\x9d\xfe\x00\xb6\xb6\xb6\x00\xb7\xb7\xb7\x00\xb8\xb8\xb8\x00\xb9\xb9\xb9\x00\xba\xba\xba\x00\xbb\xbb\xbb\x00\xca\xad\xe7\x00\xbc\xbc\xbc\x00\xbc\xbc\xbd\x00\xd5\xa6\xff\x00\xbd\xbd\xbd\x00\xbe\xbe\xbe\x00\xbe\xbf\xbd\x00\xbf\xbf\xbf\x00\xc8\xb8\xd7\x00\xc0\xc0\xc0\x00\xd2\xb1\xf1\x00\xc1\xc1\xc1\x00\xc2\xc2\xc2\x00\xc1\xc4\xbe\x00\xc1\xc4\xbf\x00\xc3\xc3\xc3\x00\xc2\xc5\xbe\x00\xc4\xc4\xc4\x00\xc5\xc5\xc5\x00\xc6\xc6\xc6\x00\xc7\xc7\xc7\x00\xc8\xc8\xc8\x00\xc9\xc9\xc9\x00\xd8\xbc\xf2\x00\xca\xca\xca\x00\xcb\xcb\xcb\x00\xcc\xcc\xcc\x00\xcd\xcd\xcd\x00\xce\xce\xce\x00\xdb\xc3\xf1\x00\xcf\xcf\xcf\x00\xd0\xd0\xd0\x00\xd1\xd1\xd1\x00\xd2\xd2\xd2\x00\xd3\xd3\xd3\x00\xd2\xd4\xd0\x00\xd4\xd4\xd4\x00\xe1\xc8\xf8\x00\xd5\xd5\xd5\x00\xd6\xd6\xd6\x00\xd7\xd7\xd7\x00\xd8\xd8\xd8\x00\xd9\xd9\xd9\x00\xda\xda\xda\x00\xdb\xdb\xdb\x00\xe5\xd3\xf5\x00\xdc\xdc\xdc\x00\xdd\xdd\xdd\x00\xde\xde\xde\x00\xe9\xd4\xfd\x00\xdf\xdf\xdf\x00\xdf\xdf\xe0\x00\xe0\xe0\xe0\x00\xe1\xe1\xe1\x00\xe2\xe2\xe2\x00\xe3\xe3\xe3\x00\xe4\xe4\xe4\x00\xe5\xe5\xe5\x00\xe6\xe6\xe6\x00\xe7\xe7\xe7\x00\xec\xe4\xf3\x00\xe8\xe8\xe8\x00\xe9\xe9\xe9\x00\xea\xea\xea\x00\xeb\xeb\xeb\x00\xec\xec\xec\x00\xee\xee\xee\x00\xef\xef\xef\x00\xf0\xef\xf1\x00\xf0\xf0\xf0\x00\xf1\xf1\xf1\x00\xf2\xf2\xf2\x00\xf3\xf3\xf3\x00\xf4\xf4\xf4\x00\xf5\xf5\xf5\x00\xf9\xf2\xff\x00\xf6\xf5\xf7\x00\xf5\xf6\xf4\x00\xf6\xf6\xf6\x00\xf7\xf7\xf7\x00\xf6\xf8\xf4\x00\xf8\xf8\xf8\x00\xf9\xf9\xf9\x00\xfa\xfa\xfa\x00\xfb\xfb\xfb\x00\xfb\xfb\xfc\x00\xfc\xfc\xfc\x00\xfe\xfc\xff\x00\xfd\xfd\xfd\x00\xfe\xfe\xfe\x00\xfe\xfe\xff\x00\xff\xfe\xff\x00\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xe7\xc1\xcf\xc3\xf4\xf4\xc2\xb6\xeb\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xe7\xc0\xd0\xc3\xf4\xd1\x97\xbe\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xa7m\xdf\xf4\xf4\xf4\xf4\xe6\xbf\xd2\xc3\xf4\x8f\x1a1\xc8\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xebW\x15p\xe7\xf4\xf4\xf4\xf4\xe6\xbc\xd6\xc4\xf4\xe6\x8b;\x09k\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd53+\xb4\xea\xf4\xf4\xf4\xf4\xf4\xf4\xc3\xe0\xcc\xf4\xf4\xbe\xa9\xa9\x17;\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd22=\xd8\xf4\xf4\xf4\xf4\xf4\xecI(!6\x5c\xc8\xf4\xbe\xad\xea\xdb\x1a)\xe6\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xddJ4\xe1\xf4\xf4\xf4\xf4\xf4\xf4\xeelt`^&\x01(y\xa7\xeb\xea\xa3%<\xf4\xf4\xf4\xf4\xf4\xf4\xee{\x1b\xd2\xf4\xf4\xe7f\xd6\xf4\xf4\xf4\xf4\xe9\xba\xdf\xce\xe1h\x05?\xd9\xe6\xa7\xb4\x0aa\xe6\xf4\xf4\xf4\xf4\xc4\x1d\x8b\xf4\xf4\xde8\x22\xc6\xf4\xf4\xec\xdd\xce\xb1\xde\xae\xc6\xf4\xa9\x128\xca\x9f\xc1w\x08\xb9\xf4\xf4\xf4\xe9_/\xf4\xf4\xeaE3\xda\xf4\xf1\xc2xH9\x80\xe6\xa7\xb3\xe7\xbf\x93%6\x92\xbf\xb2>K\xf4\xf4\xf4\xdd(\xa9\xf4\xf4o+\xc6\xf4\xeb|$-p\x93\xa3\xe0\xa9\x9f\xcd\xb6\x93\xdb\x12N\xc2\xb8q\x17\xd7\xf4\xf4\xe7\x85\xf4\xf4\xc71}\xf4\xf4b\x1d\x8f\xf4\xf4\xec\xb9\xde\xa4\x92sm\x89\xddz\x03\xa1\xb8\x87(y\xf4\xf4\xf4\xf4\xf4\xf4r9\xd7\xf4\x87\x19\xb9\xf4\xf4\xf4\xe1\xb7\xe0\x9d\x90]\x16j\xc8\x95\x1aE\xba\x93@>\xe0\xf4\xf4\xf4\xf4\xe1M]\xf4\xf4\x84\x95\xf4\xf4\xf4\xf4\xe8\xbb\xe5\x9a\x88\x94(;\xbc\x90[\x02\xba\x97S\x1f\xa3\xf4\xf4\xf4\xf4\xc4C\x87\xf4\xf4\xf0\xf4\xf4\xf4\xf4\xe3\xc5\xa0\xd4\x9e\x88\x93a\x17\xaa\x8e\x85V\xb0\x9de\x1c}\xe6\xf1\xe7\xeb\xa9:\x9c\xee\xe0\xe0\xe6\xe6\xe7\xe4\xbdun\xaf\xa5\x88\x8c\x88\x06~\x8c\x8d\x97\xa9\xac}\x1eo\xcac\xbf\xd3\x8b3\x8f\xdaiU\xbe\xcd\xcd\xcb\x98dv\xa2\xa8\x88\x8b\x95\x04r\x8c\x8b\x8d\x9d\xad\x82\x1bo\xe9\x15\xb9\xf4\xb1>\xa1\xf4\x80>\xd5\xf0\xee\xed\xc9\x91\x9b\xb5\xa6\x88\x8d\x81\x0bw\x8c\x8b\x8f\x8d\xaa\x80\x19\x88\xec*\x86\xf4\xc7D\x83\xf4\xcd\x18\xca\xf4\xf4\xf4\xf2\xef\xf3\xdc\x9f\x88\x92R }\x8c\x83J\x90\xaas\x16\xb0\xeeXL\xf4\xe7NY\xf4\xf45^\xea\xf4\xf4\xf4\xf4\xf4\xde\xa1\x89\x8e\x17T\x89\x8dR\x0f\x95\x9f]*\xc4\xf1\x9c\x11\xf4\xf4}6\xce\xf4\xcc\x0c\x96\xec\xf4\xf4\xf4\xf4\xde\xa1\x90? \xcf\xbc\x8f\x17O\x99\x8d7Q\xca\xf4\xde\x1a\x95\xf4\xcd5s\xf4\xf4\x97\x0dx\xd5\xe2\xee\xf4\xde\xa3\x8bPx\xe6\xf4b\x00\xc4\x9fk\x10\x85\xce\xf4\xeai-\xf4\xf4|+\xb2\xf4\xf4\xb7\x1d.b\x93\xf4\xdf\xa3\x87\x9d\x9f\xea\xd5\x0eN\xcf\x9d'8\xb0\xdb\xf4\xf4\xcf!\x7f\xf4\xf1M7\xbe\xf1\xf4\xf4\x8eMT\xf4\xdf\xa3\x86\xa1\xab\xc10)\x8e\xd1\x80\x13\xb6\xc1\xf4\xf4\xf4\xf0\x82\x1f\xbc\xf4\xdfF1\xd1\xf4\xf4\xf4\xf4\xf4\xf4\xdf\xa4\xa3\xbal&@\x8a\x88\x93\x1a\x82\xf4\xd7\xf4\xf4\xf4\xf4\xe2U-\xc7\xf4\xe2g\xd1\xf4\xf4\xf4\xf4\xf4\xf4\xde\x8dlG\x1bZ\xe7\x96\xaa\x89T\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd9I,\xb7\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xcaB)Hj\xe6\xf4\x95\xd9\xec\xe7\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd9Z\x1dr\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xd6q\x8c\xd1\xb3\xe2\xf4\x96\xe6\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xe6\x87&$\x83\xf4\xf4\xf4\xf4\xf4\xf4\xe0\xa7\xc7\xdf\xb1\xe1\xf4\xc7\xee\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf0\xd3w%\x079k\x94\xae\xc3\xe7\xa1\xc2\xdf\xb3\xe1\xf4\xee\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xec\xdf\xb7h>#\x14A\xf4\xa3\xc1\xf0\xd8\xec\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf0\xee\xec\xeb\xf0\xe1\xa7\xc3\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xf9PyLoT - the Python picking and Localisation Tool\x0a\x0aPyLoT is a program which is capable of picking seismic phases,\x0aexporting these as numerous standard phase format and localize the corresponding\x0aseismic event with external software as, e.g.:
\x0a\x0a- NonLinLoc
\x0a- HypoInvers
\x0a- HypoSat
\x0a- whatever you want ...
\x0a
\x0aRead more on the\x0aPyLoT WikiPage.
\x0aBug reports are very much appreciated and can also be delivered on our\x0aPyLoT TracPage after\x0asuccessful registration.
\x0a\x0a"
-qt_resource_name = "\x00\x04\x00\x06\xec0\x00h\x00e\x00l\x00p\x00\x05\x00o\xa6S\x00i\x00c\x00o\x00n\x00s\x00\x09\x0aa\xba\xa7\x00p\x00i\x00c\x00o\x00n\x00.\x00p\x00n\x00g\x00\x08\x0f\x9eY\x87\x00p\x00i\x00c\x00k\x00.\x00p\x00n\x00g\x00\x0b\x0a*w\xe7\x00p\x00r\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\x00\x09\x0aa\xa4\xa7\x00s\x00i\x00c\x00o\x00n\x00.\x00p\x00n\x00g\x00\x09\x03g\xbf\x9f\x00p\x00y\x00l\x00o\x00t\x00.\x00i\x00c\x00o\x00\x0a\x0c\xba\xf2|\x00i\x00n\x00d\x00e\x00x\x00.\x00h\x00t\x00m\x00l"
-qt_resource_struct = "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x0e\x00\x02\x00\x00\x00\x05\x00\x00\x00\x03\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00bo\x00\x00\x00L\x00\x00\x00\x00\x00\x01\x00\x00[\xe8\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00_\x95\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x01\x00\x00\x02\xa6\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x98\x00\x00\x00\x00\x00\x01\x00\x00k1"
-def qInitResources():
- QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()
diff --git a/testPickDlg.py b/testPickDlg.py
old mode 100644
new mode 100755