summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man4/uath.4186
-rw-r--r--sys/contrib/dev/uath/ar5523.bin.uu3359
-rw-r--r--sys/dev/usb/wlan/if_uath.c2862
-rw-r--r--sys/dev/usb/wlan/if_uathreg.h601
-rw-r--r--sys/dev/usb/wlan/if_uathvar.h237
-rw-r--r--sys/modules/usb/uath/Makefile10
-rw-r--r--usr.sbin/uathload/Makefile18
-rw-r--r--usr.sbin/uathload/uathload.c233
8 files changed, 7506 insertions, 0 deletions
diff --git a/share/man/man4/uath.4 b/share/man/man4/uath.4
new file mode 100644
index 0000000..e3d59ff
--- /dev/null
+++ b/share/man/man4/uath.4
@@ -0,0 +1,186 @@
+.\"
+.\" Copyright (c) 2006
+.\" Damien Bergamini <damien.bergamini@free.fr>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 31, 2009
+.Dt UATH 4
+.Os
+.Sh NAME
+.Nm uath
+.Nd Atheros USB IEEE 802.11a/b/g wireless network device
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device uath"
+.Cd "device wlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_uath_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports USB 2.0 wireless network devices based on Atheros
+Communications fifth generation AR5005UG and AR5005UX chipsets.
+.Pp
+The AR5005UG chipset is made of an AR5523 multiprotocol MAC/baseband processor
+and an AR2112 Radio-on-a-Chip that can operate between 2300 and 2500 MHz
+(802.11b/g).
+.Pp
+The AR5005UX chipset is made of an AR5523 multiprotocol MAC/baseband processor
+and an AR5112 dual band Radio-on-a-Chip that can operate between 2300 and
+2500 MHz (802.11b/g) or 4900 and 5850 MHz (802.11a).
+.Pp
+The AR5005UG and AR5005UX chipsets both have an integrated 32-bit MIPS
+R4000-class processor that runs a firmware and manages, among other things,
+the automatic control of the transmit rate and the calibration of the radio.
+.Pp
+.Nm
+supports
+.Cm station ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh FIRMWARE
+.Nm
+requires firmware that is downloaded to the device.
+This is normally done by the
+.Xr uathload 8
+utility that is launched by
+.Xr devd 8
+when the device is inserted.
+.Xr uathload
+includes the firmware in the binary program.
+This firmware is licensed for general use and is included in the base system.
+.Sh HARDWARE
+The following adapters should work:
+.Pp
+.Bl -column -compact "TRENDware International TEW-444UB" "AR5005UX" -offset 6n
+.It Em "Adapter Chipset"
+.\".It Belkin F6D3050 AR5005UX
+.It Li "Compex WLU108AG" Ta AR5005UX
+.It Li "Compex WLU108G" Ta AR5005UG
+.\".It Li "D-Link DWL-AG132" Ta AR5005UX
+.It Li "D-Link DWL-G132" Ta AR5005UG
+.\".It Li "Edimax EW-7315Ug" Ta AR5005UG (AR2414???)
+.\".It Li "Lancom USB-54ag" Ta AR5005UX
+.\".It Li "NEC WL54TU" Ta AR5005UX
+.It Li "IODATA WN-G54/US" Ta AR5005UG
+.It Li "MELCO WLI-U2-KAMG54" Ta AR5005UX
+.It Li "Netgear WG111T" Ta AR5005UG
+.It Li "Netgear WG111U" Ta AR5005UX
+.It Li "Netgear WPN111" Ta AR5005UG
+.It Li "Olitec 000544" Ta AR5005UG
+.It Li "PLANET WDL-U357" Ta AR5005UX
+.\".It Li "Senao WUB-8004" Ta AR5005UX
+.It Li "Siemens Gigaset 108" Ta AR5005UG
+.It Li "SMC SMCWUSBT-G" Ta AR5005UG
+.It Li "SMC SMCWUSBT-G2" Ta AR5005UG
+.\".It Li "SparkLAN WL-685GS" Ta AR5005UG
+.It Li "SparkLAN WL-785A" Ta AR5005UX
+.It Li "TP-Link TL-WN620G" Ta AR5005UG
+.It Li "TRENDware International TEW-444UB" Ta AR5005UG
+.It Li "TRENDware International TEW-504UB" Ta AR5005UX
+.It Li "Unex Technology UR054ag" Ta AR5005UX
+.\".It Li "Wistron NeWeb DCUA-81" Ta AR5005UX
+.\".It Li "Wistron NeWeb DRUA-81" Ta AR5005UG
+.\".It Li "Wistron NeWeb DRUA-82" Ta AR5005UX
+.\".It Li "ZyXEL G-200 v2" Ta AR5005UG
+.It Li "ZyXEL XtremeMIMO M-202" Ta AR5005UX
+.El
+.Pp
+An up to date list can be found at
+.Pa http://customerproducts.atheros.com/customerproducts/default.asp .
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev uath0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev uath0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev uath0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev uath0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "uath%d: could not send command (error=%s)"
+An attempt to send a command to the firmware failed.
+.It "uath%d: timeout waiting for command reply"
+A read command was sent to the firmware but the firmware failed to reply in
+time.
+.It "uath%d: device timeout"
+A frame dispatched to the hardware for transmission did not complete in time.
+The driver will reset the hardware.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr devd 8 ,
+.Xr uathload 8 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Weongyo Jeong Aq weongyo@freebsd.org
+and
+.An Sam Leffler Aq sam@freebsd.org .
+It is distantly related to a driver written by
+.An Damien Bergamini Aq damien@openbsd.org .
+.Sh CAVEATS
+Atheros proprietary 108 Mbps mode (aka Super AG mode) is not supported.
+.Pp
+Dual-band adapters are presently not working;
+to workaround, restriction operation to 2.4GHz channels.
diff --git a/sys/contrib/dev/uath/ar5523.bin.uu b/sys/contrib/dev/uath/ar5523.bin.uu
new file mode 100644
index 0000000..6fa430d
--- /dev/null
+++ b/sys/contrib/dev/uath/ar5523.bin.uu
@@ -0,0 +1,3359 @@
+/*-
+ * Copyright (c) 2002-2008 Atheros Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the following conditions are met:
+ * 1. The materials contained herein are unmodified and are used
+ * unmodified.
+ * 2. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following NO
+ * ''WARRANTY'' disclaimer below (''Disclaimer''), without
+ * modification.
+ * 3. Redistributions in binary form must reproduce at minimum a
+ * disclaimer similar to the Disclaimer below and any redistribution
+ * must be conditioned upon including a substantially similar
+ * Disclaimer requirement for further binary redistribution.
+ * 4. Neither the names of the above-listed copyright holders nor the
+ * names of any contributors may be used to endorse or promote
+ * product derived from this software without specific prior written
+ * permission.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT,
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
+ * FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGES.
+ */
+begin 755 ar5523.bin
+M0!I@`#P;``@#>M@D$V``#0`````#X`@A/!N``"=[!@@\'X``)_\`-`-_V"($
+M$0`!``````-_V"``(/@A`V``"``````\&P`0`WK8)!-@``T``````^`((3P;
+M@``G>P8`/!^``"?_`'0#?]@B!!$``0`````#?]@@`"#X(0-@``@`````)!H`
+M`D":@``#X`@A/`*``"1"!!`\'X``)_\`K`!?$"($$0`!``````!?$"``(/@A
+M`$``"```````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````0!IH```````S6@!_/!N``"=[`@`#
+M>M@@CWL```-@``@``````````````````````````````````````````$`:
+M:```````,UH`?SP;@``G>P(``WK8((][```#8``(````````````````````
+M```````````````````````D&@"`/!N``"=[`@"/>P"``V``"```````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````!`@&@``````#P"$``T0O\`0()@`````````````````"0"``)`@H``
+M`````````````````^`((3P:@``G6@MT/!^``"?_!&0#7]`B!!$``0`````#
+M7]`@`"#X(0-`^`D``````^`((3P:@`(G6D:X/!^``"?_!)0#7]`B!!$``0``
+M```#7]`@`"#X(0-`^`D`````0`)@```````\`___-&,`_P!#$"1`@F``````
+M````````````/`2``B2$5_``@.@A/`$?_S0A__\#H>@D/`&@``.AZ"5`!(``
+M`````````````````^`((3P:@`(G6J6$/!^``"?_!1@#7]`B!!$``0`````#
+M7]`@`"#X(3P!'_\T(?__`T'0)#P!H``#0=`E`T#X"0`````\'(`#)YS&L#P$
+M@`(DA%?P`(#H(3P(@``\"8``)2D!P#P+@``E:P'DC2(``"$I``2M`@``(0@`
+M!!4K__L`````-`0`$#P%@``DI09T/`:``"3&`@"LQ0``(,8`!""$__\4@/_\
+M`````#P$@``DA`(`/`6``"2E!X"LA0``/`6``"2E"RBLA0`D/`6``"2E!G2L
+MA0"`K(4`A*R%`(@,``*L``````P`:5H`````#`!J>P`````,`&D:``````@`
+M;<\\'P``$````0````!`&F``/!O__S=[__`#6]`D0)I@````````````````
+M`$`:\`````````````````!`FG``````````````````0!I@`#P;_[\W>___
+M`UO0)$":8``D&@"(/!N``"=[`@"/>P"(`V``"``````#H-@A([W^L*^Z`(BO
+MH```KZ$`!*^B``BOHP`,KZ0`$*^E`!2OI@`8KZ<`'*^H`""OJ0`DKZH`**^K
+M`"ROK``PKZT`-*^N`#BOKP`\K[``0*^Q`$2OL@!(K[,`3*^T`%"OM0!4K[8`
+M6*^W`%RON`!@K[D`9*^\`'"OO@!XK[\`?```(!```"@2KZ0`@*^E`(2ONP!T
+M0`AH`$`)8`!`"C@`0`M``$`,&`!`#7@`0`YP`*^H`)BOJ0",KZH`E*^K`)RO
+MK`"DKZT`H*^N`)`\'(`#)YS&L`.@@"$CO?_@0!I@`#P;__\W>__P`UO0)$":
+M8``````````````````,`&D.`@`@(0@``DT``````Z#8(2.]_K"ON@"(KZ``
+M`*^A``2OH@`(KZ,`#*^D`!"OI0`4KZ8`&*^G`!ROJ``@KZD`)*^J`"BOJP`L
+MKZP`,*^M`#2OK@`XKZ\`/*^P`$"OL0!$K[(`2*^S`$ROM`!0K[4`5*^V`%BO
+MMP!<K[@`8*^Y`&2OO`!PK[X`>*^_`'P``"`0```H$J^D`("OI0"$K[L`=$`)
+M8`!`"C@`0`MP`*^I`(ROJ@"4KZL`D#P<@`,GG,:P/`*``B1"1E2,1```((0`
+M`:Q$```#H(`A)[W_X$`#8```````0`)H````````0Q`D``(2@C!"`'\\`X``
+M)&,*/`!#$""`4@```D"((20!``02(0`#`````!````P`````/!&@P#8Q`!".
+M,0``,C$`?SP#@``D8PH\`'$8((!Q```F,0`&`B"0(0``````$8B`0!I@`#P;
+M__\W>__P`UO0)$":8``````````````````\"H`")4HQ>`%14""-2@``/`6`
+M`B2E,?``L2@@C*4```)`("$!0/@)``````!`D"$\!8`")*4R:`"Q*"",I0``
+M`@`P(0P`=7,`0"`A`D`0(2.]`"!``F``/`/__S1C__X`0Q`D0()@````````
+M`````````(^H`)2/J0"`CZH`A$"(.``!(``1`4``$X^A``2/H@`(CZ,`#(^D
+M`!"/I0`4CZ8`&(^G`!R/J``@CZD`)(^J`"B/JP`LCZP`,(^M`#2/K@`XCZ\`
+M/(^P`$"/L0!$C[(`2(^S`$R/M`!0C[4`5(^V`%B/MP!<C[@`8(^Y`&2/O`!P
+MC[X`>(^_`'R/NP",-!K_``-:T"<#>M@D0!I@````````````,UK_``-ZV"6/
+MN@"0C[T`=#=[``)`FV``````````````````0)IP````````````````````
+M``]"```8`````````0`"``$``P`!``(``0`$``$``@`!``,``0`"``$`!0`!
+M``(``0`#``$``@`!``0``0`"``$``P`!``(``0`#X``(``````.@&"$`H.@A
+M([W_X*^C``BOOP`0`(#X"0````"/OP`0C[T`"`/@``@`````/`2``B2$1Z@\
+M!8`#)*6B'#"&``,4P``2``````"D.",`!SE"``<Y0`"'."&L@```K(``!*R`
+M``BL@``,K(``$*R``!2L@``8K(``'"2$`"`4Y/_V`````!"D``4`````H(``
+M`"2$``$4A?_]``````/@``@`````0!IP`$`;:``'8@`!(UH`!(];```\&@`'
+M-UH`#1=;``@`````-!H`.#P;@``G>P(``WK8((][```#8``(`````#0:`"0(
+M``&=`````#P)H,`U*0"0C24``"0$``0`I"@EK24``#P)H+,U*0`<C24``#"E
+M``$0H``,`````#P)H+,U*0`<C24``#P$__PTA/__`*0H)"0$````I"@EK24`
+M`!````D`````/`F@LS4I`!R-)0``)`3`_P"D*"0D!`L``*0H):TE```#X``(
+M`````".]_UBOL`!`K[$`1*^R`$BOLP!,K[0`4*^U`%2OM@!8K[<`7*^^`'BO
+MOP!\K[\`D".H`*BOJ`!T0`E@`*^I`(RLO0``C)T``(^D`!"/L`!`C[$`1(^R
+M`$B/LP!,C[0`4(^U`%2/M@!8C[<`7(^^`'B/OP!\CZ8`C(^]`'1``F``)`,`
+M!P##,"0`8!@G`$,0)`!&$"4#X``(0()@``````"LGP`LK)X`**R<`"2LEP`@
+MK)8`'*R5`!BLE``4K),`$*R2``RLD0`(K)``!*R=```#X``()`(```````",
+MGP`LC)X`*(R<`"2,EP`@C)8`'(R5`!B,E``4C),`$(R2``R,D0`(C)``!(R=
+M```#X``(`*`0(0`````GO?_PK[\```P``TL``$`AC[\```/@``@GO0`0)[W_
+M\*^R``BOLP`,K[$`!*^P````P$@A`0"0(0#@6"$`H'`A%,`!``"`4"$`AQ`K
+M$$``9#0"__\`1Q`K%$``60#@*"$D`@`(+.,!``!`,"$``S`+/`.``@#%$`8D
+M8Q9\`$,0(9!$```D`@`@`(8@(0!$.",0X``(``LT`@!'$",`3A`&`.H8!`!B
+M4"4`ZU@$`.YP!``+-`(!1@`;,6K__P`.)`)0P``!```!S0``$!(``!@0``,<
+M``!D&"4``"@2``````````!P2D@"`&D0*U!```L`:1@C`&L8(0!K$"L40``&
+M)*7__P!I$"M00``$`&D8(R2E__\`:Q@A`&D8(P!F`!M0P``!```!S3'$__\`
+M`!`2```8$``#'```9!@E```P$@``````````<$I(`@!I$"L00``+``44``!K
+M&"$`:Q`K%$``!B3&__\`:1`K$$``!``%%```:Q@A),;__P`%%```1C`E`&EP
+M(P``F"$20``$`.[(!@``P"&N6```KED`!`)@$"&/L@`(C[,`#(^Q``2/L```
+M`,`8(0/@``@GO0`0/`(`_S1"__\D`P`0`$<0*R0$`!@`8#`A$`#_I0"",`L4
+MX``*`$L0*R0"``$`1@`;4.```0```<T``%@2```````````T`O__`$L0*Q1`
+M`(8\`@#_)`(`""UC`0``0"@A``,H"SP#@`(`JQ`&)&,6?`!#$"&01```)`(`
+M(`"%("$`1#@C%.``.@!'>",!2U`C)!,``0`+9`(Q:/__`4P`&P`.+`)1@``!
+M```!S0``(!(``!@0``,<``!E&"4``&@2``````````!PB$@"`&D0*U!```L`
+M:1@C`&L8(0!K$"L40``&)(W__P!I$"M00``$`&D8(R6M__\`:Q@A`&D8(P!L
+M`!LQQ/__48```0```<T``!`2```8$``#'```9!@E``!0$@``````````<$A(
+M`@!I$"L00``+``T4``!K&"$`:Q`K%$``!B5*__\`:1`K$$``!``-%```:Q@A
+M)4K__P`-%```2C`E$`#_F`!I<",`ZU@$`>H@!@`+9`(`C``;,6C__P'N&`8`
+MZA`$`$-0)0`*+`)1@``!```!S0&`:"$`[G`$```P$@``(!``!"0``(48)0``
+M>!(``````````'#(2`(`:1`K$$``"@$`F"$`:Q@A`&L0*Q1```8DS___`&D0
+M*U!```0`:1@C)>___P!K&"$`:1@C`&T`&S%$__]1H``!```!S0``$!(``!@0
+M``,<``!D&"4``#`2``````````!P4T@"`&D0*Q!```L`#Q0``&L8(0!K$"L4
+M0``&),;__P!I$"L00``$``\4`"3&__\`:Q@A``\4``!&F"40`/^.`&E0(S1"
+M__\D`P`0`$L0*R0$`!@`8"@A$`#_>0""*`L`AA`K$$``!S0"__\``#`A``"8
+M(1$`_U$`H,@A$`#_30%`P"$`1A`K%$``?#P"`/\D`@`(+,,!``!`*"$``R@+
+M/`.``@"I$`8D8Q9\`$,0(9!$```D`@`@`(4@(0!$.",4X``1`$=X(P$J$"L4
+M0``%`<L@(P'+$"L40``'```P(0'+(",!Q!`K`4D8(P!B4",`@'`A)`8``1)`
+M_S```)@A$`#_W@'`R"$!ZQ`&`.D8!`!B2"4`"60"`>H@!@",`!LQ,___`>X0
+M!@#J&`0`8E`E``HL`E&```$```'-`.M8!```,!(``"`0``0D``"%&"4``$`2
+M``````````!PTV@"`&T0*Q!```H`[G`$`&D8(0!I$"L40``&),C__P!M$"M0
+M0``$`&T8(R4(__\`:1@A`&T8(P!L`!LQ1/__48```0```<T``!`2```8$``#
+M'```9"@E```P$@``````````<%-H`@"M$"L00``+``@4``"I*"$`J1`K%$``
+M!B3&__\`K1`K$$``!``(%``DQO__`*DH(0`(%```1C`E`,L`&0"M*",``&`0
+M````````````K!`K``!H$@``````````%$``$`&K(",1A0`,`<T0*Q)`_N(`
+M`)@A`<T8(P"L(",!PQ`K`()0(P'J*`0`XQ@&`*/()1``_M<`ZL`&$$#_]`&K
+M(",!I!`K`8D8(P!B8",`@&@A$`#_[B3&__\T0O__)`,`$`!&$"LD!``8`&`H
+M(1``_X,`@B@+)[W_X*^_`!`,``3L`Z!`(8^B``"/HP`$C[\`$`/@``@GO0`@
+M)[W_\*^R``BOLP`,K[$`!*^P````P$@A`0"0(0#@6"$`H'`A%,`!``"`4"$`
+MAQ`K$$``9#0"__\`1Q`K%$``60#@*"$D`@`(+.,!``!`,"$``S`+/`.``@#%
+M$`8D8Q9\`$,0(9!$```D`@`@`(8@(0!$.",0X``(``LT`@!'$",`3A`&`.H8
+M!`!B4"4`ZU@$`.YP!``+-`(!1@`;,6K__P`.)`)0P``!```!S0``$!(``!@0
+M``,<``!D&"4``"@2``````````!P2D@"`&D0*U!```L`:1@C`&L8(0!K$"L4
+M0``&)*7__P!I$"M00``$`&D8(R2E__\`:Q@A`&D8(P!F`!M0P``!```!S3'$
+M__\``!`2```8$``#'```9!@E```P$@``````````<$I(`@!I$"L00``+``44
+M``!K&"$`:Q`K%$``!B3&__\`:1`K$$``!``%%```:Q@A),;__P`%%```1C`E
+M`&EP(P``F"$20``$`.[(!@``P"&N6```KED`!`)@$"&/L@`(C[,`#(^Q``2/
+ML````,`8(0/@``@GO0`0/`(`_S1"__\D`P`0`$<0*R0$`!@`8#`A$`#_I0""
+M,`L4X``*`$L0*R0"``$`1@`;4.```0```<T``%@2```````````T`O__`$L0
+M*Q1``(8\`@#_)`(`""UC`0``0"@A``,H"SP#@`(`JQ`&)&,6?`!#$"&01```
+M)`(`(`"%("$`1#@C%.``.@!'>",!2U`C)!,``0`+9`(Q:/__`4P`&P`.+`)1
+M@``!```!S0``(!(``!@0``,<``!E&"4``&@2``````````!PB$@"`&D0*U!`
+M``L`:1@C`&L8(0!K$"L40``&)(W__P!I$"M00``$`&D8(R6M__\`:Q@A`&D8
+M(P!L`!LQQ/__48```0```<T``!`2```8$``#'```9!@E``!0$@``````````
+M<$A(`@!I$"L00``+``T4``!K&"$`:Q`K%$``!B5*__\`:1`K$$``!``-%```
+M:Q@A)4K__P`-%```2C`E$`#_F`!I<",`ZU@$`>H@!@`+9`(`C``;,6C__P'N
+M&`8`ZA`$`$-0)0`*+`)1@``!```!S0&`:"$`[G`$```P$@``(!``!"0``(48
+M)0``>!(``````````'#(2`(`:1`K$$``"@$`F"$`:Q@A`&L0*Q1```8DS___
+M`&D0*U!```0`:1@C)>___P!K&"$`:1@C`&T`&S%$__]1H``!```!S0``$!(`
+M`!@0``,<``!D&"4``#`2``````````!P4T@"`&D0*Q!```L`#Q0``&L8(0!K
+M$"L40``&),;__P!I$"L00``$``\4`"3&__\`:Q@A``\4``!&F"40`/^.`&E0
+M(S1"__\D`P`0`$L0*R0$`!@`8"@A$`#_>0""*`L`AA`K$$``!S0"__\``#`A
+M``"8(1$`_U$`H,@A$`#_30%`P"$`1A`K%$``?#P"`/\D`@`(+,,!``!`*"$`
+M`R@+/`.``@"I$`8D8Q9\`$,0(9!$```D`@`@`(4@(0!$.",4X``1`$=X(P$J
+M$"L40``%`<L@(P'+$"L40``'```P(0'+(",!Q!`K`4D8(P!B4",`@'`A)`8`
+M`1)`_S```)@A$`#_W@'`R"$!ZQ`&`.D8!`!B2"4`"60"`>H@!@",`!LQ,___
+M`>X0!@#J&`0`8E`E``HL`E&```$```'-`.M8!```,!(``"`0``0D``"%&"4`
+M`$`2``````````!PTV@"`&T0*Q!```H`[G`$`&D8(0!I$"L40``&),C__P!M
+M$"M00``$`&T8(R4(__\`:1@A`&T8(P!L`!LQ1/__48```0```<T``!`2```8
+M$``#'```9"@E```P$@``````````<%-H`@"M$"L00``+``@4``"I*"$`J1`K
+M%$``!B3&__\`K1`K$$``!``(%``DQO__`*DH(0`(%```1C`E`,L`&0"M*",`
+M`&`0````````````K!`K``!H$@``````````%$``$`&K(",1A0`,`<T0*Q)`
+M_N(``)@A`<T8(P"L(",!PQ`K`()0(P'J*`0`XQ@&`*/()1``_M<`ZL`&$$#_
+M]`&K(",!I!`K`8D8(P!B8",`@&@A$`#_[B3&__\T0O__)`,`$`!&$"LD!``8
+M`&`H(1``_X,`@B@+)[W_X#P$H)"OOP`0#``&C`.@*"&/OP`0`^``"">]`"`G
+MO?_0K[``$`"`@"$D!`!<K[0`(*^S`!ROL0`4K[\`)*^R`!@,`'I7`*"@(0!`
+MF"$00``*)!$``B0&`%P`0"`A#`!PJ@``*"$"`"`A#``=90.@*"$00``+`$"(
+M(5:```&ND0``C[\`)(^T`""/LP`<C[(`&(^Q`!2/L``0`^``"">]`#"/H@``
+M`$`@(0P`!L^N8@`$%$#_\0!`B"$,`!FN`F`@(11`_^T`0(@A#``2D`)@("$4
+M0/_I`$"((0P`&=D"8"`A`$"0(1!`_^0D$0`"C[````!`("$,`!G1)`4'(`!`
+MB"$D`@<@K@(;[`)`*"$"8"`A#``<@JYR```\`X`"K'-'J!``_]6N8@`()[W_
+M\*^P``"OOP`$#``4GP"`@"$"`"`A#``4K```*"$00``&)`,`%H^_``2/L```
+M`&`0(0/@``@GO0`0#``?*P(`("$`0!@A)@4;<`(`("$40/_U)`8``0P`-X4`
+M`````$`8(20%``$40/_O`@`@(0P`%*P`````)`,`%A``_^H``A@*K*0`!`/@
+M``BLX```)[W_H*^S`$P`H)@A```H(:^Q`$2OOP!0K[(`2*^P`$`,`!2L`("(
+M(11``!6OH@`PCB(7W!1``"T#H"`A#`!Z=0````"/I@`@CZ4`'#P$@`(DT,0`
+M`!`7P@("$"$``I!##`!P="2$"(@"("`A#``)M@)`*"&OH@`P$$``"P.@("$2
+M8``"CZ(`,*YB``"/OP!0C[,`3(^R`$B/L0!$C[``0`/@``@GO0!@#`!Z=0``
+M``"/H@`@`B`@(210Q``,``RQ`@`H(3P$@`(DA`BD`@`H(0)`,"$40/_JKZ(`
+M,`P`<'0`````)`(``:XB%]P"("`A#``'5R>E`#"/H@`P4$#_X*X@%^@0`/_>
+M`````">]_^"OL0`4K[``$*^_`!B,@Q?@)`(``0"@B"$`@(`A`Z`H(1!B``NO
+MH```$B``!JX`%^B/OP`8C[$`%(^P`!`#X``()[T`((^B```0`/_YKB(```P`
+M!Y4`````CZ(``!1`__("`"`A#`!1E``````"`"`A#``4K"0%``$0`/_K````
+M`">]_^"OL@`(`*"0(0``*"&OLP`,K[$`!*^P``"OOP`0#``4K`"`@"$D$P`!
+M`$"((1!```L"`"`A$D```JX`%^BN40``C[\`$(^S``R/L@`(C[$`!(^P```#
+MX``()[T`(*X`&QP,``A^KA,;)`P`"A@"`"`A#`!Q7``````D8P#(+&4`R(X$
+M&`@`11`A`$`P(20(```D"0#(#`!Q=`!@."$,`'%<`````"1C`,@L90#(C@08
+M0`!%$"$`0#`A)`@``"0)`,@,`'%T`&`X(8X"``0,`!T8C$0```(`("$,`"D\
+M/`6```P`!_8"`"`AKA,7X!``_]$`````)[W_\*^R``BOL0`$K[```*^_``R,
+M@A?@)!(``0"@B"$`@(`A$%(`"@``*"$2(``"KA(7Z*X@``"/OP`,C[(`"(^Q
+M``2/L````^``"">]`!`,`!2L`````#P%@``,`"EL`@`@(0P`<7N.!!@(#`!Q
+M>XX$&$`,``LT`@`@(0P`$7<"`"`A#``(E0(`("$D!0`!#``*2`(`("$,``@'
+M`@`@(8X"``0,`!T*C$0``*X`%^`0`/_>`````">]__"OL````*"`(:^Q``0`
+MP"@A`("((0(`("&OOP`,K[(`"`P`!S8`P)`A#`!1E`(`("$"("`A)`4`"```
+M,"$,`!$9)`<``59```&N0```C[\`#(^R``B/L0`$C[````/@``@GO0`0)[W_
+M\*^Q``2OL````("((0"@@"&OOP`(#``4;20%``$"("`A$@``"SP%``0,`"D\
+M``````(@("$,`!1M```H(8^_``B/L0`$C[````/@``@GO0`0#``I;#P%``00
+M`/_V`B`@(2>]__`D`@`!K((<S*R"',BOL``````H(0"`@"&OOP`$#`!K-"0$
+M`!&.!!S,#`!K-"0%``&/OP`$C[````/@``@GO0`0)[W_\*^P``"L@!S(`("`
+M(20%``&OOP`$#`!K-"0$`!&.!!S,#`!K-```*"&/OP`$C[````/@``@GO0`0
+M)[W_\*^P````H(`A)`4``:^_``ROL@`(K[$`!`"`D"$,`!1M`,"((28$`!`,
+M`&LT)`4``0(`("$,`&LT)`4``0(`("$,`&LE`B`H(0)`("$,`!1M```H(8^_
+M``R/L@`(C[$`!(^P```#X``()[T`$">]_]"OM0`4`*"H(20%``&OOP`@K[<`
+M'*^V`!BOM``0K[,`#`$`H"$`X)@AK[(`"*^Q``0`P)`A`("((:^P```,`!1M
+M/!:``CP0@`(FI``0/!>``@``*"&N$C.`KM,SA`P`:S2N]#.(`J`@(0P`:S0D
+M!0`!CB4``(X$,X`\`O_QC*-`$#1"__\`!"1``&(8)#P"``X`@B`D`&08):RC
+M0!".)0``CL0SA#P"_X^,HT`0-$+__P`$)0``8A@D/`(`<`""("0`9!@EK*-`
+M$(XE``".Y#.(/`+_?XRC0!`T0O__``0EP`!B&"0\`@"``((@)`!D&"6LHT`0
+M`B`@(0P`%&T``"@AC[\`((^W`!R/M@`8C[4`%(^T`!"/LP`,C[(`"(^Q``2/
+ML````^``"">]`#`GO?_PK[```"0&``0`@(`AK[\`!`P`-@X``"@A#`!1O28$
+M'8P00``'`@`@(0P`-;2,10`D#``UN`(`("$,`#7H`@`@(0P`<=`F!!K(C[\`
+M!(^P```#X``()[T`$">]__```"@A)`8``Z^P``"OOP`$#``V#@"`@"$,`''"
+M)@0:R`P`<+4`````#``U_0(`("$,`#6_`@`@(0P`<+H`````#``(VP(`("$D
+M`@`!K@(;)(^_``2/L````^``"">]`!",I0`H)`/_\#"B``\D0@`G`$,X)`"C
+M&"0`9Q`A`$,0*Q1```<`8#`AO'$``"1C`!``QQ`A`$,0*Q!`__L`````D*(`
+M`"0#`(`P0@#\4$,`!)2C`!0``"`A`^``"`"`$"&4@AQ>5&+__```("&4HP`2
+ME((<7%1B__@``"`AE((<6I2C`!`48O_S)`0``1``__(`````C((:_(Q#```#
+MX``(K(,:_(R"&ORLH@```^``"*R%&OPGO?_@)`(``:^P``"OOP`<K[8`&*^U
+M`!2OM``0K[,`#*^R``BOL0`$`("`(:R"&R0F%AV,#`!1O0+`("$`0(@A$$``
+MD0``("&,0P``C$(`)!!B`(Z/OP`<`@`@(0P`-L\"("@A`$"H(20"``T2H@"&
+M)`0``8XD`"B.`QKT)`7_\#""``\D0@`0EC0`0`!%,"0`A2@D`*80(0!T&"$`
+M11`KK@,:]"8S`$`DDO_\%$``!P"@&"&\L0``)*4`$`!F$"$`11`K$$#_^P``
+M``"F5``"#`!1OP+`("&2`AKX$$``9@(@*"$D`@`=$J(`5B:#`$"2`AKXHD(`
+M`(X"&^PD0O_\`$,0*Q1``$,D`__\DD0``99"``(TA``!)$(``P!#&"0P@@`"
+MHD0``:9#``(``(@A%$``!"9%``0P8O_\`D(0(21%``260@`")$(`0*9"``*.
+M`AKT)`,`%:RC``0D0@!`K*(``(X"&U268P`")*0`#*RB``BL@P`$K(``"(X"
+M&O2LM0`,E@,;<*R"``R28@`&C@8:W*R"`!"28@`*K((`%()G``FL@P`<K(<`
+M&))B``2L@@`HDF(`"ZR"`"R28@`%K((`())B``@L10`@)$/_X`!E$`H0P``#
+MK((`)%*@``&N!Q?`C@(`!`)`*"$,`!K'C$0``!(@``0"("@AC@(`!`P`&L>,
+M1```H@`:^!``_XBN`!KT#``(TP(`("$`0(@AD@(:^"8E``0D0@`!HB(``"0"
+M``.B(@`!)`(`0!``_\2F(@`"D@,:^`)`*"$D8@`!H@(:^))"``&B0P``,$(`
+M_J)"``&.`@`$#``:QXQ$```0`/]P)A8=C`P`"*X"`"`A$`#_F*X"&MR/OP`<
+MC[8`&(^U`!2/M``0C[,`#(^R``B/L0`$C[````"`$"$#X``()[T`(">]__"O
+ML0`$K[````#`B"$`H(`A)`4``:^_``ROL@`(#``4;0"`D"$"`"`A#``W=`(@
+M*"$"`#`A`@`H(0P`4=@F1!V,`D`@(0P`%&T``"@AC[\`#(^R``B/L0`$C[``
+M``/@``@GO0`0)[W_\*^_``"0H@`!,$(``A!```8DI_^D#``(UP````"/OP``
+M`^``"">]`!"@H```H*```8R&&^RDH``"`.`H(0P`"8@DQO_\$`#_]H^_```G
+MO?_0K[\`(*^W`!ROM@`8K[,`#*^Q``2OL```K[4`%*^T`!"OL@`(C((;[`"`
+MF"$DA!V,)%``H`"P`!JN8!M44@```0```<T``+`2#`!1KP``B"$00``1`$"X
+M(1(@``0"X!`A#`!Z:@(@("$"X!`AC[\`((^W`!R/M@`8C[4`%(^T`!"/LP`,
+MC[(`"(^Q``2/L````^``"">]`#!RT!@")`(``:YB';0D<``0#`!Z5P(`("$0
+M0``R`$"((0!`("$``"@A`@`P(0!`D"$,`'"J)C4`8`+V$"JN<1JX`B"@(:YP
+M&KP00``5`J"((0+`@"&.9AOLKE0`)*Y5`"BN40`$`D`H(0)@("$,``F(),;_
+M_(YB&^PF$/__`B(H(0)"&"$"HB`A`H(0(21R`%PDE0!<)%0`7!8`_^XDL0!<
+M)I$`$!K```BN8!K\`L"`(0(@*"$"8"`A#``(UR80__\6`/_[)C$`1"9P&L@,
+M`'&T`@`@(0P`<<D"`"`A$`#_O0+@$"$0`/^V)!<``B>]__"OL````("`(:^_
+M``0,`''0)(0:F`P`<=`F!!J$)`(``:X"&K2/OP`$C[````/@``@GO0`0)[W_
+M\*^R``BOL0`$K[```*^_``P`@)`A`("`(201``..`@`($$``#R8%``@`H!@A
+M)`0``R0"``$DA/__K&(`-*1@`#"D8``R!('_^R1C``@DI0!<K@``6*X``%P,
+M`!#@`D`@(28Q__\&(?_M)A`!'(^_``R/L@`(C[$`!(^P```#X``()[T`$">]
+M__"OL0`$`("((:X@&K0DA!J$K[\`"*^P```,`''"`*"`(0P`<<(F)!J8$@``
+M"P(@("$,``U[`B`@(0P`"B8"("`AKB`;'(^_``B/L0`$C[````/@``@GO0`0
+M#``.V0`````0`/_S`````(RB`#P\`X?_-&/__SP$?_\`0Q`D-(3__SP#_O\T
+M8___`$00)`!#$"2LH``$)[W_\*R@```DI`!<K*``"*RB`#RLH``,K*``(*R@
+M`!"LI0`DK*``%*R@`"BLH``8K*4`,*RE`"RLH``<K[\```P`&RD`````C[\`
+M``/@``@GO0`0)[W_\"2E__ROL0`$K[\`"*^P```0H``'`("((8RP```"("`A
+M#``*8R2E_Z06`/_[`@`H(8^_``B/L0`$C[````/@``@GO0`0)[W_\*^Q``2O
+MOP`(K[````"`B"&,L``@#``*8P(@("$6`/_\`@`H(8^_``B/L0`$C[````/@
+M``@GO0`0)[W_X*^_`!"OLP`,K[$`!*^P``"OL@`(C((`!`"@F"$D!0`4C%(`
+M``#`B"$,`!L*`D`@(0!`@"$"(#`AK%,`"`!`("$,`!L^)`4`&`)`("$,`!J]
+M`@`H(8^_`!"/LP`,C[(`"(^Q``2/L```)`(``0/@``@GO0`@)[W_X*^S``RO
+ML@`(K[```#P"@`*OOP`0K[$`!(Q%1ZPD@P`T)((`+`"`@"&L@@`PK(,`.*R`
+M`"RL@``T``"0(1B@`!0``)@A#`!Z5R0$``PF4@`!`$"((0!`("$``"@A$$``
+M%R0&``P,`'"J`````#P"@`*,0D>LC@,`.*X@```"0A`JKA$`.*QQ```40/_N
+MKB,`!"8$`"0,`'&'```H(0)@$"&/OP`0C[,`#(^R``B/L0`$C[````/@``@G
+MO0`@$`#_]R03``(GO?_PK[$`!*^_``BOL```C)``!`P`<+4`H(@AC@0`-(R%
+M```0H``3C((`!*RB``2.`@`PC(,`!*R1``BL@@`$C@(`,*QE``"N!``PK(``
+M``P`<+JL1```#`!QHR8$`"2/OP`(C[$`!(^P```#X``()[T`$!``_^ZN`@`X
+M)[W_\*^Q``0`@(@A)(0`)*^_``@,`'&.K[````P`<+4`````CB0`+(R%```0
+MH``3C((`!*RB``2.(@`XC(,`!(R0``BL@@`$CB(`.*QE``"N)``XK(```*R`
+M``@,`'"ZK$0```(`$"&/OP`(C[$`!(^P```#X``()[T`$!``_^ZN(@`P)[W_
+MX*^Q`!2OL``0K[\`'*^R`!B,D@`$`("`(0.@*"$F1``D#`!QJJ^@``"/H@``
+M'$``!P``B"&/OP`<C[(`&(^Q`!2/L``0`^``"">]`"`,``L3`D`@(1!`__<`
+M0"@A,$(`#R1"`"LD`__P`$,P)`"C&"0`9A`A`$,0*Q1```<`8"`AO'$``"1C
+M`!``AA`A`$,0*Q!`__L`````C*,`""0"`!`08@`*``````P`"H,"`"`ACZ(`
+M`"8Q``$"(A`J%$#_XX^_`!P0`/_=C[(`&`P`"O0"`"`A$`#_]X^B```GO?_P
+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
+MEN,`!(XD`%2OH@`,KZ,`"*^@`!`4@``HKZ``%%+```^.L@`44M$`#8ZR`!2.
+MP@!4`L"`(11``!:.U@`@`@`H(0P`"F,"8"`A4L``!(ZR`!16T?_WCL(`5(ZR
+M`!160/^5CD(`/(^_`$"/MP`\C[8`.(^U`#2/M``PC[,`+(^R`"B/L0`DC[``
+M(`/@``@GO0!0#`!PN@````".!0!4`F`@(0P`"J0#H#`A#`!PM0`````0`/_B
+MK@``5`P`<+H`````CB4`5`)@("$,``JD`Z`P(0P`<+4`````$`#_T*X@`%0,
+M`"EL/`6``*Z@`#`"8"`A#``I/#P%@``0`/^\CN,``))$`#R.A@`0CH<`%```
+M$"$PA``!)(0``0#D."$`Y"`K`,(P(0#$,"&NA@`0KH<`%)9$``J.B``XCHD`
+M/(YE!:@PA`__`21((0$D("L!`D`A`01`(:Z(`#BNB0`\!*(``:Y@!:B.8ANP
+M$$L`(B5"``200P``,&(``51```HD`@#_CH(`&(Z#`!PD8P`!+&0``0!$$"&N
+M@@`8KH,`'!``_XR.H@`P$$,`"@````".@@`HCH,`+"1C``$L9``!`$00(:Z"
+M`"BN@P`L$`#_@8ZB`#".@@`@CH,`)"1C``$L9``!`$00(:Z"`""N@P`D$`#_
+M>(ZB`#"50P`(EF(<7E!B``.50P`&$`#_VB5"`!"68AQ<%&+_UR5"`!"50P`$
+MEF(<6E1B_],E0@`0CH(!+"1"``$0`/_TKH(!+`*@*"$,`!`!`B`P(5!`_X6.
+ML@`4$`#_/8ZB`!P0`/^#KB``0(YB%]A00/^!C[\`0`P`<:,F9!JL$`#_?8^_
+M`$",@P`4$&``""0$``&,8@`\!$,`!0``("&,8@`@$$```@```````"`A`^``
+M"`"`$"$GO?_PK[$`!*^_``@`@(@AK[```(XB&\P00``4)(08>`P`#JX`````
+M)B08L`P`#JX``H`K)B08Z`P`#JX``H`*)B09(`P`#JX``H`*4$```0``@"$"
+M`!`AC[\`"(^Q``2/L````^``"">]`!`,``ZN`````!``__<``H`K)[W_\*^P
+M``"OOP`$#`!PM0"`@"&.`AO,)@48>!!```L"`"`A#``-K0`````F!1BP#``-
+MK0(`("$F!1CH#``-K0(`("$F!1D@`@`@(0P`#:T`````#`!PN@````"/OP`$
+MC[````/@``@GO0`0C*<`*```2"&0X@`!,$(`!!1``!",J``LD.(`%C!#``]4
+M8``-C*(`/)4"`$8``"`A``(1`J#B`!>1`@!',$(`#P`"$0``8A`EH.(`%@/@
+M``@`@!`AC*(`/``"%H(P0@`!5$``#Y#B``&5"0!&D.,`%C$B``\``A$`,&,`
+M#P!B&"4`"1$"H.,`%J#B`!>,H@`\/`,$``!#$"6LH@`\D.(``3!"``000/_I
+M`2`@(8T&`"!0P/_F`2`@(8S(`"PD!/_PC,<`*"4#``@P8@`/)$(`)P!D&"0`
+M1"@D`&40(0!#$"L40``'`&`@(;QQ```D8P`0`(40(0!#$"L00/_[`````(S"
+M`#P``A:",$(``51```Z0X@`!D.,`%C$B``\``A$`,&,`#P!B&"4`"1$"H.,`
+M%J#B`!>,P@`\/`,$``!#$"6LP@`\D.(``3!"``140/_8C08`(!``_[T!("`A
+M)[W_X*^S``P`P)@AK[4`%*^T`!"OL0`$K[```*^_`!BOL@`(`("@(0"@B"$,
+M`'"U``"H(1)@`$("8(`AC@(`/``"%D(P0@`!%$``58X2`%`20`!4`H`@(8Y"
+M`%000`!1`````!*@`$R.`@`LC$,``(Q"`""NHP``KJ(`((X&`"PF1`!<`@`H
+M(:S``""LP```#`!1V`````".0@!X)$(``:Y"`'@2H``"`F"`(8ZP`"!6`/_C
+MC@(`/!)@`"$`````EB,`-%!@`!&.(@`8CF0`*)""`!8P10`/4*``"Z8@`#0`
+M`Q$"H((`%Y(B`#60@P`!,$(`#P`"$0``HA`E-&,`"*"#``&@@@`6CB(`&%1`
+M`!VL4P`@)`(``:XB`"RN,P`4KC4`&`````^.(@`L5$``$(YF`"2.)0`D#`!*
+MG`*`("$,`'"Z`````(^_`!B/M0`4C[0`$(^S``R/L@`(C[$`!(^P`````!`A
+M`^``"">]`"".)0`D#`!*E0*`("$0`/_MKB``+(XC`!B.8@`DK&(``!``_^2N
+M-0`8$`#_N(Q3`"`"@"`A#``-H0(`*"&.@ALX4$``&(XB`!Q2```6CB(`'(X"
+M`#P``A9",$(``11```D"@"`ACB8`&(XG`#".*``D#`!*_@(`*"%40``*CB(`
+M'`*`("$,`"EL/`6``(X"`#`"@"`A/`6```P`*3RN(@`PCB(`'"1"``$20``*
+MKB(`'(XB`"2.1`!0``(0P`!2$"&40P`P)(0``:Y$`%`D8P`!I$,`,!``_Y>.
+M%0`L)[W_\*^R``BOOP`,K[$`!*^P``",H@!4%$``!P"`D"$DL0!<CB(`'!1`
+M``F.)@`4KB``&*X@`!2/OP`,C[(`"(^Q``2/L````^``"">]`!",P@`LC,4`
+M6`)`("&,4``@K$```*Q``"`,``]+```X(8XB`!P"`#`A)$+__Q1`__2N(@`<
+M$`#_ZZX@`!@GO?_@K[0`$*^S``ROL0`$K[\`%*^R``BOL```C-``,(RB`"2,
+MPP!`CA(`4``"$,``H(@A`D(H(20"``(`@*`A$&(`.22S`#".(P`4C&(`/`1"
+M`"V,8@`@C@(`/#P#`@".!P`L`$,0):X"`#R.(@`<EF4``)9D``(D0O__KB(`
+M'(Y"`%".0P!4C.8`("2E__\D0O__)(3__R1C__^.,``4IF0``J9E``"N0@!0
+MKD,`5!3```*N)@`4KB``&*S@```"`#`AK.``(`(@*"$``#@A#``/2P*`("$"
+M@"`A#``/W@)`*"$``!`AC[\`%(^T`!"/LP`,C[(`"(^Q``2/L````^``"">]
+M`""L8````&`H(:XB`!0"@"`A#``*8ZQ@`"`0`/_.C@(`/)2C`#".0@!4)`8`
+M`:YF``0`0Q`AKD(`5*9C``*.`P`\/`6'_S2E__\``Q;",$(`#R1"``$P0@`/
+M``(6P`!E&"0`8A@EK@,`/(R"&V@``Q[",&,`#P!#$"M40``%CD(`5(R"&K14
+M0``1C((%@(Y"`%268P`")`7__R1"__^N0@!4CH(%A"1C__^F8P`")$(``0P`
+M5NZN@@6$`H`@(0P`#]X"0"@A$`#_QB0"__\D0@`!K((%@(X"`#P``A;",$(`
+M#Q!&``8`````C@,`*)!B``$T0@`($`#_DJ!B``$,``[T`@`H(1``__BF(@`T
+M)[W_\*^Q``2OL```K[\`"`"@@"&.`P!`C*4`,"0"``$`@(@A$&(`3HRD`%".
+M(AMH$$``1@``$"%0@`!%C[\`"(RB`"B00@`!,$(`!!!``"6.`P`@$&``/0``
+M$"&,<``LC@(`,(Q"`"B00@`6,$(`#Q!``#LF!``(,((`#R0#__`D0@`G`(,@
+M)`!#*"0`A1`A`$00*Q1```<`@!@AO)$``"2$`!``91`A`$00*Q!`__L`````
+M`B`@(0(`*"$,`$Z')`8``1!``"$D`O__C@(`,(Q"`"B00@`!,$(`!!1`_]V.
+M`P`@$&``&0``$"&,<``L)`3_\"8#``@P8@`/)$(`)P!D&"0`1"@D`&40(0!#
+M$"L40``'`&`@(;QQ```D8P`0`(40(0!#$"L00/_[``````(@("$"`"@A#`!.
+MAR0&``$D`___``(8"P!@$"&/OP`(C[$`!(^P```#X``()[T`$!``__H``!`A
+M)[W_T*^Q`"0`H(@AK[(`**^P`""OOP`L#`!PM0"`D"&.,``4$@``&0````".
+M0@2PCD,$M(X$`%0D8P`!+&4``0!%$"&N0@2PKD,$M!2``!<D`@`!C@(`+(Q0
+M`"`6`/_S`````(XP`!02```(`D`@(:X@`#"N(``4KB``&*X@`!RF(``T#``*
+ME0(`*"$,`'"Z`````(^_`"R/L@`HC[$`)(^P`"`#X``()[T`,*^B``2OH``(
+MKZ``#*^@`!`,`'"ZKZ``%(X%`%0"0"`A#``*I`.@,"$,`'"U`````!``_]VN
+M``!4)[W_\"2"`%2OL@`(K[$`!*^P``"OOP`,`("`(0"@B"$`0"`A$.``(0#`
+MD"$,`'&.``````P`<+4`````C@0`3(R%```0H``7C((`!*RB``2.`@!(C(,`
+M!*R1``BL@@`$C@(`2*QE``"LD@`,K(```*X$`$@,`'"ZK$0```P`<:,F!``\
+M```@(8^_``R/L@`(C[$`!(^P````@!`A`^``"">]`!`0`/_JK@(`4`P`<9P`
+M````)`,``11#__,D!``"$`#_W``````GO?_PK[````"`@"$DA``\K[\`#*^Q
+M``2OL@`(#`!QC@"@B"$,`'"U`````(X%`$2,HP``$&``'(RB``2L8@`$C*(`
+M!"8$`%2,L@`($B```ZQ#``",H@`,KB(``(X"`%`D`___K*```*RB``2.`@!0
+MK*,`"*X%`%"L10``#`!QHZR@``P,`'"Z``````)`$"&/OP`,C[(`"(^Q``2/
+ML````^``"">]`!`0`/_EK@(`2">]_^"OOP`4K[``$(R0``2OH```)@0`/`P`
+M<:H#H"@ACZ(```(`("$40``()Z4`!(^B``!40/_X)@0`/(^_`!2/L``0`^``
+M"">]`"`,`!%+`````!``__>/H@``)[W_\"2E__^OL0`$K[\`#*^R``BOL```
+M+*(`&0"`B"$00``4C)(`!#P#@`(`!1"`)&,(X`!#$"&,0@```$``"`````",
+MA```#``;"B0%`!$`0(`A)D8$@`!`("$D!0$X#``;/@````".)```#``:O0(`
+M*"&/OP`,C[(`"(^Q``2/L````^``"">]`!```#`A`D`@(0P`+H$D!0`"CB0`
+M``P`&PHD!0`2`$"`(29&!(@`0"`A$`#_ZB0%``B,A```#``;"B0%`!..)```
+M`$"`(20"`@`0`/_EK@(```P`$ZB,A``$$`#_Y(^_``P,`!/`C(0`!!``_^"/
+MOP`,)[W_T*^S`!ROOP`@K[(`&*^Q`!2OL``0C)(`!`"`F"$#H"@A`F`@(0P`
+M$4LF41?L`B`@(0P`<<(`0(`A`D`@(0P`%&TD!0`!CZ8```(`*"$,`!&.`F`@
+M(0)`("$,`!1M```H(0P`<=`"("`A$`#_[0.@*"$GO?_@K[0`$*^S``ROOP`<
+MK[8`&*^U`!2OL@`(K[$`!*^P``",D0`$``"@(0``F"&.(A?@5$``"HXB%]PF
+M,!K(#`!QP@(`("$,`''0`@`@(8XB%^!00/_Z)C`:R(XB%]P00``X`````"8V
+M&N`,`''"`L`@(8XC'*0D`@`#$&(`-0`````D!0`!`B`@(0P`%&TF,AK()C4:
+MA`P`<<D"0"`A)!```0*@("$,`'')`@*@"Q*``!H"`I@+$F``$P```````(`A
+M#``(VP(@("&.(@`$)A```0P`'0.,1```#``.V0(@("&.(@`$#``=`XQ$```\
+M`H`"D$)$:!!```,J`P!D%&#_\``````2@``$``````P`<=`"0"`A``"@(5)@
+M``4"("`A#`!QT`*@("$``)@A`B`@(0P`%&T``"@A#`!QT`+`("$,`'#U````
+M`!``_[@`````#`!I/S0$PU`0`/_*)`4``2>]__"OOP``C*(`!`"@("$``#`A
+MC$(7Q"0%`!@40``$```X(8^_```#X``()[T`$`P`$1D`````$`#_^X^_```G
+MO?_P`*`@(0``,"$D!0`9K[\```P`$1D``#@AC[\```/@``@GO0`0)[W_\*^_
+M``BOL0`$K[```(R0``0,`'%9`("((0!`("$,`'%7)@4;7(X$&UP\!8``)@<8
+M""8(&!`"(#`A#`!Q822E20P,`'%<`````"1C`,@L90#(C@08"`!%$"$D"```
+M)`D`R`!`,"$,`'%T`&`X(8X$&UP\!8``)@<80"8(&$@"(#`A#`!Q822E24P,
+M`'%<`````"1C`,B.!!A`+&4`R`!%$"$`0#`A)`@``"0)`,@,`'%T`&`X(8^_
+M``B/L0`$C[````/@``@GO0`0)[W_X"2"`$0D@P!,K[$`!`"`B"&OOP`8K[4`
+M%*^S``ROL@`(K[0`$*^P```DA``\KB(`2*XC`%```"@AKB``1*X@`$PF,P!4
+M#`!QAXXT``0"8"`A#`!QAP``*"$``*@A``"0(0P`>E<D!``0)E(``0!`@"$`
+M0"`A```H(1!``#XD!@`0#`!PJ@````".(@!0)`/__ZXP`%"N````K@(`!*Q0
+M```"8"`AK@,`"`P`<:.N```,*D(``A1`_^H`````#`!QM":$%^P\$(`"/`6`
+M`#P'@`(\"(`"/`N``B8*;+@DI4>H).<)1"4(9+@E:VS``B`P(20)"``,`'#+
+M)`0``8X$;+@,`'#D/!"``CP%@``\!X`"/`B``CP+@`(F"GE@)*5'-"3G"50E
+M"&U@)6MY:"0$``$"(#`A#`!PRR0)#``,`'#DC@1Y8`P`$ET"("`A`J`0(8^_
+M`!B/M0`4C[0`$(^S``R/L@`(C[$`!(^P```#X``()[T`(!``__4D%0`")[W_
+MT*^P`!``H(`AK[\`(*^S`!ROL@`8`("8(:^Q`!0,`'%"KZ``!`P`*.@"`"`A
+M%$``$B02``$,`'%0`F`@(20"``$20@`)``````)`$"&/OP`@C[,`'(^R`!B/
+ML0`4C[``$`/@``@GO0`P#`!Q20)@("$0`/_V`D`0(0(`("$#H"@A#``H[2>F
+M``0`0(@A,$(``11``%`"`"`A,B(`(%1``$:.`@2$,B((`!1``#X"`"`A,B(`
+M0!1``#<"`"`A/`(`!`(B$"040``O`@`@(3(B`(`00``2`````(X"&\Q00``B
+MC@48G(^B``0P0@`(5$``&HX%&42/H@`$,$(`!%1``!*.!1D,CZ(`!#!"``)4
+M0``*C@48U"0"_W\"(H@D$B#_Q:^@``".`AV$)!(``P!1$"40`/_`K@(=A`P`
+M2IP"`"`A$`#_]20"_W\,`$J<`@`@(1``_^V/H@`$#`!*G`(`("$0`/_ECZ(`
+M!(^B``0`LA@$`$,0)!!`_^D`````$`#_[@`````,`"EL/`4`!!``_]`R(@"`
+M#``I;"0%`$`0`/_(/`(`!`P`2@HD!0`!)`+W_Q``_[\"(H@D`@`@(20%`"`D
+M0@`!#``I;*X"!(00`/^V,B((``P`*6PD!0`!$`#_KS(B`"`GO?_@K[0`$*^R
+M``BOL```K[\`%*^S``ROL0`$C,,<I"0"``(`@*`A)`4``0#`@"$`P"`A$&(`
+M%@``D"$,`!1M/!,`!`(`("$,`"EL/`6``(X1'82N`!V$`@`@(0P`*3P\!8``
+M$B``!`(S$"0"`"`A%$``$S(R`"`"0"@A#``I/`(`("$"`"`A#``4;0``*"$,
+M`'%0`H`@(0P`<4D"@"`AC[\`%(^T`!"/LP`,C[(`"(^Q``2/L````^``"">]
+M`"`,`#>``````%1```..!``$$`#_Z0)3D"4``#`A```X(0P`$1DD!0`#4$#_
+MY`)`*"$0`/_A`E.0)2>]__"OL```K[\`!(R"%^`00``/`("`(8R"%]P00``,
+M)`(``HR#'*008@`))`(``1!B``B/OP`$#`!PM0`````,`##@`@`@(0P`<+H`
+M````C[\`!(^P```#X``()[T`$">]_]"OL0`DK[\`+*^R`"BOL``@C((7X!!`
+M`"8`@(@AC((7W!!``",D`@`"C(,<I!!B`"`D$@`!$'(`'X^_`"P,`'"U````
+M`(XB&QQ40``%CC`;0(XB&R140``@CB(;S(XP&T`GH@`0`B`@(0``*"$``#`A
+M```X(0``0"$``$@A``!0(20+``&OH@``#`!7EZ^R``0\`@`$`@*`)!8```L"
+M("`A#``-6@(@("$,`'"ZKB`;)(^_`"R/L@`HC[$`)(^P`"`#X``()[T`,`P`
+M*3P\!0`$$`#_\P````!00``4CB(8E```*"$`!1#``$40(P`"$,``41`AC$,8
+ME"2B``$P10#_$&```RRD``0D`@`!KB(;'!"`_^4`````CB(;'!1`_^(`!1#`
+M$`#_\0!%$",00/_>)`(``1``_]RN(AL<)[W_X"0#``&OLP`,K[(`"*^Q``2O
+ML```K[\`$`"@D"$`P)@A`("`(1"C`$8``(@A4*``,(R"'*0D`@`"$*(`$R0"
+M``,0H@`,`````%(@``&N$ARD5F```:YQ``"/OP`0C[,`#(^R``B/L0`$C[``
+M``/@``@GO0`@#``4K"0%``(D$0`6$`#_\0`"B`H,`"EL/`6```(`("$,`!2L
+M```H(201`!8"`"`A#``(E0`"B`HD!0`!#``*2`(`("&.`@`$#``="HQ$```,
+M`%&4`@`@(0(`("&N`!?@#``I/#P%@``"`"`A#``4K"0%``$0`/_7`````!!#
+M``D``````@`@(0``*"$,`!2L`````%1`_\\D$0`6$`#_S0````",@A?@4$#_
+M]P(`("&,@@`$#``=&(Q$```,`''0)@0:X!``__`"`"`AC((7X%1```2,@@`$
+M`@`@(1``_^LD!0`!#``="HQ$```,`''")@0:X!``__D"`"`A)[W_\*^P```P
+ML`#_K[\`#*^R``BOL0`$``"0(0P`<+4`@(@A#`!Q-``````2```:CB(<K!1`
+M``@D0@`!CB(<J`(@("$``"@A%$``#R0&``&.(ARL)$(``:XB'*P,`'$[````
+M``P`<+H``````D`0(8^_``R/L@`(C[$`!(^P```#X``()[T`$`P`-.4D$@`6
+M$`#_[P`"D`HD0O__%$#_[ZXB'*R.(ARH`B`@(20&``$00/_J`$`H(0P`-.4D
+M$@`6$`#_Y@`"D`HGO?_PK[````"`@"&OOP`$#`!QM"2$&N"N`!RDK@`<K*X`
+M'*B/OP`$C[````/@``@GO0`0)[W_\*^R``BOL0`$K[```*^_``P`@(`A#`!P
+MM0"@B"$D`@`!$B(`(P``D"%2(``7C@(<K"0"``)2(@`*C@(<K`P`<+H`````
+M`D`0(8^_``R/L@`(C[$`!(^P```#X``()[T`$!!```,"`"`A$`#_]*X1'*@D
+M!0`"#``TY20&``$D$@`6$`#_^0`"D`H00``#`@`@(1``_^JN`!RH```H(0P`
+M-.4D!@`!)!(`%A``__D``I`*C@(<K%1`_^&N$1RH`@`@(1``_^PD!0`!)[W_
+M\*^R``BOL0`$K[```*^_``P`H(@A`("`(1"@`#<``)`A)`(``1"B``DD!0`$
+M)!+__P)`$"&/OP`,C[(`"(^Q``2/L````^``"">]`!`,`#3E)`8``8X#%]PD
+M$@`6$&``!``"D`J.`A?@$%$`&3P%@``60/_O)`(``8X#'*A08@`/C@(<K"0"
+M``(48O_J`D`0(8X"'*P40/_G`D`0(0(`("$D!0`"#``TY20&``%40/_@)!(`
+M%A``_]\"0!`A%$#_\B0"``("`"`A$`#_]B0%``$,`"D\`@`@(0P`-;@"`"`A
+M#``UZ`(`("$,`'"Z`````!``_]\`````C((<J!1``!X`````C@(7W!!```4F
+M!1MPC@,7X"0"``$08@`,``````(`("$,`#>%)`8``1!```0`0)`A)!(`%A9`
+M_[X"0!`A`@`@(1``_]<D!0`##`!PM0`````"`"`A#``I;#P%@``,`#7]`@`@
+M(0P`-;\"`"`A$`#_\0`````,`#3E)`8``202`!80`/_?``*0"B>]__`D@@`4
+M)(,`'*^R``BOL```K[\`#*^Q``0`@(`AK((`&*R#`""L@``4K(``'```D"$,
+M`'I7)`0`#`!`B"$2(``1)`(``@(@("$``"@A#`!PJB0&``R.`@`@)E(``2I#
+M``*N$0`@KB```*XB``048/_PK%$``"8$``P,`'&'```H(0``$"&/OP`,C[(`
+M"(^Q``2/L````^``"">]`!`GO?_PK[\``(R&`!R,R```$0``$0"`."&,P@`$
+MK0(`!(SB`!B,PP`$).0`#*S"``2,X@`8K&@``*S%``BLP```K.8`&`P`<:.L
+M1@``C[\```/@``@GO0`0C,(`!!``__"L@@`@)[W_\*^Q``0`@(@A)(0`#*^_
+M``@,`'&.K[````P`<+4`````CB0`%(R%```0H``3C((`!*RB``2.(@`@C(,`
+M!(R0``BL@@`$CB(`(*QE``"N)``@K(```*R```@,`'"ZK$0```(`$"&/OP`(
+MC[$`!(^P```#X``()[T`$!``_^ZN(@`8,*8`#R>]_?`D`O_P),,`3Z^T`@``
+M8A@D`*"@(0"B*"0`HQ`AK[$!]*^_`@ROM@((K[4"!*^S`?ROL@'XK[`!\`!%
+M$"L`@(@AC),`!(R6``"OH`"TKZ``H!1```<`H"`AO+$``"2E`!``@Q`A`$40
+M*Q!`__L`````CH,``"QB`$%40``1CH(`#`!F$"$D0@`/)`/_\`!#*"0"@Q@D
+M`&40(0!#$"L40``'`&`@(;QQ```D8P`0`(40(0!#$"L00/_[`````(Z"``P4
+M0`.[CI``!```J"$F!?__+*(`0Q!``!L\`X`"``40@"1C"80`0Q`AC$(```!`
+M``@`````)Z4`H">F`*0,`!MH`H`@(0*`("$GI0"@#``;:">F`*@"@"`A)Z4`
+MH`P`&V@GI@"L`H`@(2>F`+`,`!MH)Z4`H`(@("$"8"@A#``'PR>F`+02H``'
+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
+M)$(``:(B`$"/OP`@C[,`'(^R`!B/L0`4C[``$`/@``@GO0`PKD```(XC``".
+M(@`THB``0"1D`"0D4@`$KB``-`.@*"&,<``$#`!QJJ^@``".0P`()`(`$!!B
+M``J/H@``5$``"8XB``".`A?8)`,``5!#``6.(@``C@(:M!!#``<F$!J8CB(`
+M``)`*"$,``KTC$0`!!``_]V/OP`@#`!QR0(`("%00/_XCB(``(XD```,``N>
+M`D`H(0P`<=`"`"`A$`#_TH^_`"`,`!LI`D`@(1``_\Z/OP`@)[W_\*^_```0
+MX``-,*(`_Q!```8`P"@A#``:(@````"/OP```^``"">]`!",A```#``5:P#`
+M*"$0`/_ZC[\``!!```4`P"`A#``;*0`````0`/_TC[\```P`&QX`P"`A$`#_
+M\(^_```GO?_P,*(`_Z^_```40``&`,`H(0P`&Q8`````C[\```/@``@GO0`0
+MC((```P`":*,1``$$`#_^H^_```GO?_PK[\``(RG``",A``$`*`P(0P`6@0`
+M`"@AC[\```/@``@GO0`0)[W_\*^_```\`H`"C$(RY`"@,"$00``+D(4`,Y3"
+M``(D1P`$#`!:!(R$``2/OP``)`0``3P#@`*L9#+D`^``"">]`!`0`/_W)`<'
+M("2"`!PGO?_PK(``)```*"&OOP``#`!QAP!`("&/OP```^``"">]`!`GO?_P
+MK[````"`@"$DA``<K[\`"`P`<8ZOL0`$#`!PM0````".$0`DCB(```P`<+JN
+M`@`D`B`0(8^_``B/L0`$C[````/@``@GO0`0)[W_\*^P````@(`AK[\`"*^Q
+M``0,`'"U`*"((8X"`"2N(@``KA$`)`P`<+HF$``<#`!QHP(`("&/OP`(C[$`
+M!(^P```#X``()[T`$">]__"OOP`$K[````P`&N0`H(`AK%``!(^_``2/L```
+M)`,`(*Q#```#X``()[T`$">]__"LH``$K[\```P`&O<`````C[\```/@``@G
+MO0`0)[W_\*^_```\`H`"C$(RX`"`,"$``"@A#`!9[HQ$``2/OP```^``"">]
+M`!`GO?_PK[\``#P"@`*,0S+@`(`P(3P"B(B090`SC&0`!#1"B(@,`%GNK,(`
+M`(^_```#X``()[T`$(R"````@A`AK$4``(R"```D0@`$`^``"*R"```GO?_P
+MK[\`"*^Q``2OL````("((8R$````H(`A)`+__`(D("$`P"@AK)````(`,"$D
+MA``$)A```PP`<)T"`H`DCB(``(^_``@`4!`A)$(`!*XB``"/L```C[$`!`/@
+M``@GO0`0C(,``"0"`@``0Q`C$*```@"#("&LI```5,```:S"```#X``(````
+M`(R#```DI0`#)`+__`"B*"0`91@A`^``"*R#```0H``"```8(8RC````@Q`A
+MC$(`(!"@``(D8P`$K*,```/@``BLP@``C*(```""("$0P``")(0`(*S$```#
+MX``(`````">]__"OOP`$K[````P`:_(`@(`A)`,``:X#``RN`@``K@``"*X`
+M``2/OP`$C[````/@``@GO0`0)[W_\*^P``"OOP`$C((`.`"`@"$40``F)`0`
+M`0P`:LDD!``!#`!K\@````"N`@`L#`!K]20$``*.`@`````H(0P`%-^,1``$
+M%$``$P````".`@`P%$``#```("&.`@`X%$``!0``("&/OP`$C[````/@``@G
+MO0`0#`!K#P`````0`/_ZC[\`!`P`:P$`````$`#_\XX"`#@,`&OUC@0`+`P`
+M:LD``"`A$`#_[8X"`#@,`&L/`````!``_]@`````)[W_\*^P``"OOP`$C((`
+M.`"`@"$40``=)`0``8X"```D!0`!#``4WXQ$``000``%`````(^_``2/L```
+M`^``"">]`!`,`&OUC@0`+`P`:LD``"`AC@(`,!1```@D!``!C@(`.!!`__,`
+M`"`A#`!K#P`````0`/_PC[\`!`P`:P$`````$`#_]XX"`#@,`&L/`````!``
+M_^*.`@``)[W_\*^P``"OOP`(K[$`!(S#`"@D`@`!$&(`!@#`@"&/OP`(C[$`
+M!(^P```#X``()[T`$*S``#P,`'$T``````P`&[<"`"`AC@(`*!1``"```"`A
+M$(``$`````".`@`\/`,``C1C2?`D0@`!K@(`/(X"`#P`8A@K$&``!P````".
+M`@``C$(`!(Q1%^@D`@`!$B(`"@`````,`!S\C@0`!"0$``4,`'%)``````P`
+M<3L`````$`#_VX^_``@,`!N'`@`@(20$``L0`/_VKA$`*`P`'0..!``$#``=
+M(XX$``0\`P`"`$`@(1!```XT8TGPC@(`/"1"``&N`@`\C@(`/`!B$"M00``(
+MC@(`*(X"``",0@`$C$,7Z"0"``$08O_-`````(X"`"@40/_I`````!``_\@`
+M````)[W_\*^Q``2OL````*"((:^_``@,`'%"`("`(0(`("$"(#`A#``;W@``
+M*"&/OP`(C[$`!(^P```D`@`!`^``"">]`!`GO?_PK[```#P'@```@(`A/`B`
+M`"2)`"0DB@`().=PL"0$``LE"&]X```H(:^_``0,`'$(`@`P(8X"`"040``%
+M`$`@(8^_``2/L````^``"">]`!`,`'$F`````!``__J/OP`$)[W_\"0#``&O
+ML```K[\`"*^Q``00HP`1`("`(5"@`!*,@@`H)`(``A"B``PD`@`#4*(`!HR"
+M`"B/OP`(C[$`!(^P```#X``()[T`$%1`__JL@``H$`#_^8^_``BN```\$`#_
+M]H^_``@40/_TC[\`"(R"``",0@`$C%$7Z%8C__"/L0`$#``<]8R$``0,`'%"
+M)`0`!0P`&X<"`"`AKA$`*`P`<4DD!``+$`#_Y(^_``@GO?_PK[(`"`"`D"$D
+M!`!`K[$`!*^P``"OOP`,#`!Z5P"@B"$`0(`A$@``%```$"$``"@A)`8`0`P`
+M<*H"`"`A)@0`+*X2``"N$0`$#``;>:X``"@,`'%))`0`!`P`'#T"`"`AC@0`
+M!#P%@``DI7%8#``<UP(`,"$"`!`AC[\`#(^R``B/L0`$C[````/@``@GO0`0
+M)[W_\*^_``",@@`H%$``!```*"&/OP```^``"">]`!``0/@)C(0`+!``__N/
+MOP``)[W_\*^_``",@@`H%$``!"0%``&/OP```^``"">]`!``0/@)C(0`+!``
+M__N/OP``)[W_\*^_``",@@`H%$``!"0%``*/OP```^``"">]`!``0/@)C(0`
+M+!``__N/OP``)[W_\*^_``",@@`H%$``!"0%``./OP```^``"">]`!``0/@)
+MC(0`+!``__N/OP``)[W_\*^_``2OL````("`(8R$``2N!@`L/`:``*X%`"@D
+MQG*<#`!9U```*"&.!``$/`:``"3&<LP,`%G4)`4``8X$``0\!H``),9R_`P`
+M6=0D!0`"C@0`!#P&@``DQG,L#`!9U"0%``./OP`$C[````/@``@GO0`0)[W_
+M\*^_```,`%K'C(0`!(^_```#X``()[T`$">]__"OOP``#`!:SXR$``2/OP``
+M`^``"">]`!`GO?_PK[\```P`6N",A``$C[\```/@``@GO0`0)[W_\*^_``2O
+ML````("`(0P`6M>,A``$#``<_`(`("$,`!T#`@`@(8^_``2/L````^``"">]
+M`!`GO?_PK[```*^_``0,`!SU`("`(0P`6MN.!``$C[\`!(^P```#X``()[T`
+M$">]__"OOP``#`!:](R$``2/OP```^``"">]`!",@@`````H(8Q"0"`P1@#_
+M/`.``@`%$(`D8S,P`$,@(92"```DI0`!$,(`!2RC``A48/_X/`.``@/@``@`
+M`!`A`^``")2"``(D`A0`I((`"B0""9ZD@@`()`(`!:2"`!0D`@`$K((`8"0"
+M`!ZD@@`<)`()*J2"`'0D`@`'K((`>"0"``\D`P`")`4``20&``,D!P`\H((`
+M4R0"$`"LA0!(H(8`?*"#`'VL@@!4I(<`6JR```2@@P`6H(``%ZR%`'"LA@``
+MK(``:*R``&RL@`!,K(``9*R``#2D@`!<I(<`6*2``%X#X``(I(``?B>]_^"O
+ML````("`(20$'<BOLP`,K[$`!*^_`!"OL@`(#`!Z5P"@F"$00`!``$"((0!`
+M("$``"@A#`!PJB0&'<@\`J#`-$(`H(Q#```"("`AKC```#!B`/```A$",&,`
+M#ZXC!'P,`!TJKB($>`!`&"$``(`A/`*``B12,N@`$!#``%(0(91"```00P`&
+M)`(`"280``$J`@`)%$#_]SP"@`(D`@`)$@(`%20#``$,`'I7)`0`O*XB&_00
+M0``0)`/__P``*"$D!@"\#`!PJ@!`("$,`!T\)B0;:``0$,``4A`AC$(`!`!`
+M^`D"("`A%$``"P!`@"&N<0```@`8(8^_`!"/LP`,C[(`"(^Q``2/L````&`0
+M(0/@``@GO0`@#`!Z:HXD&_00`/_SKB`;]!``__(D$``")[W_\"0%``X``#`A
+MK[(`"*^Q``2OL```K[\`#`P`'<X`@)`A`$"((11```<``(`AC[\`#(^R``B/
+ML0`$C[````/@``@GO0`0`@`H(0P`*9X"0"`A)@(``3!0__\"$1`K%$#_^@(`
+M*"$0`/_RC[\`#(R"&_0LHP`4`*!`(21'`#008``*```H(3P"@`(`"!B`)$(*
+M[`!B$"&,0@```$``"```````9Q`AC$4```/@``@`H!`A,,(@`%!`__R4Y0!$
+M$`#_^I3E`$`PPB``4$#_]Y3E`$80`/_UE.4`0B0"`!`0P@`/+,(`$1!```8D
+M`@`1)`(``U#"_^V,Y0!($`#_ZR0%``$0PO_I```H(20"`"!4PO_F)`4``1``
+M_^2,Y0!,C((;S!!`_^&,Y0!0C.(`5!``_]X`HB@D)`(`$%#"_]N,Y0!@+,(`
+M$1!```8D`@`1)`(``U3"_]4D!0`!$`#_TXSE`%@0PO_1```H(20"`"!4PO_.
+M)`4``1``_\R,Y0!<)[W_L#P%@`(\!H`"K[``,*^_`$BOM0!$K[0`0*^S`#RO
+ML@`XK[$`-"3""XPDHPN$C*<+A(QH``2,20`,C$,`!(S&"XR,0@`(```H(0"`
+M@"&OIP`(KZ@`#*^F`!BOHP`<KZ(`(`P`.FZOJ0`D%$``:@!`("&.!0``C*)`
+M(#!#`/\P1``/``,9`B0"``6F`QSP$&(`[Z8$'/(T`H```*(0(8Q"&!@``#@A
+MI@(<]``'2(`!/1`AC@,``(Q1``@``"@A`'$8(8QC``"L0P`0C@(````%'```
+M91@E`%$0(:Q#``".`@``)*4``2RD`0``41`AC$(``%1#`$@D!``6%(#_](X"
+M`````#`A)Z4`&(RC```DQ@`!`%$0(:Q#``"."```+,0`!"2E``0!$1`AC$(`
+M`%1B`#DD!``65(#_](X"```!/1`AC$,`"(Q$`!`DX@`!,$?__P$#&"$LX@`"
+MK&0``!1`_],`!TB`#`!I/R0$`&2.`@``-`2``"0#``<`1!`AK$,8`(X"```D
+M`QP6```X(0!$$"&L0QC0C@,``"3B``$P1___-`:```!F&"$\`@`!+.0`"*QB
+M&(!4@/_XC@,``(X"```D!0`(`$80(8Q$'```!"8",((`#P`"$0``!"$"#`!8
+ME`""("4`0"`A,$,`\*8"'/8D`@`P$&(`D#""``\"`"`A)`4`P0P`+*\#H#`A
+M$$``"R0$`!:/OP!(C[4`1(^T`$"/LP`\C[(`.(^Q`#2/L``P`(`0(0/@``@G
+MO0!0)[4``@(`("$D!0`<#``LKP*@,"$40/_P)`0`%I>B``(40`!K)!0$```4
+M$$`D4?Z`#`!Z5P(@("$`0)@A$$#_YB0$``("(#`A`$`@(0P`<*H``"@AC@(;
+M]"01`,`"-!@KK%,`M!!@``P"8)`A`B`H(0(`("$"H#`A#``LKR8Q``$40``*
+M`C08*Y>B``*F0@``%&#_]B92``("@"@A#``@YP)@("$00``*`````!)@``8D
+M!0`6#`!Z:@)@("&.`AOTK$``M"0%`!80`/_#`*`@(0P`>E<D!``X$$#_]`!`
+MB"$`0"`A```H(0P`<*HD!@`XC@(;]`(@("$,`"#UK%$``!1`_^J7H@```@`@
+M(0)@*"$,`"7=IB(``!1`_^0F)@`"`@`@(0P`+*\D!0`_%$#_WP(`("&.!1OT
+M#``@MB2E`*040/_:``````P`'],"`"`A%$#_UB8%&Z(,`"QX`@`@(8H#&Z*:
+M`QNE%&``!20"__^6`ANF$$``$#P"``,D`O__4&(`"98#&Z:6`ANBE@0;I)8#
+M&Z8``"@AI@(;J*8#&ZP0`/_)I@0;JC0"__]48O_WE@(;HCP"``,T0G^_J@(;
+MHKH"&Z4D`JJJ$`#_[Z8"&Z8P0O_P`@`@(20%`!L"H#`A#``LKP`"HP`40/][
+M)`0`%I>B``(0`/^,`H*@)2Q"``440/]U)`0`%A``_VX"`"`A+((``A1`_W`D
+M!``6$`#_#S0"@``GO?_PK[$`!*^P``"OOP`,K[(`"(R"&_0`@(@A)`0`(`P`
+M>E>,4@"T$$``%P!`@"$`0"`A```H(0P`<*HD!@`@CB(;]`(`*"$"("`A#`!(
+M#JQ0``0``(`A`@`H(0(@("$,`"F>)A```2H"`(`40/_[`@`H(8XE&_0,`#\Y
+M`B`@(11```\`````$D```P`````,`'IJ`D`@(0P`'WP"("`A)`0`%H^_``R/
+ML@`(C[$`!(^P````@!`A`^``"">]`!`,`#3``B`@(0P`+V0"("`ACB0;]#P#
+M@`(D8RRT/!"``CP'@``\"(``/`J``ZR#`!BN(A?$)@E'L"3G2\`E"$VH)4JA
+M8```*"$"(#`A#`!Q"```("$,`'$FC@1'L`P`<4D``"`A#`!Z:@)`("&.(QOT
+M)`(`"@``("&L8@!H$`#_V:Q@`+0GO?_@K[0`$*^_`!2OLP`,K[(`"*^Q``2O
+ML```C)(;](Y0```2```=`("@(8X$``04@`!!`````(X$``@4@``Z`````(X$
+M``P4@``S`````(X$`!`4@``L````````F"$"`(@ACB(`%"9S``$40``B`$`@
+M(8XB`!PF,0`,%$``&@!`("$N8@`#5$#_]XXB`!0,`'IJ`@`@(:Y```".1``$
+M%(``#0`````"@"`A#``_1@)`*"&/OP`4C[0`$(^S``R/L@`(C[$`!(^P````
+M`!`A`^``"">]`"`,`'IJ`````!``__&N0``$#`!Z:@`````0`/_E+F(``PP`
+M>FH`````$`#_W8XB`!P,`'IJ``"8(1``_]0"`(@A#`!Z:@`````0`/_,C@0`
+M$`P`>FH`````$`#_Q8X$``P,`'IJ`````!``_[Z.!``(C(,;]"0"``XD8P`T
+M`^``"``#$`LGO?_0K[0`(*^R`!BOL``0K[\`)*^S`!ROL0`4C)$;]"0%`+\#
+MH#`ACB(```"`D"&GH``$#``LKXQ3``0F,``T%$``I@!`H"&.0AOTEZ,``(Q"
+M``"N(P`TE$(``"Q"4`,40`"_)Z8`!`)`("$,`"RO)`4`RA1``)D`0*`AEZ(`
+M!#!"#\```A%"-$(``:X"`#R.0AOTC$(``)1"```L0E`!$$``IR>F``*GH``"
+MEF(`$I9D`!"68P`4``(0@`""("4``QC`EF4```"#("4T@@`"`$4@"I9C``(`
+M@"@A-*(`$)>D````0R@*,*(``11```.N!```)`+__0"B*"0PH@`(%$``!"0"
+M"0@D`O_O`*(H)"0""0BF`@!$ED(<]C!"`/`L0@`P$$``A*X%``260QSP)`(`
+M!Q!B``4D`@G$)`(`"A!B``(D`@G$)`(*K*8"`$:7J``")`(3.*8"`$`D`A?4
+MI@(`0C$#``(D`@`!K@(`8*X``%P48``(```P(99#'/`L8@`&4$``!"0&``$D
+M`@`%4&(`8I9#'/*61!SP)`(``:X&`%@L@P`&K@(`4*X``$P08`!8```P(20"
+M``50@@!2ED(<\C$$__\`!!!".$(``20'``$P0@`!,0,``:X&`%2N`@!(K@<`
+M"*X'``P48``#```P(3"B``D``C`K``00PCA"``$P0@`!,0,`!*X&`!"N`@`4
+M%&```P``,"$PH@`)``(P*Y9B``:.9``8``49`C!C``&N!@`8K@,`(*X'`"2N
+M`@`HK@<`'!"```0``"@ACF(`'%1```,D`@`!)`4``20"``$Q`P'PK@(`,*X%
+M`"P48``"``,1`B0"``HQ`_``$&``'ZX"`#0``QL")`(``0!B$`2N`@`XCD(;
+M](Q#``"7H@`$,$(/P``"(4*48@``+$)0`Q1```.N!``\-((``:X"`#R"8@`@
+M`D`@(:X"`&2"8@`A#``?SJX"`&@"@!`AC[\`)(^T`""/LP`<C[(`&(^Q`!2/
+ML``0`^``"">]`#`0`/_D)`(`@"Q"``@40/^N,03__Q``_ZLD!@`!)`(``A!B
+M``,L8@`$5$#_G)9$'/`0`/^9)`8``1``_X0D`@G$`D`@(0P`+*\D!0#)%$#_
+MXP!`H"&7H@`"$`#_5*9B`#@"0"`A#``LKR0%`,H40/_;`$"@(9>B``0P0@P`
+M``(90JX#`#P0`/]"IZ(`!">]_]"OLP`<K[(`&*^Q`!2OL``0K[\`(`"@D"$`
+M@)@A``"((0"@@"$F)0"P`F`@(0P`+*\#H#`A)C$``0!`."$40``(*B0`!I>B
+M``"3HP`!``(2`J(#``"B`@`!%(#_\B80``*20P`+)`(`_Q!B``H``(@AHD``
+M#(^_`""/LP`<C[(`&(^Q`!2/L``0`.`0(0/@``@GO0`P`E$@(0)1*".`A@``
+MD*(`"B8Q``$J(P`%H((``!1@__B@I@`*$`#_[:)```LD!P#``.40*Q!```<`
+M`#`AE((``"3G``$`Y1@K`,(P)A1@__LDA``".,/__R0"`!8#X``(``,0"B>]
+M__"OL````("`(:^_``0,`'I7)`0!6*X"``000`!")`,``@!`("$``"@A#`!P
+MJB0&`5@,`'I7)`0#9*X"``@00``Y)`,``@!`("$``"@A#`!PJB0&`V2."0`(
+M)`(`"B0(``FE(@`4)`(``Z4B`AXE(P`<)`(`"R4(__^D8@``!0'__21C`#0`
+M`$`A`2`X(3P#@`(\`H`"``@@0"1C%X0D0A=\`((0(0"#&"&41@``E&,``"4(
+M``$`B2`A)`(`"RD%``.D@P(@I(8")J3B`C*DX@+.%*#_[B3G`#0,`'I7)`0`
+MB*X"``P00``/)`,``@!`("$``"@A#`!PJB0&`(@,`'I7)`0(`*X"`!`00``&
+M)`,``@!`("$``"@A#`!PJB0&"````!@AC[\`!(^P````8!`A`^``"">]`!`G
+MO?_@K[\`$*^S``ROL@`(K[$`!*^P``",@AOT`*!((3##__^,4P``EF(``"Q"
+M,`,40``ICG``")8&`!0``)`A`D80*U!``!"6`@`4`@`X(0`#$$``21`AE$@`
+M`"92``(D8P`!,00`_P`($@("1B@KI.(``*3D``(P8___%*#_]"3G``26`@`4
+M$$``#```D"$"`(@AEB4``)9D`````#`A#``HGB92``&6`P`4IB(```)#&"L4
+M8/_W)C$``H^_`!"/LP`,C[(`"(^Q``2/L````^``"">]`"```Q!``$40(91(
+M```D8P`!,&/__P!@*"$`"#%```@8@@`($D(PQ@!_,&,`?P`%($"F!@`$I@(`
+M`*8#``(`B2`AE(@``"2E``$PH___`&`@(0`($L(`""C```@9`@#","4PI0!_
+M,&,`?P`$$$"F!0`(I@8`!*8#``8`21`AE$@``"2$``$P@___`&`@(0`($T(`
+M"#A```@9@@"B*"4PYP!_,&,`?P`$$$"F!P`,I@4`"*8#``H`21`AE$@``"2$
+M``$PA/__``@I@``(,\(`"!("``@80C"E`'\P0@!_`.8X)3!C`'\`!"!`I@4`
+M$J8"``ZF!P`,I@,`$`")("&4B`````@2@@"B*"40`/^HI@4`$B>]_\"OMP`L
+MK[4`)*^Q`!2OOP`TK[X`,*^V`"BOM``@K[,`'*^R`!BOL``0C((;]##&__^O
+MI0``C%0``*^F``0``+@ACH(`!(Z2``@``(@AE%X`$@``J"$D`@`!```@(1*B
+M`'>/HP`$4J``<997`!0D`@`"$J(`9P`````2X`!5``"P(0`#$$"/HP```("8
+M(0!#@"&68@``)B<`"*8B``"6"@``)A```@`*((``"BD"``HR@C"E`#\PA``_
+MIB0`'J8F``2F)0`"E@H``"80``(`"DN"``I!```*$@(`"AB"`(D@)3$(`#\P
+M0@`_,&,`/Z8H`"2F)``>IB(`(*8C`"*6"@``)A```@`*&P(`"A&"`0-`)3!"
+M`#\Q0P`_IB@`)*8B`":F(P`HE@H``"80``(`"D"```H9`@`*$H(Q"``_,&,`
+M/Z8H`"ZF(@`JIB,`+)8*```F$``"``HC@@`*&((`"A("`01`)3!"`#\P8P`_
+MIB@`+J8B`#"F(P`R#``H>I:$``"6)P`&$.``#0``,"$"("@AA*(`'B3&``$`
+MQR`K``(80`!B&"$``QC``&(8(0`#&$"DHP`>%(#_]B2E``(FU@`!`M<0*R8Q
+M`#040/^Q)G,``B:U``$NH@`#5$#_GR0"``&/OP`TC[X`,(^W`"R/M@`HC[4`
+M)(^T`""/LP`<C[(`&(^Q`!2/L``0`^``"">]`$!3P/_P)K4``997`AXD8P!&
+M)E$"+!``_Y0F1`(@)&,`!291`!80`/^0`D`@(5/`_^4FM0`!EE<"'B1C`#<F
+M40+($`#_B29$`B8GO?^PK[X`0*^W`#ROM@`XK[4`-*^T`#"OL@`HK[``(*^_
+M`$2OLP`LK[$`)(R"&_0Y(P`!`2#P(8Q$```PUO__`0"H(8R"``24A````*"X
+M(21)`1"OH@`<)$(!"@!#2`LP\O__``"@(:^D`!@"P(`A%\``HP``0"$#TA`K
+M$$``(0`2$$(`$!!``%6((9(B``$`%!A`CZ0`&```,"$`?9@A$$``%P!`*"$,
+M`"B>`````":#``$P=/__EB,````4*$``O8@A``,:`H^D`!@``#`AIF(``!!@
+M``H`8"@A#``HG@`````F`P`!,'#__R:#``$P=/__`I(8*Q1@_^*F(@```!(0
+M0@+"$"$P4/__IO0`%!*``&$``$`A``@@0`"($"$`G1@A``(0@)1C````2!`A
+M``(00`!7,"$`$"A``)<@(:2#````M2@AI,,`&)2C```F`@`!,%#__P`#$$`P
+M0@$`,&,`_P!B&".DPP`<E*,````0($``E2`A``,3P@`"$@```QH"`&(8(Z3#
+M`""4@P``)@(``3!0__\``Q!`,$(!`#!C`/\`8A@CI,,`))2#````$"!``)4@
+M(0`#$\(``A(```,:`@!B2".DR0`HE((``"8#``$P</__,$(`'Z3"`!Z4@@``
+M`!`H0`"U*"$``A%",$(`'Z3"`"*4@@``)@,``3!P__\``A*",$(`'Z3"`":4
+MHP```!`00`!5."$``Q!`,$(!`#!C`/\`8A@CI,,`+)2C``"/I0`8``,3P@`"
+M$@```QH"`&(8(Z3#`"Z4X@``+*1``P`"&$`P8P$`,$(`_P!#$",4@``=I,(`
+M,*3)`"J4X@````(2`C!"`#^DP@`:)0(``3!(__\!%!@K)@(``11@_Z$P4/__
+MCZ,`'``>$$"/OP!$`$,0(91"`'Z/O@!`C[8`.*;B`!:/M0`TC[<`/(^T`#"/
+MLP`LC[(`*(^Q`"2/L``@`^``"">]`%"4X@``)`,``:3#`!H``AO"``,:```"
+M$@(`0Q`C$`#_X:3"`"H`"!!``$D0(91%```E`P`!,&C__R0"`/\`%!A`+08`
+M`R:$``$010`#`'T8(3"4__^D90``%,#_\P`($$`0`/]TIO0`%">]__"OL```
+M,+#__P`0$$"OL0`$`("((0!`("&OL@`(K[\`#`P`>E<`P)`AKB(``!!``#,D
+M`P`"`!`@@`"0("$`!""``)`@(0P`>E<`!""`$$``,JXB``BF,``$$@``)P``
+M,"$`!D"```880`$&$"$`<B`ACB4````"$(".)P`(E(0```!&$"$``A"``&48
+M(0!'$"&D9``````H(:1$```!!A`A``(0@``%&(``1A`A`&48(0`"$(``1R`A
+M``,8@`!D&"$DH@`!I&4`!#!%__\LH@`$%$#_\J1@``8DP@`!,$;__R0"``.D
+M@@!"`-`8*R0"``048/_;I((`!@``&"&/OP`,C[(`"(^Q``2/L````&`0(0/@
+M``@GO0`0#`!Z:HXD```0`/_V)`,``I2#`!8GO?_P)`+>K0"`8"&GH@`"I*,`
+M!J>B````8#@A```P(0``("$`AQ`',$(``1A```@LPP`"$&``@```$"$`!AA`
+M),(``0!]&"$P1O__I&0``"2"``$P1/__+((`!!1`__(`AQ`'E8(`%```2"$0
+M0`!QI*(`!``)&$``:1@A``,8@`!I&"$`"4"```,80`$)$"$!@Q@A``(0@(RJ
+M``B49``8`$D0(0`"$(``2A`AI$0``"1F`!B4PP`2I$,``I>C``(T`MZM$&(`
+M7@``("$!"1@A``,8@`!I&"$`!!"``$00(0`#6(`D@P`!``(0@#!D__\!:C@A
+M`$<0(2R#``048/_SI$``!I>C``"4Q``"``,0@`!#$"$``A"``$<0(:1$``B7
+MHP`"``,0@`!#$"$``A"``$<0(20#`!2D0P`(EZ,``@`#$(``0Q`A``(0@`!'
+M$"$D`P`CI$,`"I>C``(``Q"``$,0(0`"$(``1Q`A)`,`/Z1#``R7I`````00
+M@`!$$"$``A"``6(0(0!*$"$D1``$)`(`!*2"``*4PP`&E((`!`!#$"&D@@`&
+ME,,`"@!#$"&D@@`(E,,`#@!#$"&D@@`*E,(`!*2"``R4P@`(I((`#I3"``RD
+M@@`0E,(`$*2"`!*7I``"``00@`!$$"$``A"``6(0(0!*$"$D1``$)`(``Z2"
+M``*4P@`4I((`#)3"`!:D@@`.E,(`&*2"`!"4H@`$)2,``3!I__\!(A`K%$#_
+MD@`)&$`D`@`!`^``"">]`!`!"1@A``,8@`!I&"$`!!"``$00(0`#.(`D@P`!
+M,&3__P`"$(``ZA@A`$,0(2R#``048/_SI$``!I>D````!!"``$00(0`"$(``
+MXA`A`$H0(21$``0D`@`$I((``I3"``*D@@`$E,,`!@!#$"&D@@`&E,,`"@!#
+M$"&D@@`(E,,`#@!#$"&D@@`*E,(`!*2"``R4P@`(I((`#I3"``RD@@`0E,(`
+M$!``_\VD@@`2)[W^L*^W`3ROM@$XK[4!-*^S`2ROL@$HK[$!)*^P`2"OOP%`
+MK[0!,(R"&_0`@+`A`*"X(8Q"```PT?__`."0(8Q4``0``)@A``"H(0``@"$D
+M`@`!4@(`-I:"`!)2```XEH(`$"0"``)2`@`QEH(`%`.@("$``"@A#`!PJB0&
+M`1P"P"`A`Z`H(0(@,"$"H#@A`N!`(0P`(E4"`$@AEZ4`%`)`("$,`",F`Z`P
+M(0!`F"$40``3`$`8(0.@("$,`"-Q`D`H(1!```XD`___EZ,`%``#$(``0Q`A
+M`B(0(18```,P4?__)B(`!3!1__\F$``!+@(``Q1`_]8F4@`,`F`8(8^_`4"/
+MMP$\C[8!.(^U`32/M`$PC[,!+(^R`2B/L0$DC[`!(`!@$"$#X``()[T!4%!`
+M_^\F$``!$`#_S205``-00/_K)A```1``_\DD%0`*)[W_P*^W`"ROM``@K[\`
+M-*^^`#"OM@`HK[4`)*^S`!ROL@`8K[$`%*^P`!",@AOT,,;__Z^E``",4P``
+MKZ<`"*^F``2.8@`$``"X(0``H"&47@`2)`(``0``D"$``*@A$H(`<H^Q``12
+M@`!JCF,`#"0"``(2@@!=)B(`:::@```2X``X``"P(99B``"/I0```!$@0"8C
+M``$`A2`A+$(P`S!Q__\40`!/E)`````0$@*F0@`(ED4`"!"@`$@F(@`!%H``
+M1)9D`````#`A#``HG@````"F0@`(EF(``"Q",`,40``Z`!`8P``0&0``$!""
+M,$(`/S!C`#^F0P`$ID(`!I9B``"/I0```!$@0"8C``$`A2`A+$(P`S!Q__\4
+M0``CE)```)9#``0`$","`!`1@@!D&"4P0@`_,@0`/Z9#``2F0@`"ID0``):B
+M```D0@`!IJ(``";6``$"UQ`K%$#_RB92``HFE``!+H(``Q1`_[HD`@`!CZ(`
+M"(^_`#2/O@`PI%$``(^W`"R/M@`HC[4`)(^T`""/LP`<C[(`&(^Q`!2/L``0
+M`^``"">]`$"60P`$`!`@0@`0*T(`$!'"`&48)3!"`#\0`/_=,(0`/Q``_\@`
+M$!#"$`#_O20&``$0`/_=,%'__Q``_[(`$!)"%\``!#!1__\F(@`&$`#_VC!1
+M__^.8@`,)!<``R15`%(0`/^;)%(`5"8B`%4P4?__`&"H(207``@0`/^5)'(`
+M`B8B`&4P4?__$\#_\"8B``2.8@`,)!<``B15`'(0`/^,)%(`=">]_]"OM@`8
+MK[0`$*^Q``2OOP`@K[<`'*^U`!2OLP`,K[(`"*^P``",@AOT`*"@(3#1__^,
+M50````"P(8ZC``248@$6$$``$8ZR`!``%KA``N,0(91"`1@40``7EJ(``"8C
+M``@F)``'+$(P`P!@B"$`@H@+CJ,`!";6``&48@$6`L(0*Q1`__$F4@!`C[\`
+M((^W`!R/M@`8C[4`%(^T`!"/LP`,C[(`"(^Q``2/L````^``"">]`#`L0C`#
+M%$``0``1$$``5#`A``"8(0)`*"&4R```)G,``BYD``@Q`P#_``@2`J2B``"D
+MHP`(),8``B8Q``$4@/_V)*4`$``1$$``5$@A``"8(0)`."&5*```)G,``BYF
+M``@`""&"``@2`@`(&X(P0@`_,&,``3"$``$Q!0`_I.(``JSC``2DY0`*K.0`
+M#"4I``(F,0`!%,#_[R3G`!```)@A`D"`(8X"``!00``/)G,``8ZB``0"XA`A
+ME$(!&#!#``<08``.```P(20"``,08@`,EJ0``)8%```D!@`!#``HGB9S``&F
+M`@``+F(`"!1`_^TF$``($`#_LHZC``26I```$`#_]I8%````5!`AE$@``"8Q
+M``$`$2!```@I0``(&((`"!)",*4`?S!C`'^F10`0ID(``*9#``@`E"`AE(@`
+M`"8Q``$`$3!```@:P@`((,``"!$"`*,H)3"$`'\P0@!_ID0`(*9%`!"F0@`8
+M`-0P(93(```F,0`!`!$H0``(&T(`"#!```@1@@"#("4PQ@!_,$(`?Z9&`#"F
+M1``@ID(`*`"T*"&4J```)C$``0`1.$``""/"``@I```($@(`"!B"`,0P)3"E
+M`#\P0@!_,&,`/Z9%``JF0@`XID,``J9&`#``]#@AE.@``"8Q``$`$2!```@;
+M`@`($8(`HR@E,$(`/S$#`#^F10`*ID(`$J9#`!H`E"`AE(@``"8Q``$`$2A`
+M``@@@``(&0(`"!*",(0`/S!C`#^F1``RID(`(J9#`"H`M"@AE*@``"8Q``$`
+M"!H"``@3@@""("4P8P`_ID0`,A``_XZF0P`Z)[W_T*^U`"2OM``@K[,`'*^_
+M`"BOL@`8K[$`%*^P`!",@AOT`*`P(0"@H"&,4@```("8(0``J"$,`"8TCD4`
+M!)9B'/8P0@#P+$(`,%1```:60@``CD(`!)1"`"@00``I)`,`%I9"```D$`"0
+M)!$`0"Q",`,"`#`A`B(P"P)@("$,`"%$`H`H(99"```"`#`A+$-``"Q",`,4
+M8``&`B(P"XY"``240P`H)`(``1!B`",F1P`4`F`@(0P`(;X"@"@AED,``"QB
+M0``40``8+&,P`XY"``240@`L)$+^ZS!&__\"8"`A`H`H(0P`)($#H#@AEZ8`
+M``)@("$,`"45`H`H(0*@&"&/OP`HC[4`)(^T`""/LP`<C[(`&(^Q`!2/L``0
+M`&`0(0/@``@GO0`P)`8`D"0"`$`0`/_J`$,P"P)@("$,`"0M`H`H(0!`J"$4
+M0/_M`$`8(1``_]N60P``)[W_T*^V`!BOLP`,K[(`"*^_`""OMP`<K[4`%*^T
+M`!"OL0`$K[```(R"&_0`H)`A`,"8(8Q"``"45```)`(`#Z"B`"(NEC`#)`(`
+M#Q;``BVDH@`F/`*``B17,V@D`@`@I*(!%H[B```D4?]``!$00`!3$"&44```
+M`!`3@@`0&L(`$"D"`!`PP@`0.((`$$!",&,`!P`02\(P0@`!,*4`?S#&``$P
+MYP`!,0@``:9#``:F0@`$ID4`"*9)``"F1@`"ID<`%`P`*+RF2``2CN0`!#(#
+M``$`0Q`E))'_0``1&$"F0@`0`',8(91P```N@T``))'_00`0$@*B0@`@%&``
+M%:)0`"$`$1!``%,0(910```DD?]"`!$80``0$X*F0@`H`',8(0`0*P(`$"-"
+ME'```#"$``$PI0`!`!`3@C!"``$R`P__KD0`&*Y%`!RF0P`LKD(`-```J"$`
+M%1"``%<0(8Q)``@`%6!``9(X(24Q_T``$1!``%,0(910```E,?]!).8`B``0
+M*0``$!("`!`8@@`1($`PI0`_,$(`?S!C`#^DQ0`"I.(`/*3C`$8`DR`AE)``
+M`"4Q_T(`$2!``!`;`@`0$8(`HR@E,$(`/S(#`#^DQ0`"`),@(:3B`)"DXP"6
+ME)```"4Q_T,`$2!``!`H@``0$0(`$!J",*4`/S!"`#\DZP"FI.,`G*3B`*(`
+MDR`AI64``I20```E,?]$`!%`0``0(X(`$#$``!`2`@`0&((`I"@E,,8`/S!"
+M`#\P8P`_).H`N*5E``(!$T`AI.(`KJ3C`+2E1@`"E1```"4Q_T4`$2!``!`;
+M`@`0$8(`PS`E,$(`/S(#`#^E1@`"`),@(:3B`,"DXP#&E)````*R0"$`$!("
+MH0(`:"0"``$2H@&3)3'_1BJB``(40`&$)`(``A*B`7T`$!$"%J``%P`1$$``
+M4Q`AE%```)9&`.HF,0`!`!`[P@`0$P(`$!I"`!`A@@`0*,(`QS`E,$(`!S!C
+M``<PA``',*4`!S('``>F1@#JID(`[*9#`.:F1`#HID4`XJ9'`.0`$1!``%,0
+M(910```F,0`!`9)0(3($`/\`$!H"`!$00*5#`%"E1`!6`%,0(910```F,0`!
+M`!$80#($`/\`$!("I4(`7*5$`&(`<Q@AE'```"5%`'`F,0`!`!`2`C($`/\R
+M`P"`H0(`;1!@``2DI``".((`_P`"$">DH@`"`!$00`!3$"&44```+H5``"8Q
+M``$`$!E"`!`@0C!C`/\PA``/,@(``:5"`(2E0P!X%*``!J5$`'X2H`$T`!`3
+M0B0"``(2H@$N`!`30A;``!$N@C`$`!$00`!3$"&44````9(8(0`0$8(P0@!_
+MI&(`S"0"``$2H@$<)C$``2JB``(40`$4)`(``A*B`0T`$!#"+H(P!!1``00`
+M%1!``!480`!R&"$`$"-")&,`T``1$$"D9``"`%,0(910```F,0`!`!`0P#!"
+M`#@`@B`E)`(``A*B`.VD9``"%J``"2Z"0``4H``'`!`8P@`0$@(P0@`_,&,`
+M'Z9"`0*F0P$&+H)``!1``#`FH@`!)`(``1*B`,$D`@`"$J(`:P`1$$`6H``I
+M)J(``2Z"0`$40``F)J(``0`1$$``4Q`AE%```"Z#4``F,0`!,@(`/Q1@`!VF
+M0@#8`!`1@@`0,T(P0@!_`!$80*9&`$RF0@!"`',8(91P```F,0`!`!$H0#("
+M``<``A#``!`8P@`0(D(`PC`E,&,`/Z)$`&NF1@!,ID,`W@"S*"&4L```)C$`
+M`3("``$``A'``((@)0`0$$*B1`!KHD(`<":B``$P5?__+J(``Q1`_O\`%1"`
+M4L``$X[B`!0`$1!``%,0(910```F,0`!`!$@0``0$,(R`P`',$(`!Z9#`/JF
+M0@#^`),@(920````$!#",$(`!S(#``>F0P#\ID(!`([B`!261P$6``"H(1#@
+M``\D4?]``!$00`!3,"&4T```)J,``@`5$$`P=?__`%(0(3(#`/\`$"("`J<H
+M*Z1#`1JD1`$8%*#_]23&``(2P``+C[\`("0"_\HD`___)`0`'*9"`'(D`@`/
+MID0`6J9#`':F0@!6ID,`=*9$`%B/MP`<C[8`&(^U`!2/M``0C[,`#(^R``B/
+ML0`$C[````/@``@GO0`P`%,0(910```"@"`A)`8``0P`*)XR!0#_)C$``0`0
+M*@("@"`A)`8``0P`*)ZF0@$*`!$80*9"`0P`<Q@AE'```"8Q``$`$2!``!`1
+MPC(#`'\P0@`_ID,`"J9"``X`DR`AE)```"0&``$"@"`A#``HGC(%`/\N@T`!
+MID(!#A1@``0F,0`!`!`2`C!"`#^F0@#<`!$00`!3$"&44```+H1``B8Q``$`
+M$!%",$(`/S(#`!^F0@$$%(``!J9#`0@`$1!``%,0(910```F,0`!HE``(BZ"
+M4``40/^*)J(``0`0$@(`$#/",$(`?P`1&$"F1@!.ID(`1`!S&"&4<```)C$`
+M`0`1*$`R`@`?``(00``0&4(`$"+"`,(P)3!C`#^B1`!LID8`3J9#`.``LR@A
+ME+```"8Q``$R`@`'``(10`""("4`$!#"HD0`;!``_VRB0@!Q`!$00`!3$"&4
+M4````H`@(20&``$,`"B>,@4`_R8Q``$`$"H"`H`@(20&``$,`"B>ID(!$``1
+M&$``<Q@AID(!$I1P```"@"`A)`8``0P`*)XR!0#_+H-``:9"`1048/]3)C$`
+M`0`0$@(P0@`_$`#_3Z9"`-H`$!#",$(`_RZ#0`848/\0ID(`)``0$L(0`/\-
+MID(`)@!2$"$D`P`*I$,`TB0"``\0`/\0ID(`)#!"``<R`P`'ID,`_!``_O"F
+M0@$`%J#^[RZ",`0R`@`_$`#^ZZ9"``P`$!#",$(`!S(#``>F0P#Z$`#^Y:9"
+M`/XP0@`!$`#^T:9"`#`P0@`!$`#^SJ9"`"XP0@`',@,`!Z9"`/80`/Z`ID,`
+M^!:@_I8`$1!``!`00``0&4(`$""",&,`!S"$``<P0@`'ID,`[J9$`/`0`/YT
+MID(`Z@`0$0(P0@`',@,`!Z9"`/(0`/YNID,`]"0"`!"DH@$6/`*``A``_=0D
+M5S-0,(3__RR$,`(PI?__%(``'3#&__\\`H`")$D7I```0"$`"!!``$D0(91$
+M```D`@!D/`-1ZP!$$",`10`8-&.%'R4"``$P2/__+0(`"W"&`````"`2````
+M````````@P`8``0GPP``&!```QE#`&08(Z3C```40/_J).<``@/@``@`````
+M/`*``A``_^0D21>,,*7__R0"`/\P@___$*(`"20'`/\0P``)``40@"QB,`-0
+M0``")*((_"2B"6`P0O__`$`X(0/@``@`X!`A`$40(21"$L`L8S`#$&#_^3!"
+M__\LH@`_%$``!``%$(``11`A$`#_\B1"%2(`11`A``(00!``_^XD0A/L)[W_
+MX"0%`+\#H#`AK[``$*^_`!0,`"RO`("`(1!```8``!@AC[\`%(^P`!``8!`A
+M`^``"">]`"".`AOT)`,`SR0%`,J,0@```@`@(0.@,"&40@``+$)```P`+*\`
+M8B@+C@(;])>C``",1```,&:``#!C"`"4@@```$`@(2Q"0``X0@```,(8"S!B
+M__\LA$````(KPCB$`````A+"`*00"Z>C``"GH@``$`#_WC!#__^,@@``C$)`
+M"#A"``$#X``(+$(``2>]_^"OLP`,K[$`!*^P``"OM``0K[(`"*S```",BP``
+M)`+__P"@F"&-:0"``,"`(0"`4"$D!?__$2(`.```B"&,@QM`/`0!!32$V#`!
+M(Q@D/`(`@`$D0"0Q)0`%`&)H)#4"``$`14`+/!(`(#!G``4P9@%`-0(`0`!R
+MR"0Q)0%`,&P`@`!D&"0`14`+-&(``0!'&`LT8@!`/!0#_SP8(``Q+P`@,2X`
+M@!&@``(`1A@+C7$`C`&#&"4"."`D$:```@!X$"4`1!@+`'(0)0!9&`L!XQ@E
+M$<``#`!@*"&-8P"$)`+_?P$B2"0`=!@D``,<`JX#`````Q0`C4,```!4$"0U
+M"`"`K&(`A(U"``"N:```K$D`@(U"``",0@"`C[0`$(^S``R/L@`(C[$`!(^P
+M````H!`A`^``"">]`"`\`@$%-$+8,#"H`$`PJ0`!,*H`@`2A``\`@#`AC(,;
+M](QB`!000``#)$3__ZQD`!2,8@`4%$```R0"``&,PP``K&(`)`/@``@`````
+M`^``"`````",@P```*(H)(QB`"0X0@`!+$<``5#@``6,PAM`K&``)(R"``",
+M0@`DC,(;0(S$```T0P%``&@0"S1#``4`:1`+`4(0)0!%$"6L@@"@C,0``(R#
+M`*`0X/_FK,(;0"0"``&L@@`D$`#_Y``````$HP`+C(,``(R#&_2,8@`4)$(`
+M`:QB`!2,@@``K$``)(R"``",0@`D`^``"`````",8@`D.$(``2Q'``$0X``%
+M,*(`0*Q@`"2,@@``C$(`)#"B`$`00``#C(8;0"0"_K\`PC`D,*(``1!```0P
+MH@"`)`+_^@#","0PH@"`$$``!#P"`04D`O]_`,(P)#P"`04T0M@PC(,```"B
+M*"0`!1`G`,(P)*QF`*",@P``C&(`H!#@_]VLAAM`)`(``:QB`"0#X``(````
+M`(R#```T`H@```4I0`"B*"$`91@AK&```(R"```D`P`'`$40(:Q```2,@@``
+M`$40(:Q```B,@@```$40(:Q```R,@@```$40(:Q``!",@@```$40(:Q#`!2,
+M@@```$40(:Q``!B,@@```$40(:Q``!P#X``(`````">]_X"OM0!D/!6JJC:U
+MJJHD`@`'K[X`<*^W`&ROM`!@K[(`6*^Q`%0`P)`AK[\`=*^V`&BOLP!<K[``
+M4`#@B"&OH@`T`("@(0"@N"$`"*@*KZ``!*^@`````#`A$.``00``\"&4XP`,
+M+&(`(1!``!,``Q"`/`.``B1C"^0`0Q`AC$(```!```@`````E.4`-"3P`#8D
+M`@`%KZ(`-"0"`&@0H@(#**(`:1!``?\D`@"`)`(`*%"B``Z2`@`%C[\`=(^^
+M`'"/MP!LC[8`:(^U`&2/M`!@C[,`7(^R`%B/L0!4C[``4`/@``@GO0"`D@(`
+M!9(#``22!``&D@4`!P`"$@``8A@E``0D``!D&"4`!2X``&48)0!U&"8P8___
+M``,0)S!"__^OH@`4KZ,`!)(#``&2`@``D@0``I(%``,``QH``$,0)0`$)```
+M1!`E``4N``!%$"4`51`F``(8)Z^C``ROH@``$D``%#0%@`"20@`#DD,``I)$
+M``&210`%``(6```#'`"21@`$DD<```!#$"4`!"(``$00)0`%*@``IC`E`$?P
+M)0`>\$(`!A?``\+P)0`&,$(T!8``-,:``*^E`$2OI@!($B``!:^@`#R6(P`,
+M)`(`$!!B`"H"@"`A```P(0.@."$`%Q#`CH,```!&$"&,Y0`,``(0@#0(B```
+M2!`A),8``0!B&"$LQ``(K.(`"*QE```4@/_S).<`"(Z"````%R%`CZ,```""
+M$"$`2!`AK$,``(Z"```T`X@$`((0(0!#$"&/HP`$K$,``(Z"```T`X@8`((0
+M(0!#$"&L7@``CH(```""("$T`H@<`((@(8^B`$BL@@``$`#_D8^_`'0D!0`2
+M#``=SB0&`!`00/_4```P(1)``0,GI``(```H(0P`<*HD!@!`)`(`!"8P`!2O
+MH@`TD@,`#9("``R2!``.D@4`#P`#&@``0Q`E``0D``!$$"4`!2X``$40)0!5
+M$":OH@`LD@,`"Y("``J2!``,D@4`#0`#&@``0Q`E``0D``!$$"4`!2X``$40
+M)0!5$"8P0O__KZ(`))(#``>2`@`&D@0`"``#&@"2!0`)`$,0)0`$)```1!`E
+MCZ0`!(^C````!2X``$40)0`$("<`51`F,(3__P`#&"<T!8```@"0(:^B`!RO
+MI``4KZ,`#*^E`$2OH``\,O/__P``,"$#H#@A`!,0P(Z$````1A`AC.4`##0#
+MB````A"``$,0(23&``$`@B`A+,,`"*SB``BLA0``%&#_\R3G``@F,`!&)N(`
+M0">D``@``"@A)`8`0`P`<*HP4___D@,``9($``*2(@!&D@4``P`#&@``0Q`E
+M``0D``!$$"4`!2X``$40):^B``R2`P`%D@(`!)($``:2!0`'``,:``!#$"4`
+M!"0``$00)0`%+@``11`EKZ(`'```,"$#H#@A`!,0P(Z#````1A`AC.4`#``"
+M$(`T"(@``$@0(23&``$`8A@A+,0`"*SB``BL90``%(#_\R3G``B.@@``CZ,`
+M```7L4`"PA`A`$@0(:Q#``".@@``-`.(!">D``@"PA`A`$,0(8^C``0``"@A
+M)`8`0*Q#```FX@`@#`!PJC!3__\D`@`$KZ(`-))#``V20@`,DD0`#I)%``\`
+M`QH``$,0)0`$)```1!`E``4N``!%$"4`51`FKZ(`+))#``N20@`*DD0`#))%
+M``T``QH``$,0)0`$)```1!`E``4N``!%$"4`51`F,$+__Z^B`"220P`'DD(`
+M!I)$``B210`)``,:``!#$"4`!"0``$00)0`%+@``11`ECZ0`!`!5$":/HP``
+MKZ(`'(^B`$@`!"`G,(3__P`#&">OI``4KZ,`#*^^`#ROH@!$```P(0.@."$`
+M$Q#`CH0```!&$"&,Y0`,-`.(```"$(``0Q`A),8``0""("$LPP`(K.(`"*R%
+M```48/_S).<`""8P`$XFX@!@)Z0`"```*"$D!@!`#`!PJC!3__^2`P`!DB(`
+M3I($``*2!0`#``,:``!#$"4`!"0``$00)0`%+@``11`EKZ(`#)(#``62`@`$
+MD@0`!I(%``<``QH``$,0)0`$)```1!`E``4N``!%$"6OH@`<```P(0.@."$`
+M$Q#`CH0```!&$"&,Y0`,-`.(```"$(``0Q`A),8``0""("$LPP`(K.(`"*R%
+M```48/_S).<`"(Z"```T`XP``L(0(0!#$"&/HP``K$,``(Z"```T`XP$`L(0
+M(0!#$"&/HP`$K$,``!``_HB/OP!T)[(`"`)`("$``"@A#`!PJB0&`$`D`@`$
+MKZ(`-"8P`!22`P`-D@(`#)($``Z2!0`/``,:``!#$"4`!"0``$00)0`%+@``
+M11`E`%40)J^B`"R2`P`+D@(`"I($``R2!0`-``,:``!#$"4`!"0``$00)0`%
+M+@``11`E`%40)C!"__^OH@`DD@,`!Y("``:2!``(D@4`"0`#&@``0Q`E``0D
+M``!$$"4`!2X``$40)8^D``0`51`FCZ,``*^B`!R/H@!(``0@)S"$__\``Q@G
+MKZ0`%*^C``ROO@`\KZ(`1#+S__\``#`A`Z`X(0`3$,".A````$80(8SE``PT
+M`X@```(0@`!#$"$DQ@`!`((@(2S#``BLX@`(K(4``!1@__,DYP`()C``3@)`
+M("$FX@!````H(20&`$`,`'"J,%/__Y(#``&2(@!.D@0``I(%``,``QH``$,0
+M)0`$)```1!`E``4N``!%$"6OH@`,D@,`!9("``22!``&D@4`!P`#&@``0Q`E
+M``0D``!$$"4`!2X``$40):^B`!P``#`A`Z`X(0`3$,".@P```$80(8SE``P`
+M`A"`-`B(``!($"$DQ@`!`&(8(2S$``BLX@`(K&4``!2`__,DYP`(CH(````7
+M(4"/HP```((0(0!($"&L0P``CH(```""("$T`H@$`((@(1``_G2/H@`$%*+^
+M!8^_`'0D`@!H$*(`)I(#``V2`@`,D@0`#I(%``\``QH``$,0)0`$)```1!`E
+M``4N``!%$"4`51`FKZ(`+)(#``N2`@`*D@0`#)(%``T``QH``$,0)0`$)```
+M1!`E``4N``!%$"4`51`F,$+__Z^B`"22`P`'D@(`!I($``B2!0`)``,:``!#
+M$"4`!"0``$00)0`%+@``11`E`%40)A``_>BOH@`<D@(`#)($``Z2!0`/``,:
+M``!#$"4`!"0``$00)0`%+@``11`E`%40)A``_]HP0@#_E.4`"B0"`&@0H@`-
+M)/``%"BB`&D00``&)`(`@"0"`"A0HOV^KZ``-!``_;TD`@!H5*+]NR0"`&@0
+M`/VW)`(``Q``_;4D`@`!C((;])3E`#0D`P`&C$0`C"0"``<D\``V`$08"A``
+M_:VOHP`TE.4`"B3P`!00`/VH)`(`!)3E``HD\``4$`#]I"0"``<D`W__$*,`
+M%0`'4"N,@AOT,*7__P!@2"&,0@!$`*=("Q!```X`H$`A)`(`$!#"``DDI0`@
+MC((```$$&"&L2`0`C((``*Q*!`2@9QT!`^``"`$@$"$0`/_W,*C__Q``__LD
+M"7__,,;__RS&``T4P``1```8(8R"&_0D`P`!B$0`I)A$`*>(1@"HF$8`JXA'
+M`*R81P"O@$@`L*BD``"XI``#J*8`!+BF``>HIP`(N*<`"Z"H``P#X``(`&`0
+M(8R$&_0PI?__C(,`-!!E``(``!`AK(4`-`/@``@``````^``"```$"$GO?_@
+MK[$`%`.@,"$`H(@A)`4`'Z^R`!BOOP`<`("0(0P`+*^OL``0`D`@(0.@,"$0
+M0``))`4`'B0$`!:/OP`<C[(`&(^Q`!2/L``0`(`0(0/@``@GO0`@E[```).C
+M``$`$!("HB,``0P`+*^B(@```D`@(20%`!T40/_O`Z`P(9>B``"3HP`!`@*`
+M(0`"$@*B(P`##``LKZ(B``(40/_G)`0`%I>B``"3HP`!/`4``@("@"$``A("
+M```@(32E__VB(@`$$@#_W*(C``46!?_<C[\`'!``_]HD!``6)[W_\`"@("&O
+MOP``#`!K4B0%``&/OP`````0(0/@``@GO0`0`^``"`````",AP``)`(``20#
+M``*,YD`0`$48"B0"_Y\`PC`D``,90`##,"6LYD`0C(8``#P"@`*,0S.`C,5`
+M$#P"__$T0O__`*(H)``#'$`\`@`.`&(8)`"C*"6LQ4`0C(8``#P"@`*,0S.$
+MC,5`$#P"_X\T0O__`*(H)``#'0`\`@!P`&(8)`"C*"6LQ4`0C(4``#P"@`*,
+M0S.(C*1`$#P"_W\T0O__`((@)``#'<`\`@"``&(8)`"#("6LI$`0`^``"```
+M````@$`A$*``,P#`2"&(HP``F*,``XBB``"8H@`#B*0``)BD``.4I@`$,&/_
+M`(BJ``"8J@`#``,:```"%@``!"("`$,0)3"$_P`PPP#_`$00)0`*+@(``QH`
+M``8R`@!%*"4`9A@EC0(``#0$@``\!O^``$00(:Q%``B-`@``-,;__P!$$"&L
+M0P`,C0,```!D&"&,8@`,,$+__ZQB``P1(``+).(`!(T#`````A0``&0@(3P#
+M`'\`0Q@DC((`(!#@``(`1A`D`$,0):R"`"`#X``(````````&"$0`/_B```H
+M(2>]_]"OOP`@K[,`'*^R`!BOL0`4K[``$(RC`!",I@`4`*"`(5!@``$```'-
+M`,,`&XX"``P#H"@A`("((0``F!(```````````!B`!L``)`2#``M[0````"/
+MHP`$CZ(``(X&``2.!0`(``,=@``"$H(`8D@EC@,``(X(``PE(@`"),;__P!H
+M("$F9___`((8*P3``*&N!```5&#_]XX#``!PR#@"C@(`$(X#`!@`Y#`A<*(@
+M`JX&``0`AA`A$&``C*X"``B.)```-`6``#P#`!``A2`AC((`!`!#$"6L@@`$
+MCB(``(X#`!0`11`AK$,`)(XB``".`P`8`$40(:Q#`#B.(P``C@(`"`!E&"$`
+M`A#`K&(`,(XB``".`P``-!*```!2$"&L0P`HCB,``)8&``X\$___`'(8(8QB
+M`"`"("`A/`6```!3$"0`1A`EK&(`(`P`*6P`````CB(;0(XD```\`__[-&/_
+M_P!#$"2N(AM`K((`H(XB'82.)```/`7__P!#$"2N(AV$C@(`(`"2("&,@P`8
+M-*4`_P`"$@``91@D,$+_``!B&"6L@P`8CB(;0(XD```\`P`$`$,0):XB&T`\
+M!8``K((`H`P`*3P"("`AC@,`'(X"``P`0Q`K5$```:X#``R.`@`0`$,0*U1`
+M``&N`P`0C@,`#(X"`!!08@`ZC@(`!(X"``2.(P``/`8`!P`"$,`TQO__)$+_
+MZ`!R&"$`1A`DK&(`U(XC```\!0#_-*7__P!R&"&,8@#4/`<*`#P$`!@`11`D
+M`$<0):QB`-2.(P``C[\`(`!R&"&,8@#4`$00):QB`-2.`@``CB,````"$,`D
+M0O_H`$80)`!R&"&L8@#8CB,```!R&"&,8@#8`$40)`!'$"6L8@#8CB(``)8#
+M``X`4A`AK$,`W(XD``".`P`0C[$`%`"2("&,@@#<``,<``!S&"2/L@`8C[,`
+M'(^P`!`P0O__`$,0):R"`-P#X``()[T`,!``_\:N`@``CB,``#0"@``\!/_O
+M`&(8(8QB``0TA/__`$00)*QB``00`/^!CB(``"2E__\HH@``)D;__Q``_UP`
+MXB@+C((``#0&@```1A`AC$(`3*BB``"XH@`#C((```!&$"&,0P!0C$(`4*BB
+M``2XH@`'B*(`!)BB``<00P`&`````(R"````1A`AC$(`3*BB``"XH@`#`^``
+M"`````",@P``-`6``#P&`0``91@AC&(`(`!&$"6L8@`@C(,```!E&"&,8@`@
+M`$80):QB`"`#X``(`````(R#```T!X```(!`(0!G$"&,1``$C&(`%#P%_Y^5
+M!AMR-$(`(*QB`!2-`P``-*7__SP"`((`A2`D`((@)0!G&"$PQC<`)`(4`*QD
+M``10P@`#C0,```/@``@`````)`(#<*T`'/RL8A!P$`#_^@````"4@AMR```8
+M(3!"`@`00``UC(D<")"K```18``.``!`(0"H$"&00@`!)0@``0$+4"HP1@!_
+M,$(`@!!```0`PS@K5.```0!@,"$PPP#_%4#_]0"H$"&-)@``&,``"0``."$E
+M)0`RD*(``!!#``4DI0`8).<``0#F$"I40/_[D*(``!C```L``$`A)24`,P#H
+M$"I40``"H*<``*"H``"-(@``)0@``0$"$"H40/_X)*4`&%!@``Z,@P````,0
+M0BQ"``-00``*C(,``(R$```T`H``/`,"``""("&,@@`$`$,0):R"``0#X``(
+M`````#0"@``\!/W_`&(8(8QB``0TA/__`$00)*QB``0#X``(`````(R#```T
+M`H```&(H(8RB&&0``A3",$,!`#!$`?\08``".((!_P`"(">,H@!0C*,`3`!#
+M$"8#X``(`$00)B2C__\L8@`%`*#`(1!``#L`@'`A``,0@#P#@`(D8PRL`$,0
+M(8Q"````0``(`````(R"```T#X``)(T$@`!/$"&,1`"0C:(`3(VC`%B-QP2`
+M`$00(:VB`$R-P@``C:@`8(VD`%"-I0!4`$\0(8Q"`(R-J0!DC:L`:`!B&"&M
+MHP!8C<P``(VJ`&P!CS`AC,(`E`#B."&MQP2`C,,`B(V&!A```!`A`((@(0$&
+M0"&MJ`!@C<(```"C*"$`HS@KC$(&%`"'("&MI`!0K:4`5`$B2"&MJ0!DC<(`
+M`(Q"!A@!8E@AK:L`:(W"``",0@8<`4)0(20"``(3`@`$K:H`;```("$#X``(
+M`(`0(8W&``"-I``(C:4`#```$"$`SS`AC,,`F`""("$`HR@A`*,P*P"&("&M
+MI``(K:4`#!``__$``"`AC(0``(R#`$`T8@`$K((`0(W$```D`O_[`&(8)*R#
+M`$`0`/_G```@(8R"```T`X`````@(0!#$"&,10#XC$,`]"RB`&040/_>````
+M`#P"4>LT0H4?`*(`&0``$!```BE")`(`9`!E`!M0H``!```!S0``&!(0`/_2
+M`$,@(U#`_]```"`AC((``#0#@```0Q`AC$4`[*S%``",@@```$,0(8Q$`/"L
+MQ``$C<(```!#$"&,0@#TK,(`"(W"````0Q`AC$(`^*S"``R-P@```$,0(8Q#
+M`.R,0@#P`&48)@!$$"8``Q@K``(0*ZS"`!`0`/^SK,,`%(R"```T`X```$,0
+M(8Q"&&0``A,"`^``"#!"`'\PI?__)(0%O```&"&4@@``$$4`"22$`$@00``(
+M``,4`"1C``$L8@!`5$#_^92"```#X``(```0(0`#%``#X``(``(4`R>]__"O
+ML```)`4``@"`@"&OOP`$#``N@0``,"&.`@``-`2``#P#``(`1!`AK$`!)(X"
+M``"/OP`$`$00(:Q``2B.`@``K$``0(X"````1!`AK$,!,(X"``"/L```/`,"
+M``!$$"&L0P$X`^``"">]`!`GO?_P```H(20&`$BOOP`$K[````P`<*H`@(`A
+M/`(`/S1"_SBN`@!$)`(!]*X"`!`D`@!DK@(`'"0"`"BN`@`D/`,`/R0"``<D
+M!`#(K@(`(#1C_@PD`@`"K@0`&*("``2N`P!`K@0`%*(```:B```'H@``!:(`
+M``B/OP`$C[````/@``@GO0`0)[W_\*^R``BOL0`$K[```*^_``P`@(`A``"0
+M(221!;P"("`A#``O0B92``$N0@!`%$#_^R8Q`$B.`@``C@,%_#0%@```11`A
+MK$,!+(X"``".`P8``@`@(0!%$"&L0P$T#``O)@`````D`@'TK@(7O(^_``R/
+ML@`(C[$`!(^P```D`@`!`^``"">]`!`GO?_PK[\`!*^P``",D`6X/`(`0`"`
+M0"&.`P`0`$,@(P!#$"H00``EK@``#*X``$".`P`8/`(`0`!#(",`0Q`J4$``
+M`JX$`$2N``!$C0(``(X#`$`T!X```$<0(:Q#`2R-`@``C@,`1`$`("$`1Q`A
+MK$,!-(T"```\`P`")`4``@!'$"&L0P$PC0(``#P#`@```#`A`$<0(:Q#`3@,
+M`"Z!`````*X``#RN```XC[\`!(^P```#X``()[T`$!``_]RN!`!`)[W_\*^Q
+M``2OOP`(K[```(R#%\``@(@AC)`%N"AB```D9`!_`&`H(0""*`L`!2G#``41
+MP`!B$",H0@!`5$``!0"@("$D8P#^*((```!B(`L`!"'#CB(7Q!!``!2/OP`(
+MD@(``Q!``$TD0@`!D@,`!"QB``(40`!$)&(``8X"`"0`1!`J4$``'XX"`""2
+M`@`&$$``$B0"``&2`P`%+&(``A1```8D8@`!C[\`"(^Q``2/L````^``"">]
+M`!`P1@#_`B`@(20%``2B`@`%#``Q5@`````0`/_UC[\`"`(@("$D!0`"H@(`
+M!@P`,58``#`A`B`@(20%``6B```$$`#_\P``,"$`1!`J4$``"Y8B&W*2`@`&
+M4$#_X9(#``6B```&`B`@(20%``(,`#%6)`8``1``_]J2`P`%,$(0`!!`_]N/
+MOP`(D@(`!A!```@D`@`!D@(`!5!`_]6/OP`(H@``!0(@("$0`/_E)`4`!*("
+M``8"("`A)`4``@P`,58``#`A$`#_])("``4P1@#_`B`@(20%``40`/_-H@(`
+M!#!&`/\"("`A)`4``1``_\BB`@`#C(,7P">]__"OOP``*&(``"1E`'\`8#`A
+M`*(P"P`&,<,`!A'``&(0(RA"`$`40``JC(<%N"1C`/XHH@```&(H"P`%&<.,
+M@A?$$$``#8^_``"0X@`#$$``'"1"``&,X@`@`$,0*E!```^4@AMRD.,`!2QB
+M``(40``$)&(``8^_```#X``()[T`$#!&`/\D!0`$H.(`!0P`,58`````$`#_
+M^(^_```P0A``$$#_]8^_``"0X@`%$$#_\B0%``2@X``%$`#_]```,"$P1@#_
+M)`4``1``__"@X@`#$`#_V@#`&"$GO?_PK[(`"*^Q``2OL```K[\`#)2%&W`,
+M`"\5`("`(0`"&,``8A@A``,8P`(#D"&60P6\E@(;<"91!;P"("`A$&(`+ZX1
+M!;@,`"]"`````)8"&W"F0@6\E@(;<@`"$@(P0@`/HB(``I(F``,"`"`A#``Q
+M5B0%``&2)@`$`@`@(0P`,58D!0`%DB8`!@(`("$D!0`"#``Q5BS&``&2)@`'
+M`@`@(0P`,58D!0`#DB8`!20%``0,`#%6`@`@(0P`+X<"`"`AC@(``#0$@``\
+M`P`"`$00(:Q#`3".`@``C[\`#(^R``B/L0`$C[````!$$"$\`P(`K$,!.`/@
+M``@GO0`0E@(;<I(C``(``A(",$(`#Q1B_\T`````$`#_U)(F``.,@Q?`)[W_
+M\*^_```H8@``)&8`?P!@."$`PC@+``<YPP`'$<``8A`C*$(`0!1``"Z,A06X
+M)&,`_BC"````8C`+``89PXRB`"0`0Q`J5$``#)"B``2,H@`@`$,0*E!```60
+MH@`%D*(`!E1``!R@H``&D*(`!11``!4D0O__D*(`!!1```XD0O__D*(``U1`
+M``0D0O__C[\```/@``@GO0`0H*(``S!&`/\D!0`!#``Q5@`````0`/_XC[\`
+M`*"B``0P1@#_$`#_^20%``6@H@`%,$8`_Q``__4D!0`$)`8``1``__(D!0`"
+M$`#_U@#@&"$GO?_PK[$`!*^_``BOL```C((7Q`"`B"$40``&C)`%N(^_``B/
+ML0`$C[````/@``@GO0`0#``R>P````".`P`,`B`@(20%``(`8A@AK@,`#`P`
+M+H$``#`ACB(``#0$@`".!0!``$08(8QG`2R,9@$T`.40*Q1``%$`````C@,`
+M1`##$"M00``.`,,P(XX#`$0`PQ`K4$#_XX^_``B.(@```$00(:Q#`32.(@``
+M/`,"``!$$"&L0P$X$`#_VH^_``@`Y2@CK@4`.*X&`#R.(Q>\C@0`#``#$(``
+M0Q`A`$00*Q!``!L`9!`KC@(`%#P#$&(T8TW3<((0`@!#`!D``!`0``(1@@!%
+M$"L40``)`````(X"`!QP@A`"`$,`&0``$!```A&"`$80*Q!```4`````#``O
+MAP(@("$0`/^ZC[\`"`P`,*0"("`A$`#_^0`````00/^S/`,08HX"`!`T8TW3
+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
+M`&@P"B1"``(`XA`J%$#_^`#`*"$,`#*9`````!``__6/OP``C((;4!1`__*/
+MOP``D2,`/X$B`#\D9@`!``8>`"A"``,00/_K``,>`R0"``$D!0`"`$HH"B0"
+M``,48O_EH28`/Q``_^L`````E(,;<B0"%``P8S<`$&(``P`````#X``(`*`0
+M(1"F__T`````$*``!8R#```D`@&,K&(0<!``__<`````$`#__"0"`W`0H``U
+M`(`X(1#``"^,@@``-`.```!#$"$D`P`?K$,8<(SB```T!8``)`,``P!%$"&L
+M0QGPC.0``#P#_/\T8___C()`$#1"``*L@D`0C.0``(R"0!``0Q`D/`,"``!#
+M$"6L@D`0C.0``"0#P'\`A2`AC((`'`!#$"0T0@"`K((`'(SB```D`P`]`$40
+M(:Q#`02,X@``)`,`-`!%$"&L0QATC.(``"0#``T`11`AK$,8>(SB```D`P`_
+M`$40(:Q#&?0#X``(`````#0#@```0Q`A$`#_TB0#``^,A```/`/\_S1C__^,
+M@D`0-`6```!#$"2L@D`0C.0``"0#__V,@D`0`$,0)*R"0!",X@``)`,`#`!%
+M$"&L0QGPC.(``"0#``$`11`AK$,!!(SD```D`\!_`(4@(8R"`!P`0Q`D-$(3
+M@*R"`!R,X@``)`,`?P!%$"&L0QATC.(``"0#``X`11`AK$,8>(SB```D`P#_
+M`$40(:Q#&?00P``&C.(``"0#`!\`11`AK$,8<`/@``@`````)`,`#Q``__L`
+M11`A)[W_\*^R``BOL0`$K[\`#*^P``",@@``-`.```"`B"$`0Q`AC$(`S#!"
+M``$00``'``"0(8^_``R/L@`(C[$`!(^P```#X``()[T`$(XC```T$(``)`0`
+M/`!P&"&,8@#,-$(``:QB`,P,`&D_`````(XB````4!`AC$(`S#!"``$00``-
+M)!``"0P`:3\D!``"CB(``#0#@``F$/__`$,0(8Q"`,PP0@`!$$```R0"__\6
+M`O_U`````"92``$J0@`"5$#_XXXC```0`/_;C[\`##P+_]\\#=`^/`S0/CP*
+M&2\\"1DK-`B``#0'@``U:___-:U&2#6,9X@U2K44-2FU%!"@`!0`@#`AC(,`
+M``!H&"&,8@#`-$(`@*QB`,",@P``/`0`(`!H&"&,8@`$`$00):QB``2,P@``
+M`$@0(:Q-(@B,P@```$@0(:Q*&7`#X``(K,`;4(R#```D!/]_`&<8(8QB`,``
+M1!`DK&(`P(S#````9Q@AC&(`!`!+$"2L8@`$C,(```!'$"&L3"((C,(```!'
+M$"&L21EP)`(``0/@``BLPAM0C((;])2#&^8D!@`!`(`X(1!F``>,0@``5&``
+M/(SB``",0@`$C$(`-%!``#B,X@``C.(``#0%@``D`P`/`$40(:Q#&'",X@``
+M)`,`#93D'/8`11`AK$,8=(SB```D`P`,,(0`\`!%$"&L0QAXC.(``"0#``4L
+MA``P`$40(:Q&&?",X@```$40(:Q#&?04@``<C.(``"0#`!0`11`AK$,9^(SD
+M```T!H``)`/`?P"&("&,@@`</`7\_S2E__\`0Q`D-$(`@*R"`!R,X@``)`,`
+M/0!&$"&L0P$$C.,``(QB0!`T0@`"K&)`$(SC``",8D`0`$40)*QB0!`#X``(
+M`````"0#`!@0`/_E`$40(30%@``D`P`/`$40(:Q#&'",X@``)`,`?Y3D'/8`
+M11`AK$,8=(SB```D`P`.,(0`\`!%$"&L0QAXC.,``"0"``PLA``P`&48(:QB
+M&?",X@``)`,`_P!%$"&L0QGT%(``!HSB```D`P`4`$40(:Q#&?@#X``(````
+M`"0#`!@0`/_[`$40(8R"&_24@QOF/`C\_R0)``$U"/__-`>```"`,"$0:0`'
+MC$(``!1@`#D`````C$(`!(Q"`#000``U`````(S#``"4Q1SVC&)`$#"E`/`L
+MI0`P`$@0)*QB0!",Q```)`/__8R"0!``0Q`DK()`$(S"```D`\!_`$<0(:Q)
+M`02,Q````(<@(8R"`!P`0Q`D-$(/@*R"`!R,P@``)`,`#P!'$"&L0QAPC,(`
+M`"0#`'\`1Q`AK$,8=(S"```D`P`.`$<0(:Q#&'B,P@``)`,`#`!'$"&L0QGP
+MC,(``"0#`/\`1Q`AK$,9]!2@``:,P@``)`,`%`!'$"&L0QGX`^``"``````D
+M`P`8`$<0(:Q#&?@#X``(``````"`."$``#`A),(``0#F("$P1@#_+,,`("0"
+M__\48/_ZH((`!)#B``,D0O__,$8`_R0"`/\0P@`1``800`!&$"$``A#``$<0
+M(21"`"B00P`(),7__P#C("&@A@`$D$(`"0!B&"4`XQ@AH&8`!"0"`/\PI@#_
+M%,+_\0`&$$`#X``(`````">]__"OL```/!"``B80-LBOL0`$K)`<!`"`B"&O
+MOP`(#``TGP(`("$\`H`")$(]0`!`("$,`#2?KB(<"#P"@`(D0C.,`$`@(0P`
+M-)^N(AP`/`*``B1".@0`0"`A#``TGZXB'`P"`"`A#``TGZXP'!`\!(`")(1`
+MP`P`-)^N)!P4C[\`"(^Q``2/L````^``"">]`!`GO?_@+*(`!:^S``ROL```
+MK[\`$*^R``BOL0`$`("`(1!``,0D$P`6/`.``@`%$(`D8PX$`$,0(8Q"````
+M0``(`````(R$```T`H``/`,`!`""("&,@@`$`$,0):R"``00P``/``"8(8X%
+M```D`]__/`3__(RB0!`TA/__`$,0)*RB0!".!0``/`,``HRB0`0`1!`D`$,0
+M):RB0`0``)@A`F`0(8^_`!"/LP`,C[(`"(^Q``2/L````^``"">]`"!0P``:
+M``"8(8R$```\`__\-&/__XR"0`0``(@A`$,0)*R"0`2.`@``/`,``8Q"0!``
+M0Q`D4$``#0``F"$,`&D_)`0`R(X%```\`__\-&/__XRB0`0F,0`!*B0`%`!#
+M$"2LHD`$5(#_\(X"```68/_<-`*``(X#```\!/_[`&(8(8QB``0TA/__`$00
+M)*QB``00`/_4`F`0(8R$```T`H``/`,`!`""("&,@@`$`$,0):R"``10P/_*
+M``"8(8X$```\`__\-&/__XR"0!`T0B``K()`$(X$``",@D`$`$,0)#P#``$`
+M0Q`EK()`!!``_[P``)@A$,#_NP)@$"&,AP``)`+__20%``&,XT`,)`8``0``
+MB"$`8A@DK.-`#(X#``",8D`0-$(@`*QB0!`,`#,F`````(X$```\`__\-&/_
+M_XR"0`0`0Q`D/`,``0!#$"6L@D`$C@(``#P2``&,0D`0`%(0)%1`_YX``)@A
+M#`!I/R0$``J.!```/`/__#1C__^,@D`$)C$``2HE`9``0Q`D`%(0):R"0`2.
+M`P``C&)`##1"``&L8D`,5*#_ZXX"```0`/^,`F`0(1#`_XDD`O_^C(4``#P$
+M__R,HT`,-(3__P``B"$`8A@DK*-`#(X#``",8D`$`$00)*QB0`2.`@``/`,`
+M`8Q"0!``0Q`D4$``$0``F"$,`&D_)`0`"HX$```\`__\-&/__XR"0`0F,0`!
+M*B4!D`!#$"2L@D`$C@,``(QB0`PT0@`"K&)`#%2@_^R.`@``C@8``#P#__PT
+M8___C,)`!`(`("$``"@A`$,0)*S"0`0,`#,F```P(1``_UT"8!`A$`#_6B03
+M`!&,@@``K$4`#`/@``@`````C(,``"0"``2L8@`()`(``:R"%^0#X``(````
+M`">]__"OL@`(K[```*^_``ROL0`$C(,``"0"`"``@(`AK&(`"(R"&[0P0@!`
+M$$``!202`^B,@AP<)`,G$#A"``4`8I`*$D``#0``B"&.`@``)`0`"B8Q``&,
+M0@`(,$(`!!!```T``!`A#`!I/P`````",A`K5$#_]HX"```D`@`6C[\`#(^R
+M``B/L0`$C[````/@``@GO0`0K@`7Y!``__F/OP`,)[W_\*^P``"OOP`$C((7
+MQ!1```P`@(`AC@0``#0"@`"/OP`$`((@(8R"`$B/L```)`/_WP!#$"2L@@!(
+M`^``"">]`!`,`#!<`````!``__..!```C(,``#0"@```8A@AC&(`2#1"`""L
+M8@!(`^``"`````",@@``-`.```!#$"&L10!`C((```!#$"&L1@!$`^``"```
+M```LP@`%`(!((1!``#0`H$`A/`.``@`&$(`D8PY@`$,0(8Q"````0``(````
+M`#"E`#\Q`@0`-*,`0(R$````HA@*-`:``#$%"``T8@"``$48"P"&("&M*!M$
+MK(,`/(TB&T2-(P``)`<`(#!%`$``X"`A,$(`@`!F&"$0H``#``(@"CP"`@(`
+M@B`E-((`"`!%(`NL9`$,C2(;1`#@("$P0P!`,$(`@!1@``\``B`*5(``#HTC
+M``"-(@``)`3_[XQ#`#0`9!@DK$,`-(TB```D!/_WC$,`-`!D&"2L0P`T`^``
+M"`````"-(P``C&(`-#1"`!"L8@`T$`#_]8TB``",A!M$C28``#0'@```A2`E
+M,((`/S"%!``T0P!``$48"C1B`(``QS`A,(4(``!%&`N,P@`\C,(!#*TD&T2L
+MPP`\C2(;1(TC```D!@`@,$4`0`#`("$P0@"``&<8(1"@``,``B`*/`("`@""
+M("4T@@`(`$4@"ZQD`0R-(AM$$`#_R`#`("&,A1M$``@0)XR&````HB@D,*(`
+M/S"D!``T0P!``$08"C0'@``T8@"``,<P(3"D"```1!@+C,(`/(S"`0P0`/_>
+MK24;1#"D`#\Q`@0`C24``#2#`$``@A@*-`:``#$$"``T8@"``$08"P"F*"&L
+MHP`\C2,````($((P10`@,00`0`!F&"$0@``#`*`P(3P"`@(`HC`E-,(`"`!$
+M,`NL9@$,5(#_L8TC``!0H/^CC2(``!``_ZV-(P``C(0;1(TF```T!X``,(,`
+M/S"%!``T8@!``&40"C"$"``T0P"``&00"P#',"&LP@`\C2(;1(TC```D!@`@
+M,$4`0`#`("$P0@"``&<8(1"@``,``B`*/`("`@""("4T@@`(`$4@"ZQD`0R-
+M(AM$`,`@(3!#`$`P0@"`%&```P`"(`I0@``,C2(``(TC``",8@`T-$(`$*QB
+M`#2-(@``)`3_]XQ#`#0`9!@DK$,`-`/@``@`````)`3_[XQ#`#0`9!@DK$,`
+M-!``__6-(@```*`P(22E``@PH@`/)`/_\"1"`"<`HR@D`$,X)`"G$"$GO?_P
+M`$40*Z^_``2OL````(!`(11```<`H!@AO+$``"2E`!``9Q`A`$40*Q!`__L`
+M````)-``$)("``<P0@`!$$``2R0$``V,QP`@)`3_\"3C``@P8@`/)$(`)P!D
+M&"0`1"@D`&40(0!#$"L40``'`&`@(;QQ```D8P`0`(40(0!#$"L00/_[````
+M`"3B`!"00@`',$(``51```B@P`!$C0(``(S#`"0D!``-C$(`#!!#`#"/OP`$
+MH,``1)8"``0P0G__I,(`0I8#``"6`@`"``,9`C!"#_^DP@!`D@(`!J##`$D`
+M`A!"H,(`2)("`````A$"H,(`2HX"`````A/",$(`'Z#"`$>2`@`$``(1PJ#"
+M`$N2`@`'``(00C!"``$40``8)0(<&)("``<``A"",$(``11```XD!``;D@(`
+M!P`"$0(P0@`!$$``#B4"'!B2`@`'``(1`C!"``$00``"```8(9(#``8D!``<
+MH,,`18^_``2/L````(`0(0/@``@GO0`0C$,`/!!@`#BLP@!,C@(````"$\(P
+M0@`?`&(0(9!"``2@P@!&D@(`!P`"$$(P0@`!5$``#XT"&U"2`@`'``(0PC!"
+M``$00``@`````)#"`$0T0@`!H,(`1)("``(``A%",$(``11`_^$D!``:C0(;
+M4!!```H`````D,,`2HT"&TA00P`&K0`;3(T"&TPD0@`!+$,``Q!@``>M`AM,
+MD@(``B0$`!T``A$",$(``1``_\\``B`*D,4`2@P`,ID!`"`A$`#_]@````"2
+M`@`'``(10C!"``$00/_@`````)#"`$00`/_<-$(``A``_\T``!`AK(``"*R`
+M``RL@``0K(``%"2$``B,@@`$)`/P`#"E#_\`0Q`D`$40)0/@``BL@@`$C((`
+M`(Q"``@P0@`$`^``"``"$"LGO?^@K[X`4*^W`$ROM@!(K[4`1*^T`$"OL0`T
+MK[\`5*^S`#ROL@`XK[``,(R"&_0`H*`A)(4<&(Q#`!B,0@```("((:^C`!RO
+MI@`(``#P(0``L"&OH``4KZ(`&"27&V@``*@AKZ4`)!*``)(D`___)`8`$`P`
+M'<XD!0`2/`8(```",`J/H@`($$``!*^F`"".(@``C$(10*^B`!2.(@``-`.`
+M``(@("$`0Q`AC$,`6"00``&OHP`0C$,`!#P"`B``8A@D#``T6J^C``P,`$A_
+M`B`@(0(@("$,`#IN`H`H(8^D`!``0!@A`@0@"A1``'&OI``0EH(``HXC&_0P
+M1#<`)`(5`!""`F*L<``4*((5`1!``E8D`B0`)`(2`!""`E$D`A0`4(("320>
+M``26(QSVCB0``#0"@``P8P#P`((@(2QC`#`D`@`'K((8`!!@`>X"("`A#`!)
+M;@*`*"&6)QST+.(`0A1``#`PY/__CB0``):%```T`H``/`,``@""("$T8Z`"
+M)`()M*R#&"P0H@'/CZ,`&(QB``0\`V9F-&-F9Y1"`"0`0P`8``(7PP``&!``
+M`QA#`&(@(Y:"``(D`Q0`,$(W`!!#`;`T`X``CB(```!#$"&L0!E,CB0``#0&
+M@``D`OW_`(8@(8R#(B@\!?_^-*4#_P!B&"2L@R(HCB,```!F&"&,8B(H`$40
+M)#1""`"L8B(HCB(``"0#``\`1A`AK$,`8##D__\L@@!#%$``!BR"`$2.(@``
+M-`.```!#$"&L0")4+((`1%1```Z.(@``CB4``"0#@!\\!/__C*(2,#2$?_\`
+M0Q`D-$(!X*RB$C".(P``C&(`,`!$$"2L8@`PCB(``#00@``D`P`.`%`0(:Q#
+M&'@"("`A`H`H(0.@,"$D!P`_#`!`MB0(``$00``.)`/__X^_`%2/O@!0C[<`
+M3(^V`$B/M0!$C[0`0(^S`#R/L@`XC[$`-(^P`#``8!`A`^``"">]`&"/I``<
+MCZ8`&`/`."&,@@`$C,4`!`(@("$"@#`A`$#X"0.@0"&6@@`",$($`!1``5@"
+M("`ACZ(`&`(@("$"@#`A#``_58Q%``2/HP`($&``!`````".(@``CZ0`%*Q$
+M$4"*XP`ZFN,`/8KB`#J:X@`]BN0`.IKD`#V*Y@`ZFN8`/3!C_P```QH`CB4`
+M```"%@``!"("`$,0)3"$_P"6XP`^`$00)0`&-@(`1A`E`+`H(:RB``"/I@`,
+M,&(`_XXD`````QH"``(2`([E`$@`0Q`E`,(8)20"``(0H@$I`)`@(8^E`"`\
+M`A"``&48)8^F`"0`8A`EK((`!(C#`$*8PP!%B,(`0IC"`$6(Q`!"F,0`10#`
+M*"&(I@!"F*8`13!C_P```QH```(6```$(@(`0Q`E,(3_``!$$"4`!C8"CB4`
+M``!&$"6/I@`D-!"```"P*"&4PP!&K*(`"(XD```P8@#_``(2```#&@(`0Q`E
+M`)`@(:R"``R.(@``EH,``H^D`!``4!`A,&,W`*Q$`%@D`A0`4&(`]HXE'/R.
+M(P``)`+__X^E`!RL8@"`CB0``"0#``J,H@``K(,`%(XF```D`P<``B`@(0#0
+M,"&LPP`8`$#X"0*`*"$40/]]`$`8(8XB&_Q00``/CB4```!`("$``)`AC(4`
+M`"92``$0H``(+D8`@8XB``",@P`$)(0`"`!%$"&L0P``5,#_]XR%``".)0``
+M-`.```"C&"&,8@!8KB`;3#!"`/^N(AM(C&(B"#!"(`!00``#KB`;4"0"``&N
+M(AM0-`*```"B$"&6@P`"C$(9%#!C`@`08`"[,$0__SP#NBX`!!"`-&.+HP!#
+M`!D``!`0``(1`C00@```L!@A)$0`9"0"``&L8A@<#`!I/R02``&.(@``)`,X
+M``!0$"&,4Q@(K$,8"(XB````4!`AC$(<)#!"`!`40`"5`````(XB```T!H``
+MEN0`'`!&$"&L4Q@(CB,```!F&"&,8AA@-$(``:QB&&".(P```&88(8QB&&`T
+M0@`"K&(88%"``(*.(AOTEH(``B0#$@`P0C<`$$,`?"0"``*.)1OTC*,`+!!B
+M`'@D`P`!CB0``*RC`"P`AB`AC((9(#1"\`"L@AD@CB,``#P$``$`9A@AC&(9
+M(`!$$"6L8AD@#``].0(@("$``)`ACB0``"0#``$"0Q@$`!(0@"92``$`1!`A
+M+D0`"JQ#$`!4@/_XCB0``(XC```\`@`(-$((H*XB&T"L8@"@CB4``#P#``<\
+M!@"`C*(`K`(@("$`0Q`EK*(`K(XB&T".(P```$80):XB&T",8@"@`$80):QB
+M`*".)0``/`,@`(RB`*P`0Q`EK*(`K`P`+'8`````%$``/P```````)`ACB(`
+M`#00@``D!``*`%`0(8Q"&&`P0@`!$$``!B92``$,`&D_`````"Y"`&140/_V
+MCB(```P`,_8"("`ACB,``#0"@``\!/Y_`&(8(8QB`"`TA/__`$00)*QB`"".
+M(ANT,$(`0!1``!\"@"@A`B`@(0P`,\$``"@AEB,<\"QB``900``.CB(``"0"
+M``508@`(EB(<\HXB```T`X```$,0(20#`%*L0P$($`#^Q0``&"$L0@`(%$#_
+M^(XB```\`P`!-&,`J@!0$"&L0P$8CB(``"0#,A``4!`AK$,!'!``_^Z.(@``
+M#``Z*P(@("$0`/_@`B`@(0P`++@"("`A$`#_P```D"&.(AOT$`#_DZQ``"P,
+M`&D_)`0`R"Y"`!000/]H)E(``8XB```T`X```$,0(8Q"'"0P0@`0%$#_]0``
+M```0`/]@CB(``#P"S,PT0LS-`((`&0``$!`0`/]'``(0P@(@("$,`#,5+*8`
+M`1``_PB.(P``CZ(`(`!B&"40`/[8/`(0@@P`0&X"@"@A$`#^IX^B`!B/HP`8
+MCB4````$(".,8@`$``0D@#P#`/R`0@`B`(,@)#0#@````A`C``(1@#!"#\``
+MHR@A`$00):RB&4P0`/Y%CB0``(^F`!@\`F9F-$)F9XS#``2$9``FE&,`)`!D
+M&",`8@`8``,?PP``$!```A!#`$,0(P`"%``0`/XM``(D`PP`:3\D!``!`!Z`
+M@```F"$D$@`H/`.``B1C%[P`$Q#``$,0(8Q$```"`Q@ACB(``(QE```FM0`!
+M`$00(3*C`#\F4O__)A``&"9S``,D!``!K$4``!!@`#L`````!D'_[CP#@`(,
+M`&D_)`0``0``@"$\`H`"`!`8P"1"&Y0`8A@AC&0``(XB``",90`$)K4``0!$
+M$"$RHP`_)A```20$``&L10``$&``(P`````J`@$>%$#_\#P"@`(,`&D_)`0`
+M`0`6@(```)@A)!(`/SP#@`(D8R2$`!,0@`!#$"&,1````@,8(8XB``",90``
+M)K4``0!$$"$RHP`_)E+__R80``PF<P`#)`0``:Q%```08``%``````9!_^X\
+M`X`"$`#]RP(@("$,`&D_`````!``__D`````#`!I/P`````0`/_<*@(!'@P`
+M:3\`````$`#_PP`````0`/VS)!8``A``__TD'@`#$((`!B0")0!4@OVNEB,<
+M]B0>``(0`/VJ)!8``1``__TD'@`!$`#_\B0>``4`@#@AC(0``#0&@``D`__\
+M`(8@(8R"`,"4J``"`$,0)#1"``*L@@#`C.0``"0#_\,Q!2```(8@(8R"`,``
+M0Q`D-$(`&*R"`,",X@```$8P(8S"`,@P0___/`(G$!2@``,`8B`E/`(J^`!B
+M("4Q`B``,$7__S$""``T"8``K,0`R!!``!DD`\``C.0```")("&,@@`4`$,0
+M)#1#$3`T0@^@`&40"JR"`!2,X@```$D@(8R"`,0P0___/`(%>!2@``,`8A`E
+M/`(&!`!B$"6L@@#$)`,$L"0"!2@Q!"```$08"HSB``"L0Q!P`^``"```$"$G
+MO?_PK[\```P`.\\D!0`"C[\```/@``@GO0`0)[W_X*^V`!BOM0`4K[0`$*^S
+M``ROL@`(K[```*^_`!ROL0`$`*"8(0"`@"$D%@`!``"0(0``J"$0H``F``"@
+M(92E``*4@ASV,*,W`#!"`/`X8Q0`-*0"`"Q"`#`40``&`(,H"C"C`@`D%`#K
+M)`(`Z@!#H`HD$@`(,*,&`"0"!@`08@!6,*,$`#9"``$`0Y`*,*(@`#9#``(P
+MI`@`$(``30!BD`J.`ANT,$(`0%!```2N`!V()`(``392`!"N`AV(,*,!`"0"
+M``,``*@A`$.H"P``L"$"`"`A#``[SR0%`!,00``,`$"((0(@$"&/OP`<C[8`
+M&(^U`!2/M``0C[,`#(^R``B/L0`$C[````/@``@GO0`@`@`@(0``*"$,`#3E
+M)`8``11`__``0(@A`@`@(0P`.\\``"@A%L#_ZP!`B"&690`"C@(``#03@``P
+MHP(``%,@(8R&&'P48``1,*,W`"0"%``08@`.`````%#4``6.`@``K)08?`P`
+M:3\D!`$LC@(```!3$"&L4B(`C@(```!3$"&L51@$$`#_U`(@$"&LE1@$C@(`
+M``!3$"&L4B(`$-3_S20$`2R.`@```%,0(:Q4&'P,`&D_`````!``_\<"(!`A
+M$`#_NJX`'8@0`/^L-E(`!">]__"OL0`$K[```*^_``B,BQOT)`(``0"`@"&-
+M8P`L`*"((1!B`#\DA!MHEB(``B0#$@`P0C<`$$,`!"0"``*-8P`L4&(`(HX%
+M```"("@A#``]!`(`("&6)0`",*(``11``!4D`P`8C@,``#0"@``PI"```&(8
+M(8QB&&`T0@`"K&(88!2```D`````E@(<]C!"`/`L0@`P%$``!P``&"$PH@0`
+M$$``!8^_``@,`$AQ`@`@(0``&"&/OP`(C[$`!(^P````8!`A`^``"">]`!`T
+M!H``D(0`4P"F*"&,HQD@/`+__S1"#_\`!",``&(8)#"$\```9!@EK*,9((X$
+M```D`@`!K6(`+`"&("&,@QD@/`(``0!B&"6L@QD@$`#_S`(@*"&.`@``-`.`
+M``!#$"&,0AD@/`,``0!#$"140/^\EB(``JU@`"P``"`AC@,``#0"@``DA``!
+M`&(H(8RJ'!`LAP`*C*8<%(RH'!@10``#`````!3```@`!AA"C*(9(#P#``$`
+M0Q`EK*(9(%3@__".`P````880@`*$$(`0Q`A``(9PA!@_ZD`!B'"*((``E1`
+M_Z<"("@A``@0(P!#`!I08``!```!S8X(```T"8``)`/X'P$)0"&-!QD@`.,X
+M)"0#``*M8P`L)`,`'P``$!(``A8```(6`P%$`!LH1?_@*$8`(`!F$`HXI0``
+M)`/_X`!E$`L``A%`,$('X`#B."6M!QD@C@<``"0"_^``Z3@AC.89(`#","0D
+M`@`/```@$B2$_X`H@__P*(4`$`!%(`HX8P``)`+_\`!#(`LPA``?`,0P):SF
+M&2".`P```&D8(8QB&2`T0@@`K&(9(!``_W0"("@A)[W_X*^S``ROL@`(K[$`
+M!*^P``"OOP`0C(,```"`B"$D$___C&(`""00``8``)`A-$(`(*QB``B,@P``
+MC&((@#1"`_^L8@B`,@(`!!!```DR`@`"CB(``(Q"``@P0@`$%$``!#("``(D
+M`O_[`@*`)#("``(00``*,@(``8XB``",0@A`,$(#_Q1```4R`@`!)`+__0("
+M@"0V$``!,@(``1!```T``#`ACB0`````*"&,@@H`)*4``2RC``HP0@`#`,(P
+M(11@__HDA``$%,```B0"__X"`H`D$@``#B0$`#(,`&D_)E(``2Y"``H40/_7
+M,@(`!`)@$"&/OP`0C[,`#(^R``B/L0`$C[````/@``@GO0`@$`#_]P``F"$G
+MO?_@K[,`##"B`!$D$___K[$`!*^P``"OOP`0K[(`"`"@@"$`@(@A$$``)P"E
+MF`L``"@A#``TY20&``$00``)`$`8(8^_`!"/LP`,C[(`"(^Q``2/L````&`0
+M(0/@``@GO0`@CB(```(@("&L0``DCB(``(Q"`"0,`#N(`````!!``$HD`O_O
+M#`!I/R0$``^.(@``)`0``380`!.,0@`,#`!JO``````,`&G3``````P`::L`
+M````#`!I/R0$``H,`&J\```@(0P`:3\D!``/CB(``"0$``\R<P`#C$,`#*Q0
+M0``,`&D_,A```P``D"&.(@``)E(``0(@("&,0D`````H(0!3$"004``2)`8`
+M`1(```@`````#`!I/R0$`#(N0B<05$#_\XXB```0`/_%)`,`%@P`-.4`````
+M%$#_]@````".(@``K$!``!``__(`````#``TY0````!40``$CB(;](XB``",
+M0@#`CB(;](Q#`%PD`@`#4&(``XXD```0`/^P```8(3P#__$T8___C()`$`!#
+M$"0\`P`(`$,0):R"0!`0`/^G```8(20$``\,`&D_`@*`)(XB``",0@`,$`#_
+MP0`````GO?_@K[0`$*^S``ROL@`(K[$`!*^_`!2OL```E*,``I2E````@)`A
+M,&(@````H"$``)@A$$``LC"Q__^,@AOTE$0`=#!B(``00`"KCD(;])1#`'8P
+MI?__`*00*Q1``#LD`@`.`&40*Q1``#@D`@`.+B(2P!!``%4\`\S,/`5F9B8D
+M]W`TI69G`(4`&``$%\,``!@0``,80P!B&",``Q"``$,0(12"`#DF)/=0`!$0
+M0"1"[N``10`8``"@(0`"%\,``!@0``,8@P!B@",`$!"`,%``_P(`("$,`%B4
+M)`4`"`!`@"$D`@FT$B(`(#0"@`".1```)`/_[P""("&,@B($`$,0)*R"(@0`
+M$QB``!`1``!#$"4`%"!`CD,```!$$"4T11`!-`2``#"B`/\`9!@AK&(8G(Y"
+M````!1H",&4`?P!$$"&L11C8```0(8^_`!2/M``0C[,`#(^R``B/L0`$C[``
+M``/@``@GO0`@CD(``#0#@```0Q`AC$,B!#1C`!"L0R($$`#_X0`3&(``A0`8
+M``07PP``&!```QA#`&(8(P`#$(``0Q`A5(+_Z"0"``X`$1!`)$+NH`!%`!@D
+M%``!```8$!``_[\``A?#-&/,S0(C`!D``!@0``,9`@`#$(``0Q`A``(0@`(B
+M$",P0O__%$``!#P"S,PN(A0`$$``,#P"S,PT0LS-`B(`&0``(!``!!C"``,0
+M@`!#$"$``A!``B(0(S!"__\00``7``08@@`#$(``0Q`A`B(0(S!"__\40/_"
+M)`(`#CP$9F8F(NU`-(1F9P!$`!@``A?#)`4`"```(!``!"!##`!8E`""(",`
+M0(`A)`0``0P`6)0D!0`"$`#_H0!`F"$\!&9F)B+M0#2$9F<`1``8``(7PR0%
+M``@``"`0``0@@P""(",,`%B4``0@0`!`@"$0`/_O)`0``CP$9F8F(NU`-(1F
+M9P!$`!@``A?#)`4`"```(!``!"##`((@(PP`6)0`!""``$"`(1``_^$D!``#
+M$`#_5I1#`'J,@AOT$`#_3Y1$`'B4IP`")`(5````,"$PXS<`$&(`)0``0"$H
+M8A4!$$``)B0")``D`A(`$&(`(20"%`!08@`!)`8``HR#```T`H```&(8(8QB
+M&&`P0@`"%$``%`````",A!OTC&(89``&&$",A`````(4PC!&`?^,@@`$,,0!
+M``!B&"$0@``#A&,`<CC"`?\``C`G`&80*E!```2DI@`*`0<0):2B``*DI@`*
+M`^``"``````0`/_C)`8``A``_^$D!@`!$&(``R0")0!48O_>C(,`````,"$0
+M`/_:)`@``8R"&[2,@P```(`H(0`"$((P0@`!K&($((RB&[R,HP``/`0`$``"
+M$@(P0@`'K&(&`(RC```TA`(!```X(8QB!@`DIAT!-$(`"*QB!@",H@``K$0&
+M!(RB``"L0`8@C*(``*Q'!`"0Q```C*(``"3G``$LXP"`K$0$!!1@__@DQ@`!
+M`^``"``````GO?_`K[X`,*^W`"ROM@`HK[4`)*^T`""OL@`8K[\`-*^S`!RO
+ML0`4K[``$)3"``*,@QOT,.?__S!*-P`D`A4``*!((0#`D"$`@*@A`0#P(:^G
+M``",<0`$``"@(0``L"$``+@AKZ``"*^@``P``"@A$4(!-HQS`"`I0A4!$$`!
+M/R0")``D`A(`$4(!-B0"%`!10@$OE2(`]H^B```\!(`"/`.``@`",(``!2A`
+M)(0GC"1C)Z0`J2@A`,0@(0##&"$\`H`"C(0``(QC``"4IP#2C$(GB)2E`(2N
+M9``$KF,`"*^G``2N8@``)F,`#"0$`"<\`H`")$(GO`#"$"&,0@``)(3__R3&
+M`!BL8@``!('_^"1C``0F<``,`@`@(20&``$D!P$N#``^V```0"&7Q0```@`@
+M(20&``(D!P$.#``^V```0"&7Q0`"`@`@(20&``(D!P$!#``^V```0"&60@`"
+M,$($`%1``,Z.(@`<ED(``C!"$``00`#``L`H(8^E``@"`"`A)`8``R0'`1\,
+M`#[8``!`(8^E``P"`"`A)`8``R0'`2(,`#[8``!`(9:C'/8D`@`U$&(`ER0%
+M``(D`@!%$&(`E20&``*/H@``)F,`K"0$``P``C"`/`*``B1"*WP`PA`AC$(`
+M`"2$__\DQ@`8K&(```2!__@D8P`$ED(``C!"!`!40`![CB(`'(^E``0F9`"L
+M)`8`!B0'``X,`#[8``!`(0P`:3\D!``!/`*``HQ#)X2.H@``CF0``":4``$`
+M0Q`A,H,`/ZQ$```08`!E``````P`:3\D!``!/`*``HQ#)XR.H@``CF0`!":4
+M``$`0Q`A,H,`/ZQ$```08`!5``````P`:3\D!``!/`*``HQ#)Z2.H@``CF0`
+M"":4``$`0Q`A,H,`/ZQ$```08`!%`````"0$``$,`&D_)G``#```D"$D$0`G
+M/`*``B1")[P"0A`AC$,``(ZB``".!0``)I0``0!#$"$R@P`_)C'__R80``0F
+M4@`8)`0``:Q%```08``L``````8A__`\`H`"#`!I/R0$``$F<`"L``"0(201
+M``P\`H`")$(K?`)"$"&,0P``CJ(``(X%```FE``!`$,0(3*#`#\F,?__)A``
+M!"92`!@D!``!K$4``!!@`!$`````!B'_\#P"@`*.HAOTC[\`-(^^`#"/MP`L
+MC[8`*(^U`"2/M``@C[,`'(^R`!B/L0`4C[``$*Q``#`#X``()[T`0`P`:3\`
+M````$`#_[0`````,`&D_`````!``_](`````#`!I/R0$``$0`/^Z)`0``0P`
+M:3\D!``!$`#_J0`````,`&D_)`0``1``_YD`````)F0`K"0&``*$10``)`<`
+M)0P`/M@``$`A$`#_@(^E``0D!@`")`<`6B0(``(,`#[8`@`@(0(`("$``"@A
+M)`8``B0'`%P,`#[8)`@``@(`("$D!0`")`8``B0'`%X,`#[8)`@``@(`("$`
+M`"@A)`8``20'`/X,`#[8)`@``A``_U:/H@``)`8``R0'`1<"`"`A#``^V```
+M0"$"`"`A`N`H(20&``,0`/]")`<!&@(`("$D!@`!A$4``B0'`*@,`#[8)`@`
+M`XXB`!P"`"`A)`8``81%``0D!P"I#``^V"0(``..(@`<`@`@(20&``&$10`&
+M)`<`J@P`/M@D"``#CB(`'`(`("$D!@`!A$4`""0'`*X,`#[8)`@``XXB`!P"
+M`"`A)`8``81%``HD!P"O#``^V"0(``..(@`<`@`@(20&``&$10`,)`<`L`P`
+M/M@D"``#$`#_"I9"``*5(@#VE2<`^"0%``*OH@`($`#^SJ^G``R5(@#RE2<`
+M]"0%``&OH@`($`#^R*^G``P10@`#)`(E`!5"_L6/H@``ED,``"1B\%\L0@3K
+M$$``!21BZW25-@#BE3<`Y!``_KL``"@A+$(`\!!```0D8NJ$E38`YA``__F5
+M-P#H+$(`X1!```0L8A9=E38`ZA``__.5-P#L5$#^K0``*"&5-@#N$`#_[I4W
+M`/`GO?_@K[(`"*^P````@)`A`."`(0"@("$`P"@AK[,`#*^Q``0!`)@A)A#_
+M_Z^_`!`,`%B4`,"((0!`0"$R!P`'&B``'@`0$,(``A"``%*`(0#Q("$D!@`(
+M*((`"0#"(`HD`@`!`.(8!`""$`0D8___)$+__XX%````0Q`F`!,8P`!B$`0`
+MZ"`$`&0@!``"&"<`@B`D`*,H)`(G$"$`QS`C`*0H)211__BN!0```,A`!@``
+M."$>(/_F)A``!(^_`!"/LP`,C[(`"(^Q``2/L````^``"">]`"`DQO__)[W_
+M\*^_````H%`A,,@`!P``8"$`!A#"`*!((1B@`!P``%@A``(0@`!$,"$!"2@A
+M**,`"20"``@`0R@*)`(``0$"(`0`HA`$)(3__XS#```D0O__`$00)@`'(,``
+M@A`$`&(8)`"#&`8!*!`A`0,8!@%C&`0`J"@C)$G_^`&#8"4!95@A``!`(1T@
+M_^@DQ@`$`8`@(0P`6)0!0"@AC[\```/@``@GO0`0)[W_\"0$`."OOP`$K[``
+M``P`>E<`H(`AK@(`((^_``2/L`````(8*P!@$"$#X``()[T`$">]__"OL```
+MK[\`!(RB`"``H(`A%$``!0!`("&/OP`$C[````/@``@GO0`0#`!Z:@`````0
+M`/_YK@``(">]_]"OO@`@K[8`&*^T`!"OLP`,K[(`"*^Q``2OOP`DK[<`'*^U
+M`!2OL```C((;]`#`\"&4Q@`"C$,```"`B"$PPO__``(B`@`"$P(P4P`!,,@W
+M`"0"%0``H)`AE'<``#"4``$1`@#U``"P(2D"%0$00`#V)`(D`"0"$@`1`@#Q
+M)`(4`%$"``$D%@`"CB<``#0"@```%JA``.(X(0*R@"&,XAD0E@,`BB0$_`8`
+M1!`D``,9``!#$"6.)1N<-$(``0(@("$PQO__K.(9$`P`,J$`````*NI0`!5`
+M``:6!``\4H``!8XE````$Q!``%(0(91$`$*.)0``-`*````$(<``HB@AC*(8
+M1"0#P'\PA#^``$,0)`!$$"6LHAA$`M(P(15```6`Q0!H4H``!(XD```"<A`A
+M@$4`:XXD```T`H``)`/_``""("&,@AA0,*4`_P!#$"0`11`EK((84!5```6`
+MQ@!M4H``!(XE```"<A`A@$8`<(XE```T`H``/`3__P"B*"&,HQA0``82`#2$
+M`/\P0O\``&08)`!B&"4"LA`AK*,84!5```:40@!&4H``!8XG````$Q!``%(0
+M(91"`$R.)P``-`B```*R2"$`Z#@AC.082#P%__P\!@`#E2,`7#2E#_\TQO``
+M``(3``!&$"0`A2`DE28`8@""("6LY!A(/`(`_P`#)`".)0```((@)``#'@``
+M!A(``&08)3!"_P``8A@E,,8`_P!F&"4`J"@AK*,8-(XE``"5)`!0/`/__P"H
+M*"&,HA@H-&,`_P`$(@``0Q`D`$00):RB&"B.)@``E2,`5CP%__@`R#`AC,(8
+M9#P$``<TA/````,;`#2E#_\`9!@D`$40)`!#$"4JXS`#K,(89!1@``LD!``"
+ME\(``#!"`!]00``(CB4``"1"__8L0@`-5$``!(XE``"5(@#,)$0``HXE```T
+M!H``)`/_`0"F*"&,HADD``0@0#"$`/<`0Q`D`$00):RB&22.)0```!,00`!2
+M0"$E!P$``*8H(83B``*,HQD@)`3X'P`"$4``9!@D,$('X`!B&"6LHQD@CB4`
+M`(3D``8D`__@`*8H(8RB&2`PA``?*N=``0!#$"0`1!`EK*(9((XC````9A@A
+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
+M`,1((P"%4",`Q1@C``<4`Q#%``P`""0#`2(`&%!@``$```'-<40`````$!(`
+M``````````!#`!H``!@2``,4```"%`,#X``(`````)2C````!"0`,,;__P`$
+M)`,`!A!``*(0(0!D&"H48``$A$+__JS@```#X``(K0````""$"H40``$),+_
+M_ZSB```#X``(K0(``!#```X``!@A``,00`!%2"&5(@``$$0`#21J``&5(@`"
+M`((0*A1```<D8@`!,4/__P!F$"L40/_U``,00`/@``@`````$`#_[*SC``"L
+MXP```^``"*T#```GO?_0K[<`'#"7__\`!SP`+N(``J^V`!BOM0`4K[0`$*^S
+M``ROL@`(K[$`!*^_`""OL````*"((0#`L"$!`*@A``>D`P``F"$D$@`!%$``
+M-```&"$``(`A`!(00`!1$"&40@```%`0*Q!```H`$Q!`)N+__P)"$"H00``&
+M`!,00"9B``$F0P`!,%/__S!R__\`$Q!``!(80`!6("$`=D`A`%$0(0!Q&"&4
+M9@``A(<``)1%``"%"```#`!!Y@(`("$``B0```0D`P`0&$``=1@A`)0@*A2`
+M``RD8@``+@(`0!!```HF`@`!`@`0(28#``$P</__``(00`!5$"$N`P!`%&#_
+M^:14```F`@`!,%#__RX"`$`40/_1`!(00"0#``&/OP`@C[<`'(^V`!B/M0`4
+MC[0`$(^S``R/L@`(C[$`!(^P````8!`A`^``"">]`#"$@@!^A(,```"`2"$`
+M0Q`C*$(`?Q1``$24A`!^)(+_@@`"%````E0#``04```")`,DA___)`(`/R4F
+M`'XDQO_^A,,``"1"__\``A0``.,8*A!@``,``A0#!$'_^23&__X`0#`A)`<`
+M/R3#__\P8O__+$(`/Q!``!(`!A!``$D0(81"````1!`J%$``#0`#%````C0#
+M``800"3#__\`24`A,&+__RQ"`#\00``%`````(4"````1!`J$$#_]0`#%``0
+MP``,).+__P`'&$`DA/_^``(4``!E&"$`!"0```(\`Z1F```$X?_@``0D`P/@
+M``@!0!`A!.#__0``````!Q!``$4H(23B__^4HP`"``(4```"/`.DHP``!.'_
+M^B2E__X0`/_R`````!``_[\`8%`AA((`?H2H````@%`A)`P`0`!($",H0@!_
+M%$``392#`'XD8O^"``(4```";`,``Q0```(D`R0)`#\DB___)4@`?B4(__Z%
+M`P``)2+__P`"%``!8Q@J$&```P`"3`,%(?_Y)0C__I2B`'X!($`A)`D`/Z3B
+M``"$X@```$00*E!``#$``&`A%0```P````!5@``M``!@(1D```X`"!!``$H8
+M(81B````1!`J%$``"24"__\``A0```)$`QD```4D8__^A&(```!$$"H00/_Y
+M)0+__Q4```,E(O__$8``#0```````A0```D80"2$__X`9A@A``0D```"3`,!
+M#!`EI&(```4A_]P`!"0#`^``"`&@$"$%(/_]```````)$$``1C`A)2+__Y3#
+M``(``A0```),`Z3#```%(?_Z),;__A``__(``````*!0(1``_](D"``_$`#_
+MM@$`:"$GO?O0K[X$(*^_!"2OMP0<K[8$&*^U!!2OM`00K[,$#*^R!`BOL00$
+MK[`$`)4"``*,@QOTKZ0#R#!$-P`D`A4`KZ@#V*^E`\ROI@/0KZ<#U`$@\"&,
+M8P``$((!QJ^@`]PH@A4!$$`!R"0")``D`A(`$((!PR0"%`!0@@&_)&,`+(^D
+M`]2/I0/0CZ8#W(2#``"$I```)`+>K:>B`[JGH@.X``,<0``$)$"4Q0`&``0D
+M`P`#'`.OI`/@KZ,#Y```J"$``(@A)Z0#N`(E$`<P0@`!&$``!2ZC``(08`#A
+M)K4``:21```DA``")C$``2XB``040/_V`B40!X^H`]R/IP/8E08`!(3D``"-
+M!0``)Z<#P`P`0?XGJ`/$C[8#P(^B`\0`5A`K%$``@``6$(``5A`A``(0@`!6
+M$"$``A"`KZ(#[*^@`_"/HP/<CZ0#[(QB``B7HP.Z`$2H(30"WJT08@%"E[$#
+MN">W`0@"X"`A`!&`@`(1@"$`$("``A6`(984``8F!0`()[,!(``4B$`"(#`A
+M#`!PG280`!`"`"@A`B`P(0P`<)T"8"`AAJ<``B>R`S@"@"`A`N`H(0)@,"$,
+M`$(F`D!`(1!``*:/I@/P`D`@(2>E`[@`W1`A)$,!.#!B``,00`$4KZ8#Z`"@
+M$"&(AP``F(<``XB(``28B``'B(4`")B%``N(A@`,F(8`#ZAG``"X9P`#J&@`
+M!+AH``>H90`(N&4`"ZAF``RX9@`/)(0`$!2"_^XD8P`0E[$#N@+@("$`$8"`
+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
+M`*8H(8^K`"P`0#`A`$`@(0%B*"LR8P#X)`(`X%1B_O*OI@`L5*```0%@("$P
+MA/__$`#_YZ^D`"R.10`0EH0```P`1MP`IB@A`$`P(0!`("$"PB@K,F,`^"0"
+M`.!48O[;`,"P(52@``$"P"`A$`#^T#"6__^,@AOT`*!@(2>]_^",0@``)`4`
+M"(Q"``2`3@`BB8(``)F"``.)@P`$F8,`!XF$``B9A``+B8@`#)F(``^KH@``
+MNZ(``ZNC``2[HP`'JZ0`"+ND``NKJ``,NZ@`#XF"`!"9@@`3B8,`%)F#`!>)
+MA``8F80`&XF(`!R9B``?JZ(`$+NB`!.KHP`4NZ,`%ZND`!B[I``;JZ@`'+NH
+M`!\`!5A``7T8(91B`````$@A``!H(0!.$".D8@```7U`(84"```$0@`!I0``
+M`"0"``@1(@`Y``D00`!,$"&40P``A0H``"4B``$P2?__$4,`)Y4$```M(@`0
+M5$#_\0%]0"$!?2`AA((``"A"`$`40``$`6P0(20"`#^D@@```6P0(91"``"$
+MA```)*4``0!'$",H0P````,0"P`"$$``1A`AE$,````$($`PI?__`(8@(2RB
+M``\40/_2I(,``"0%``@`!1A``'T0(91$```DH@`!,$7__P!L&"$LH@`/%$#_
+M^*1D```#X``()[T`(!%```4D@@`!+:(`,Q1```(D@O__)((``:4"```EH@`!
+M,$W__Q``_]```$@A$`#_SB0)``\GO?_`K[,`+*^R`"BOL0`D,)+__Z^_`#"O
+ML``@`*"((203`#\``"`A``00P`!1$"&40P````000"2&``$08``%`%TH(3#$
+M__\L@@`(%$#_]J2C````@(`A)Z<`$`)`("$GJ``2`Z`H(0P`1[L"`#`A$@``
+M"P``("&7I0`0``000`!=$"&40@``$$4`!22#``$P9/__`)`0*Q1`__D`!!!`
+MEZ,`$)>B`!(08@`/``00P`!1$"&,0@`$$$```P`$$,``41`AE%,``@)@$"&/
+MOP`PC[,`+(^R`"B/L0`DC[``(`/@``@GO0!`%'+_\0`````0`/_T`%$0(2>]
+M_\"OL``@,/#__Z^V`#BOM0`TK[0`,*^S`"ROL@`H`*"8(:^_`#ROL0`D`,"0
+M(0$`J"$``*`A``"P(1(```T``"@A``40@`!%$"$``A!``%(0(91$``@DHP`!
+M``400#!E__\`71`A`+`8*Q1@__6D1```EF0```.@*"$GIP`0)Z@`$@P`1[L"
+M`#`A$@``#@``*"&7IP`0EZ8`$@`%$$``71`AE$,``"2D``$`9Q`F$&8`-P"B
+MH`HPA?__`+`0*Q1`__<`!1!``!2`@``6B(`"%(`A`C:((0`0@$``$8A``C*(
+M(0(2@"&6!P`&EB@`!I9D``"7I0`0EZ8`$@P`1X```$@AIJ(`!I8'``26*``$
+MEF0``)>E`!"7I@`2#`!'@```2"&FH@`$E@<``I8H``*69```EZ4`$)>F`!(,
+M`$>```!((::B``*6!P``EB@``)9D``"7I0`0EZ8`$@P`1X```$@AIJ(``(^_
+M`#R/M@`XC[4`-(^T`#"/LP`LC[(`*(^Q`"2/L``@`^``"">]`$`0`/_-`*"P
+M(3#G__\Q"/__<.@0`C"*__\PI?__,,;__R0$`&000``>```8(20"``$0Q0`I
+M`$D@"P%%&",``Q!``$,0(0`"$,``0Q`A``(0@`#%&",`0P`:4&```0```<T`
+M`!`2``(4```"'`,$8``:*&(`951```PD`@!D42``!S$"__\`"!!``$@0(0`"
+M$,``2!`A``(0@#!"__\`0!@A`^``"`!@$"$`0Q`C`$<`&%"```$```'-<&@`
+M````$!(```````````!$`!H``!@2$`#_\C!B__]1(/_P,.+__P`'$$``1Q`A
+M``(0P!``_^D`1Q`AE*L```"@4"$PA/__,67__P`%&$``!!!``&48(0!$$"$`
+M`QC``&48(0`"$,``1!`A,,;__P`#&(```DB`)&/_]@`&$$`!0A`A`2,8*Q!@
+M``641/_^I.L``)5"```#X``(I0(````$$$``1!`A``(0P`!$$"$``A"`)$(`
+M"@!)$"L00``$`````*3D```#X``(I00``!#``!\``%@A``LH0`"J$"&40P``
+M``,00`!#$"$``A#``$,0(0`"$(`!(A@C`$D0(RAC``H$0``<*$0`"A2``!8`
+MJA`A`*H@(92#``(E8@`!,$O__P`#$$``0Q`A``(0P`!#$"$``A"`)$+_]@$B
+M$"L40``%`68H*Q2@_^0`"RA``^``"`````"4@@``I.(``!``_\V4@@`"E$,`
+M`*3C```0`/_)E$(``%!@_^<`JB`A$`#_^0"J$"$\`H`")$8N/#P"@`(D0RS,
+ME((<]B3(``@P0@#P+$(`,!1```\D9P`(C,0`!"0"`%6LH@`0)`(``:RB`!@`
+M!!#``$00(0`"$(`D`P`4`$@0(:RC``RLH@`<`^``"*RD``",9``$)`(`(ZRB
+M`!`D`@`!K*(`&``$$,``1!`A``(0@"0#`!2LHP`,$`#_\@!'$"$GO?_PK[``
+M`*^_``24@ASV`*"`(3!"`/`L0@`P%$``(20%``<,`$GM``````!`("$D!@`D
+M```X(0P`/PXD!0`!)`,``20'`&L``#`A$$,`$"0$`&N.!0`$``!`(0#E$"L0
+M0``&`*88*Q1@``,`A2@K$*```X^_``0D"``!C[\`!(^P```!`!`A`^``"">]
+M`!`D`@`W)`<`4R0$`%,0`/_MK@(`$`P`2>T``````$`@(20&`"4``#@A#``_
+M#B0%``8X1``_)`8`0``$,`HDPP`W),4`(P!D*`LD`P`4``08"R1"``0D!P`R
+M`$0X"ZX#``RN!0`0$`#_UR3$`#*,A1OTC(0``#0#@`",H@`HA*8`)`"#("$`
+M1A`A``(20#!"?@`T0H``K((9,"0"``$#X``(K*(`,">]__"OL0`$K[\`"*^P
+M``",A1OT`("((8RP``2.`@`8$$``!R0$__^,HP`P)`(``5!B``F.(@``CB(;
+M](Q$`#"/OP`(C[$`!(^P````@!`A`^``"">]`!`T`X```$,0(8Q$&3`P@H``
+M5$#_](XB&_0`!!W",&,``P`$)D(D`@`"$&(`):X$``26(ASV,$(`\"Q"`#`0
+M0``6`B`@(8XB&_26)AMR`B`@(:Q``#`,`$@R`@`H(51`_^&.(AOT#`!(SP(`
+M("%00/_=CB(;]`(`*"$,`$C;`B`@(1A`_]<D`@`"CB,;]*QB`#`0`/_3K&``
+M+`P`23L"`"@AC@0`!(X#`!0`@Q`K5$#_Y:X```0`@Q`C$`#_XJX"``26(AST
+M+$(`0A1```4D@@`%C*(``(Q"``2`0@`B`((0(1``_].N`@`$C(,`!(R"``P`
+M0Q`K$$``!0``*"&,@@`0`&(0*Q1```(`````)`4``0/@``@`H!`AE((<]C!"
+M`/`L0@`P%$``60"@,"$\`H`")$(N/(S%```\`X`#K&**L#P"@`.,1XJP``40
+MP`!%$"&,Q``$C,@`$``"$(``XA`A)$(`"`"(&"L48``>K,(`'!"@`!HD`___
+MK,0`"(S#```\`H`#C$2*L"1G__\`!QC`C,(`'`!G&"$``QB``&08(:S'``",
+M10`0C&(`&(S$``@D8P`(`$40(P`"$$``@B`C`(@0*ZS#`!P40``#K,0`"%3@
+M_^N,PP``)`,``0/@``@`8!`AC,D`#`$D$"L40/_[```8(8SB```D0O__$*+_
+M]R0#__ZLQ``(C.(``"1"__\`HA`K$$#_\20#``*,PP``/`*``XQ(BK`D9P`!
+M``<8P(S"`!P`9Q@A``,8@*S'````:!@AC$4`$(QB`!B,Q``()&,`"`!%$",`
+M`A!``((@(P$D$"NLPP`<%$``!JS$``B-`@``)$+__P#B$"M40/_HC,,``!``
+M_]4D`P`"/`*``A``_Z@D0BS,)[W_\*^Q``2LH``4`*"((20%``>OOP`,K[(`
+M"*^P```,`$GM`("`(0!`("$D!0`!)`8`)`P`/PX``#@A`$"0(20"``%20@`'
+MCB(`'(^_``R/L@`(C[$`!(^P```#X``()[T`$`(`("$D!0`'#`!)[810````
+M0"`A)`4`!"0&`"`,`#\.```X(1(2``X`0!@A4@#_[JX@`!0D`@`"$@(`!P`#
+M$$`D`@`#%@+_Z8^_``P``Q!`$`#_Y:XB`!00`/_])$+_^Q``_^&N(@`4)[W_
+MX*^U`!2OM``0K[\`&*^S``ROL@`(K[$`!*^P``"4H@`"`*"H(3!"`0`00`!Q
+M`("@(8R0'`2.`@``&$``'@``F"$F$0`HDB8`"Y(H``@"`"`A``800`!&$"$`
+M`A#``%`0(8Q#`"@\`H`")$)$```#&(``8A@AC&(````(0(`T`X<`)`4`#@``
+M."$`0/@)`0.0(0!`,"&.`P``CH(``"9S``$"8Q@J`%(0(:Q&```48/_E)C$`
+M&):B``(P0@$`%$``"H^_`!B.D!P,C@(``!A```8``)@AC@,`*"0"``(08@`*
+M)A$`*(^_`!B/M0`4C[0`$(^S``R/L@`(C[$`!(^P```#X``()[T`()(F``L\
+M`H`")%5$```&$$``1A`A``(0P`!0$"&,0@`HDB@`"#0#AP```A"``%40(8Q"
+M````"$"``@`@(20%``X``#@A`$#X"0$#D"$`0#`ACH(```(`("$D!0`.`%(0
+M(:Q&``"2(P`))`<``29S``$``Q"`%&``"P)"D"&.`@```F(0*A!`_]4F,0`8
+MCB,``"0"``)08O_;DB8`"Q``_]"/OP`8DB8`"P`&$$``1A`A``(0P`!0$"&,
+M0@`H``(0@`!5$"&,0@```$#X"0``````0#`ACH(```!2$"&L1@``$`#_YXX"
+M```0`/^0C)`<%)2"'/8P0@#P+$(`,!1``!,PI?__C(,;]"2E__\LH@`'$$``
+M#HQD`"`\`X`"``40@"1C#[P`0Q`AC$(```!```@``````^``"`"`$"$#X``(
+M)((`!`/@``@D@@`(`^``"```$"$#X``()((`#`/@``@D@@"L)[W_\*^Q``2O
+ML````("((0"@@"&OOP`(#``I;#P%@`".)P``)`/\#P(@("&,X@`P/`6```!#
+M0"0P0@/P``(1`BQ&`"42```3+$,``A#```TD0@`!``(1`#!"`_`!`A`EK.(`
+M,`P`*3P`````)`(``8^_``B/L0`$C[````/@``@GO0`0#``I/#P%@``0`/_X
+M```0(1!@_^\D0O__$`#_^0(@("&,P@`4C,<`$"0#``$`0Q`$`(!((0#`0"$`
+MXQ@$C,8`#"1"__\\!``/-(3\`"1C__\``A*``$00)(TG```P8P/_`&(8)0`&
+M-0`\`@_P`,(P)``%*(``9A@E`.4X(:SC$$"-)```C0,`(#P"``\T0O__`&(X
+M)!!@``,`A2`A/`(`$`#B."6-`@`$K(<0P#!&`"`P0@`$$$``!CP$`""-(@``
+M`$40(8Q#$0``9!@EK$,1`!#```8`````C2,```!E&"&,8A$`-$("`*QB$0`#
+MX``(`````">]__"OOP`$K[```(R(&_2,L``(C*,`!(T'``@D`@`!`@)(!`#I
+M."4P:@`",&,``0"@,"&M!P`($&``!`(`*"&-`@`,`$D0):T"``P10``$````
+M`(T"`!``21`EK0(`$`P`3HL``````@`0(8^_``2/L````^``"">]`!",A!OT
+M)`(``0"B$`2,A@`(C(<`#(R#`!```A`G`,(P)`!B&"0`XC@DK(,`$*R&``@#
+MX``(K(<`#(R"````!2B`)*4(``!%$"&L1@```^``"`````",@P``)`(``0"B
+M$`2L8@A``^``"`````",@AOTC$,`""0"``$`HC`$`&88)``%*(`DI0H`$&``
+M"@``$"&,A````(40(8Q"```P0@`#%$``!`````",@@A``$80)``"$"L#X``(
+M`````">]__``!A!`K[(`"*^Q``2OL```K[\`#`!&$"$`@(@A``(0P(R$````
+M1A`A)`,``0"C&`0`H)`A``*`@*R#"(`"("`A#`!*H@)`*"$F$/__$$``!R0$
+M``H&`@`&CB(```P`:3\`````$`#_]@(@("&.(@``C[\`#(^R``B/L0`$C[``
+M`*Q`"(`#X``()[T`$!"@`!4`H#@AD*(`#@`"$0(P0@`!$$``$8SB``@\`]__
+M``8@*S1C__\`0Q`D``0G0`!$$"6LX@`(C.<`(%#@``>,X@`(D.(`#@`"$0(P
+M0@`!5$#_\HSB``B,X@`(/`/?_P`&("LT8___`$,0)``$+T`\`_]_`$40)31C
+M__\`0Q`D``0EP`!$$"4#X``(K.(`"``($,``2!`C)[W_P``"$("OO@`PK[<`
+M+*^V`"BOM``@K[,`'*^R`!BOL0`4K[``$*^_`#2OM0`D`$00(8Q"&=@`@)`A
+M`*#P(:^B``2/HP`$)`(``:^F````X)@A``"@(0``L"$``+@AKZ(`"*^@``P`
+M`(@A%&``#B2P``B/H@`,C[\`-(^^`#"/MP`LC[8`*(^U`"2/M``@C[,`'(^R
+M`!B/L0`4C[``$`/@``@GO0!`#``I;#P%@``28``:)`/_\"9T``@R@@`/)$(`
+M)P!#*"0"@Q@D`&40(0!#$"L40``'`&`@(;QQ```D8P`0`(40(0!#$"L00/_[
+M``````)`("$"8"@A#`!.AR0&``&OH@`(CH(``(Z#``@``HV",'9__S(Q``$"
+M0"`A#``I/#P%@`".`P``/`*`0(X%``P`8A@DC@0`"(^B``@`!34",)5__P`#
+M&"L40``+,,8`'U!@``H#P"@A5B``2H_"`$R/HP`$`M40(0!7$",`8A`K$$``
+M$`*W$",#P"@A`D`@(0P`2MHD!@`!CZ,`#!!@_[B/H@``4$#_MX^B``R,10`P
+M`D`@(0P`2MH``#`A$`#_L8^B``P"0"`A/`6```P`*6P"PK`A$F``'"9E``@P
+MH@`/CH0`""0#__`D0@`G`*,H)`!#,"0D`H```((@)#+#?_\`IA`A`(,@)0!%
+M$"NNA``(%$``!P"@&"&\L0``)*4`$`!F$"$`11`K$$#_^P`````"8"@A`D`@
+M(0P`3H<D!@`!+$(``:^B``P"0"`A#``I/#P%@`"/H@`,$$#_S`/`*"&.!```
+MC@4`"#P"_[\T0O__/`-__P""("0T8___)`*```"#("0`HB@DK@4`"!``_[ZN
+M!```)`4`#HQ#`#P`9A`AD$8`!`!@("$`!A!``$80(0`"$,``0Q`AC$,`*#P"
+M@`(D0D0```,8@`!B&"&,8@```$#X"20'``$0`/^E`$"X(2>]_\"OM``@K[(`
+M&*^Q`!2OL``0K[\`-*^^`#"OMP`LK[8`**^U`"2OLP`<C((;-`"`D"&,O@`H
+M`*"`(0#`H"$DL0`(C+,`4(RD`$P40``1KZ```%)@``63PP``CF(`!!1```P`
+M````D\,``#!B``P40``')`(``3!C`/`D`@!`$&(`!"0"`%`08@`")`(``:^B
+M```0@`'*`````(R6`#R.`@`L`D`@(0(`*"&L0``8K$``'`P`4Z```````$"X
+M(0`"$$".)0```%<0(98D``H``A#``L(0(3P#`#\`HR@E)%4`))*F``^N)0``
+MKB0`"(Y"&\@\`^'_-&/__R1"``$P0@`/``(4``""("4`HR@DKB0`"*XE``"3
+MPP``CB0`!#P%_P\P8P#\.&,`4"0"``,``Q`+-*7__P`"%0``A2`D`((@):XD
+M``0`!A!``$80(9/#`````A#``L(0(21&`"0P8P`,)`(`"%!B`8R3P@`!)`)_
+M_Q*"``P\`O_PCB0`!(XE```T0A__,H,`?P""("0``QM`/`)```"B*"4`@R`E
+MKB0`!*XE```28``9/`2?_Y9B`1B.(P`$``(0@C!"``,TA/__``(70`!D&"0`
+M8A@EKB,`!(X"`"B00@`!,$(`0!!```,``"`AEF(!%@`"((*.(@`$/`/G_S"$
+M``,T8___`$,0)``$)L``1!`EKB(`!)/"``23Q```,$<``3"#``PD`@`($&(!
+M1S"#`/`D`P`#CB0`!#P"^?\T0O__,&,``P""("0``QY``(,@):XD``2.0AMH
+M4$`!,9/"`!828`$N/`+^_XX#`%B.)```C&,`)#1"__\`@B`D``,8P`)C&"$D
+M8P`PC&(`!``"$"L``A8``((@):XD``"L8``$$.``\XXD``".)0`$/`+_OS1"
+M__\\`W__`((@)#1C__\\`@$``*(H)0"#("2N)0`$KB0``(ZC``0D`@`#4&(`
+MW(XB```28``&```@(99"&W(D`Q0`,$(W`%!#`-*.8@`L$(``-X^C``".0ALX
+M$$``-`````".H@`$%$``,0`````4X``O`````(Y#&SP``Q!``$,0(0`"$,"/
+MHP```%80(21"`"@08``#D$0`")!"``D`@B`ECB,`##P4_@\P@@`?-I3__P`"
+M%0``=!@D`&(8):XC``R3P@`!,$(`!%1```:.8P`LD\(`%C!"``]00``&CB0`
+M`(YC`"PD`@`!$&(`CP(`("&.)`````05@C!"``$40``+CZ,``(Y#&]0D`@`!
+M$&(`@#P#@``\`O^_-$+__P""$"0`0Q`EKB(``(^C```08``#DJ0`#)*B``T`
+M@B`ECB(`#"0#_^`PA``?`$,0)`!$$"6N(@`,CZ(``%!```*6LP`2EK,`%(XC
+M```\`H!``&(0)%!``"F.1`6,CB(`"``#'8(D%(```%00)#!C``$48`!'KB(`
+M"``7$$``5Q`A``(0P`!6$"&,0P`H/`*``B1"1````QB``&(8(8XE``",8@``
+MCZ<``(XP``@PI0__`L`@(0!`^`D"X#`ACB,`"#(0?_\"`H`A,A!__P!T&"22
+M)0`$`'`8)3!B?_\PI0`!`%,@(0"%$`H`=!@D,$)__P!B&"6N(P`(CD0%C!"`
+M`"*6H@`(``08P`!D&"$``A'`/`3,S`!B&"$TA,S-`&0`&0``&!```QC"DB(`
+M!*Y#!8P``!@A,$(``0)B&`HP8@#_``(2```#&@(`0Q`E``(:`J/"``.CPP`"
+MC[\`-(^^`#"/MP`LC[8`*(^U`"2/M``@C[,`'(^R`!B/L0`4C[``$`/@``@G
+MO0!`$`#_YP`"&<".(@`,CZ<```+`("$``A4",$(`'P+"$"&01@`$``800`!&
+M$"$``A#``%80(8Q#`"@\`H`")$)$```#&(``8A@AC&(```!`^`DD!0`.CB,`
+M"#!"?_\`=!@D`&(8)1``_Z*N(P`(/`-__SP"`$``@A`E-&/__Q``_X``0Q`D
+M#`!6R0+@*"$`0+@A``(00`!7$"$``A#``L(0(215`"22I@`/``800`!&$"$`
+M`A#``L(0(21&`"2/H@``$$```Y#$``R0P@`-`((@)8XC``PP@@`?``(5``!T
+M&"0`8A@E$`#_9ZXC``PX0@`!$`#_+2Q$``$\`_^_-&/__SP$?_\`0Q`D-(3_
+M_P!$$"00`/\>KB(``)9#&]P\!?^_,((/_P!B&"HTI?__``,=@`"%("0`@R`E
+MKB0``)("`#PP0@`!4$``!(X"`#P`A1`DKB(``(X"`#P``A;",$(`#U!```:.
+M(P``CB(``#P#`$``0Q`EKB(``(XC```\`G__-$+__P!B&"2N(P``CZ,``!!@
+M``.0Q``,D,(`#0""("6.(@`,/`/^#S"$`!\T8___`$,0)``$)0``1!`E$`#^
+M[ZXB``R3P@`6CB,``#P$_O\P0@`/+$(``32$__\`9!@D``(6``!B&"40`/[7
+MKB,``"0"`$`08OZY)`,``Q)@_K<D`G__AF,!%%!B_K0D`P`#5.#^LB0#``..
+M(@``,$(/_RA"`0$40/ZM)`,``HX"`%B,0@`D+$(``E!`_JF.)``$$`#^IHY#
+M&]`P0@!`$$#^="0"?_\6@OYR`````)9"&_"N`@`X$`#^;0!`H"$,`%)>ED0;
+M<@`"$(``4A`A$`#^,XQ6'``GO?_0K[(`"`"@D"$DI0`(,*(`#Z^U`!2OLP`,
+MK[$`!*^P``"OOP`@K[<`'*^V`!BOM``0)`/_\"1"`">.5``P`*,H)`!#,"0`
+MIA`A`$40*P"`J"$F4``8)I,`"(Z6`%".EP`H))$$@!1```<`H!@AO+$``"2E
+M`!``9A`A`$40*Q!`__L``````J`@(0)`*"$,`$Z')`8``1!``&8D`P`-D@(`
+M`XYC``PP0@`!$$``J3!I`!\D`@`!KD(`0)8"``8``A!",$(/_Z9"`$:6`@``
+MID(`1)("``*2`P`#HDD`2C!"``\``QD"`$,0(:9"`$B28@`$,$(``1!``)(`
+M````$L``!20*`!Z"P@"Z%$```@!`4"$D"@`>D@(``S!"``$00`!K*4+_[!1`
+M``Z.(P$()`(!)Q!B`&0``Q#``$,0(0`*(<`\`V9F`$00(31C9F<`0P`8``(7
+MPP``&!```QB#`&(8(Y("``(P0@`/%$``!:XC`0B2`@`#``(1`A!``!8`````
+MCB0`>(XE`'R.8@``)*4``0`"%8(LHP`!`(,@(3!"``&N)`!XKB4`?!1``$$`
+M`#`AD@(``C!"``\00``X``88@``"&(``<1@AC&(`P"1"``&L8@#`D@(`!0`"
+M$<(00``$`````(XB`%PD0@`!KB(`7)("``,``A#",$(``11```P``!@ACJ(;
+M1#!"``$00``)C[\`()+B``0P0@`!%$``!H^W`!R.@@!,5$``#8Q"`#R/OP`@
+MC[<`'(^V`!B/M0`4C[0`$(^S``R/L@`(C[$`!(^P````8!`A`^``"">]`#"2
+M"``#CF<```!)$"&2"P`$D$8`!)9)`$@`"$!",.</_S$(``$Q:P`!`J`@(0P`
+M5/,"P"@A$`#_Y@``&"$`<1@AC&(`@"1"``$0`/_*K&(`@)("``.2`P`"``(1
+M`A``_[XP9@`/$`#_I@`*&<"2`@`#CB,`0``"$$(D8P`!,$(``1!```6N(P!`
+MCB(`1"1"``$0`/^_KB(`1)("``,``A#",$(``1!```4`````CB(`<"1"``$0
+M`/^VKB(`<)("``,``A"",$(``1!`_[$`````CB(`2"1"``$0`/^MKB(`2(X"
+M``0``A+`$`#_<@`"5@.2`@`#``(00C!"``%00/]5)`(``Q``_U,D`@`")*4`
+M&)"B``<#X``(,$(``8S*````P#@A`*!8(0"`0"$10`"V``5(@(S#`!2,Q``0
+M)`(``0!B&`2,Q0`,`((0!"1C__\\!``/)$+__P`#&H`TA/P`C08```!D&"0P
+M0@/_`$,0)0`%+0`\`P_P`*,H)`!%$"4`R3`AK,(00(T"&V@\!0`($$``O32E
+M(`"-!!O()`(`#RR#`!``0R`*``01`#!"`/`P@P`/`$,0)0!%*"6-`@``)`,(
+M``!)$"&L11"`C0(```!)$"&L0PG`C.4`&%"@`!.,Y``DC.,`'(T$```\`@#_
+M-$+__P"B$"0``QX``$,0)0")("&L@@C`C0,``(SE`!P`:1@AC&()P#1$`0$T
+M0@`!`(40"ZQB"<",Y``D4(``"HT$``"-`@``/`,`_S1C__\`@Q@D/`0!``!D
+M&"4`21`AK$,)`(T$``",XP`@/`(`#S1"__\`B2`A$&```P!B*"0\`@`0`*(H
+M):R%$,",X@`@4$``"XSE``2,X@`$,$(`$%!```>,Y0`$C0,```!I&"&,8@G`
+M-$("`*QB"<",Y0`$,*(`!!!```@PH@`@C0(``#P$`"``21`AC$,1``!D&"6L
+M0Q$`,*(`(!!```<D`@`"C0,```!I&"&,8A$`-$("`*QB$0`D`@`"44(`5XT#
+M```D`@`#44(`2(T#```D`@`$44(`/XT#```PH@`(4$``%(T$``",X@`H4$``
+M$8T$``"-`P````L00"1"`%"L8@L`C.,`*(T"``"L0PL$C0,``(T"&P"L8@L(
+MC0,```!I&"&,8@G`-$(0`*QB"<"-!```C04;]"0&_`",@@"DC*,`##P'_```
+M1A`D,&,#_P!#$"6L@@"DC00``(RC``PTY___C((`J#!C`_\`1A`D`$,0):R"
+M`*B-!```C*,`#(R"`*PP8P/_`$80)`!#$"6L@@"LC08``(RB`!`\!`/_C,,`
+MI``"%```1!`D`&<8)`!B&"6LPP"DC0,```!I&"&,8A$`-$(!`*QB$0`#X``(
+M``````!I&"&,8@G`-$(`(*QB"<`0`/^^,*(`"#P$``0`:1@AC&()P#1"`&*L
+M8@G`C0,```!I&"&,8A$``$00):QB$0`0`/^O)`(`!#P$`"4`:1@AC&()P#1"
+M`**L8@G`C0,```!I&"&,8A$``$00):QB$0`0`/^@)`(``SP%``@0`/]+-*4@
+MJB>]__"OL0`$K[```*^_``B,H@"$)`8`!`"@@"$40``&`("((8^_``B/L0`$
+MC[````/@``@GO0`0#`!*MHRE`&R.!0!L#`!*AP(@("$,`'IJC@0`A!``__.N
+M``"$)[W_X*^S``ROL@`(K[$`!*^_`!"OL````("8(0#`B"$0P``I))(<&(Y0
+M`(02```M`````"8$``@``"@A#`!PJB0&`!B6`@`.C@0`*(XE``2.)@`,,$(/
+M_PP`<)T`@B`AE@(`#HXD``R6`P`.,$(/_P!$$"$D!/``,$(/_P!D&"0`8A@E
+MI@,`#HXQ```6(/_M`````)8"``Z6`P`*KA(`3#!"#_\D0@`$`&08)#!"#_\`
+M8A@EI@,`"@)@("$"`"@A#`!8H0``,"&/OP`0C[,`#(^R``B/L0`$C[````/@
+M``@GO0`@#`!Z5R0$`-P`0(`A`$`@(0``*"$,`'"J)`8`7"8"`%RN4`"$K@``
+M`*X``""N`@`$K@(`*!``_\:N$``D)[W_L*^P`#``@(`AK[,`/*^Q`#2OOP!`
+MK[(`.`.@("$``"@A)A$<&`#`F"$D!@`L#`!PJHXR`(2.(@`$C@8;]``"&$``
+M8A@A/`*``B1"+ZP``QB``&(8(8QD``2,90`(C&,``"2$``$D`@`%KZ(`"*^E
+M`!2OI``0KZ,`#(S#``@D`@`")`8`!#!C`"`"`"`A)`4`!11@`!VOH@``#`!1
+MKR8$'&`00``))`/__X^_`$"/LP`\C[(`.(^Q`#2/L``P`&`0(0/@``@GO0!0
+M`@`@(0P`2F@#H"@ACD8`)`!`*"&N(@!L#`!*E0(`("&.)0!L#`!*G`(`("$"
+M`"`A#`!9$@)@*"$0`/_I```8(0P`2K8`````CZ4`"`P`2H<"`"`A$`#_W@``
+M```GO?_@K[$`!"0"__\DD1P8K[8`&*^U`!2OM``0K[,`#*^R``BOL```K[\`
+M'#P%``0`@(`A`,"8(0#@H"$!`)`A`4"H(0$@L"$0X@`FIB8`@@P`4EZ4A!MR
+M.$D``0(`("$"0"@A`F`P(0*`."&N(@`$`$`8(1*@``0X2``$)`(``P!(&`H`
+M"1@*``,0@`!0$"&,0AP`KA48`*XV`!RN`AQ4ED(``*8B`$*60@`"IB(`1)9"
+M``0,`"SJIB(`1H^_`!R/M@`8C[4`%(^T`!"/LP`,C[(`"(^Q``2/L````^``
+M"">]`"`D`@`!K((;L"0"``:L@`6,K(`8``P`*6RN(@`$`@`@(0)`*"$``#`A
+M#``LZ@``."$"`"`A#`!/:0(@*"$0`/_GC[\`'"2E__XLH@`F``!((1!``"0`
+M`%`A/`.``@`%$(`D8P_8`$,0(8Q"````0``(`````(R)!'@50``%`````%3@
+M``&LZ0``5,```:S```!5```!K0H```/@``@`````$`#_]8R)!'P0`/_SE(D<
+M\!``__&4B1SR$`#_[Y2)'/00`/_ME(D<]A``_^N4B1SX$`#_Z0``2"&,@AOT
+M$`#_YHQ)`#00`/_D)`H`#HR"&_00`/_AC$D`<(R"&_00`/_>C$D`.(R"&_00
+M`/_;C$D`/(R"&_00`/_8C$D`0(R"&_00`/_5C$D`1(R"&_00`/_2C$D`2(R"
+M&_00`/_/C$D`3(R"&_00`/_,C$D`4(R"&_00`/_)C$D`5(R"&_00`/_&C$D`
+M6(R"&_00`/_#C$D`7(R"&_00`/_`C$D`8(R"&_00`/^]C$D`9(R"&_00`/^Z
+MC$D`:(R"&_2,0@!L)$G__RTB``500/^T)`D`!!``_[(`````C((;]!``_Z^4
+M20!TC((;]!``_ZR420!VC((;]!``_ZF420!XC((;]!``_Z:420!ZC((;]!``
+M_Z.,20!\C((;]!``_Z",20"`C((;]!``_YV,20"$C((;]!``_YJ,20"(C((;
+M]!``_Y>,20",C((;]!``_Y2,20"0C((;]!``_Y&,20"4C((;]!``_XZ,20"8
+MC((;]!``_XN,20"<``40P`!%$"$``A#``$40(R>]_^```A"`K[,`#*^R``BO
+ML0`$K[```*^_`!``@H`AC@(`"`"`D"$`X)@A$$``""81``B/OP`0C[,`#(^R
+M``B/L0`$C[````/@``@GO0`@`B`@(0``*"$,`'"J)`8!'"9$'!@0@/_S)`(`
+M!HR#``008O_P)`(``:X"``@F`P`\)`4``R0"``$DI?__K&(```2A__TD8P`(
+M`F`X(28B``0F8P`@C.4``(SF``2,Z``(C.D`#*Q%``"L1@`$K$@`"*Q)``PD
+MYP`0%./_]B1"`!",XP``C.4`!(SF``BL0P``K$4`!*Q&``BN)`!8#`!39P(@
+M("$"("`A#`!2Q0``*"$,`'&T)B0`7!``_\N/OP`0``40P`!%$"$``A#``$40
+M(P`"$(``@B`A)[W_\"0"``:OOP``$,(`#B2%``@LP@`'$$``!R0"``<D`@`"
+M4,(``:RH``2/OP```^``"">]`!!0PO_\K*@`+!``__N/OP``)(0`$`$$$"4P
+M0@`#$$``'"4#`"``8!`AB0,``)D#``.)!@`$F08`!XD'``B9!P`+B0D`#)D)
+M``^H@P``N(,``ZB&``2XA@`'J(<`"+B'``NHB0`,N(D`#R4(`!`5`O_N)(0`
+M$($"``"@@@```*`@(0P`4L4D!0`!$`#_VX^_``"-`@``C08`!(T'``B-"0`,
+MK((``*R&``2LAP`(K(D`#"4(`!`5`__V)(0`$!``_^T```````40P`!%$"$`
+M`A#``$40(R>]__```A"`K[````""@"&OL@`(K[$`!*^_``PF$0`(CB(`>`"`
+MD"$\!8`"/`2``B2$$)PDI1!P%$``#B0&`0<,`'&[)@0`9`(@("$``"@A#`!P
+MJB0&`1RN```(C[\`#(^R``B/L0`$C[````/@``@GO0`0#`!P=``````F!0!D
+M#``0X`)`("$0`/_M`````">]__"OL@`(K[$`!*^P``"OOP`,`("0(0``B"$D
+MD``(C@(```(@*"$F$`$<)C$``11```H"0"`A*B(`!%1`__F.`@``C[\`#(^R
+M``B/L0`$C[````/@``@GO0`0#`!1;``````0`/_U*B(`!">]__"OL``````H
+M(20&`#BOOP`$#`!PJ@"`@"$,`'&T`@`@(8^_``2/L``````0(0/@``@GO0`0
+M`^``"(R"`!0GO?_PK[$`!*^P``"OOP`(#`!PM0"`B"&.,``4$@``"0````".
+M`@`@`%`8)@`#$`H40``"KB(`%*X@`!BN```@K@````P`<+H``````@`0(8^_
+M``B/L0`$C[````/@``@GO0`0)[W_\*^Q``0`@(@AK[(`"*^P``"OOP`,`,"`
+M(0P`<+4`H)`ACB(`*%!``!6N```@C@(`)*X0`""N`@``CB(`&%1```JL4@`@
+MKC(`%`P`<+JN,``8C[\`#(^R``B/L0`$C[````/@``@GO0`0CD,`)(XB`!BL
+M0P``$`#_]`````"N````$`#_[HXB`!@PQO__``800`!&$"$``A#``$00(91#
+M`"P\`A!B-$)-TP`#&(``8@`9``40P```&!```QF"`$,0(21"`!4`0P`;4&``
+M`0```<T``!`2``(0@"1"`"0#X``(,$+__S#&__\`!A!``$80(0`"$,``1!`A
+ME$,`+#P"$&(T0DW3``,8P`!B`!D`!1#````8$``#&8(`0Q`A)$(`%0!#`!M0
+M8``!```!S0``$!(``A"`)$(`%@/@``@P0O__,,;__P`&&$``9A@A``,8P`!D
+M&"$`!1(```4HP`!%$",D8P`HE&8`!``"$(``11`A``(0P`!&`!L``"@2$.``
+M!"0$`,"08P`))`(`8`!#(`L`A1`A)$(`"C!"__]0P``!```!S0/@``@`````
+M,,;__P`&$$``1A`A``(0P`!$$"&41``L/`(08C1"3=,`!!B``&(`&0`%$,`L
+MA`/H```8$``#&8(`0Q`A)$(`%0!#`!M08``!```!S0``$!(``A"`)$,`7"1"
+M`+T`9!`*`^``"#!"__\P@___,&((`!1```TD!``%,&("`!1```HD!``",&4W
+M`"0"%``0H@`&)`0``R0"%0`0H@`#)`0`!#!B`0```B`K`^``"`"`$"$#X``(
+MK(``.#"E`/\D`@`!`*(0!`!`&"$0P``%``(H)XR"`#@`0Q`E`^``"*R"`#B,
+M@@`X$`#__`!%$"0PI0#_%*``!(R#`#@``!`A`^``"*#````DI?__!*``"@``
+M$"$D`@`!`*(0!`!B$"040``')`(``22E__\$H__[`*(0!```$"$#X``(H,``
+M``/@``B@Q0``C*H`.*#@``"0H@`\)`@``0$"$"L00``C,,8`_P`($$``2!`A
+M``(0P``&&$``1$@A)`(``0!F&"$!`A`$``,8P`%"$"000``1`&08(94I`"R4
+M8@`L`2(0*U!```V0H@`\D.,````#$$``0Q`A``(0P!!@``4`1!`AE$(`+`!)
+M$"M00``#D*(`/*#H``"0H@`\)0,``3!H`/\!`A`K%$#_X``($$"0X@``%$``
+M`R0#``&@Y@`````8(0/@``@`8!`A)[W_T*^W`!ROM@`8K[$`!*^P``"OOP`D
+MK[X`(*^U`!2OM``0K[,`#*^R``B,@@!8))$`E"26``B,4P`\)`(`$Z(B`#P`
+M`+@A%*``$0``@"$`$!A``'`0(0`"$,``4Q`AD$(`-`!Q&"&@8``!H&(``)(B
+M`#PF`P`!,'``_P("$"L00``#`````!"@__(`$!A`#`!2<`(@("&2P@``CG0`
+M`!1``#,``*@A&H``$@``@"$`$!!``%`0(0`"$,``4Q`AC$,`)"0"``$"L4`A
+M)J<``0(`*"$"("`A$&(`'"0&``$F`@`!,%``_P(4$"H40/_Q`!`00*(U`&&2
+M8@,PHB(`8B;B``&B(@`\DF,#+P+C$"M40``!`N`8(:(C`#V/OP`DC[X`((^W
+M`!R/M@`8C[4`%(^T`!"/LP`,C[(`"(^Q``2/L````^``"">]`#"A$`!C#`!2
+M<C#U`/\"%Q`K$$```@(`&"$"X!@A$`#_W3!W`/\``(`A$$``&0``\"$:@``1
+M``"0(0`2$$``4A`A``(0P`!3("$"T!`AD$,``9""`#(P8P!_,$(`?U!B`"J,
+M@P`D)D(``3!2`/\"5!`J%$#_\@`2$$"2P@``)@,``3!P`/\"`A`K%$#_Z0``
+M``"2*``\``"`(0(($"L00``5CBD`.``0$$``4!`A``(0P"0&``$`4R@A`@80
+M!`$B$"0"L2`A)@<``1!```8FHP`!H)``8XRB`"@GQ``!$$8`"#!U`/\P\`#_
+M`@@0*Q1`_^X`$!!`HC4`81``_ZZB/@!B$`#_^#">`/\D`@`!`D`H(0(@("$4
+M8O_3)`8``0P`4G(``````E<0*Q!```("0!@A`N`8(1``_\LP=P#_)[W_\*^P
+M```DD`"4`@`@(0``*"&OOP`$#`!PJB0&`'P,`'%<```````#*(``HR@A``4H
+M0*X%`%2/OP`$C[````/@``@GO0`0``0F```%+@``!"8#``4N`P`&-@``!C8#
+M`(40*@"F0"H40``(`(8X*A$```0`H!@A`,`8(0#$$"H`@A@*`^``"`!@$"$0
+MX/_]`(`8(0#`&"$`IA`J$`#_^0"B&`N0IP``,(3__Q#@``L``!@A``,00`!%
+M$"&40@`"`((0*Q1```4D9@`!,,/__P!G$"M40/_X``,00`/@``@`8!`A)[W_
+MP*^^`#"OM0`DK[,`'*^Q`!2OOP`TK[<`+*^V`"BOM``@K[(`&*^P`!"4@AMR
+ME*,`"HRW`%```A("`("8(0"@J"$P<0__,%X``8RV`$R,HP`H```0(9"%&`,2
+MX``:D(08!XZB`#P``A)",$(``11```V.U``\CF(;V%!```N.H@`\D&(`!#!"
+M``%40``'CJ(`/)!B```D`P`(,$(`#!!#`!T`````CJ(`/"0#_?\`0Q`DKJ(`
+M/(YB'!12@@`.DL(`@);"`!Z/OP`TC[X`,(^W`"R/M@`HC[4`)(^T`""/LP`<
+MC[(`&(^Q`!2/L``0`^``"">]`$!00/_SEL(`'I:D``J.A0,T#`!3D#"$#_\0
+M`/_NC[\`-!"@``\F\`"4)`(``5""`0"2`@`]5(``"X($`":2`P`]``,00`!#
+M$"$``A#``%00(8Q#`"@D`@`!4&(`\)*"``."!``F@@4`*`P`4WF"!@`I#`!Q
+M7`!`D"$``RB`C@8`4`"C*"$`!2A``*8@(RR"`+D40`#;```8(20#``HN(@,A
+M%$``!)(&`&$D8@`!``(6```"'@.2!P!B`D,0(P`"%@`"0Q@J``(6`SAC```D
+MQ/__``"0(3#H`/\`0Y`*,(0`_P``8"$1```'``!((1?``+\!!A`K`(<0(S!$
+M`/\0@`!H``"((0$P6"$`B1`J`(`P(11``!N1:`!C`)`0(21'`&.0\0``),;_
+M_P#)4"H`$1!``%$8(0`#&,``="`A`%`8(8!B```"0A`J%$``"R3G__^08P`!
+ME(0`+B0"`&0`0Q`C<((8`@!L$"L40``#``````!@8"$"($`A44#_ZI#Q``"B
+M$@`GCJ(`/``"%L(P0P`/$&``!@$`B"&.8AMH``(00@!#$"M40``!D7$`8Y(#
+M`#T`<1`K4$``,)+C`-"2!P`\)&(``0!@B"$P0P#_`&<0*P.@4"$OR0`!)`L`
+M`1!``!.."``X``,00`!#$"$``A#``%0@(20"``$`8A`$`0(0)!!```8D9@`!
+M$2``=B0"``&,@@`H%$L`<R0"``$PPP#_`&<0*Q1`__```Q!`H4``````$"%0
+M0``0DN,`T(X"`%B.@P,D`*(0(P!B&"M08``*DN,`T)("`%TL0@`$5$``!I+C
+M`-"3L0``K@4`6*(``%VB$0`^DN,`T"1B__\`41`J4$``!(YC'!PD8O__,%$`
+M_XYC'!PD`@`%4&(`0XYC&^"2P@"`$$#_2@(@$"&6H@`*/`1KRC2$&O,P0@__
+M``(8@`!B&"$``QD``&0`&``1$$``41`A``(0P`!4$"&40@`L```8$``#*0(`
+M11`K$$#_.`(@$"&2`P`\)B(``3!$`/\`@Q@K`Z!((2_(``$D"@`!$&``%(X'
+M`#@`!!!``$00(0`"$,``5!@A)`(``0""$`0`XA`D$$``!B2&``$1```8)`(`
+M`8QB`"@42@`5)`(``9("`#PPQ`#_`((0*Q1`_^\`!!!`H2``````$"$00/\8
+M`B`0(9.Q````$1!``%$0(0`"$,``5!`AE$(`+`!%$"M40/_9D@,`/!``_PT"
+M(!`A$`#_\J$D```"(Q`K$$``"0)@("&.8@6H4$#_NI+"`(``0Q`K5$#_MJY@
+M!:@0`/^UDL(`@`P`5NXD!0`!$`#_L9+"`(`0`/^3H4,``!!`_T8!,%@A`,<0
+M(Q``_T(P20#_+((`&11`_R8N(@,A)(+_YP`"%0`0`/\A``(>`Y*#`S``0Q`C
+M)$+__Q``_PVB`@`]``(80`!B&"$``QC``'08(8QB`"@01/[[`````!``__62
+M@@`#)[W_L``*5@`Q:P#_K[X`0*^W`#ROM0`T`("X(:^T`#"OL0`D`*"H(:^_
+M`$2OM@`XK[,`+*^R`"BOL``@`,"((:^H```!(*`A``KV`PP`<5ROJP`$``,H
+M@`"C*"$`!2!`KZ0`"*^@`!"2XQ@#$J`!"9+D&`>.H@!8)K``E!!@``2,4P`\
+M)`(``5""`8B28@,O`!&P0`+0D"&21``!CZ,``#""`/\08`$=KZ(`#"0"``$0
+M8@$3)(,`(Y("`#PF)0`!`*(0*A!``!D```````480`!E$"$``A#``%,0(21&
+M`"@`<"`A`M$0(0`"$,``4Q`AC$,`*(S"```"T#@A)*4``11#``HDQ@`8D.,`
+M`9""``$`0Q`K5$```:"#``&2`@`\`*(0*A1`_^\DA``"6B``%9("`#Z"`@`F
+M@@0`)P`1&$``<"@A)$+__@!$&"J`I@```(,0"P`"%@```AX#),(``@!#$"H0
+M0`#@D*0``"2"``2@H@``)`0``:(1`%ROI``0D@(`/E!```,`$1!`$%$`#@`1
+M$$``4!`A@$,````#$(``0Q`A``(00`!`&"$D1``/*$(```""&`L``QD#H@,`
+M*:(#`":B`P`HH@``/@`1D$`"4!`AD$(``2Q"`#T40``0CZ(`$!H@``X"41@A
+MD@0`/0`#&,``!!!``$00(0`"$,``<Q@A`%,0(91C`"R40@`L`$,0*Q!``*T"
+M`"@ACZ(`$!!``$@`$3A`D@(`/"1"__\"(A`J$$``'0(@*"$`$1A``'$0(0`"
+M$,``4S@A`'`P(0)1$"$``A#``%,0(8Q#`"B,X@!`%$,`$22E``&`X@`U@,,`
+M`(#$``*0Z``U`&(8(0"#("HDYP`8$(```Y#"````2!`AH,(``I("`#PD0O__
+M`*(0*A1`_^HDQ@`")B7__P2@`",`!1A``&40(0`"$,``4S@A`'`P(0`1$$``
+M41`A``(0P`!3$"&,0P`HC.(`*%1#`!@`$3A`@.0`-8##``"`P@`"D.@`-0!D
+M&"$`1"`J`$,0*A!```J0PP`"$(``;0!H$".@P```@,(``(#C`#0`0Q`J$$``
+M`I#D`#2@Q```)*7__R3&__X$H?_C).?_Z``1.$``\!`AD$(``8^C``P`0Q`K
+M4$``&8X"`%0F)?__!*``%0`%&$``91`A``(0P`!3$"$D1@`H`'`@(0#Q$"$`
+M`A#``%,0(8Q#`"B,P@``)*7__Q1#``@DQO_HD(,``Y""``$`8A`K5$```:"#
+M``$$H?_R)(3__HX"`%2/I``(CF,#*`""$",`0Q`K5$``&(X"`'B2`@`\$$``
+M$```*"$F9@`T`@`@(8"#``"`P@``)*4``23&`!@`0Q`J$$```Y"#```D8O__
+MH((``)("`#P`HA`J%$#_]"2$``*/I0`(K@4`5(YC`RB.`@!XCZ0`"``#&$(`
+M@A`C`$,0*Q1``!:/OP!$D@(`/!!``!```"@A`@`P(9##``$DI0`!``,0P`!#
+M$",`0!@A)$0`!RA"````@A@+``,8PZ##``&2`@`\`*(0*A1`__,DQ@`"CZ4`
+M"*X%`'B/OP!$C[X`0(^W`#R/M@`XC[4`-(^T`#"/LP`LC[(`*(^Q`"2/L``@
+M`^``"">]`%`0`/^4H,(``#(F`/\F!P`]#`!2E0)@("&/I0`($`#_3JX%`%@D
+M8P`"`,,0*A!`_Q\D@@`"$`#_'J"C```P8@#_+$(`911`_NNB0P`!)`(`9!``
+M_NBB0@`!*H,`"B0"``D`0Z`*/`*``B1"1!``%!B`CZ4`#`!B&"&,8P````40
+MP@""$",``QC"`$,0(:)"``&/J``$`N`@(0*@*"$"@#`A#``RXP/`."&2`@`H
+MD@,`)I(%`#ZB`@`IH@,`**(>`":/H@`(,*0`_Q"```.N`@!0$)$`-"J"``)>
+M@/\,`!&00)(#`%TD`@#_$$,``B1B``&B`@!=`M$0(0`"$,``4Q`A)$<`,(#B
+M``0#PA`J5$#^_P`1D$".`@`P4B(`!8X"`"RN$0`PK@``+*X``#2.`@`LC@,`
+M-"1"``$`?B`A*$,`!*X$`#048/[PK@(`+*X``"RN```T`M`H(22"``*`I@``
+M*$,``"2$``4`@Q`+``(0@R3#``(`0Q`J$$``!Y"C``"`X@`$`$80*A!```0D
+M!``!)&+__Z"B```D!``!$`#^VJ^D`!!40``#H@4`/1``_\JB```^DD(``2Q"
+M`"Y40``$H@``/B0"`!2B0@`!H@``/HYB`R2/HP`(``(00@!B$",0`/^]K@(`
+M6"1"``$"(A`J$$#^=P`1L$"28@,P`!%`0`$1&"$"(B@A``400`!%$"$``QC`
+M``(0P`!S&"$`4Q`AD&,`,)!"`#!08OYH`*"((8YG```DI0`!`*<0*A!`_F0`
+MH#`A``400`!%$"$``A#``%,0(21$`#`!$1`A``(0P`!3$"&00P`PD((``!!B
+M``<DA``8),8``0#'$"H40/_W`1$0(1``_E(`$;!`$`#^3P#`B"$GO?_@K[``
+M$*^_`!ROL@`8K[$`%(R"`$R,A`!0,+#__XQ2`#P0@``3`@`0(221`)2CL```
+MDZ<```(@("$#H#`A``<00`!'$"$``A#``%(0(8Q#`"@D`@`"$&(`#`#@*"$,
+M`%)_`````!1`__.3IP```@`0(8^_`!R/L@`8C[$`%(^P`!`#X``()[T`(!``
+M__D`X!`A%*```P`````#X``(K(`%J`2B``R,@QP<&*``!B0"``6,@QP<4&(`
+M!(R"!:@#X``(`````(R"!:@`11`A`^``"*R"!:@D`@`%%&+_\P`````0`/_V
+M`````"2E__\GO?_@+*(`(J^U`!2OM``0K[(`"*^Q``2OL```K[\`&*^S``P`
+M@(@A`,"0(0#@@"$!`*@A$$``"P``H"$\`X`"``40@"1C$+P`0Q`AC$(```!`
+M``@`````#``L;@#@*"$`0*`A5J```:ZT``"/OP`8C[4`%(^T`!"/LP`,C[(`
+M"(^Q``2/L````^``"">]`"`0`/_TKB<;V*XG'#00`/_QK(`;V!``_^^N)QO(
+M$`#_[:XG&V@0`/_KIB<;W!``_^FN)QO@$`#_YZR`!:@0`/_EKB<;U!``_^.N
+M)QNT$`#_X:(G&[L0`/_?HB<;Y1``_]VN)QO,)(0;H@P`<)T`X"@A$`#_V```
+M```\$X`#CF2*M!"```8\`H`#C$**N!!&``H`````#`!Z:@`````,`'I7`D`@
+M(:YBBK0\`H`#K%**N#P3@`..9(JT5(```P(`*"$0`/_$)!0``@P`<)T"0#`A
+MCF**M!``_[^N(AO\$`#_O:XG&VP0`/^[KB<;O!``_[FN)QN<$`#_MZ8G&\00
+M`/^UIB<;P!``_[.F)QO"$`#_L:8G&\8PX@#_$`#_KJR"&S@PX@#_$`#_JZR"
+M&SP0`/^IKB<;-(R"``0`X"@A#``9T8Q$```40``"`$"@(:XP&^P0`/^@KC`;
+MZ">]__"OL```K(4;"`"`@"&OOP`$#``4;20%``&.!1L(#``LN@(`("$"`"`A
+M#``4;0``*"&/OP`$C[````/@``@GO0`0)[W_\*^_```,`&M,`````(^_```#
+MX``()[T`$">]_]``H!`AK[```#P%@```@(`AK[\`)*^^`""OMP`<K[8`&*^U
+M`!2OM``0K[,`#*^R``@`X)@A,-+__Z^Q``0!`*`A`2"H(0%`\"$!8+`A,%'_
+M_PP`*6R/MP`T#`!Q>XX$&`@"`"`A```H(0``,"$,`"SJ```X(1;@`!,`%B@K
+M,B,W`"0")0"F$AMPIA,;?*(4&WZB%1M_IA$;<A!B`&```"@A)`(5`%!B``$D
+M!0`!C@080`P`<7NN!1@$#`!QPB8$%^P`%B@K#``*2`(`("$,``B5`@`@(0P`
+M<30`````#`!PM0`````F!1MP`\`P(0P`-X4"`"`ACZ,`,!+``#FL8@``#`!P
+MN@`````,`'$[``````(`("$,`"D\/`6``!;@``0`````C@(;5"1"``&N`AM4
+M#``(?@(`("$,``H8`@`@(1+@`!@`````#`!Q7``````D8P#(C@08""QE`,@`
+M11`A`$`P(20(```D"0#(#`!Q=`!@."&/OP`DC[X`((^W`!R/M@`8C[4`%(^T
+M`!"/LP`,C[(`"(^Q``2/L````^``"">]`#`,`''0)@07[`P`<5P`````)&,`
+MR"QE`,B.!!A``$40(0!`,"$D"```)`D`R`P`<70`8#@A$`#_VP`````,`%)>
+M`B`@(0`"&(``<!@AC&,<`(X$&^BN`AP<K@,<5!"```0``!@A,B(@`%1```$D
+M`P`!$`#_NJ(#')@0`/^C)`4``22E__\GO?_@+*(`#Z^U`!2OM``0K[,`#*^R
+M``BOL0`$K[```*^_`!@`P*`A`."`(0$`J"$``(@A``"0(1!``%@``)@A/`.`
+M`@`%$(`D8Q%$`$,0(8Q"````0``(`````!#@`",D$@#,`.`8(22"&QPDA1M<
+MC$8``(Q'``2,2``(C$D`#*QF``"L9P`$K&@`"*QI``PD0@`0%$7_]B1C`!`D
+M@QOH)@(`0"2$&VB,A0``C(8`!(R'``B,B``,K$4``*Q&``2L1P`(K$@`#"2$
+M`!`4@__V)$(`$(R)``",@P`$C(4`"*Q)``"L0P`$K$4`"!9@``<`````%D``
+M`P````!6```!KA$``%:```&ND@``5J```:ZS``"/OP`8C[4`%(^T`!"/LP`,
+MC[(`"(^Q``2/L````^``"">]`""4@AMR$`#_ZP`"BP(0`/_IE)$;<!``_^>,
+MD1LL$`#_Y8R1&S`0`/_CC)$;2!``_^&,D1M,$`#_WXR1&U`0X/_=)!(`!B2%
+M&Z@D!@`&#`!PG0#@("$0`/_7`````!``_]6,D1M4$`#_TR03``X0X/_1)!(`
+M$`#@*"$,`"Q8)`8`$!``_\P`````$`#_RHR1&^P`@#@A```P(1"@``@``!@A
+M`,<0!B3&``$P0@`!``,80`#%("L4@/_Z`&(8)0/@``@`8!`A)[W_\*^R``BO
+ML0`$K[```*^_``R,H@!,)+``"`"@B"&020!`C$H`/*R@`!R,HP`<``D00`!)
+M$"$``A#`K*,`&`!*0"&1!0`PC@,`#(X'``0D`O_@`&(8)#"E`!\D`N__`.(X
+M)`!E&"6N!P`$K@,`#(T#`"@D`@`#`(`X(1!B`"L`P)`AC@,`"(X$``0\`O_P
+M-$+__P!B&"0\`@$``((@)3P"``$`8A@EK@0`!*X#``B.(@`(/`,`/SP$X?\`
+M0Q`E-(3__S)#``\`1!`D``,>0`!#$"6N(@`(C@(`!#P#_P\T8___`$,0)#P#
+M`#``0Q`E/`,&``!#$"6N`@`$CB(`"(XD`"0\`P"``$,0):XB``BN)```C[\`
+M#(^R``B/L0`$C[````/@``@GO0`0CB(`"#P#@``\!?X/`$,0):XB``B0A!T`
+MC.8<5(X#``P`!!!``$00(0`"$,``1A`AD$(`,#2E__\`91@D,$(`'P`"%0``
+M8A@EK@,`#(T#`"@\`H`")$)$```#&(``8A@ACB4`"(QB```!0"`A,*4/_P$@
+M,"$`0/@)```X(8X#``@D!(``,$)__P!D&"0`8A@E$`#_L:X#``@GO?_@K[``
+M$`"@@"$#H"@AK[$`%*^_`!@,`"WM`("((5(```$```'-CZ,`!(^B```T"8``
+M``,=@``"$H(`8A@E`'`X(0#P$"$D0O__`%``&XXC``"6)1N"-`B```!I&"$R
+M"O__```0$@``````````<%`X`JQG`"B.(@````<8P"1F__P`21`AK$8`+(XB
+M```D9O^P`.4@(0!)$"&L1@`PCB(``"3C``$`92`*`$@0(:Q$`#2.(@``/`,`
+M@`(#,"4`2!`AK$8`((XB&X@00``AC[\`&(XB``".)1N0`$@0(:Q*`0".)```
+MCB,;B`"(("&,@@$```,<`#!"__\`0Q`EK((!`(XB&XR.(P```.(0(0!H&"$P
+M0O__K&(`_!"@``>.(@``/`0``@!($"&,0P#\`&08):Q#`/R.(@``/`0``0!)
+M$"&,0P#\`&08):Q#`/R/OP`8C[$`%(^P`!`#X``()[T`(">]_]"OL@`(,)(`
+M_Z^W`!ROM@`8K[4`%*^T`!"OLP`,K[```*^_`""OL0`$`*"@(0#`J"$`X+`A
+M`0"X(0$@@"$!0)@A$D``#"0"``&/OP`@C[<`'(^V`!B/M0`4C[0`$(^S``R/
+ML@`(C[$`!(^P```#X``()[T`,`P`>E<D!``L`$"((1(@__$D`@`"`B`@(0``
+M*"$,`'"J)`8`+"0"``*N\0``/`:``:("```D`@`*)B@`&"3&:<P``"`A```H
+M(0(@."&B8@``KC0`!*XU``BN-@`,#`!@6:(@```,`'I7)`0%$`!`@"$00``J
+MKB(`%`!`("$``"@A#`!PJB0&!1`F!P`(K@<`#*X0``2,Y@`$K@``"*X````"
+M`"`A```H(22E``$D@@`0+*,`0*R``!"LP@``)(0`%!1@__D`0#`A`B`@(0)`
+M*"$,`%\JK.(`!!1```,`````$`#_O```$"$,`&!(`B`@(8XE`!@,`&"'`D`@
+M(8XD`!0,`'IJ`$"`(0P`>FH"("`A`@`0(1``_Z^NX```#`!Z:@(@("$0`/^K
+M)`(``B>]__`LH@`$K[(`"*^Q``2OL```K[\`#`"@B"$`@(`A%$``"`#`D"$D
+M`O__C[\`#(^R``B/L0`$C[````/@``@GO0`0#`!A$9"$``"2!````!$0@`!0
+M$"$,`&$BK%(`'!``__(``!`A,*4`_R>]__`LH@`*K[\``!!```TD!___/`.`
+M`@`%$(`D8T1`)*4``0!#$"$0@``&,*4`_XQ'```,`&(NC(0`$"0'__\``C@*
+MC[\```#@$"$#X``()[T`$#"E`/\GO?_P+*(``J^_```00``()`/__R2E``$0
+M@``%,*4`_PP`8E^,A``0)`/__P`"&`J/OP```&`0(0/@``@GO0`0)[W_\*^_
+M```\`H`"D$)$:`"`2"$`X%`A,*,`_Q!``!<PQ`#_)&7__P#@,"$PI0#_$(``
+M#P$`."$D9?__)`(``3"E`/\0@@`$`4`P(8^_```#X``()[T`$(TD``2-(@`,
+M`$#X"0`````0`/_YC[\``(TD``00`/_ZC2(`"(TG`!0D:___.((``8SC``@L
+M1@`!)`4``1!@_^TDY``(C&(``!1```*LX@`(K(0`!*!K``B@9@`)K&H`#*QH
+M`!"@8``$C.(`!(TD`!BL8```K.,`!`P`8(.L0P``$`#_W8^_```GO?_P/`*`
+M`J^_``"00T1H``40@`"@0"$08``+`$00(8Q"`!P40``$`````(^_```#X``(
+M)[T`$`!`^`F,A``$$`#_^X^_``",A@`4)`4``8S#``@08/_U),<`"(QB```4
+M0``"K,(`"*SG``0D`@`!H&(`!*QH``B,P@`$C(0`&*Q@``"LPP`$#`!@@ZQ#
+M```0`/_GC[\``">]_^"OL0`$K[\`%*^T`!"OLP`,K[(`"*^P```\`H`"D$)$
+M:!!```D`@(@AC[\`%(^T`!"/LP`,C[(`"(^Q``2/L````^``"">]`"".,@`4
+MD(0```P`83,F4P`(CE````P`84R2)```$@#_\8^_`!0,`&$SDB0``(Y"``".
+M%```C$(``!1```*N0@``KE(`!`P`84R2)```D@(`!"0#``%00P`BC@(`"%1`
+M``<"`"`AD@(`"5!``!N2!0`(4$,`$I(%``@"`"`A```H(0P`<*HD!@`,#`!A
+M,Y(D``".8@`$K@```*YP``2L4```DB0```P`84P"@(`A%H#_W8^_`!00`/_,
+MC[0`$(XB``R.)``$C@8`#`!`^`F.!P`0$`#_Z@(`("$0`/_YCB(`"``"$(``
+M41`AC$(`'%!`_^,"`"`A`$#X"8XD``00`/_?`@`@(2>]__"OOP``#`!A,Y"$
+M``"/OP`````0(0/@``@GO0`0)[W_\*^_```,`&%,D(0``(^_`````!`A`^``
+M"">]`!`\`H`"H$!$:`/@``@``!`A)`,``3P"@`*@0T1H`^``"```$"$GO?_P
+MK[```*^_``0,`'"U`("`(0P`6L<"`"`A#`!F*8X$`!`,`%IS`@`@(0P`6L\"
+M`"`A#`!PN@````"/OP`$C[``````$"$#X``()[T`$">]__"OOP``#`!H%HR$
+M`!"/OP```^``"">]`!`GO?_PK[$`!*^P```PT0#_,+``_P(`*"$"(#`AK[(`
+M"*^_``P,`&'W`("0(0)`("$"`"@A%$``"0(@,"$``!@AC[\`#(^R``B/L0`$
+MC[````!@$"$#X``()[T`$`P`8A8`````%$#_]@!`&"$"0"`A`@`H(0P`8?<"
+M(#`A%$#_\"0#``<0`/_N```8(2>]__"OOP``/`*``I!&10,PI0#_`*`X(0``
+M0"$``"@A#`!AYP``2"&/OP```^``"">]`!`PI0#_)[W_\`"@,"&OOP``#`!A
+M8P``*"&/OP```^``"">]`!`GO?_PK[```#"P`/^OL0`$`@`H(:^_``@,`%LK
+M`("((0(`,"$"("`A#`!:^P``*"$"("`A#`!;'@(`*"&/OP`(C[$`!(^P```#
+MX``()[T`$">]__"OOP``/`*``I!#1&D`P#@A)`(`0#AC``(D!@(``$,P"S#G
+M`/\PI0#_)`@``@P`8><``$@AC[\```/@``@GO0`0)[W_\##&`/^OOP``#`!A
+M8S"E`/^/OP```^``"">]`!`GO?_PK[$`!*^P```PT0#_,+#__Z^R``@"`"@A
+M`("0(:^_``P,`%M9`B`P(0)`("$"`"@A#`!:^P(@,"$"0"`A`@`H(0P`6T@"
+M(#`AC[\`#(^R``B/L0`$C[````/@``@GO0`0)[W_\*^R``BOOP`,K[$`!*^P
+M```0H``.`("0(9##``,D`@"!$&(`/2AB`((00``E)`(`@B0"`(`08@`+/!&`
+M`@)`("$``"@A#`!C$@``,"&/OP`,C[(`"(^Q``2/L````^``"">]`!`F,$?"
+M`@`P(0P`8J4D!0`&EB-'P@(`,"$"0"`A,&(`_P`"$@```QH"`$,0)0``*"$D
+M!P`"IB)'P@P`8E\``````D`@(0``*"$``#`A#`!B+@``."$0`/_EC[\`#%1B
+M_]\"0"`AD,,`!SP0@`(F$4?",&,`#S1E`!`"(#`A/`*``@P`8J6@0T?&E@-'
+MP@(@,"$"0"`A,&(`_P`"$@```QH"`$,0)0``*"$D!P`"$`#_XJ8"1\(\`H`"
+M)$9'P0``*"$D!P`!$`#_W*!`1\$GO?_@K[(`&*^P`!``H)`A`,"`(20%``$#
+MH#`AK[$`%*^_`!P,`&*E`("((9>B```L0@`"$$``"@(@("$20``,C[\`')(#
+M``-08``DE@,``"0"``)08@`+E@(```(@("$``"@A#`!C$@``,"&/OP`<C[(`
+M&(^Q`!2/L``0`^``"">]`"`40/_V`B`@(9("``<\$(`#,$(`#S1%`!`#H#`A
+M#`!BI:("BKR2!8J\`B`@(0``,"$TI0`0#`!BUP`````"("`A```H(0``,"$,
+M`&)?```X(1``_^:/OP`<)`(``11B_]\"("`A`Z`P(0P`8J4D!0`&EZ(```(@
+M("$D!0`&,$+__0!`,"$0`/_KIZ(``">]_^"OL0`4K[``$*^_`!ROL@`8`,"`
+M(1"@`$@`@(@AD,,``U!@`"*4PP``)`(``E!B``N4P@```B`@(0``*"$,`&,2
+M```P(8^_`!R/L@`8C[$`%(^P`!`#X``()[T`(!1`__<``"@AD-``!P.@,"$R
+M$``/-A``$`P`8J4"`"@A`B`@(0(`*"$D!@`!#`!BUP`````"("`A```H(0``
+M,"$,`&)?```X(1``_^B/OP`<)!(``1!R`!<D`@`"5&+_WP(@("&0P@`'%$#_
+MW#P"@`*00D1I%&+_V@``*"$D!0`!#`!BI0.@,"&7H@``+$(``Q!`_]$\`X`"
+ME@(`!JQR1&PP0O\`/`.``J1B1'`0`/_B`B`@(0.@,"$,`&*E)`4`!I>B```"
+M("`A)`4`!C1"``(`0#`A$`#_U:>B```\`H`"C$)$;%!`_\&/OP`</`*``I1&
+M1'`D!0`'#`!BUS#&__\0`/^ZC[\`'">]__"OL0`$K[\`"*^P```0H``-`("(
+M(9##``$``"@A```P(0``."$\`H`##`!B7Z!#BKV/OP`(C[$`!(^P```#X``(
+M)[T`$#P"@`.01HJ])`4``PP`8M<D$``!`B`@(20%``$,`&+7)`8``0(`*"$"
+M("`A#`!;820&``$F`@`!,%``_RX"``,40/_Y`@`H(200``$"`"@A`B`@(0P`
+M6V$``#`A)@(``3!0`/\N`@`#%$#_^0(`*"$0`/_?C[\`"">]__"OL```K[\`
+M!`#`."$`@(`A$*``$0``0"&4PP``)`(#`#!E_P`0H@!5**(#`1!``#0D`@8`
+M)`(!`!"B`"HD`@(`$*(`"3P"@`("`"`A```H(0P`8Q(``#`AC[\`!(^P```#
+MX``()[T`$)!"1&DD`P!`.$(``@!B*`LE!``!``@8P#P"@`(`:!@C)$9%'#"(
+M`/\`9A@A``42`BT$``2@8@`7%(#_]:!E`!:4XP`$)`<`+@(`("$L8@`N`&(X
+M"P``*"$,`&)?``````(`("$``"@A```P(0P`8BX``#@A$`#_WX^_``24PP`$
+M)`<`$CP&@`(L8@`2`&(X"Q``__`DQD3\$*(`%R0"!P`4HO_0`@`@(3P"@`*0
+M0D1I)`4`0"0#`@`X0@`"`&(H"R4$``$`"!C`/`*``@!H&",D1D6$,(@`_P!F
+M&"$`!1("+00`!*!B`!<4@/_UH&4`%A``_]24XP`$E,,`!"0'``H\!H`"+&(`
+M"@!B.`L0`/_1),9%$#!C`/\L8@`$%$``"#P"@`(\!H`"D,-$?)3G``0DQD1\
+M`.,0*Q``_\8`8C@*)$(P```#&(``8A@AC&8``)3G``0``"@AD,,```#C$"L0
+M`/^]`&(X"B>]__```"@AK[\```P`8Q(``#`AC[\```/@``@GO0`0)[W_X`"@
+M$"&OL``0K[\`%`.@,"$D!0`$%$``!0"`@"&/OP`4C[``$`/@``@GO0`@#`!B
+MI0````"3HP`!/`*``B1&1\```"@A)`<``0(`("$,`&)?H$-'P`(`("$``"@A
+M```P(0P`8BX``#@A$`#_[8^_`!0GO?_@K[$`%*^P`!"OOP`8`,"((1"@`!L`
+M@(`AD,,``2QB``(00``=```H(11@`!\#H#`A)`4``0P`8J4#H#`AEZ(``"Q"
+M``(00``3`@`@(20%``0,`&+7```P(0(`("$D!0`!)`8``0P`8M<``````@`@
+M(0``*"$``#`A#`!B7P``."&/OP`8C[$`%(^P`!`#X``()[T`(```*"$,`&,2
+M```P(1``__B/OP`8#`!BI20%``22)@`!EZ(``%!&``@D!0`!`@`@(0P`8M<D
+M!0`$`@`@(20%``$0`/_C```P(0``,"$0`/_@`@`@(2>]_^"OL@`8K[$`%`"@
+MD"$`P(@A)`4``0.@,"&OL``0K[\`'`P`8J4`@(`AEZ(```(`("$``"@A%$``
+M%P``,"$60``'`````(^_`!R/L@`8C[$`%(^P`!`#X``()[T`()8G``22)@`'
+M/`*``B1"1'0`PC`A#`!B7P`'."L"`"`A```H(0``,"$,`&(N```X(1``_^Z/
+MOP`<#`!C$@`````0`/_JC[\`'">]__"OOP``$*``"0#`2"&0PP`#)`(``0``
+M*"$``#`A$&(`!@``."$,`&,2`````(^_```#X``()[T`$)$C``<\`H`")$)$
+M=`!B&"&1*``!D&(`````*"$02``#```P(9$B``&@8@``#`!B7P`````0`/_P
+MC[\``">]_^"OLP`,K[```*^_`!2OM``0K[(`"*^Q``0`P(`A$*``"`"`F"&0
+MT0`#)`(``@``*"$2(@`+```P(0P`8Q(`````C[\`%(^T`!"/LP`,C[(`"(^Q
+M``2/L````^``"">]`"`\`H`"D$-%'9("``<\$H`")E1'Q`!#$"LD!0`%%$``
+M!`*`,"$``"@A$`#_ZP``,"$,`&*E`````)8&``261$?$```H(2S"``(P@P#_
+M`,*("P`$(@(``QH``&08)0*`,"$"(#@A`F`@(0P`8E^F0T?$`F`@(0``*"$`
+M`#`A#`!B+@``."$0`/_7C[\`%">]_^"OLP`,K[(`"*^Q``2OL```K[\`$#P0
+M@`,`P)@AC@:*P`"`D"$`H(@A/`2``CP%@`(DA!&`#`!P="2E$9".`HK`)$(`
+M`1(@``>N`HK`EF,``"0"``$08@`A)`(``E!B``B69@`&C[\`$(^S``R/L@`(
+MC[$`!(^P```#X``()[T`(##%``\DH___,&+__RQ"``(00``$,&+__S#"`(`4
+M0``,,&+__RQ"``(00/_N,,(`@%1`_^V/OP`0`D`@(0``,"$,`%MA`````!``
+M_^>/OP`0`D`@(1``__HD!@`!)!```0(`*"$"0"`A#`!;820&``$F`@`!,%``
+M_RX"``,40/_Y`@`H(200``$"`"@A`D`@(0P`6V$``#`A)@(``3!0`/\N`@`#
+M5$#_^0(`*"$0`/_.C[\`$">]__"OL```K[\`!!"@``<`@(`AD,(``A!```@`
+M```````H(0P`8Q(``#`AC[\`!(^P```#X``()[T`$`P`7>X``````@`@(0``
+M*"$``#`A#`!B7P``."$0`/_UC[\`!#P"@`*00D7L$$```CP"@`*@2$1I`^``
+M"``````GO?_PK[```*^_``0\`H`"D$)%[```*"$40``%`("`(8^_``2/L```
+M`^``"">]`!`,`%LTC(0`$(X$`!`,`%LT)`4``0(`("$,`%I-)`4``A``__2/
+MOP`$)[W_\*^_```\`H`"D$)%[!1```0``"@AC[\```/@``@GO0`0#`!:30``
+M```0`/_[C[\```/@``@``````^``"``````GO?_@K[$`%*^P`!"OOP`8`*"(
+M(12@`($`@(`A/`*``B1&1[B0P@`#,$,`8"0"`"`08@`)*&(`(1!``'(D`@!`
+M4&``"I#&``*.!``0```H(0P`8Q(``#`AC[\`&(^Q`!2/L``0`^``"">]`"`L
+MP@`-$$#_]3P#@`(`!A"`)&,1G`!#$"&,0@```$``"`````".!``0/`:``@(@
+M*"$,`%MZ),9'N!``_^V/OP`8C@0`$#P&@`("("@A#`!;QR3&1[@0`/_FC[\`
+M&(X$`!`\!H`"`B`H(0P`7`LDQD>X$`#_WX^_`!B.!``0/`:``@(@*"$,`%QE
+M),9'N!``_]B/OP`8C@0`$#P&@`("("@A#`!<E23&1[@0`/_1C[\`&(X$`!`\
+M!H`"`B`H(0P`70HDQD>X$`#_RH^_`!B.!``0/`:``@(@*"$,`%T2),9'N!``
+M_\./OP`8C@0`$"0%``$,`&*E`Z`P(8X$`!`\!H`"`B`H(0P`72\DQD>XC@0`
+M$">F``(,`&*E)`4``9>B```00/^REZ(``E1`_[&/OP`8`@`@(0P`6DTD!0`#
+M$`#_K(^_`!B.!``0/`:``@(@*"$,`%UJ),9'N!``_Z6/OP`8C@0`$#P&@`("
+M("@A#`!=E"3&1[@0`/^>C[\`&(X$`!`\!H`"`B`H(0P`7;(DQD>X$`#_EX^_
+M`!@48O^1C@0`$`P`7CP"("@A$`#_D8^_`!B,A``0/`:``B3&1[@,`&(/```H
+M(1``_WL\`H`")[W_\*^_```\`H`"D$)%[#"C`/\PZ@#_$$``"`#`*"$!`#@A
+M`4`P(0$@0"$08``*+&(``Q1```0`8"@AC[\```/@``@GO0`0#`!:%0`````0
+M`/_[C[\```P`7H(`````$`#_]X^_```GO?_@K[$`!#"Q`/^OLP`,K[(`"`"`
+MF"$`$9#``B`@(:^_`!`,`&$SK[````)1$"$``A"``%$0(SP#@`,D8Z&```(0
+M@`!#$"$D0P`8E&0`!!"```H"41`A-`+__Q""``8`!"("D&(`!3P#@`(D8T3\
+MH&0`":!B``@"41`A``(0@`!1$",\`X`#)&.A@``"$(``0Q`A)$,`&)1E``8P
+MI/__4(``\B0#``,T`O__$((`[B2B``*D8@`&D&0`!SP#@`(D8T3\``(2`J!B
+M``N@9``*/`*``@`1&$`D0D?@`&*`(9(%``&2!@``/`2``@P`<'0DA!'0D@(`
+M`11``,X\!H`"`E$0(0`"$(``41`C/`.``R1CH8```A"``$,0(91$`"`0@``)
+M)$,`(#0"__\0@@`&``0B`I!B``$\`X`")&-$_*!D``V@8@`,`E$0(0`"$(``
+M41`C/`.``R1DH8```C"``,00(21#`""48@`$)$+__RQ"`$`00``B`E$0(3P%
+M@`(D@@`JD&,`!22D1(``PC`A)(0``@#$$"4D8P`",$(``Z"C1(`00`"6),,`
+M0`!@$"&(PP``F,,``XC%``28Q0`'B,<`")C'``N(R``,F,@`#ZB#``"X@P`#
+MJ(4`!+B%``>HAP`(N(<`"ZB(``RXB``/),8`$!3"_^XDA``0`E$0(0`"$(``
+M41`C/`.``R1HH8```CB``.@P(23#`""48@`&)$+__RQ"`"!00``IE,(`*)!C
+M``<\!8`")0(`:B1C``(`XA`A)*1$Q*"C1,2(20``F$D``XA*``282@`'B$,`
+M")A#``N(10`,F$4`#ZB)``*XB0`%J(H`!KB*``FH@P`*N(,`#:B%``ZXA0`1
+MB$D`$)A)`!.(2@`4F$H`%XA#`!B80P`;B$4`')A%`!^HB0`2N(D`%:B*`!:X
+MB@`9J(,`&KB#`!VHA0`>N(4`(93"`"@D0O__+$(`$!!``!@DPP`HD&(``3P%
+M@`(E`P"*)$(``@#C&"$DI$3HH*)$Z(AF``"89@`#B&<`!)AG``>(:``(F&@`
+M"XAI``R8:0`/J(8``KB&``6HAP`&N(<`":B(``JXB``-J(D`#KB)`!$F9@`0
+M`B`@(0)@*"$,`&&()`<``Q!```DD`___C[\`$(^S``R/L@`(C[$`!(^P````
+M8!`A`^``"">]`"`D`P`!/`*``J!#1>R.9``0```H(0P`6QXD$``!CF0`$`P`
+M6QXD!0`!CF0`$#(%__\,`%M()`8``28"``$``A8```*&`RH"``,40/_XCF0`
+M$"00``$R!?__#`!;2```,"$F`@`!``(6```"A@,J`@`#5$#_^(YD`!`,`&%,
+M`B`@(1``_]<``!@AC,D``(S*``2,P@`(C,4`#*R)``"LB@`$K((`"*R%``PD
+MQ@`0%,/_]B2$`!`0`/]T`E$0(23&11R0P@`'D@0``#!"`-\T0P`@`$08"CP$
+M@`(`8"@A)(01Z`P`<'2@PP`'$`#_*`)1$"$D`P`#/`*``A``_Q>@0T4&)[W_
+M\*^_``2OL````("`(0P`83.0A```/`*``J!`1>P,`&*2C@0`$`P`84R2!```
+MC[\`!(^P`````!`A`^``"">]`!`GO?_@`(`0(20$`#2OM0`4K[0`$*^S``RO
+ML@`(K[$`!*^P``"OOP`8`*"8(0#`H"$`X*@A`0"0(0P`>E<P40#_`$"`(1(`
+M``\D`@`"`@`@(0``*"$,`'"J)`8`-#P"@`(D0D?0`!$8@`!B&"&N4```KA,`
+M(*X4`"RN%0`PK'``````$"&/OP`8C[4`%(^T`!"/LP`,C[(`"(^Q``2/L```
+M`^``"">]`""0@@`H`*(H)0/@``B@A0`H)[W_\`"`$"&OL```K[\`!`"@("$0
+MH``(,%``_PP`>FH`````/`*``@`0&(`D0D?0`&(8(:Q@``"/OP`$C[``````
+M$"$#X``()[T`$#"$`/\`!!C``&08(0`#&(`\`H`"`&08(R1"1]``!""`)[W_
+M\`""("$\`H`#K[$`!*^_``BOL```)$*A@``#&(",D````&(8(9!D`!L`X(@A
+M/`B``CP'@`*N!0`@K@8`)"8)`!PDYX-@)0B#P```*"$"`#`A#`!Q"`(`4"&.
+M`@`<%$``!P!`("&N,```C[\`"(^Q``2/L````^``"">]`!`,`'$F`````!``
+M__BN,```)[W_\*^P``"OOP`$$*``!`"@@"&,H@`<%$``!0!`("&/OP`$C[``
+M``/@``@GO0`0#`!Q+0`````,`'$?C@0`'!``__>N```<)[W_\*^P````H(`A
+MK[\`"*^Q``0,`'%"`("((8X"`"``0/@)C@0`)`P`<5`"("`A#`!Q20(@("&2
+M!``HC[\`"*(``"B/L0`$C[```"0#``$D`@`"`&00"@/@``@GO0`0)[W_\*^_
+M``",P@`L`$#X"8S$`#"/OP```^``"">]`!`PA`#_%(``!``````\`H`#`^``
+M")!"H9L#X``(```0(3"$`/\4@``$`````#P"@`,#X``(C$*AE`/@``@``!`A
+M,(0`_Q2```4`````/`*``XQ"H90#X``()$(!``/@``@``!`A)[W_\#"$`/\4
+M@``%K[\``#P"@`*,0D?4$$``!`````"/OP```^``"">]`!`,`'"U``````P`
+M83,``"`A$`#_^8^_```GO?_P,(0`_Q2```6OOP``/`*``HQ"1]000``$````
+M`(^_```#X``()[T`$`P`<+H`````#`!A3```("$0`/_YC[\``">]__"OL```
+M,)``_Z^Q``2OOP`(#`!PM3P1@`,6```&DB**Q!!```L\`H`#DB**Q"1"``&B
+M(HK$#`!PN@````"/OP`(C[$`!(^P```#X``()[T`$`P`<4*,1*&8$`#_])(B
+MBL0GO?_PK[```*^_``0,`'"U,)``_Q8```8\!(`#D(**Q"1"__\P0P#_$&``
+M!Z""BL0,`'"Z`````(^_``2/L````^``"">]`!`\`H`##`!Q28Q$H9@0`/_V
+M`````">]__`PI0#_K[\```P`8QHPQ@#_C[\```/@``@GO0`0)[W_\*^Q``2O
+MOP`(K[```(R"`!@`@(@AC%````P`81&2!`"0C@(`'%1```^.`@`@KA$`'(XB
+M`!B.`P`HKA$`(*Q```"2!`"0)&,``0P`82*N`P`HC[\`"(^Q``2/L````^``
+M"">]`!",0@`8$`#_\:Q1```GO?_@K[0`$#"4`/\N@@`"K[8`&*^U`!2OL0`$
+MK[\`'*^S``ROL@`(K[````"@L"$`P*@A,/$`_Q1```PD`P`/C[\`'(^V`!B/
+MM0`4C[0`$(^S``R/L@`(C[$`!(^P````8!`A`^``"">]`"`,`'I7)`0`H`!`
+M@"$00/_Q)`,`"@``*"$D!@"@#`!PJ@!`("$"@"`A#`!A`*(4`)`"@"`A#`!@
+M^*X"``BB`@"1)`0'`"0"`/^B$0"3#`!Z5Z8"`(0`0(@A$$#_WB0#`*D`0"`A
+M```H(20&!P`,`'"JK@(`&`P`>E<D!`,`K@(`=!!`_]0D`P`!`$"0(:X``!RN
+M```@K@``*```F"$\`H`")$*%K*Y"``2N,@`8`B`@(0P`86NN4```)F(``3!3
+M`/\N8@!`)C$`'!1`__0F4@`,#`!Z5R0$`!P`0"`A)`8`'```*"$,`'"JK@(`
+M%`*`("$,`&-=`@`H(11`_[8D`P`OKK``````&"$0`/^RKA8`F">]__"OOP``
+MC(,`%#$I`/^@90``C(,`%*!G``&,@P`4H&@``HR%`!2D9@`0#`!G(*RI`!2/
+MOP```^``"">]`!`GO?_PK[\`#*^R``BOL0`$K[````"`D"&0A`"0,+``_PP`
+M81$PT0#_`@`H(0(@,"$,`&>%`D`@(9)$`)`,`&$B`$"`(0(`$"&/OP`,C[(`
+M"(^Q``2/L````^``"">]`!`GO?_PK[\```P`9OXPI0#_C[\```/@``@GO0`0
+M)[W_\*^_``ROL@`(K[$`!*^P````@)`AD(0`D#"P`/\,`&$1,-$`_P(`*"$"
+M(#`A#`!GDP)`("&21`"0#`!A(@!`@"$"`!`AC[\`#(^R``B/L0`$C[````/@
+M``@GO0`0)[W_X*^S``ROL@`(K[$`!*^P``"OOP`0`("((9"$`)``P)`A`."8
+M(0P`81$PL`#_CB(`*!!``!\"("`ACB,`'!!@``<`8"@AC&(`&(Q"```40``"
+MKB(`'*X@`"".(@`HK'(`!"1"__^N(@`H)`(``:!P``"L<P`(H&(``PP`95F@
+M8``!DB0`D`P`82(`0(`A)`(`H@`0$`J/OP`0C[,`#(^R``B/L0`$C[````/@
+M``@GO0`@#`!A(I(D`)`0`/_V)`(``R>]_^"OLP`,K[(`"*^Q``2OL```K[\`
+M$`"`B"&0A`"0`,"`(0#@F"$,`&$1,+(`_XXB`"@00``A`````(XF`!P0P``7
+M)`(`H8S"`!B,0@``%$```JXB`!RN(``@CB(`*"0#``&LT``$)$+__ZXB`"@`
+MP"@A`B`@(:#2``"LTP`(H,,``PP`95*@PP`!DB0`D`P`82(`0(`A)`(`H0`0
+M$`J/OP`0C[,`#(^R``B/L0`$C[````/@``@GO0`@#`!A(I(D`)`0`/_V)`(`
+M`R>]__"OL```K[\`!`P`:"0`@(`A#`!Z:HX$`!`,`'IJC@0`&`P`>FJ.!`!T
+M#`!Z:HX$`!0,`'IJ`@`@(8^_``2/L````^``"">]`!`GO?_PK[(`"*^Q``2O
+ML```K[\`#`"`B"&0A`"0,+``_PP`81$`P)`A)@/__RQB``800``;,@(`$``#
+M$(`\`X`")&,1^`!#$"&,0@```$``"`````"6(@"$ID(```P`82*2)`"0```0
+M(8^_``R/L@`(C[$`!(^P```#X``()[T`$!``__62(@"5$`#_\Y(B`)00`/_Q
+MEB(`B!``_^^6(@"&$$``!3(%``\,`&A<`B`@(1``_^JF0@``#`!A(I(D`)`0
+M`/_I)`(``B>]__"OL@`(K[$`!*^P``"OOP`,`("0(9"$`)`PL0#_#`!A$3#0
+M__\F(___+&(`!Q!``",R(@`0``,0@#P#@`(D8Q(0`$,0(8Q"````0``(````
+M`*90`(0,`&$BDD0`D```$"&/OP`,C[(`"(^Q``2/L````^``"">]`!`R!0#_
+MHE``E0P`9O@"0"`A$`#_\@`````0`/_PHE``E!``_^ZF4`"($`#_[*90`(8"
+M`"@A#`!H9@)`("$0`/_G`````!!```8R)0`/,@8`_PP`:(4"0"`A$`#_X```
+M```,`&$BDD0`D!``_]\D`@`")[W_\#"E`/^OOP``#`!H0##&`/^/OP```^``
+M"">]`!`GO?_@K[,`#*^R``BOL0`$K[\`%*^T`!"OL```C)0`"#"S`/\PQ@#_
+M`!,00(Z#`!@`1A`A``(1@`!BB"$2(``0`("0(3(B``\D0@!/)`/_\`!#*"0"
+M(Q@D`&40(0!#$"L40``'`&`@(;QQ```D8P`0`(40(0!#$"L00/_[`````(XE
+M`#PD`@`!$*(`"@``("&/OP`4C[0`$(^S``R/L@`(C[$`!(^P````@!`A`^``
+M"">]`"``!A$``%,0(0!%@`0"0"`A#`!D-P(`*"$40``(`!,0@`!4$"&N(```
+MC$,`@```("&L0P"`$`#_Z:X@`#P"0"`A#`!D*P(`*"$40/_D)`0`I1``__,`
+M$Q"`)[W_\#"$`/^OL```K[\`!`P`80@`H(`AC$,``#!C`/\`0Q@AK@,`"(Q"
+M`"0P0@`?+$,`!`!`*"$48``"H@(`DR0%``,PI`#_``0AP"2$"``,`'I7H@4`
+MDP!`&"&N`@`P$$``(B0$`*@``A`C,$('_P!B$"$D!`@@#`!Z5ZX"`"P`0!@A
+MK@(`-!!``!@D!`"J``(0(S!"`!\`8A`A)`0#``P`>E>N`@`XK@(`>!!```\D
+M!``!D@0`D#P%@`(F!P"<`@`P(0P`8)HDI9BD)`(`_Z8"`(0"`"`A#`!CG:8`
+M`(8\`H`"K%!'V```("&/OP`$C[````"`$"$#X``()[T`$">]_^"OL@`(K[$`
+M!*^_`!BOM0`4K[0`$*^S``ROL````("((9"$`)`,`&$(CC,`"`!`D"&.8@``
+M)`/__@!#$"2N8@``)`(``JYB``".8@``,$(``A1`__TD`@`&KF(`:)(B`)..
+M)``P```H(0`",<`DQ@@`#`!PJ@`"@$".)``T```H(20&"""N(``\#`!PJJX@
+M`$"2)@"3)B0`1```*"$,`'"J``8PP)(F`),``"@A)B0`7`P`<*H`!C#`KF``
+M;(XE`"P2```,``"@(0"@("$\`@!`-$*``":4``&L@@```I`8*R0"``&L@@`(
+MK(``/!1@__<DA`!`KF4`&(Y"``0P0@`04$``!(XP`#B.8@!$KF(`1(XP`#B.
+M,@!X``"@(8X#``0D`H#_)!4``0!B&"0\`H`")$*0.*Y"``2N$@`<K@,`!*X5
+M``"N40```@`@(0P`9`XFE``!+H(`0"80`"`40/_O)E(`##P"`$`T0@!`KF(`
+M@(YC`(`\`O_^-$+__@!B&"0D`@%'KF,`@*YB``@D`@#_IB(`A*8@`(:/OP`8
+MKG4``(^T`!"/M0`4C[,`#(^R``B/L0`$C[````/@``@GO0`@)[W_\*^Q``2O
+MOP`(K[```(R"`!P`@(@AC%````P`81&2!`"0C@(`/%1```^.`@!`KA$`/(XB
+M`!R6`P"*KA$`0*Q```"2!`"0)&,``0P`82*F`P"*C[\`"(^Q``2/L````^``
+M"">]`!",0@`<$`#_\:Q1``",A@`(```@(:S%`'2,PP!T+(($``!E&"008``#
+M)(0``11`__H``````^``"```$"&,A@`(```X(8S"```LZ`0`).<``31"0`"L
+MP@``C,0`>(S"`'",PP```$00)3!C0``48``#`$40)!4`__,`````C,,``"0$
+MO_\``A`K`&08)`/@``BLPP``)[W_\*^E``"OI@`$CZ4``(^B``2/HP``C(8`
+M"*RB``BL8``,C,(`````("$T0D``K,(``*S'`'",P@!X`$<0)!1```<L@P0`
+M$&``!22$``&,P@``,$)``!1`__<`````C,,``"R"!``D!+__`&08)*S#```#
+MX``()[T`$">]_^"OL0`4K[``$*^_`!B0Z0``C((`")#H``&OI0``KZ8`!(Q#
+M`!@`"8!``@B`(0`0$8``8A@AKZ,`"(^E``@`"$$`CZ8```$)0"$D!P`!`("(
+M(0$'.`0,`&1-`!"`@`(1&"&,8@!$5$``#(QC`%R/H@``K&(`1`(1&"&/I``$
+MC[\`&(^Q`!2/L``0```0(:QD`%P#X``()[T`((^B```0`/_UK&(``">]_^"O
+MOP`0D.@```#@8"&0YP`!C(D`"``($$``1U@AKZ4````+:("OI@`$KZ``"(TC
+M`!@!I!`A`(!0(8Q$`%P`!SD```L1@`!B&"$`Z#@A)`(``:^C``P`XG`$KZ0`
+M"```,"&-(@``+,@$``&J*"$T0D``K2(``(TB`'@`3C@D$.``!B3&``&/H@`(
+MCZ,``(^D``2L0P``K*0`7(TB```P0D``%$```P`````5`/_M`````(TB```D
+M`[__`$,0)!#@``6M(@``C[\`$```$"$#X``()[T`((^C``@`"Q"`CZ4``(^F
+M``0`2A`AK$,`7`%`("$,`&1L`8`X(1``__./OP`0)[W_T*^S`!ROL@`8K[$`
+M%*^_`""OL``0`*"0(8R#``B0I0```("((9)$``&,8P`8``400`!$$"$``A&`
+M`&(8(:^C``"/HP````0A``"%("$D`@`!`()@!```6"$``)@ACD@`"!!@`!,`
+M`%`ACZ0``(^E``"/H@``)`/_\`"#("0P0@`/)$(`3P!#$"0`@B`A`*,H)`"%
+M$"L40``&`````+RQ```DI0`0`(40*Q!`__P`````CZ(``(Q#`#PD`@`!$&(`
+M"20$`*&/OP`@C[,`'(^R`!B/L0`4C[``$`"`$"$#X``()[T`,(XP`#PM`D`!
+M)`E```$"2`L2```Z`0E`(XX&`!R,P@``%$```JXB`#RN(`!`EB,`B@`)%``T
+M18"`)&/__S1$`(`D`@`!K-$```(*F`JN`@``%0``**8C`(JN!0`$CD,`!(X$
+M``0D`H#_`&H8(0""("2LT@`()&=``"1B$``D92``)&8P`*X$``2N`@`,K@4`
+M$*X&`!2N!P`8K@,`"!%@``(!25`AK7```!4`_]4"`%@A`8`H(0P`9#<"("`A
+M%$``!P(@("$"8"@A`@`P(0P`9&P"0#@A$`#_P@``("$"8"@A`@`P(0P`9)8"
+M0#@A$`#_O```("$0`/_9K@0`!!``_[@D!`"F)[W_\*^_```,`&37`````(^_
+M```#X``()[T`$">]__"OOP``#`!DUP````"/OP```^``"">]`!`GO?^PK[,`
+M+*^_`$2OO@!`K[<`/*^V`#BOM0`TK[0`,*^R`"BOL0`DK[``((R"``BOH``(
+MKZ``#*^B``",50!L`("8(:^@`!`2H``2KZ``%)""`),00``/``"@(20"``$"
+M@A`$`J(0)#*%`/\D!@`!)I0``0``."$``$`A%$``I20)``B28@"3`H(0*Q1`
+M__0D`@`!CZ,``(QU`'RL=0!\$J``C(^_`$2OH``$CZ0`!))B`),``*`A$$``
+M?P`$N"L`%Q"``%,0(21"`$2OH@`8`N#P(1+@`(TD`@`!)H,`$`!B$`0"HA`D
+M4$``;))B`)./H@``CZ0`&(Q#`!@`'A&``&*P(1+``!",A0``,L(`#R1"`$\D
+M`__P`$,P)`+#&"0`9A`A`$,0*Q1```<`8"`AO'$``"1C`!``AA`A`$,0*Q!`
+M__L`````4*``5))B`),PH@`/)$(`+R0#__``0S`D`*,8)`!F$"$`0Q`K%$``
+M!P!@("&\<0``)&,`$`"&$"$`0Q`K$$#_^P````",H@`$,$(`@!!``!$`````
+M5H``/Y)B`).,H@`$)`,`0``"%`(P0@!_5$,`.9)B`).,H@`$,$*``%!``#62
+M8@"3C*(`!"0#_W\`0Q`DK*(`!(RB`!R,0@`($$``!@````",0P`$C$0`"*^B
+M`!"OHP`4KZ0`#(RB``",HP`$)`3_X#!C`&@48``[`$20)(RB``2/HP`(CZ0`
+M#``"%`(P0G__`&(8(0"#(".OHP`(KZ0`##*0`/\R\0#_`F`@(0(`*"$,`&B7
+M`B`P(5)```>.9`"8CD(`'(^C`!",0@`($$,`"0````".9`"8CZ@`%(^I``P"
+M`"@A`B`X(0P`7Q```#`AKZ``"!9`_Z\"0"@ADF(`DX^D`!@FE``!`H(0*R2$
+M``BOI``8%$#_B"?>``*/H@`$)$(``:^B``0L0@`"%$#_>8^D``2/OP!$C[X`
+M0(^W`#R/M@`XC[4`-(^T`#"/LP`LC[(`*(^Q`"2/L``@`^``"">]`%"NP``,
+M$`#_SC*0`/\0`/]U`H(0!`P`7Q".9`"8$`#_6I)B`),GO?_PK[$`!*^_``RO
+ML@`(K[```)""`)`\`X`")&-'U``"$(",D@`(`$,0(20#``$`@(@AK$,``(Y0
+M``2.0@`(`@(0)!!``"@R`@!`KE``!!1``"$`````,@(`!!1``!H`````,@(`
+M`A1``!,`````,@(``11```P`````,@(!`!!`_^T`````CD(`1#!"#``00/_I
+M``````P`9IH"("`A$`#_Y0`````,`&5@`B`@(1``__,R`@$`#`!FZ@(@("$0
+M`/_L,@(``0P`9JH"("`A$`#_Y3("``(,`&9O`B`@(1``_]XR`@`$DB,`D#P"
+M@`*/OP`,C[(`"(^Q``2/L```)$)'U``#&(``8A@AK&````/@``@GO0`0)[W_
+M\*^Q``2OOP`(K[```(R0``@`@(@AC(0`F```*"$``#`A```X(0P`7EL``$`A
+MC@,`%#P"`?\T0O__`&(8)*X#`!2.`@!LK@(`;(X"`'RN`@!\C@(`<!1`__XD
+M`O__K@(`=(X"`$0P0@$`$$``!"0"``&N(@``)`(``Z8B`(2.)`"8```H(0``
+M,"$``#@A#`!>6P``0"&/OP`(C[$`!(^P```#X``()[T`$">]__"OOP``E(,`
+MA`"`$"&,A`"8I$,`CB0#`("D0P"$```H(0``,"$``#@A#`!><0``0"&/OP``
+M`^``"">]`!`GO?_PK[```*^_``BOL0`$C((```"`@"$00``"C)$`"*R```".
+M(@!$,$(!`!1```T`````CB(`1#!"`@!00``#H@``DB0"``*B`@"2D@@`DHX$
+M`)@``"@A```P(0P`7E0``#@ACB(`1#!"`(!40``9E@(`A(XB`$0P0@"`%$``
+M!20"``*6`P"$)`(`@!!B``<D`@`"I@(`A(^_``B/L0`$C[````/@``@GO0`0
+ME@(`CHX$`)@``"@AI@(`A```,"$``#@A#`!>?@``0"$0`/_SC[\`"(X$`)@`
+M`"@AI@(`CB0"`("F`@"$```P(0``."$,`%Z```!`(1``_]X`````)[W_\*^P
+M````@(`A/`2``J^_``0,`'!T)(02+)8"`(R/OP`$)$(``:8"`(R/L````^``
+M"">]`!",@@`(``4N0*Q%`!0D`@`!`^``"*2"`(2,B0`(,*4`_P`%$<"-(P`8
+M`&(@(1"``!$D`@`!,((`#R1"`$\D`__P`$-`)`"#&"0`:!`A`$,0*Q1```<`
+M8#@AO'$``"1C`!``Z!`A`$,0*Q!`__L`````)`(``0"B$`2(@P`HF(,`*XB%
+M`"R8A0`OJ,,``+C#``.HQ0`$N,4`!P/@``BM(@!L)[W_X*^S``ROL0`$K[``
+M`*^_`!2OM``0K[(`"(R4``B0IP``D*8``8Z#`!@`!Q!``$80(0`"$8``0X@A
+M`*"`(1(@`!``@)@A,B(`#R1"`$\D`__P`$,H)`(C&"0`91`A`$,0*Q1```<`
+M8"`AO'$``"1C`!``A1`A`$,0*Q!`__L`````CB(`/``&&0``9Q@A)`0``0!D
+MD`000``*```8(8^_`!2/M``0C[,`#(^R``B/L0`$C[````!@$"$#X``()[T`
+M(`)@("$,`&0W`D`H(11``"H"8"`AD@,``B0"``$08@`BE@(`$!!@`!P`````
+MC@,`%!!@``,``B0`/`(@``""("6N)```D@(``)($``$D`P#```(0@`!4$"$\
+M!@#``&0P"HQ%`(`D0P"`$(``"9("``(``A2``,(0)0"B$"6L8@``)`(``:XB
+M`#P0`/_4```8(1``__@``A"```(4`#1"@``0`/_HKB(``#P#0````A0`$`#_
+M^P!#$"4,`&0K`D`H(11`_\8D`P"D$`#_TY(#``(PI0#_,,8`_P`%*$``IB@A
+M``4H@`"D*"&,HP!$$&``!```$"&,8@`<C$(`")!"``,#X``(`````">]_]"O
+MLP`<,-,`_Z^R`!@`$Q$`,+(`_Z^U`"2OM``@K[$`%*^_`"BOL``0`("((0!2
+M$"$`$AA`)`0``0!$(`0`<Q@ACB4`"*^@``BOH``,KZ,``*^D``2/H@``C*,`
+M&```J"$``A&``&(@(1"``!```*`A,((`#R1"`$\D`__P`$,P)`"#&"0`9A`A
+M`$,0*Q1```<`8"@AO'$``"1C`!``IA`A`$,0*Q!`__L`````C((`/!1``$,D
+M`P"CCZ(````"$(``41`AC$4`1!"@`#T``!@A,*(`#R1"`"\D`__P`$,P)`"C
+M&"0`9A`A`$,0*Q1```<`8"`AO'$``"1C`!``AA`A`$,0*Q!`__L`````C*(`
+M'(Q#``@08``%`````(QT``2,8@`(`&"H(:^B``R,H@``C*,`!"0$_^`P8P!H
+M%&``"P!$@"2,H@`$CZ,`"``"%`(P0G__`&(8(:^C``B/H@`,CZ,`"`!#$".O
+MH@`,`B`@(0)`*"$,`&B7`F`P(5(``!J.)`"8C@(`'(Q"``@050`)`````(XD
+M`)B/J0`,`D`H(0``,"$"8#@A#`!?$`*`0"&OH``(%@#_Q@(`*"$``!@AC[\`
+M*(^U`"2/M``@C[,`'(^R`!B/L0`4C[``$`!@$"$#X``()[T`,(^I``P"0"@A
+M```P(0)@."$,`%\0`H!`(1``_^P`````C((`""0%``&,0@!$,$,`P"0"`(!0
+M8@`$E((`A```*"$#X``(`*`0(51#__T``"@A$`#_^P`````GO?_PK[\`!*^P
+M````@(`AC(0`""0#_[B,@@`(`$,0)*R"``B,@@``)`/__@!#$"2L@@``)`(`
+M`JR"```,`'IJC@0`,`P`>FJ.!``T#`!Z:HX$`'B2!`"0#`!@QHX%`)R/OP`$
+MC[````/@``@GO0`0C(0`"#"E`/\PQP#_``400(R&`!@`1Q`A``(1@`!&$"&,
+M0@````48@`!D&"$\!@`!,$*``#3&``$00``%`&`H(8QB`(``1A`E`^``"*QB
+M`(",8P"`/`(``22E`(`4X``"`&(0)31B``$#X``(K*(``(R"``@PI0#_``4H
+M@`"B*"&,H@"`/`,``31C``$`0Q`D`^``"``"$"LGO?_PK[$`!*^_``BOL```
+MC)``"#P"`$`PL?__C@8`@```*"$D!P`U`,(0):X"`(`\!H`")`($`!(B``PD
+MQD7PC@8`1"0#_]4`$1(``,,P)`#"$"6N`@!$C[\`"(^Q``2/L````^``"">]
+M`!`,`&)?`````!``__..!@!$C(,`"#"E`/\\"``!/`?__@`%$(`PQ@#_-0@`
+M`33G__X0P``%`$,@(8R"`(``2!`E`^``"*R"`(",@@"``$<0)`/@``BL@@"`
+M)[W_X*^R``BOOP`0K[,`#*^Q``2OL```C((`"#"E`/\PQ@#_C$,`&``%*$``
+MIB@A``41@`"`D"$`8B`A$(``#S""``\D0@!/)`/_\`!#,"0`@Q@D`&80(0!#
+M$"L40``'`&`@(;QQ```D8P`0`(80(0!#$"L00/_[```````%F(`"<A`AC$0`
+M1!"``#$P@@`/)$(`+R0#__``0S`D`(,8)`!F$"$`0Q`K%$``!P!@*"&\<0``
+M)&,`$`"F$"$`0Q`K$$#_^P````",@P``)`+_X`!BB"02(``+)B(`(`!1$"L"
+M(!@A%$``!P(@*"&\<0``)&,`$"2B`"``0Q`K$$#_^P````",@P`<)`(``:R"
+M``"L<@``K(``!`P`9`Z,<``($B``$P)R$"$2```)K%$`1(XB`!R,0@`($%``
+M!H^_`!".`@`8`@`@(0P`86NL4@``C[\`$(^S``R/L@`(C[$`!(^P`````!`A
+M`^``"">]`""L0`!<$@#_]JQ``$00`/_QC@(`&">]__`T`K]H$*(`!*^_``"/
+MOP```^``"">]`!`D`@`!5(+__(^_```,`&VM`````!``__B/OP``)[W_\"0$
+M``&OOP``#`!H^#0%OVB/OP```^``"">]`!`GO?_PK[\```"`*"&,A`"(#`!T
+M[P`$((*/OP`````0(0/@``@GO0`0`^``"```$"$GO?_P/`*``J^P```D4$:<
+M/`*``B1"1H`"`A`K$$``!:^_``2/OP`$C[````/@``@GO0`0C@(```!`^`DF
+M$/_\/`*``B1"1H`"`A`K4$#_^HX"```0`/_TC[\`!``$$",`@B`D``04``!$
+M(",`!!&``((@(0`$$0``@B`A/`*``B1",!0`!":"`((@(0/@``B`@@``&(``
+M%"0(`!0H@R<1)`(G$`"#$`MP2#`"`((@(QC```M`!4@`0`)(`!"B__X`11@C
+M/`<``P!`*"$$8``(-.<-0`##,",<P/_W`````!R`_^\H@R<1`^``"``````0
+M`/_X`&<8(0/@``@``````^``"``````\`J#`-$(`H(Q"```#X``(,$(`#R>]
+M_^"OOP`0#`!I7``````00`!#C[\`$$"`X`````````````````!`@.@`````
+M````````````/`.``+QI```\`H``)&,`$#1"#_\`0Q`K$$#_^@````!``H``
+M````````````````/`/__S1C__@`0Q`D-$(``T""@`````````````````!`
+M@.``````````````````0(#H`````````````````#P#@`"\:```/`*``"1C
+M`!`T0@__`$,0*Q!`__H`````0`*``````````````````#P#__\T8__X`$,0
+M)#1"``-`@H``````````````````0`*``*^B``"/H@``CZ(``"0#__P`0Q`D
+MKZ(``(^B``!`@H``C[\`$`/@``@GO0`@/`2@P#2$`"",A0``)`+^_SP#H,``
+MHB@DK(4``(R%```D`OW_-&,`D`"B*"2LA0``C&4``#2E``$#X``(K&4``#P#
+MH)`T8T``C&4``"0"__P\!*"0`*(H)*QE```TA$`$C(4``#P#__PT8___`*,H
+M)#P"H)"LA0``-$*8<(Q%```TI0`/K$4``(R%```\`@`!`*,8)`!B*"4#X``(
+MK(4``#P#H,`T8P`@C&(``#1"`P`#X``(K&(``#P%H,`TI0!@C*8``#P#__X\
+M`@`!``0A@#1C__\`@B`D`,,8)`!D,"6LI@``C*8``#P"``(`PC`E`^``"*RF
+M```PA`#_``01@#P&H,`\!:#`,$<`0"0"``$TQ@!@$((`"C2E`&2,PP``)`+_
+MOS1C`#"LPP``C,,```!B$"0`1Q@E`^``"*S#``",HP``)`+__@!B&"00`/_S
+MK*,``">]__"OL```K[\`!`P`:5PPD`#_`$`P(3P#H,`D`@`!$@(`%S1C`&``
+M$!`G/`.@P``0(<`T8P!@``(1P#!%`(`PA`"`C&,``!#```HD`O]_`&(0)`!%
+M&"6/OP`$C[```#P"H,`T0@!@K$,```/@``@GO0`0`&(0)!``__<`1!@EC&,`
+M`%#```,T8P$`)`+^_P!B&"0\`J#`-$(`8*Q#```0`/_B`!`0)R>]__"OOP`$
+M#`!I7*^P````0(`A/`*``@P`:>F01$8J/`*``@P`:@"01$8I/`*@P#P#[_\T
+M0@!@-&/__XQ%```2```4/`(0``"C*"0\`J#`-$(`8#P#H,"L10``-&,`((QE
+M```D`N__/`2@P`"B*"0TA`"0K&4``(R%``"/OP`$C[```#2E``*LA0```^``
+M"">]`!`0`/_M`*(H)4`(8```````-0@``4"(8`````````````/@``@`````
+M/`.@`!"```XT8P0`**(`$!!```LD`O__)*7__Q"B``@`````D&(``"2E__\D
+M8P`!H((``"0"__\4HO_Z)(0``0/@``@`````)[W_X`.@("&OOP`0#`!J620%
+M``^3HP``C[\`$#P$@`(``Q!")(5'X#!"``$P8P`!H(-'X*"B``$#X``()[T`
+M(">]_^`\`Z#`K[\`$#1C`)",8@``/`6@P#2E`&"OH@``CZ(``#P$_O\TA/__
+M-$(`!*^B``"/H@``K&(``(RB``"OH@``CZ(```!$$"2OH@``CZ(```P`:QVL
+MH@``#`!IV0``("$,`&U)``````P`::L`````)`(#Z*^B``"/H@``)$+__Z^B
+M``"/HP``)`+__Q1B__H\!*#`-(0`8(R"```\`__O-&/__Z^B``"/H@```$,0
+M)*^B``"/H@``#`!INZR"```,`&HJ``````P`:T0`````#`!K<0`````,`&IK
+M`````#P"@`(,`&OU@$1&*`P`:E$`````C[\`$`/@``@GO0`@/`*@P#P%_^\T
+M0@!@-*7__XQ#``!0@``#`&48)#P"`!``8A@E/`*@P#1"`&`#X``(K$,``">]
+M__"OL```K[\`!`P`:5P`@(`A`$`P(3P#H,`D`@`5)`0`"0!0(`HT8P!H/`*@
+MP(QE```T0@!@K&0``(Q%```2```%/`*@P!#``",D`O[_-*4!`#P"H,`T0@!@
+MK$4``!(``!F,10``%,``%3P"$``\`N__-$+__P"B*"0\`J#`-$(`8*Q%``",
+M10``%@``!H^_``10P``$-*4!`"0"_O\`HB@DC[\`!(^P```\`J#`-$(`8*Q%
+M```#X``()[T`$!``_^X`HB@E4,#__3P"$``0`/_H/`+O_Q``_]X`HB@D/`:@
+MP#P"__TTQ@!@$(``!C1"__^,PP``/`(``@!B&"4#X``(K,,``(S#````8A@D
+M`^``"*S#```\!J#`/`+^_S3&`&`0@``&-$+__XS#```\`@$``&(8)0/@``BL
+MPP``C,,```!B&"0#X``(K,,``#P$H,`TA``@C(,``#P"__LT0O__`&(8)`/@
+M``BL@P``*((`!!!```L`````)`(``0"",`0`!A`G/`.@L8QC``!0H``"`&(8
+M)`!F&"4\`:"QK",```/@``@`````/`*@L31"``B,0P``)`(``0""$`0``C`G
+M)`(``1"@``8`@A`$`&88)#P"H+$T0@`(`^``"*Q#```0`/_[`&(8)3P$H,`T
+MA``@C(,``#P"__<T0O__`&(8)`/@``BL@P``/`*@P#1"`"`D`P`!K$,``!``
+M__P\`J#`)[W_X*^S``ROL@`(K[$`!*^P```\`H`#K[\`$(Q#H80`!!!``*"0
+M(0!B@"$`P)@A%*``"```B"&/OP`0C[,`#(^R``B/L0`$C[````/@``@GO0`@
+M`!$@0`)D*"$F,0`!#`!L1P($("$",A`K5$#_^@`1($`0`/_QC[\`$">]_^"O
+ML0`4K[``$*^_`!@,`&P^``````!`@"$\`H`#K%"A@"11H8`D`@`!$@(`40``
+M```6```"-`+P`*XB``0\$(`#)A"A@#P"H*"N`@`4)`(``JX"`!@F!@`<)`0`
+M`20%``$,`&M2K@``$"8&`!XD!`!`#`!K4B0%``$F!@`@)`0`00P`:U(D!0`!
+M)@8`(B0$`$(,`&M2)`4``28&`"0D!`!##`!K4B0%``&6`@`D)`4`("8&`"H`
+M`A!"+$,`(`!#*`L,`&M2)`0`1"8&`"8D!`!D#`!K4B0%``&6`@`F)`4`$"8&
+M`&H``A!"+$,`$`!#*`L,`&M2)`0`928&`"@D!`!U#`!K4B0%``&6`@`D)`4`
+M""8&`(H``A!"+$,`"`!#*`L,`&M2)`0`=B8&``PD!``=#`!K4B0%``$F!@`*
+M)`0`'B0%``$,`&M2)A``"`(`,"$D!``?#`!K4B0%``&/OP`8C[$`%(^P`!`#
+MX``()[T`(`P`:]D#H"`AEZ(````"&@(0</^M/`(``20"``)48O^L/!"``Q``
+M_Z@\`@`$)[W_\`"`*"&OOP``#`!L1R0$"'B/OP```^``"">]`!`\`H`"`^``
+M"*Q$1BP\`H`"`^``"(Q"1BP\`E'K-$*%'P""`!D\`H`"```@$``$(8(#X``(
+MK$1&,#P"@`(#X``(C$)&,#P"@`(#X``(C$)&-#P"@`(D0C!4``08@`!B&"$`
+M!!!`)[W_\#P(H,`P1P`.+((`"*^_``2OL```-0@`8!1```4`@#`AC[\`!(^P
+M```#X``()[T`$(T%```\`H`"K$9&-"0"__$`HA`D`$<H)8QD```TI0`!#`!K
+MX:T%```\`H``)$(#`(Q$`!0``"@A$(``!"0&)8",@@`4`$#X"8R$```,`&OD
+M``````P`:^<`0"`A0`A@```````!`(`A/`'__S0A__X!`4`D0(A@````````
+M``````````P`:^\R$``!/`.``JQB1]Q`@$@`````````````````0()8````
+M`````````````$`(8```````,A```0$00"5`B&``````````````````$`#_
+MQX^_``0\`J"S-$(`'(Q"```GO?_PKZ(``(^B```P0@`!`^``"">]`!`\`J$`
+M.(0``@""("&4@@```^``"*2B```#@#@A/!R``R><QK``!!!``$00(0`"&8``
+M0Q`A``(0@`!$$"$``A"``$00(3P#:-L``B&`-&.+K0"#`!@`!!?#```8$``#
+M&P,`8B`C/`(4^#1"M8D`@@`8``0?PP``$!```A-#`$,H(P`%$$``11`A``(9
+M@`!#$"$``A"``$40(0`"$(``11`A``(10`""*"-`!D@`0`-(``!F&",\`@`#
+M!&``"C1"#4``91`J%$#_^0``````@R`C7(#_Y3P"%/@`X.`A`^``"``````0
+M`/_V`&(8(2>]__"OOP```X`0(3P<@`,,`&M,)YS&L#P"O\``0``(`````">]
+M__"OOP`$K[````.`@"$\'(`##`!L@B><QK`"`.`AC[\`!(^P`````!`A`^``
+M"">]`!`#X``(```0(2>]_^"OL@`(K[```*^_`!"OLP`,K[$`!`"`@"$``"@A
+M)!(``0``&"$#@)@A/!R``R><QK`D`O_^$((`-RB"__\00``L)`+__R0"__U0
+M@@`"``"`(280``$D`P`!$&``&#P"@``D40,`CB0`&!"```<\`X`#C((`%(R$
+M````0/@))`4`!`!`*"$\`X`#`!`10"1CBL@`0Q`AKB(`&#P"@`*L4$8X$*``
+M#XXD`!B,@@`4C(0``"0%``4`0/@)``````)@X"$"0!`AC[\`$(^S``R/L@`(
+MC[$`!(^P```#X``()[T`((R"`!2,A```$`#_\B0%``14@O_8)A```3P"@`*,
+M0D8X'$#_U212__\D$O_]$`#_T@!"D`L\`H``)$(#`*Q``!@\`H`"$`#_S*Q$
+M1C@D!0`!```8(0.`,"$\'(`#)YS&L"0"__X0@@`>*(+__Q!``!,D`O__)`+_
+M_5""``(``"`A)(0``20#``$08``)``090#P"@`,D0HK(`&(8(3P"@``D0@,`
+MK$,`%#P"@`*L1$8\`,#@(0/@``@`H!`A5(+_\22$``$\`H`"C$)&/!Q`_^XD
+M1?__)`7__1``_^L`0B@+/`*``"1"`P"L0``4/`*``A``_^6L1$8\`X`0(3P<
+M@`,GG,:P`^``"`!`X"$#@!`A/!R``R><QK`#X``(`$#@(2>]__"OOP``/`6`
+M`I"B1D`00``$```@(8^_```#X``()[T`$#P"@``D0@,`C$(`-"0#``$`0/@)
+MH*-&0!``__>/OP``)[W_\#P"@`"OOP``)$(#`(Q#`!0`!"8```0F`Q!@`!(P
+MA0#_C&0``(QB``P`0/@)`````#P"@``D0P,`C&(`1!1```0``"`AC[\```/@
+M``@GO0`0K&``1`P`;:,`````$`#_^H^_``",0P`8$`#_[0`````GO?_PK[\`
+M!*^P`````#`A/`>````&$(`DY0,`),8``3P#@`(`11`A)&.R8"C$`$"L0P``
+M5(#_]SP'@``\`@`(-$(`%:SB`P`\`H`")$*R"*RB`$`\`H`")$*R+*RB`!`\
+M`H`")$*Q-*RB`$@\`H`")$*T1*RB`"`\`H`")$*T6*RB`!P``#`AK*``3*R@
+M`#@``"@A``88P`!E&"$\`H`#)$**R``#&(``8A@A)*4``3P"@`(D0K)@**0`
+M"*QB```4@/_U``88P"3&``$HP@`"%$#_\```*"$\$(``/`*``B80`P`D0K)H
+MK@(`,#P"@`(D0K.8)`3__@P`;)JN`@`T#`!LYB0$__X,`'RO``````P`;)H`
+M`"`A#`!LY@``("&N``!$C[\`!(^P```#X``()[T`$!"@``H``#`A)*7__P"%
+M$"&`0P``)`(``Q!B``0D!@`!5*#_^B2E__\``#`A`^``"`#`$"$```%-`^``
+M"``````GO?_PK[\```P`:1@`````C[\```/@``@GO0`0)[W_\*^_``2OL```
+M/`*``HQ"1D040``5/`*``B101K@\`H`")$)&N!("``XD`P`!C@(`#`!`^`D"
+M`"`A$$``#XX"`!@T0@`!K@(`&#P"@`(F$``@)$)&N%8"__:.`@`,)`,``3P"
+M@`*L0T9$C[\`!(^P```#X``()[T`$"0#__X0`/_Q`$,0)">]__"OOP``#`!M
+MV0`````,`&W;``````P`!H0`````#`!WP@`````#X``(``````/@``@`````
+M)[W_\``$)@"OL```)`(`"@`$A@.OOP`$$@(`!R0$``T,`&TL`@`@(8^_``2/
+ML````^``"">]`!`,`&TL`````!``__<```````0F`">]__"OOP``#`!MW0`$
+M)@./OP```^``"">]`!`GO?_PK[```*^_``0`@(`AD(0````$)@`4@``$C[\`
+M!(^P```#X``()[T`$``$)@,,`&W=)A```9($````!"8`5(#_^P`$)@,0`/_U
+MC[\`!">]__`D!0`0)`8`*P``."&OOP``#`!N;P``0"&/OP```^``"">]`!`G
+MO?^PK[4`-"0"`"`D%0`PK[X`0*^W`#ROM@`XK[0`,*^S`"ROL@`HK[\`1*^Q
+M`"2OL``@`$BH"@"`D"$`H)@A`,#P(0#@N"$!(+`A``"@(0.T&"$FE``!*H(`
+M(!1`__R@=0```E,0)11``"4``*`A)`(`,"04``&CH@```I80*@+"H`LD`@`M
+M$N(`%@*=$"$FE/__!H``"(^_`$0"G1`A@$0```P`;=TFE/__!H'__`*=$"&/
+MOP!$C[X`0(^W`#R/M@`XC[4`-(^T`#"/LP`LC[(`*(^Q`"2/L``@`^``"">]
+M`%"`0O__)H/__P!5$"8`8J`*`[00(1``_^:@5P``$$#_WP*6$"H``(`A`D`@
+M(0)@*"$"`#`A#``$XP/`."$\!(`")(02,`"#$"&00P```[00(0)`("$"8"@A
+M`@`P(0/`."$,``-$H$,```!`D"$`0Q`E`&"8(11`_^LFE``!$`#_QP*6$"H`
+MH%`A`,!8(0#@8"$`@!@A```0(2>]__`!`$@A`$`@(0!@*"$!0#`A`6`X(:^_
+M```,`&X5`8!`(8^_```#X``()[T`$"0'``$0@``9```0(9""`````AX`$&``
+M%`"`,"$`Q!`C*$((`0`".`H``QX#)`(`"A!B``<D`@`-$&(`!21B_^`L10!?
+M)`(`"%1B``$`!3@*$.``!23&``&0P@````(>`%1@_^\`Q!`C`.`0(0/@``@`
+M````)[W_@`"%$"6OO@!PK[<`;*^V`&BOM0!DK[0`8*^S`%ROL@!8K[\`=*^Q
+M`%2OL`!0`("0(0"@F"$`P*@A`."P(0$`\"$#H*`A%$``&@``N"$D`@`P)[0`
+M`:.B```2G0`(`N`0(2:4__^2@@``)O<``:*B```6G?_[)K4``0+@$"&BH```
+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
+MKZD`)*^J`"@,`&[AKZL`+(^_```#X``()[T`,">]__`D`B=T$*(`!*^_``"/
+MOP```^``"">]`!`D`@`!5(+__(^_```,`&T;`````!``__B/OP``)[W_\"0$
+M``&OOP``#`!PAR0%)W2/OP```^``"">]`!`DQO__)`+__Q#"``@`@!@AD*(`
+M`"3&__\DI0`!H&(``"0"__\4PO_Z)&,``0/@``@`@!`A),;__R0"__\0P@`&
+M`(`8(23&__\D`O__H&4``!3"__PD8P`!`^``"`"`$"$\`X`"C&)&5"1"``$#
+MX``(K&)&5#P#@`*,8D94)[W_\!!```:OOP``C&)&5"1"__\00``%```@(:QB
+M1E2/OP```^``"">]`!`,`'>$`````!``__H`````)[W_\`"@$"$`P!@A`0!@
+M(0$@:"&OL0`$`6"((0#@6"&OL````(`H(0%`@"$"("`A`$`P(0!@."$!8$`A
+M`8!((:^_``@,`'(H`:!0(:X1``"/OP`(C[$`!(^P```#X``()[T`$">]__"O
+ML```K[\`!(R#`#0D`@`0$&(`!P"`@"$,`',.`@`@(8^_``2/L````^``"">]
+M`!`,`')E`````!``__<`````/`*``XQ$G#0GO?_PK[\```P`=Q\DA``8C[\`
+M``/@``@GO0`0/`*``P/@``B,0IPT)[W_\*^_```,`'/B`````(^_```#X``(
+M)[T`$">]__``H!`A`,`8(0$`6"&OL0`$`4"((0#@4"&OL````(`H(0$@@"$"
+M("`A`$`P(0!@."$!0$`AK[\`"`P`=1(!8$@AKA$``(^_``B/L0`$C[````/@
+M``@GO0`0)[W_\*^_```,`'4:`````(^_```#X``()[T`$">]__"OOP``#`!U
+MB`````"/OP```^``"">]`!`GO?_PK[\```P`=:$`````C[\```/@``@GO0`0
+M)[W_\*^_```,`'6W`````(^_```#X``()[T`$">]__"OOP``#`!USP````"/
+MOP```^``"">]`!`GO?_PK[\```P`=>,`````C[\```/@``@GO0`0)[W_\*^_
+M```,`'8,`````(^_```#X``()[T`$">]__"OOP``#`!V,P````"/OP```^``
+M"">]`!`#X``(K*0``#P"@`(#X``(C$)&=#P"@`*,0D9TC$,`#`/@``B,0@`(
+M)[W_\`"@$"$`P!@AK[$`!*^P```!`(@A`."`(0"`*"$`0#`A`&`X(:^_``@,
+M`'X3`0`@(:X1``"/OP`(C[$`!(^P```#X``()[T`$">]__"OOP``#`!^-P``
+M``"/OP```^``"">]`!`GO?_PK[\``(R"`"@40``$`(`H(8^_```#X``()[T`
+M$`P`?<2,A``($`#_^X^_```GO?_PK[\```P`>'$`````C[\```/@``@GO0`0
+M)[W_\*^_```,`'AT`````(^_```#X``()[T`$">]__"OOP``#`!XN@````"/
+MOP```^``"">]`!`GO?_PK[\```P`>1H`````C[\```/@``@GO0`0)[W_\*^_
+M```,`'DW`````(^_```#X``()[T`$">]__"OOP`$K[````P`>5L`H(`AK@(`
+M`(^_``2/L````^``"">]`!`GO?_PK[\```P`>5T`````C[\```/@``@GO0`0
+M)[W_\*^_```,`'EC`````(^_```#X``()[T`$">]__"OOP``#`!Y:@````"/
+MOP```^``"">]`!`GO?_PK[\```P`>=\`````C[\```/@``@GO0`0)[W_\*^_
+M```,`'H-`````(^_```#X``()[T`$"0#``4\`H`#K$.<,#P"@`,GO?_PK$"<
+M.#P"@`.OL```K[\`!`"`@"&L1)PT/`*``JQ`1E2.`@`0`$#X"8X$`!0,`'-Z
+M`````!``__N.`@`0)[W_\`$J$"&OL0`$`("((:XF`!`DA``8`*`P(:XG`!2N
+M(@`,KBD``*XJ``2N*0`(`B`H(:^_``ROL@`(K[````P`=]$!`)`A/`*``HQ%
+M1G0F,`!(/`:``@(`("$DQM$D#`!^!@(`."$\`X`"E&1&4"0"``2N$0`L)(4`
+M`:XB`#0D`@`!KB(`.*X@`#RN(`!XKB``?"8B`("D9490IB0`1"0#``4D8___
+MK$````1A__TD0@`$KC(`F`P`@40"("`A/`2``P(@*"$,`';M)(2</`(@("$,
+M`($H`B`H(8^_``R/L@`(C[$`!(^P```#X``()[T`$">]__`!*A`AK[$`!`"`
+MB"&N)@`0)(0`&`"@,"&N)P`4KB(`#*XI``"N*@`$KBD`"`(@*"&OOP`,K[(`
+M"*^P```,`'?1`0"0(3P"@`*,149T)C``2#P&@`("`"`A),;1)`P`?@8"`#@A
+M/`.``I1D1E`D`@`$KA$`+"2%``&N(@`T)`(``:XB`#BN(``\KB``>*X@`'PF
+M(@"`I&5&4*8D`$0D`P`%)&/__ZQ````$8?_])$(`!*XR`)@,`(%$`B`@(3P$
+M@`,"("@A#`!V[22$G#P"("`A#`"!*`(@*"&/OP`,C[(`"(^Q``2/L````^``
+M"">]`!`GO?_PK[```"2#`$BOOP`$C&(`*`"`@"$40``4`&`H(3P$@`,"`"@A
+M#`!V[R2$G#R.`@`P4$```HX%`"".!0`LC@@`F(X)``"."@`$C@8`$(X'`!0,
+M`'(H`@`@(8^_``2/L````^``"">]`!`,`'W$C&0`"!``_^L\!(`#)[W_\*^P
+M````@(`A/`2``R2$G#ROOP`$#`!V[P(`*"$\`X`"C&)&5"1"``&L8D94/`*`
+M`HQ$1DR,@P"<$'``'CP"@`*,0D9,%&+_^P!@("$\`X`"C&)&5"1"__\00``2
+M`````*QB1E0F!`!(#`!^(*8``$2.!``8)@,`&!"#``>/OP`$C&(`!*R"``2,
+M8@`$K&,`!*Q$``"N`P`8C[````/@``@GO0`0#`!WA```("$0`/_M`````#P%
+M@`*.`@"<C*-&3!1P_^*L@@"<C@(`G!``_]^LHD9,)[W_\*^_``BOL0`$K[``
+M`#P"@`.,4)PT/!&``HXB1E0D0@`!KB)&5(X"`#0\!(`#)(2</!!``!("`"@A
+MC@(`-#1"``&N`@`TCB)&5"1"__\00``'```@(:XB1E2/OP`(C[$`!(^P```#
+MX``()[T`$`P`=X0`````$`#_^``````,`':J`````!``_^V.`@`T)[W_\*^P
+M``"OOP`(K[$`!`"`@"$\`X`"C&)&5"1"``&L8D94C((`-"0#__P`0Q@D,$(`
+M`Q!```LDD0`8K(,`-(XB``P`@"@A%$``&0!`("&.`@`T/`2``P(`*"$00``0
+M)(2</#P#@`*,8D94)$+__Q!```<``"`AK&)&5(^_``B/L0`$C[````/@``@G
+MO0`0#`!WA``````0`/_X``````P`=GL`````$`#_[@`````,`'=F`````!``
+M_^6N(``,)[W_\*^_````@#`A/`*``HQ#1E0D8P`!K$-&5(R#`#@D`@`!4&(`
+M$8R"`#008``")&+__ZR"`#@\`X`"C&)&5"1"__\00``%```@(:QB1E2/OP``
+M`^``"">]`!`,`'>$`````!``__H`````)`/_^P"`*"&L@``X`$,0)#P$@`,D
+MA)P\%$#_[*S"`#0,`'9[`````!``_^@`````)[W_\*^_````@#`A/`*``HQ#
+M1E0D8P`!K$-&5(R"`#@00``))`/_^XR"`#0`@"@AK(``.`!#$"0\!(`#)(2<
+M/!!```ZLP@`T/`.``HQB1E0D0O__$$``!0``("&L8D94C[\```/@``@GO0`0
+M#`!WA``````0`/_Z``````P`=GL`````$`#_\``````GO?_PK[\``#P"@`*,
+M0T94)&,``:Q#1E2,@P!X+&(`"!!```H``Q"`/`.``B1C%?``0Q`AC$(```!`
+M``@`````)`(`!*R"`'RL@`!X#`!RW@`````\`X`"C&)&5"1"__\00``%````
+M`*QB1E2/OP```^``"">]`!`,`'>$```@(1``__H`````)[W_\*^_``BOL0`$
+MK[```#P#@`.,<)PT/!&``HXB1E0D0@`!KB)&5(QBG#0D0P!(C&(`*!1``!$`
+M8"@AC@(`-#P$@`,D`P`0`@`H(1!#``,DA)P\#`!VJJX#`#2.)$94#`!WA```
+M``"/OP`(C[$`!(^P```#X``()[T`$`P`?<2,9``($`#_[HX"`#0GO?_PK[``
+M`*^_``0\`H`#C$*<-!""`#L`@(`A/`*``HQ#1E0D8P`!K$-&5`P`<S4"`"`A
+M)@4`2(RB`"@40``M`````(X#`'PD`@`&$&(`$`````".`P!X+&(`"!!```P`
+M`Q"`/`.``B1C%A``0Q`AC$(```!```@`````C@(`-!!``!,\!(`#)`(`$*X"
+M`#0,`'+>`@`@(3P#@`*,8D94)$+__Q!```8`````K&)&5(^_``2/L````^``
+M"">]`!`,`'>$```@(1``__D`````)(2</`P`=JH"`"@A$`#_ZR0"`!`D`@`&
+MK@(`?!``_^BN``!X#`!]Q(RD``@0`/_2C@,`?`P`<WH`````$`#_PP`````G
+MO?_@K[(`"*^P``"OOP`0K[,`#*^Q``0`@(`A`*"0(3P#@`*,8D94)$(``:QB
+M1E2,@@`T$$``1```F"$P0@`!4$``"3P$@`,DD0`8CC,`#!)@``0"8"`A#`!W
+M9@(`*"&N(``,/`2``R2$G#P,`';O`@`H(8X"`#!00``&KA(`((X"`"`"0A`J
+M$$```JX2`"RN$@`@/`*``R11G#P"("`A#`!V[0(`*"&.`@`T$$``(@(@("$P
+M0@`!$$``!CP"@`,28``$`F`@(0P`=T0"`"@A/`*``XQ"G#02`@`4)`,``0P`
+M=M$"`"`A/`.``HQB1E0D0O__$$``"0````"L8D94C[\`$(^S``R/L@`(C[$`
+M!(^P```#X``()[T`(`P`=X0``"`A$`#_]@`````\`H`#$`#_[:Q#G#@,`'9[
+M`@`H(1``_^0\`H`#/`2``R2$G#P,`':J`@`H(1``_\,\!(`#)[W_\#P"@`.O
+MOP``C$.<-`"`$"$\!(`#$$,`!"2$G!B/OP```^``"">]`!`,`'3F`````!``
+M__N/OP``)[W_\*^_``",I``L/`.``HQB1E0D0@`!K&)&5(R#`'@L8@`($$``
+M"@`#$(`\`X`")&,6,`!#$"&,0@```$``"``````D`@`'K((`?*R``'@,`'+>
+M`````#P#@`*,8D94)$+__Q!```4`````K&)&5(^_```#X``()[T`$`P`=X0`
+M`"`A$`#_^@`````0`/_N)`(``R>]__"OOP``/`.``XQBBW`D0@`!`$`@(0P`
+M:5BL8HMP$`#_^CP#@`,\`H`#)$*+>`""$",GO?_P``(10Z^P`````H!``@*`
+M(0`0$0`"`H`A`!`2``("@"$`$!0``@*`(0`0@",\`H`#)$*,&``02P`\!H`"
+M/`B``@$B2"$E"!90```X(20*$``DQM&X)`4`'Z^_``BOL0`$#`!QZP"`B"$\
+M!(`#`B`H(0(`,"$,`';@)(2</(^_``B/L0`$C[````/@``@GO0`0)[W_X"0"
+M.IBOLP`,K[(`"*^_`!"OL0`$K[````"@F"$0H@`8`("0(20".I@28@`(````
+M`(^_`!"/LP`,C[(`"(^Q``2/L````^``"">]`"`60/_X/`*``R1"BW@00/_U
+M)%``H#P"@`,D0HMX$@+_\280_V`,`'*$`@`@(1``__H\`H`#)`(``12"_^@D
+M`CJ8/`*``R11BW@``(`A#`!T>`(@("$F$/__)`+__Q8"__LF,0"@$`#_W20"
+M.I@GO?_P)`0``:^_```,`'2@)`4ZF(^_```#X``()[T`$">]__```"`AK[\`
+M``P`=*`D!3J8C[\```/@``@GO0`0`^``"``````\`H`")$+3?*R"```#X``(
+MK(``!">]__"OOP``C((`!(R#````8/@)`$`@(8^_```#X``()[T`$">]__"O
+MOP``/`*``XQ"G#0`@!@A`*`P(0!`("$,`'0Z`&`H(8^_```#X``()[T`$">]
+M__`D`B[@$*(`!*^_``"/OP```^``"">]`!`D`@`!5(+__(^_```\!(`##`!T
+MX22$G!@0`/_WC[\``">]__`D!``!K[\```P`=/LD!2[@C[\```/@``@GO0`0
+MK(``%*R%``"LA@`$K(@`"*R)``RLAP`0`^``"*R``!@GO?_PK[\```P`=:$`
+M````C[\```/@``@GO0`0)[W_\*^P```\$(`#C@*<+!1```6OOP`$C[\`!(^P
+M```#X``()[T`$$`(8````````0`@(3P!__\T(?_^`0%`)$"(8```````````
+M```````PA``!C@.<+(QB`!BN`IPLC&4`%*Q@`!1`"&```````#"$``$!!$`E
+M0(A@`````````````````(QB``R,9@`0`$#X"8QD``".`IPL%$#_XH^_``00
+M`/_>C[```">]__"OOP``#`!U(0````"/OP```^``"">]`!!`"&````````$`
+M*"$\`?__-"'__@$!0"1`B&``````````````````,*4``8R"`!0\!H`#)$(`
+M`:R"`!2,@P`4)`(``1!B``H`````0`A@```````PI0`!`05`)4"(8```````
+M``````/@``@`````C,*<+*R"`!@0`/_TK,2<+">]__`PA``"$(``!:^_```0
+MH``#`*`@(0P`=5,`````/`.``HQB1E0D0O__$$``!0``("&L8D94C[\```/@
+M``@GO0`0#`!WA``````0`/_Z`````(R#```\`H`")$(Q>``#&(``8B@AC*(`
+M`#P"@`(D0C)H`&(X(3P"@`(D0C'P`(`P(8RD````8A@A/`*``B1"MIA0@@`#
+MC,(`"`/@``@`````K*(``(S"`!"L8@``$`#_^JSF``",@P``/`*``B1",7@`
+M`QB``&(X(3P"@`(D0C)HC(4`"(SD````8C`A/`*``B1",?`0A0`#`&(8(0/@
+M``@`````/`*``B1"MIBLX@``K&```!``__FLP```/`2``XR"G"`40``1````
+M`$`(8````````0`8(3P!__\T(?_^`0%`)$"(8``````````````````P8P`!
+M/`*``ZQ#G"@D`P`!/`*``ZQ#G"2,@IP@)$(``0/@``BL@IP@/`*``XQ#G"`D
+M8___K$.<((Q"G"`40``,/`*``ZQ`G"0\`H`#C$*<*$`(8```````,$(``0$"
+M0"5`B&```````````````````^``"`````!`"&````````$`,"$\`?__-"'_
+M_@$!0"1`B&``````````````````,,8``22"__HD`P`!/`6@P`!#&`0L@@`&
+M$$``$S2E`!1``V``)`($``""$`0`0!`G`&(8)$"#8`````````````````!`
+M"&```````##&``$!!D`E0(A@`````````````^``"`````",H@``,$(``0`#
+M$`L0`/_SK*(``$`(8````````0`P(3P!__\T(?_^`0%`)$"(8```````````
+M```````PQ@`!)(+_^B0#``$\!:#``$,8!"R"``800``2-*4`%$`#8``D`@0`
+M`((0!`!B&"5`@V``````````````````0`A@```````PQ@`!`09`)4"(8```
+M``````````/@``@`````C*(```!#$"40`/_TK*(``"R"``8D!0`$`((H"T`#
+M:``D`@0``*(0!`!`$"<`8A@D0(-H`````````````^``"``````D`B[@$*(`
+M`R0"``$#X``(`````!2"__T\`H`#K$"<)!``__H`````)[W_\"0$``&OOP``
+M#`!V0"0%+N"/OP```^``"">]`!`GO?_P```@(:^_```,`'9`)`4NX(^_```#
+MX``()[T`$"0#``$\`H`"K$-&5"0%`!\D@P`$)*7__R0"__^L8```%*+__"1C
+M``0D`P`%/`*``ZR```"L0YPP)`,``3P"@`,#X``(K$.<.">]__"OOP`$K[``
+M``"`@"$,`&DQC(0````"$(`"`H`AC@,`!(^_``2/L```)&+_Z``#$`H#X``(
+M)[T`$">]_^"OL@`(K[$`!*^P``"OOP`0K[,`#(RS`"",HP`D`("`(0`3$(``
+MH)`A`&`@(11@`!X"`H@ACB(`!"9#`!@``"`A`'(@"R0#``$40``$`F,8!(X"
+M````0Q`EK@(``(XC``148``+C&(`!*XD``0,`';1`D`@(8^_`!"/LP`,C[(`
+M"(^Q``2/L````^``"">]`""L@P``K((`!(QB``2L9``$$`#_\JQ$```,`'=F
+M`````!``_^&.(@`$C*<`("2C`!@`!1@*``<0@`"","&,P@`$`&`H(1!B`!(D
+MR``$C&(``(QC``2L0P`$C*,`!*RE``2L8@``K*4``(T"```40``&)`(``8R#
+M````XA`$``(0)P!B&"2L@P```^``"`````!08/_VC0(``(QC``!09?_RK,``
+M!(RB``2L8@`$C*(`!*RE``2L0P``K*4``!``_^JLPP`$/`6``XRCG#2,@@`@
+MC&,`(`!#$"H40``%)`,``8RBG#2,0@`T$$```P`````\`H`#K$.<.`/@``@`
+M````/`*``R1"G#0`!C"``,(P(2>]__``H"`AK,4``*^_```,`',.`````(^_
+M```#X``()[T`$`/@``@``````^``"``````\`X`#C&*<,">]__"OOP``)$+_
+M_Q!```2L8IPPC[\```/@``@GO0`0#`!V_P`````0`/_[C[\``#P%@`.,HYPP
+M/`*``Q1@`!:,1)PTC((`-!1``!,\`H`#C(,`("1"G#P``QB``&(8(8QB``10
+M0``$C&,`!(Q"``"L8@`$C&,`!"1B_^@``Q`*$$0``R0#``$\`H`#K$.<."0"
+M``6LHIPP`^``"`````"LA0`(K(0`!`/@``BLA```)[W_\*^_```\`X`"C&)&
+M5"1"``&L8D94)(3_Z(R"`#040``1/`*``XR#`"`D0IP\``,8@`!B&"&,8@`$
+M4$``!(QC``2,0@``K&(`!(QC``0D8O_H``,0"A!$``HD`P`!/`*``ZQ#G#@\
+M`H`"C$1&5`P`=X0DA/__C[\```/@``@GO0`0)`,`!3P"@`,0`/_VK$.<,(R&
+M```DH@`8```8(13```0`11@+K(,```/@``BLI``DC,(`!*QF``"L8@`$C,(`
+M!*S#``00`/_XK$,``(R#```08``,)&+_Z(QE``!0HP`)K(```(QB``2LH@`$
+MC&(`!*QC``2L10``K&,``*R%```D8O_H``,0"E1```&L0``D`^``"`````"L
+MH``DC(,``"2B`!@`!1`*$$,`"@!`*"&,0@``C*,`!*Q#``2,HP`$K*4`!*QB
+M``"LI0```^``"``````00/_]`````(Q#```08@`)`````(Q"``2L8@`$C*(`
+M!*RE``2L0P``K*4```/@``BL@P```^``"*R````GO?_PK[$`!*^_``ROL@`(
+MK[````"`B"$6(``%/!*``SP"@`.,0IPL%$``+P````".4)PTC@(`-!1```0\
+M`H`#C$*<.!!``!,`````/`2``PP`=FPDA)P\$@(`"0!`("$\`X`#C&*<P"2$
+M``PF!0`,)$(``0P``OZL8IS`KE"<-"0"``4\`X`#K&*<,#P"@`.L0)PX%B``
+M$``````\`X`"K&!&5#P"@`.,0IPL$$``!8^_``R,8D94)$(``1``_]:L8D94
+MC[(`"(^Q``2/L````^``"">]`!`\`H`"K%%&5!``__B/OP`,#`!U3#P2@`,0
+M`/_/`````">]__"OOP``#`!WQ@`````\!(`#)[W_\*^_```,`'9L)(2</#P#
+M@`.L8)PX)$0`##P#@`,,``,/K&*<-">]__"OL````,`H(:^_``0,`'<;`("`
+M(:X``!BN```,K@``$(^_``2/L````^``"">]`!`GO?_PK[$`!*^_``ROL@`(
+MK[```(R2``@`@(@A`+(0*A1```<DA/_HC[\`#(^R``B/L0`$C[````/@``@G
+MO0`0CC``&`P`<^*N(``84@```:XR`!0D`@`!$`#_\ZXB`!@GO?_PK[\``(S"
+M```40``$`*`P(8^_```#X``()[T`$`P`=]Z,I0`@$`#_^X^_```GO?_PK[\`
+M`(R"`!``@#`A%$``"B2$_^B,P@`8$$``"(^_``",PP`4C,(`"*S``!@`0Q`J
+M%$``!`!@*"&/OP```^``"">]`!`,`'/B`````!``__N/OP``)[W_\*^_````
+MH#`A#`!WWHRE`""/OP```^``"">]`!`GO?_PK[\```P`=_8`````C[\```/@
+M``@GO0`0)[W_\*^_```,`'@"`````(^_```#X``()[T`$">]__"OOP``#`!W
+MW@``,"&/OP```^``"">]`!`GO?_PK[\```P`>`(`````C[\```/@``@GO0`0
+M)[W_\"0"*OBOL0`$K[```*^_``@`H(@A$*(`%@"`@"$D`BKX$B(`!@````"/
+MOP`(C[$`!(^P```#X``()[T`$!8`__H\`H`#)%&</"0"__P2(O_V)C``A"8B
+M``02`O_S)A#__`P`@6H"`"`A$`#_^R8B``0D`@`!5(+_ZB0"*O@\!(`##`!V
+M6B2$G#P0`/_E)`(J^">]__`D!``!K[\```P`>#PD!2KXC[\```/@``@GO0`0
+M)[W_\```("&OOP``#`!X/"0%*OB/OP```^``"">]`!"LA0```^``"*R```0G
+MO?_PK[$`!*^P``"OOP`,K[(`"#P"@`,`@(`AC%*<-"01``$\`X`"C&)&5"1"
+M``&L8D94C((``!!``!<\!(`#$B``!`````".`@``)$+__ZX"```\`X`"C&)&
+M5"1"__\00``)`````*QB1E0"(!`AC[\`#(^R``B/L0`$C[````/@``@GO0`0
+M#`!WA```("$0`/_V`````(R#G#0D`@`!K&(`>(R"G#0,`'*ZK$``?`)`*"$,
+M`'=$)@0`!#P"@`(,`'>$C$1&5(Y#`'PH8@`$%$``!BAD``94@``$``"((20"
+M``808@`(`````(X"```40/_3`````!8@_^<\!(`#$`#_U``````,`'-Z````
+M`!``__>.`@``)[W_X*^Q``2OOP`0K[,`#*^R``BOL```/`6``P"`B"&,LIPT
+M/`.``HQB1E0D0@`!K&)&5(RCG#0D`@`#``!`(0``2"&L8@!XC**<-*Q``'R,
+MI)PT#`!^-R2$`$B.0@!\CB,``!1@``,L4``!%@``(CP#@`,\`H`#C$*<-"1%
+M`$B,H@`H%$``&``````2```$`````(XB```D0O__KB(``#P#@`*,8D94)$+_
+M_Q!```H`````K&)&5`(`$"&/OP`0C[,`#(^R``B/L0`$C[````/@``@GO0`@
+M#`!WA```("$0`/_U``````P`?<2,I``($`#_Y@````",8IPT)!,``ZQ3`'B,
+M8IPT#`!RNJQ``'PF)``$#`!W1`)`*"$\`H`"#`!WA(Q$1E2.0P!\*&(`!A!`
+M``TD`@`&*&(`!%!```,``(`A4',``0``@"&.(@``%$#_R3P"@`,6`/_G/`.`
+M`Q``_\4`````5&+_^8XB```,`'-Z`````!``__6.(@``)[W_\*^P``"OOP`$
+M)!```3P"@`*,0T94)&,``:Q#1E2,@@``&$``$21#__^L@P``/`.``HQB1E0D
+M0O__$$``!P``("&L8D94`@`0(8^_``2/L````^``"">]`!`,`'>$`````!``
+M__@`````$`#_\```@"$GO?_PK[\`!*^P````@!@A/!"``HX"1E0D0@`!K@)&
+M5(R"``",A0`$)(0`!"1"``$4H``.K&(``(X"1E0D0O__$$``!@``("&N`D94
+MC[\`!(^P```#X``()[T`$`P`=X0`````$`#_^0`````,`'=3`````"0#``>L
+M0`!XK$,`?`P`<MX`0"`A$`#_ZP`````#X``(C((``"0"``&L@@`,K(``"*"`
+M```#X``(K(``!">]__"OOP``#`"!:B2$``B/OP```^``"">]`!`GO?_@K[,`
+M#*^Q``2OOP`0K[(`"*^P```\`H`#`("((8Q2G#0D$P`!/`.``HQB1E0D0@`!
+MK&)&5(R"``Q00``&CB,`#"9#`!B,8@`0)$(``:QB`!".(P`,)`(``E!B`%F.
+M)0`0DB(``!1``"X\`X`#4F``%HXB``PD`@`!KC(`!*(B```\`X`"C&)&5"1"
+M__\00``*`````*QB1E0"8!`AC[\`$(^S``R/L@`(C[$`!(^P```#X``()[T`
+M(`P`=X0``"`A$`#_]0````!00``&CB,`#"9#`!B,8@`0)$+__ZQB`!".(P`,
+M)`(``1!B``D`````CB,`#"0"``(48O_A``````P`>#4F1``8$`#_W0`````,
+M`'@G)D0`&!``__:.(P`,C&*<-"00``&L4`!XC&*<-`P`<KJL0`!\`D`H(0P`
+M=T0F)``(CB(`#!!0`!@"0"@A/`*``@P`=X2,1$94CD,`?"AB``040``&*&0`
+M!E2```0``)@A)`(`!A!B``@`````DB(``!!`_[D`````%F#_Y#P#@`,0`/_,
+MCB(`#`P`<WH`````$`#_]@````".)``$#`!X&"2$`!@0`/_F/`*``@P`>"XF
+M1``8$`#_I0`````GO?_PK[```*^_``0`@"@A)!```3P"@`*,0T94)&,``:Q#
+M1E20@@``5$``$```@"$\`H`#C$*<-(R#``R@L```)$8`&`#`("$08``$K*(`
+M!(S"`!`D0@`!K,(`$(RC``PD`@`"$&(`$``````\`X`"C&)&5"1"__\00``'
+M```@(:QB1E0"`!`AC[\`!(^P```#X``()[T`$`P`=X0`````$`#_^``````,
+M`'@NC*4`$!``_^X`````)[W_\*^P``"OOP`,K[(`"*^Q``0`@(`A/`*``HQ#
+M1E0D8P`!K$-&5(R"``@40``K))(`"(X"``Q00``'C@,`#(X#``0D8P`8C&(`
+M$"1"__^L8@`0C@,`#"0"``%08@`;C@0`!(X#``PD`@`"4&(`$XX$``2N```$
+MH@```#P#@`*,8D94)$+__Q!```@`````K&)&5(^_``R/L@`(C[$`!(^P```#
+MX``()[T`$`P`=X0``"`A$`#_]P`````,`'@U)(0`&!``_^RN```$#`!X)R2$
+M`!@0`/_DC@,`#`P`=U,"0"`AC@,`#`!`B"$D`@`!4&(`"(X%``0D`@`'KB(`
+M?*X@`'@,`'+>`B`@(1``_\J.`@`,)B0`&`P`>"`"0#`A$`#_]B0"``<GO?_P
+MK[\`!*^P```\`H`"C$9&6`"`*"$\`X`"C&)&5"1"``&L8D94#`!_-`#`("$,
+M`(',`$"`(0(`$"&/OP`$C[````/@``@GO0`0)[W_\*^_`````#`A$(``!`"`
+M*"$\`H`"#`"!?XQ$1EB/OP```^``"">]`!`GO?_````H(20&`"ROL``PK[\`
+M-`P`<*H`@(`A)`+__Z.B`"BOH@``KZ(`!*^B``BOH@`,KZ(`$*^B`!2OH@`8
+MKZ(`(*^B`"0\`H`"C$1&6*.@`!P\`X`"C&)&5"1"``&L8D94`Z`P(0P`@/4D
+M!0!>#`"!S`````"/H@`$7$```:X"``"/H@`(7$```:X"``2/H@`,7$```:X"
+M`!R/H@`07$```:X"`""/H@`87$```:X"`"@"`!`AC[\`-(^P`#`#X``()[T`
+M0">]__`T`K>8K[$`!*^P``"OOP`(`*"((1"B``\`@(`A-`*WF!(B``6/OP`(
+MC[$`!(^P```#X``()[T`$%8`__N/OP`(/`2``PP`@>4DA)S$$`#_]H^_``@\
+M!8`#)*6B(#P&@`0\!(`#)`(``0#%,",DA)S$%@+_Z@``."$,`(';`````!``
+M_^<T`K>8)[W_\"0$``&OOP``#`!ZIS0%MYB/OP```^``"">]`!`GO?_P```@
+M(:^_```,`'JG-`6WF(^_```#X``()[T`$)""``PPI?__``4:`C1"`("@@@`,
+M,$(`?Z"#``2@A0```^``"*""``PGO?_P/`6@P#P&__ROOP`$K[```#2E`"`0
+M@``;-,;__XR#```D`@`#-&,``P!@@"&L@P``C*,```!F&"2LHP``H@``!`P`
+M:^2B`@`,/`,;3C1C@;4`0P`9`@`@(0``$!```A."#`!ZV@!`*"$D`@`'H@(`
+M"(^_``2B```$C[````/@``@GO0`0/`*``A``_^0D1$9@$(``$#"E`/^,A```
+M`X`8(3P<@`,GG,:PD((`%#!"`"`00/_]`````*"%``"0@@`4,$(`(!!`__T`
+M`````^``"`!@X"$\`H`"$`#_[R1$1F`0@``,/`*``HR$`````!@AD((`%#!"
+M``$00``$`````)""```D`P`!H*(```/@``@`8!`A$`#_]"1$1F`GO?_@K[``
+M$*^_`!BOL0`4`("`(0.`B"$\'(`#)YS&L!"```T\`H`"`@`@(0P`>QT#H"@A
+M$$#__0(`("$"(.`ADZ(``(^_`!B/L0`4C[``$`/@``@GO0`@$`#_\R101F`G
+MO?_@K[(`"*^Q``2OL```K[\`$*^S``P`@(@A`*"0(0#`@"$#@)@A/!R``R><
+MQK`0@``5/`*``@(`$"$40``))A#__P)@X"&/OP`0C[,`#(^R``B/L0`$C[``
+M``/@``@GO0`@DD4```(@("$,`'L))E(``0(`$"$40/_Z)A#__Q``__``````
+M$`#_ZR111F`GO?_@K[(`"*^Q``2OL```K[\`$*^S``P`@(@A`*"0(0#`@"$#
+M@)@A/!R``R><QK`0@``5/`*``@(`$"$40``))A#__P)@X"&/OP`0C[,`#(^R
+M``B/L0`$C[````/@``@GO0`@#`![+`(@("$"`!@AHD(``"80__\48/_Z)E(`
+M`1``__``````$`#_ZR111F`GO?_@K[,`#*^Q``2OOP`0K[(`"*^P````@(@A
+M`*"8(0.`D"$\'(`#)YS&L!"``!X\`H`"CB,`!``#$(``0Q`A``*`0`(@("$,
+M`'L=`F`H(0!`&"$D!`!D%$``"B80__\D`O__$@(`!SP"@``D0@,`C$(`2`!`
+M^`D`````$`#_\@(@("$"0.`AC[\`$(^S``R/L@`(C[$`!(^P````8!`A`^``
+M"">]`"`0`/_B)%%&8">]_\"OL@`(K[\`$*^S``ROL0`$K[```*^F`"BOIP`L
+MKZ@`,*^I`#2OJ@`XKZL`/```D"$#@)@A/!R``R><QK`0@`!D/`*``BRB``@0
+M0``:/`.``@`%$(`D8Q9<`$,0(8Q"````0``(`````(R#```\`H`")`4``:Q%
+M1FR08@`$-%```:!P``2,D0`(*B(`!A!``!(\!*#`0`-@`"0"!``"(A`$`&(8
+M)4"#8``````````````````"8.`A`D`0(8^_`!"/LP`,C[(`"(^Q``2/L```
+M`^``"">]`$`TA``4C(,``"8B__H`11`$`&(8)1``__&L@P``C[``*`P`:^2,
+MD0````(1`@!0`!M2```!```!S9(C``0"("`AHB``!#!P`/\``!`2,$+__PP`
+M>MH`0"@AHC``!!``_]\`````C(,``#P"@`*,4D9LK$!&;)!B``0P4`#^H'``
+M!(R1``@J(@`&$$``"SP$H,!``V``)`($``(B$`0`0!`G`&(8)$"#8```````
+M`````!``_\H`````-(0`%(R%```F(__Z)`(``0!B$`0PHP`!```H(0!B*`H0
+M`/_`K(4``!``_[Z,D@`(C)(`!(^B`"@0`/^ZK((`!!``_YPD1$9@)[W_X*^P
+M`!"OOP`8K[$`%`"`,"$`H(`A``!`(0.`B"$\'(`#)YS&L!"``"8D!P`$C,0`
+M""B"``8`XB`*0`-H`"0"!```@A`$`$`0)P!B&"1`@V@`````````````````
+MC,8```.@("$D!0`!D,(`"#!#``X09P`+K@```"0"``P08@`(``````(@X"&/
+MOP`8C[$`%(^P`!`!`!`A`^``"">]`""0P@``#`!MEJ.B```00/_U)`@``20"
+M``$0`/_RK@(``#P"@`(0`/_9)$9&8">]__`\`H``K[(`"*^_``ROL0`$K[``
+M`"1"`P",0@`T`$#X"20$__\`0)`A/`*``HQ$1F@D`@`!/`6@P"2#__H`8A@$
+M*((`!A!``#,TI0`40`-@`"0"!```@A`$`$`0)P!B&"1`@V``````````````
+M````/!"``B801F`\$8``)C$#``P`>N0"`"`ACB(`-`!`^`D``"`ACB,`%#P"
+M@`(D0NT0K'```*QB``0\`H`")$+MH*QB``@\`H`")$+L)*QB``P\`H`")$+L
+ML*QB`!`\`H`")$+NX*QB`!0\`H`")$+PO*QB`!@\`H`")$+N,*QB`!R.(@`T
+M`$#X"0)`("&/OP`,C[(`"(^Q``2/L````^``"">]`!",H@``,$(``0`#$`NL
+MH@``$`#_TSP0@`(\`X`"C&)&<">]__`00``$K[\``(^_```#X``()[T`$"0"
+M``$,`'QCK&)&<!``__J/OP`````0(0``&"&LA0`0K(```*R"``@#X``(K(,`
+M#(R"```00``1`````(R#``!08``,C((``(QE``!0HP`(K(```(QB``2LH@`$
+MC&(`!*QC``2L10``K&,``*R%``",@@``5$#_\HR#```#X``(`````">]_]"O
+ML@`8)`+__R2R__^OL0`4K[\`(*^S`!ROL``0$D(`:P"`B"$\`X`"C&)&5"1"
+M``&L8D94CB0`"(XE``R.(P`0```0(0""("$`HR@A`*,P*P"&("$GLP`(KB0`
+M"*XE``P"8"`A`B`H(:^@```,`((1KZ``"(^P``@2```B`B`@(5(```R.`P`8
+MC@,``%!P``BOH``(C@(`!*QB``2.`@`$KA``!*Q#``"N$```KZ,`"(X#`!B.
+M(@`(`$,0*U1``&./HP``CB(`"%!B`%F.`P`<C@(`((X#`"0`0Q`E%$``1@(@
+M("&N```HC@(`#(X%`!``0/@)`@`@(8^P``@6`/_@`B`@(0P`@A$#H"@A/`.`
+M`HQB1E0D0O__$$``,P````"L8D94CZ(`"!!``!*/H@``CF,``%!@``R.8@``
+MC&0``%"#``BN8```C&(`!*R"``2,8@`$K&,`!*Q$``"L8P``KF0``(YB``!4
+M0/_RCF,``(^B```00``1`Z`H(8RC``!08``,C*(``(QD``!0@P`(K*```(QB
+M``2L@@`$C&(`!*QC``2L1```K&,``*RD``",H@``5$#_\HRC```F4O__)`+_
+M_Q9"_Y<`````C[\`((^S`!R/L@`8C[$`%(^P`!`#X``()[T`,`P`=X0``"`A
+M$`#_S`````".`@`8C@,`'(X&`"".!P`D`&<8(0!G0"L`1A`A`$@0(:X"`!BN
+M`P`<#`!]=@(`*"$0`/^PC@(`#(XB``P`0Q`K%$``!(^C``".(@`,$`#_HXX"
+M`"!48``#C&(`!!``_ZBOL```K@,``*X"``2,8@`$K'``!!``_Z*L4```)[W_
+M\*^Q``2OL```K[\`"`"`B"$`H(`A/`.``HQB1E0D0@`!K&)&5"0"``&LH@`H
+MC*,`&(R"``@`0Q`K5$``+8XC``",@@`(4&(`-(RC`!R.`@`,C@4`$`!`^`D"
+M`"`AC@(`((X#`"0`0Q`E4$``!:X``"B.`@`H%$``$0````"N```H/`.``HQB
+M1E0D0O__$$``!P````"L8D94C[\`"(^Q``2/L````^``"">]`!`,`'>$```@
+M(1``__@`````C@(`&(X#`!R.!@`@C@<`)`!G&"$`9R@K`$80(0!%$"&N`@`8
+MK@,`'`P`?ED"`"`ACB,``%1@``.,8@`$$`#_X:XP``"N`P``K@(`!(QB``2L
+M<``$$`#_VZQ0``",@@`,`$,0*U1`__..(P``C((`#!``_\B.`@`,)[W_\*^_
+M```\`H`"C$-&5"1C``&L0T94C((``!"B`!8`````C*(``(RC``2L0P`$C*,`
+M!*RE``2L8@``K*4``*R@`"@\`X`"C&)&5"1"__\00``%```@(:QB1E2/OP``
+M`^``"">]`!`,`'>$`````!``__H`````4*#_\JR@`"B,HP``4&7_[JR```",
+MH@`$K&(`!(RB``2LI0`$K$,``*RE```0`/_FK(,``">]_^"OI0``)`4``:^_
+M`!2OL``0KZ8`!`P`?+P`@(`ACZ(``(^_`!2N`@`4CZ(`!*X"`!B/L``0`^``
+M"">]`"`GO?_PK[\```P`?,,`````C[\```/@``@GO0`0```0(0``&"&LA0`(
+MK(8`#*R'`!"L@``HK(0`!*R$``"L@@`8K(,`'*R"`"`#X``(K(,`)```$"$`
+M`!@AK(4`"*R&``RLAP`0K(``**R$``2LA```K((`&*R#`!RL@@`@`^``"*R#
+M`"0GO?_PK[```*^_``2,@@`H`("`(11```T`@"@AC@,``!!P``>/OP`$C@(`
+M!*QB``2.`@`$KA``!*Q#``"N$```C[````/@``@GO0`0#`!]Q(R$``@0`/_R
+MC@,``">]_^"OM0`0K[0`#*^S``BOL@`$K[```*^_`!2,@@`H`("`(0"`*"$`
+MP)`A`."8(0$`H"$40``0`2"H(8X$``BN$@`8KA,`'*X4`""N%0`D#`!]=@(`
+M*"&/OP`4C[4`$(^T``R/LP`(C[(`!(^P```#X``()[T`(`P`?<2,A``($`#_
+M[XX$``@GO?_@K[(`"*^_`!2OM0`0K[0`#*^Q``2OL```C((`((R*`"0`0%@A
+M`$H0)1!``!H`@)`AC((`"(R0`"",D0`DC)0`&(R5`!R,0P`,C$(`"`(`,"$`
+M<1@A`'$@*P!0$"$`1!`A`%1`(P!U("L!!$`C`'5((R4E__\LHO__)03__P""
+M("$!:!`K%$``#0(@."$1:``)`4D0*X^_`!2/M0`0C[0`#(^R``B/L0`$C[``
+M``/@``@GO0`@4$#_^(^_`!0,``-$``````(C`!D``"`0```H$@*E."$`````
+M`(``$W(B````Y1`K`.`H(7!P`````"`2`H0P(0#","$`P"`AKD0`&*Y%`!P0
+M`/_DC[\`%">]_^`\`H`"K[\`%*^P`!`D0T9XC&,`!(Q"1G@`@(`A`&`P(0!`
+M*"&OHP`$#`!][Z^B```\"(`"/`F``B8$`!PE"/LD)2G[="0%``4D!@`!#`!U
+M$@(`."$,`&OO`````#P#@`*L8D?<0(!(`````````````````$""6```````
+M```````````,`'6()@0`'`P`=@PD!``%/`*``JQ01G2/OP`4C[``$`/@``@G
+MO0`@)[W_\*^_```,`&OO`````#P#@`*L8D?<0(!(`````````````````$""
+M6``````````````````,`'8S)`0`!8^_```D`@`#`^``"">]`!`GO?_PK[\`
+M``P`?-@`P"`A/`2``PP`=O$DA)P\C[\```/@``@GO0`0)[W_\"0"-K"OL0`$
+MK[```*^_``@`H(@A$*(`$0"`@"$D`C:P$B(`!CP"@`./OP`(C[$`!(^P```#
+MX``()[T`$!8`__HD4:#8#`!U&B8D`!P,`'W_`B`@(1``__6/OP`()`(``52"
+M_^\D`C:P/`2``PP`?ITDA*#8$`#_ZB0"-K`GO?_P)`0``:^_```,`'[G)`4V
+ML(^_```#X``()[T`$">]__```"`AK[\```P`?N<D!3:PC[\```/@``@GO0`0
+MK(4``*R&``2L@``,K(``"```0"$`@#@A)0@``23B``@M`P"`K.(`$*SB`!04
+M8/_Z`$`X(3"C``=08``#```8(20"``@`0Q@C)&(`$`#"$"M00``#C((`!`/@
+M``BL@````*,8(:R#`!`T0@`!`^``"*QB``2,@@```(!@(1!``!T``%@A!*``
+M&P`````DI0`+**(`%U1```,D!0`0)`+_^`"B*"0LH@'X$$``\``%&D(`K!`A
+M)$D`"(TG``P0Z0`/``58PHSC``0D`O_^C.H`#`!B0"0`Z!@AC&(`!(SI``@D
+MZP`(-$(``:U)``BL8@`$K2H`#`/@``@!8!`A)$D`$(TG``Q4Z?_PC.,`!"5K
+M``*-AP`8)8X`$!#N`"XD`__^C.(`!`!#0"0!!3`C*,(`$%1```ZMC@`<`.5`
+M(32B``$!!A@A-,0``23K``BLX@`$K8@`&*QF``"M!``$K0X`"*V(`!P0`/_C
+MK0X`#`3```>MC@`8`.@8(8QB``0DZP`(-$(``1``_]NL8@`$+0("`!!``((`
+M"!I"``@@P@`$$,`!@A`A)$H`"(V#``R-20`(``0@@B0"``$`@A`$`&(8):V#
+M``RLZ@`,K.D`"*TG``RM1P`(*6,``"5B``,!8Q`*C88`#``"$(,D`P`!`$,@
+M!`#$$"M40``[C80`$`"&$"040``,``L0P``$($`D`O_\`6(0)`"&&"048``%
+M)$L`!``$($``AA`D$$#__25K``0`"Q#``8(0(21)``@!8&@A`2!0(8U'``Q0
+MZ@`.)6L``8SB``0D`__^`$-`)`$%,",HP@`04$``/XSI``@$PP`U`.@8(8SG
+M``Q4ZO_WC.(`!"5K``$Q8@`#%$#_[B5*``@QH@`#)2G_^!!``"4EK?__C2(`
+M"!!)__LQH@`#C8,`#``$($``9!`K5$``"HV$`!`0@``'`(,0)%1`_]H`"Q#`
+M``0@0`"#$"00`/_[)6L`!(V$`!`D`__^C((`!`!#$"0`11@K%&``!`!%,",H
+MP@`04$```P"`."$0`/]Z``!8(33#``$`A2`A-*(``:SB``2MA``0K(,`!!``
+M_W(DZP`(C8(`#``$&"<`0Q`D$`#_VZV"``R,8@`$C.H`#(SI``@T0@`!).L`
+M"*QB``00`/]DK4D`"(SJ``P`Y4`A-*(``0$&&"$TQ``!K4D`"*SB``2MB``8
+M).L`"*QF``"M!``$K0X`"!``_W*M*@`,$&``!@`((,(L8@`%$$``'BQB`!4`
+M"!&")$0`.``$$,`!@A`A)$H`"(U)``@1*@`1)(,``XTB``0D`__^`$,0)`$"
+M$"M00/]XC2H`#(TI``@1*@`&)`/__HTB``0`0Q`D`0(0*U1`__J-*0`($`#_
+M;HTJ``PH@@```&(@"XV#``P0`/]E``0@@Q1`_^0D9`!;+&(`51!```0L8@%5
+M``@3`A``_]XD1`!N$$``!"QB!54`"!/"$`#_V21$`'=00/_7)`0`?@`(%((0
+M`/_4)$0`?!!@``8`!5C"+&(`!1!``!TL8@`5``41@B1+`#@`"Q#``8(0(21*
+M``B-1P`,4.K_'25K``&,X@`$)`/__@!#0"0!!3`C*,(`$%!```8E:___!,,`
+M!@#H&"&,YP`,5.K_]XSB``00`/\/)6L``8QB``2,Z@`,C.D`"#1"``$0`/[_
+M).L`"!1`_^4D:P!;+&(`51!```0L8@%5``43`A``_]\D2P!N$$``!"QB!54`
+M!1/"$`#_VB1+`'=00/_8)`L`?@`%%((0`/_5)$L`?`"`6"$0H`!````8(22I
+M__B-)@`$)`+__HR$`!``PD`D`2A0(8U#``011`!U`&(8)#C"``$P0@`!K4,`
+M!!!```H``&`AC*7_^"5B`!`!)4@CC20`"!""`&@!!4`AC2<`#*SD``BLAP`,
+M`4,0(9!"``<X0@`!,$(``1!```PU`@`!%8``!0$#0"&-0P`()6(`$%!B`%0D
+M#``!C48`"(U'``RLY@`(K,<`##4"``$!*!@AK2(`!!6``!.L:```+0("`%!`
+M`!,`"!I"``@@P@`$$,`!8A`A)$<`"(UC``R,Y@`(``0@@B0"``$`@A`$`&(8
+M):UC``RM)P`,K28`"*S)``RLZ0`()`,``0/@``@`8!`A$&``!@`((,(L8@`%
+M$$``'RQB`!4`"!&")$0`.``$$,`!8A`A)$<`"(SF``@0QP`2)(,``XS"``0D
+M`__^`$,0)`$"$"M00/_GC,<`#(S&``A0Q__DC,<`#(S"``0D`__^`$,0)`$"
+M$"M40/_YC,8`"!``_]R,QP`,*((```!B(`N-8P`,$`#_TP`$((,40/_C)&0`
+M6RQB`%400``$+&(!50`($P(0`/_=)$0`;A!```0L8@55``@3PA``_]@D1`!W
+M4$#_UB0$`'X`"!2"$`#_TR1$`'RM:0`<K6D`&*TC``P0`/^MK2,`"!``_YLD
+M#``!.,(``3!"``$00``(`0-`(8RE__@!)4@CC2<`#(TF``@!!4`AK.8`"*S'
+M``PU`@`!)`,``:UI`!`0`/^SK2(`!#"E__\PH@!<4$``*(R"``",@@`0)(@`
+M$"0,`'Z,0P`$)`+__@!B2"0I(@`0.$L``0$@4"&-!P`,4.@`"R6,__^,X@`$
+M)`/__HSG``P`0Q`D`4(8*@!#4`L!(D@A%.C_^"5K``$EC/__!8'_\B4(``@P
+MH@`(4$``!20"__B,@@`$`$D0(ZS"``PD`O_X`4(8)`$B$"0D0O_L)&/_[*S"
+M`!"LRP`(K,,`&(R"``"LP@``K,(`((R#``0D`@`8H,(`**S#``0#X``(K,,`
+M)(R"``PD`__P/`H1$21)_\@!(T@D)2+_6`!#,"0``$`A`,`X(0%($"4E"``!
+M*0,`(*SB```48/_[).<`!#P#@`(D8\=<)`(``:S%`!"LR0!XK,,`D*S"`(RL
+MR0!TK,``A*S``("LPP!\`^``"*R&``PGO?_PK[\``#P#@`*,8D94)$(``:QB
+M1E0\`H`"C$)&3!1``!$`0!@AK(0`G#P"@`*L1$9,/`.``HQB1E0D0O__$$``
+M!0````"L8D94C[\```/@``@GO0`0#`!WA```("$0`/_Z`````!"#__`\`H`"
+MC$)&3(QC`)P48O_[`````!"#_^L\`H`"C&(`G*R"`)P0`/_FK&0`G(R"```0
+M0``1`````(R#``!08``,C((``(QE``!0HP`(K(```(QB``2LH@`$C&(`!*QC
+M``2L10``K&,``*R%``",@@``5$#_\HR#```#X``(`````">]_]"OL@`8K[\`
+M**^U`"2OM``@K[,`'*^Q`!2OL``0`("0(3P"@`*,0T94)&,``0P`@&6L0T94
+M`$"H(8Y"!!`00``:)E0$$*^@```,`'=3`H`@(8Q3`$`"0"`A`$"`(0P`?S2.
+M90```$"((0(`("$00``L`@`H(20"``>N`@!\#`!RWJX``'BN<0`$CD($$%1`
+M_^XF5`00CZ(``!1``!<`````#`"!:@.@("$\`X`"C&)&5"1"__\00``,````
+M`*QB1E0"H!`AC[\`*(^U`"2/M``@C[,`'(^R`!B/L0`4C[``$`/@``@GO0`P
+M#`!WA```("$0`/_S``````P`=U,#H"`A`$`H(0P`=T0"@"`ACZ(``!1`__D`
+M````$`#_X0`````,`'=$`Z`@(1``_]B.0@00)[W_\*^_```\`X`"C&)&5"1"
+M__\00``%```@(:QB1E2/OP```^``"">]`!`,`'>$`````!``__H`````)[W_
+M\*^P``"OOP`$#`!_%P"`@"&N``00C[\`!(^P```#X``()[T`$">]__"OL```
+MK[\`#*^R``BOL0`$`("`(3P"@`*,0T94)&,``:Q#1E2,@@00))($$!1``!,"
+M0(@A/`.``HQB1E0D0O__$$``"@````"L8D94#`"!:@)`("&/OP`,C[(`"(^Q
+M``2/L````^``"">]`!`,`'>$```@(1``__4`````#`!W4P(@("$D`P`%K$,`
+M?*Q``'@,`'+>`$`@(8X"!!`40/_W`````!``_^,`````C*<``!#@``8`@!@A
+MC(8``%3```6,X@`$K(<``*R@```#X``(`````(S$``2LP@`$C&,``*SD``2L
+M0P``$`#_]ZR'``!-96UO<GD@=7-E9#H@)60@1G)E93H@)60@"@H`6T)U9F9E
+M<B!S:7IE(%1X.B`E9"`@4G@Z("5D70H*``!405)'7W=D8U1X37-G1&ES<&%T
+M8VA,;V]P````@`!&?(``1JR``$;$@`!&K(``1JR``$:L@`!&K(``1O2``$:L
+M@`!&K(``1JR``$:L@`!&K(``1JR``$:L@`!&K(``1JR``$:L@`!&K(``1JR`
+M`$:L@`!&K(``1JR``$<4@`!')&%R0V]M<&QE=&5,;V]P``!405)'7W=D8T%S
+M>6YC179T1&ES<&%T8VA,;V]P`````%1A<F=E="!S=&%R=&5D"@"``%>0@`!8
+M*(``6%2``%AH@`!9%(``68R``%H@@`!:/(``6G"``%J$@`!:F(``6JR``%L(
+M@`!;6(``5^"``%N8@`!7X(``5^"``%?@@`!7X(``5^"``%NP@`!;V(``6_R`
+M`%PT@`!<E(``702``%TL@`!=/(``76"``%[$@`!7X(``7SR``%]@@`!?[(``
+M8""``&!,@`!@7(``8'2``&&D@`!B4(``5^"``&)@@`!BF(``8JB``%?@@`!B
+MS(``5^"``%?@@`!B](``8RR``&-D@`!CA(``5^"``&0\@`!D3(``9'"``&5(
+M@`!E^(``5^"``%?@@`!7X(``5^"``%?@@`!7X(``5^"``&8P5$%21U]W9&-#
+M=')L37-G1&ES<&%T8VA,;V]P`$%#22`D260Z("\O9&5P;W0O<W<O8G)A;F-H
+M97,O,2XU55-"1&5V+W-R8R]H86PO:&%L36ES8RYC(S$U("0```"``'=L@`!W
+M;(``=VR``'=L@`!W;(``=VR``'=L@`!W;(``=VR``'=L@`!W;(``=VR``'=L
+M@`!W;(``=VR``'=L@`!W?(``=Y"``'>D@`!X`"1)9#H@+R]D97!O="]S=R]B
+M<F%N8VAE<R\Q+C554T)$978O<W)C+VAA;"]A<C4R,3(O87(U,C$R071T86-H
+M+F,C,3<@)```````@````)@@55555:JJJJIF9F9FF9F9F21)9#H@+R]D97!O
+M="]S=R]B<F%N8VAE<R\Q+C554T)$978O<W)C+VAA;"]A<C4R,3(O87(U,C$R
+M2V5Y0V%C:&4N8R,W("0``(``L'"``*>L@`"G?(``L+B``*>L@`"GK(``IZR`
+M`*>L@`"GK(``IZR``*>L@`"GK(``IZR``*>L@`"GK(``IZR``+#<@`"P[(``
+MIZR``*>L@`"GK(``IZR``*>L@`"GK(``IZR``*>L@`"GK(``IZR``*>L@`"G
+MK(``IZR``*>L@`"P["1)9#H@+R]D97!O="]S=R]B<F%N8VAE<R\Q+C554T)$
+M978O<W)C+VAA;"]A<C4R,3(O87(U,C$R36ES8RYC(S(P("0`@`"Z-(``NC2`
+M`+M$@`"[;(``N\`N+B\N+B\N+B\N+B\N+B]H86PO87(U,C$R+V%R-3(Q,DUI
+M<V,N8P``(2`E+3,P<SH@)2TR,',Z)2TU9"!%0T]37TY/5$1/3D4*````87(U
+M,C$R27-(=T-I<&AE<E-U<'!O<G1E9````/___\G____"____\O____3____`
+M____NO___[+___^P````?P```#(```!_````*````'\```!-````?P```$``
+M```?````$````#\````P````"`````8`````````!`````@````"````!```
+M``8````(````"@````P````.````$(``Q8R``,:\@`#(K(``R0"``,EH)$ED
+M.B`O+V1E<&]T+W-W+V)R86YC:&5S+S$N-5530D1E=B]S<F,O:&%L+V%R-3(Q
+M,B]A<C4R,3)0;W=E<BYC(S4@)`"``-14@`#4[(``T]B``-5(@`#6#"1)9#H@
+M+R]D97!O="]S=R]B<F%N8VAE<R\Q+C554T)$978O<W)C+VAA;"]A<C4R,3(O
+M87(U,C$R4F5C96EV92YC(S@@)````(``V&2``-DT@`#9N(``V?R``-IP)$ED
+M.B`O+V1E<&]T+W-W+V)R86YC:&5S+S$N-5530D1E=B]S<F,O:&%L+V%R-3(Q
+M,B]A<C4R,3)297-E="YC(S$U("0`````(#9M8B!/1D1-````(#EM8B!/1D1-
+M````,3)M8B!/1D1-````,3AM8B!/1D1-````,C1M8B!/1D1-````,S9M8B!/
+M1D1-````-#AM8B!/1D1-````-31M8B!/1D1-````,4P@("!#0TL@````,DP@
+M("!#0TL@````,E,@("!#0TL@````-2XU3"!#0TL@````-2XU4R!#0TL@````
+M,3%,("!#0TL@````,3%3("!#0TL@````6%(@("`@("`@````@`(.O(`"#LB`
+M`@[4@`(.X(`"#NR``@[X@`(/!(`"#Q"``@\<@`(/*(`"#S2``@]`@`(/3(`"
+M#UB``@]D@`(/<(`!)_B``2@`@`$H"(`!*!"``2@0@`$H&(`!*""``4&@@`%!
+MS(`!0=2``4'<@`%!Y(`!0>R``4'T@`%!_(`!0@2``4(0@`%"&(`!0B2``4(P
+M@`%"/(`!0DB``4)4@`%"8(`!0FR``4)X@`%"A(`!0I"``4*<@`%"J(`!0K2`
+M`4+`@`%"X(`!0NR``4+X@`%#!(`!0Q"``4,<@`%#*(`!0S2``4-`@`%#3(`!
+M0UB``4-D@`%#<"XN+RXN+RXN+RXN+RXN+VAA;"]W9&,O=&%R9V5T+W-R8R]A
+M<D-O;FXN8P``)7,Z)60@4F5S971T:6YG(%)E=')Y(%%U975E(0H```"``5QL
+M@`%<I(`!7*R``5RX@`%<P(`!7'B``5QX@`%<R(`!7-"``5S8@`%<X(`!7'B`
+M`5SH@`%<\(`!7/B``5T`@`%<>(`!7'B``5T(@`%<>(`!71R``5V`@`%=B(`!
+M79"``5V8@`%=H(`!7:B``5VP@`%<>(`!7;B``5W$@`%=T(`!7=B``5WT@`%@
+MY(`!8B2``6'`@`%AS(`!8B2``6'4@`%AW(`!8>2``6'L@`%A](`!8?R``6(<
+M@`%B)(`!8BR``6)(55-".B5S(%LE9%T*`````'9E;F1O<E)E<V5T`(`!>IB`
+M`7JT@`%Z4(`!>M"``7I0@`%Z[(`!>PB``7LD@`%[0(`!>UR``7NX@`%[U(`!
+M>_!/=F5R:61E(#H@)60@96X@.B`E9`H```!#;VYF:6<@.B`E>`H`````@`&*
+MZ(`!BO"``8L4@`&+'(`!BR2``8LL@`&+L(`!B[2``8O8@`&+\(`!B_B``8P`
+M@`&,"$4*```P,3(S-#4V-S@Y04)#1$5&`````#`Q,C,T-38W.#D``#`Q,C,T
+M-38W.#EA8F-D968`````/$YO="!A('-T<FEN9SH@,'@````^````/&YU;&P^
+M```\0F%D(&9O<FUA="!S=')I;F<Z(``````@.@``/@H``(`!O0R``;U0@`&]
+M#(`!O5"``;U0@`&]4(`!O5"``;U0@`&]4(`!O5"``;U0@`&]4(`!O5"``;U0
+M@`&]4(`!O5"``;U0@`&]4(`!O5"``;T,@`&]4(`!O5"``;T,@`&]4(`!O5"`
+M`;U0@`&]4(`!O5"``;U0@`&]4(`!O5"``;U0@`&]#(`!O5"``;T,@`&]4(`!
+MO5"``;U0@`&]4(`!O5"``;U0@`&]4(`!O5"``;U0@`&]4(`!O5"``;T,@`&]
+M4(`!O5"``;U0@`&]4(`!O0R``;U0@`&]4(`!O0R``;]0@`'`C(`!P(R``<",
+M@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!P(R`
+M`<",@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!
+MP(R``<",@`'`C(`!OV2``;_D@`&]I(`!P(R``<",@`'`C(`!P(R``<",@`'`
+MC(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`!(`!P(R``;VD
+M@`'`C(`!P(R``;VD@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!P(R`
+M`<",@`&_9(`!O^2``;VD@`'`C(`!P(R``<",@`'`C(`!P(R``<",@`'`C(`!
+MP(R``<",@`'`C(`!P(R``;U\@`'`C(`!P(R``<`$@`'`C(`!O:2``<",@`'`
+MC(`!O:2``;W4@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX
+M@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX@`&]^(`!O=2``;WX@`&]^(`!ORB`
+M`;WX@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX@`&]^(`!
+MO=2``;WX@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX@`&]^(`!O?B``;WX@`&]
+M^(`!OT2``;WX@`&]^(`!O?B``;WX@`&]U(`!O?B``;WX@`&_1"4P.%@Z(```
+M)3`R6"`````@````('P``"5C``!\"@``("`@`"4P.%@@````"@```"`@("`@
+M("`@(````"4P-%@@````("`@("````"``<VT@`'-H(`!S:"``<V@@`'-M(`!
+MS;2``<VT@`'-M(`!SO"``<]8@`'/6(`!SUB``<\,@`'/#(`!SPR``<\,@`'1
+M?(`!T7R``=%H@`'1L(`!T7R``=%\@`'1?(`!T7Q)9&QE(%1H<F5A9`"``>_8
+M@`'OF(`![YB``>^8@`'P((`![TR``?"<@`'PI``!`@(#`P,#!`0$!`0$!`0%
+M!04%!04%!04%!04%!04%!@8&!@8&!@8&!@8&!@8&!@8&!@8&!@8&!@8&!@8&
+M!@8'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
+M!P<'!P<'!P<'!P<'!P<'!P<'!P<'"`@("`@("`@("`@("`@("`@("`@("`@(
+M"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
+M"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
+M"`@("`@("`@("`@("`@);`F/";0```D("6P)M```````!0`*`!0`'@`R`$8`
+M50!:`%\`9```````"@`4`!X`*``R`#P`1@!0`%H`9```````,```@!4``(`5
+M``"`%0``@!4``(`5```00``O_`\`+_P/`"_\'P`O_`\`+_P/```01``O_`\`
+M+_P/`"_\'P`O_`\`+_P/```02``O_`\`+_P/`"_\'P`O_`\`+_P/```03``O
+M_`\`+_P/`"_\'P`O_`\`+_P/```04``O_`\`+_P/`"_\'P`O_`\`+_P/```0
+M5``O_`\`+_P/`"_\'P`O_`\`+_P/```06``O_`\`+_P/`"_\'P`O_`\`+_P/
+M```07``O_`\`+_P/`"_\'P`O_`\`+_P/```08``O_`\`+_P/`"_\'P`O_`\`
+M+_P/```09``O_`\`+_P/`"_\'P`O_`\`+_P/```0,````C````'@````L```
+M`6````'@```0<````6@```'@```!N````8P```'@```0L```#F```!&````?
+M'```/C@``!&````0\```H.```4!H``!8@```L.```4!H``"`%`/H`^@&X`;@
+M!"`$(`A`"$`&X`;@``"`'!*-DZ<)B!//!.`3E1+@$ZL)B!//``"8!```````
+M```#```````````````#``"8(`("`@`"`@(``@$"``("`@`"`@(```"8)```
+M#@X```X.```'!P``#@X```X.``"8*`H"``$*`@`!!0(!``H"``$*`@`!``"8
+M-```#@X```X.```.#@``#@X```X.``"8.`````<````'````"P````L````+
+M``"81!-R%AP3<APE$W(7*!-R%J(3<APE``"82``8VFT`&-IM`!C*=0`8RG4`
+M&,IU``"84`WHM.`-Z+3@#>BTX`WHM.`-Z+3@``"86'Z`#2Y^@`TN?N@-+G[H
+M#2Y^@`TN``"87#$W9EXQ-V9>,3=F7C$W9EXQ-V9>``"88```G1```)T0``"=
+M&```G1@``)T0``"89``!S@```<X```'.```!S@```<X```"8:$":09!`FD&0
+M0)I!D$":09!`FD&0``"8;`4,L($%#+"!!0RP@04,L($%#+"!``"9%```!]``
+M``?0```$3```")@```?0``"9&````;@```&X````A````0@```&X``"9)!`%
+MB@40!8H%$`6*!1`%B@40!8H%``"91/>X$"#WN!`@][@-$/>X$!#WN!`0``"B
+M!```````````````"`````@````(``"B"-:^1XC6OD>(T#Y'B-`^1XC0/D>(
+M``"B#&0L`4!D+`%`9$+!8&1"P6!D0L%@``"B'!B#@`H8@X`*&&.`"AB#@`H8
+M@X`*``"B,````````````````````0@`````````#``````````T````!0``
+M`$``````````1`````@```!(````"````$P````0````4`````````!4````
+M'P``"``````````(!`````````@(````````"`P````````($`````````@4
+M````````"!@````````('`````````@@````````""0````````2,```````
+M`!)P````````$#@````````0>````````!"X````````$/@````````1.```
+M`````!%X````````$;@````````1^````````!(X````````$G@````````2
+MN````````!+X````````$S@````````3>````````!.X````````$_@`````
+M```4.````````!1X````````%+@````````4^````````!4X````````%7@`
+M```````5N````````!7X````````%C@````````6>````````!:X````````
+M%O@````````7.````````!=X````````%[@````````7^````````!`\````
+M````$'P````````0O````````!#\````````$3P````````1?````````!&\
+M````````$?P````````2/````````!)\````````$KP````````2_```````
+M`!,\````````$WP````````3O````````!/\````````%#P````````4?```
+M`````(`$````````@`@```````"`#````````(`8````````@"````````"`
+M)````````(`H````,```@"P`!___``"`,`'___\``(`T````,0``@#@`````
+M``"`/````````(!(````````@%0```````"`6````````(!<___'_P``@&``
+M```/``"`@````````("$````````@(@```````"`C````````("0````````
+M@)0```````"`F````````(#`*H(P&@``@,0%W`'@``"`R!]`)Q```(#,`?0`
+M````@-```!X<``"`U``"JJH``(#8`@!550``@-P```````"`X/____\``(#D
+M``#__P``@.@```````"`[````````(#P````````@/0```````"`^```````
+M`(#\````B```AP````````"'!````(P``(<(````Y```APP```+5``"'$```
+M`````(<4````````AQ@```"@``"''````<D``(<@````+```AR0````L``"'
+M*````#```(<L````/```AS`````L``"'-````"P``(<X````,```ASP````\
+M``"'0````````(=$````````AT@```````"'3````````(=0````````AU0`
+M``````"'6````````(=<````````AV````#5``"'9````-\``(=H```!`@``
+MAVP```$Z``"'<````'4``(=T````?P``AW@```"B``"'?````````($```$`
+M`@``@00````!``"!"````,```($,````````@1````%H``"!%````````(%`
+M@``"J```@40```````"'P`,"`0```(?$!P8%!```A\@+"@D(``"'S`\.#0P`
+M`(?0$Q(1$```A]07%A44``"'V!L:&1@``(?<'QX='```A^`#`@$```"'Y`<&
+M!00``(?H"PH)"```A^P/#@T,``"'\!,2$1```(?T%Q85%```A_@;&AD8``"'
+M_!\>'1P``)@(````````F`RMA(X9``"8$'THX````)@4G`J?:P``F!P`````
+M``"8+``"H`(``)@\``(!````F$`@:@%Z``"83!*$(SP``)A4```(60``F0``
+M``````"9!````````)D(````````F0P`@`````"9$`````$``)D<```,@```
+MF2`%$`````"9*`````$``)DL````!```F3```$B"``"9-!X?("(``)DX"@L,
+M#0``F3P````_``"90`````0``)E(DH"R$@``F51=4.&(``"96````/\``)E<
+M`$MJC@``F6@```/.``"9<!DOM14``)ET````````F7@````!``"9?```````
+M`)F`````````F80"@`````"9H````````)G@````````F>2JJJJJ``"9Z#Q&
+M9'@``)GL````J@``HA``@&,S``"B%``0;!```*(8`)Q`8```HB`!B##&``"B
+M)```!````*(H```)M0``HBP```````"B-"`@("```*(X("`@(```HCP3R(FO
+M``"B0#A)"B```*)$``![M@``HD@/_S_\``"B3````````*)0````````HE0`
+M``````";`````````)L$`````0``FP@````"``";#`````,``)L0````!```
+MFQ0````%``";&`````@``)L<````"0``FR`````*``";)`````L``)LH````
+M#```FRP````-``";,````!```)LT````$0``FS@````2``";/````!,``)M`
+M````%```FT0````5``";2````!@``)M,````&0``FU`````:``";5````!L`
+M`)M8````'```FUP````=``";8````"```)MD````(0``FV@````B``";;```
+M`",``)MP````)```FW0````E``";>````"@``)M\````*0``FX`````J``";
+MA````"L``)N(````+```FXP````M``";D````#```)N4````,0``FY@````R
+M``";G````#,``)N@````-```FZ0````U``";J````#4``)NL````-0``F[``
+M```U``";M````#4``)NX````-0``F[P````U``";P````#4``)O$````-0``
+MF\@````U``";S````#4``)O0````-0``F]0````U``";V````#4``)O<````
+M-0``F^`````U``";Y````#4``)OH````-0``F^P````U``";\````#4``)OT
+M````-0``F_@````0``";_````!H``)H`````!P````<``)H$````1P```$<`
+M`)H(````AP```(<``)H,```!H````:```)H0```!X````>```)H4````(```
+M`"```)H8````8````&```)H<```!H0```:$``)H@```!X0```>$``)HD````
+M(0```"$``)HH````80```&$``)HL```!8@```6(``)HP```!H@```:(``)HT
+M```!X@```>(``)HX````(@```"(``)H\````8@```&(``)I````!8P```6,`
+M`)I$```!HP```:,``)I(```!XP```>,``)I,````(P```",``)I0````8P``
+M`&,``)I4```!A````80``)I8```!Q````<0``)I<````!`````0``)I@```!
+MZ@````L``)ID````*@```$L``)IH````:@```(L``)IL````J@```:P``)IP
+M```!JP```>P``)IT```!ZP```"P``)IX````*P```!(``)I\````:P```%(`
+M`)J`````JP```)(``)J$```!K````9,``)J(```![````=,``)J,````+```
+M`!,``)J0````.@```%,``)J4````>@```),``)J8````N@```90``)J<```!
+MNP```=0``)J@```!^P```!0``)JD````.P```#H``)JH````>P```'H``)JL
+M````NP```+H``)JP```!O````;L``)JT```!_````?L``)JX````/````#L`
+M`)J\````?````'L``)K`````O````+L``)K$````_````;P``)K(````_```
+M`?P``)K,````_````#P``)K0````_````'P``)K4````_````+P``)K8````
+M_````/P``)K<````_````/P``)K@````_````/P``)KD````_````/P``)KH
+M````_````/P``)KL````_````/P``)KP````_````/P``)KT````_````/P`
+M`)KX````_````/P``)K\````_````/P``)C4````(```F-`#!@0(`P<$"`,&
+M!`@#!@0(`P<$"```F-P`H,#``*#`P`#@P,``X,#``.#`P```F)P*````"@``
+M``H````*````"@``````F)P`````````````````````````````F)P`@```
+M`(````"`````@````(``````F)P`*@```"H````J````*@```"H`````F)P`
+M`0````$````!`````0````$`````F)P`````````````````````````````
+MF)P`&````!@````8````&````!@`````F)P`8````&````!N````;@```&X`
+M````F)P`QP```,<```#'````QP```,<`````F)P`2P```$L```!+````2P``
+M`$L`````F)P$2```!$@```1(```$2```!$@`````F)P`3````$P```!,````
+M3````$P`````F)P`Y````.0```#D````Y````.0`````F)P`````````````
+M````````````````F)P`_````/P```#\````_````/P`````F)P`_P```/\`
+M``#_````_P```/\`````F)P$/P``!#\```0_```$/P``!#\`````F)P,#```
+M#`P```P,```,#```#`P`````F)P"&0```AD```(9```"&0```AD`````F)P`
+M)````"0````D````)````"0`````F)P`M````+0```"T````M````+0`````
+MF)P`F0```)D```"9````F0```)D`````F)P`4````%````!0````4````%``
+M````F)P`*@```"H````J````*@```"H`````F)P`$@```!(````2````$@``
+M`!(`````F)S`,@``P#(``,`R``#`,@``P#(`````F)P!=````70```%T```!
+M=````70`````F)P`$0```!$````1````$0```!$`````F)R&*```AB@``(8H
+M``"&*```AB@`````F)PQA```,80``#&$```QA```,80`````F)P`\@"``/(`
+M@`#R`(``\@"``/(`@```F)P`)P`9`"<`&0`G`!D`)P`9`"<`&0``F)P````#
+M`````P````,````#`````P``F)P`````````````````````````````F)P`
+M``"R````L@```+(```"R````L@``F)P`L"&$`+`AA`"P(80`L"&$`+`AA```
+MF)P`026D`$$EI`!!):0`026D`$$EI```F)P`$9(@`!&2(``1DB``$9(@`!&2
+M(```F)P`&D@``!I(```:2```&D@``!I(````F-@`"P(P``L",``+`C``"P(P
+M``L",```F)P```"4````E````)0```"4````E```F)P```"1````D0```)$`
+M``"1````D0``F)P````2````$@```!(````2````$@``F)P```"`````@```
+M`(````"`````@```F)P```#9````V0```-D```#9````V0``F)P```!@````
+M8````&````!@````8```F)P```#P````\````/````#P````\```F)P```"B
+M````H@```*(```"B````H@``F)P```!2````4@```%(```!2````4@``F)P`
+M``#4````U````-0```#4````U```F)P``!3,```4S```%,P``!3,```4S```
+MF)P```2,```$C```!(P```2,```$C```F,0````#`````P````,````#````
+M`X``\02``/5L@`$,<`````,`!@`)`#\```````D````$``0``0`!``$`````
+M``````````9&1S@```````````````````0````!``$```````````````1&
+M1S<```````````````````,``0`!``$```````````````-&1S8`````````
+M``````````0```````$```````````````%&1S4```````````````````0`
+M`0`!``````````````````!&1S0```````````````````0````!````````
+M`````/____Y&1S,```````````````````,``0`!`````````````/____U&
+M1S(```````````````````0``````````````````/____Q&1S$`````````
+M``````````(``0`!`````````````/____I&1S``````````````````````
+M````````````````````````````````````````````````"`````$``P``
+M````````````````````!D9'-P```````````````````@``````````````
+M`````````$9'-@```````````````````0``````````````````_____49'
+M-0``````````````````````````````````````____^D9'-```````````
+M```````````!``$`````````````____^$9',P`````````````````````!
+M``$````!``$`````____]D9',@`````````````````````!`````0`!``$`
+M````____\T9',0`````````````````````!`````0`!`````0``____\$9'
+M,```````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````"
+M````!`````H````!`````P````H````"````!0````H````"````!`````H`
+M```"`````P````H``````````@````,```````````````"``D1X@`)$@(`"
+M1,2``D3H@`)$?/\``0P"!@`-`P`'``````X*!```"```&0``````%1L/'PL%
+M```````)```8```4&AX`````%P`3'0`6$AP1$``"8EH``/#<*``$```!;C8`
+M`<G#@`.3AP`')PX``+<;``````"```>`@``&=(``!G2```9T@``&=(``!G2`
+M``9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``
+M!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T@``&
+M=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T
+M@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2`
+M``9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``!G2```9T@``&=(``
+M!G2```9T@`&VF(`!MIB``;:8@`&VF(`!MIB``;:8@`&VF(`!MIB``;:8@`&V
+MF(`!MIB``;:8@`&VF(`!MIB``;:8@`&VF(`!MIB``;:8@`&VF(`!MIB``;:8
+M@`&VF(`!MIB``;:8@`&VF(`!MIB``;:8@`&VF(`!MIB``;:8````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````@`*A$```````$P``@`!X2!$3``"``'A(`#```(``>$@`%```@`!X
+M2``5``"``'A(`!8``(``>$@`%P``@`!X2``8``"``'A(`!D``(``>$@`4``3
+M`%$`$P!3`!,`5@`3`%4`$P!5`!,`@``3`($`$P```,(```#$````Q0```-``
+M``#:````Y````,(```##````U````/(```$-```!*```````````````````
+M`!#_``````````````````````````````````````````````$`````%W`5
+M&`L`C``"`0`\`#P```````$`````(R@>>`\`$@`#`0`\`#P```````$`````
+M+N`G$`H`F`($`@`P`#````````$`````1E`V3`X`)`(&`@`P`#````````$`
+M````7<!#E`D`L`0*`P`L`"P```````$`````C*!9V`T`2`0.`P`L`"P`````
+M``$`````NX!K"`@`8`03`P`L`"P```````$`````TO!R=`P`;`07`P`L`"P`
+M``````$````!%W`I:`L`C`@"`0`B`"(```````$````!(R@\\`\`$@@#`0`B
+M`"(```````$````!+N!+R`H`F`H$`@`>`!X```````$````!1E!I%`X`)`H&
+M`@`>`!X```````$````!7<"!L`D`L`P*`P`:`!H```````$````!C*"J4`T`
+M2`P.`P`:`!H```````$````!NX#(9`@`8`P3`P`:`!H```````$````!TO#7
+M/`P`;`P7`P`:`!H`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````&0````R
+M!0LR!P@```````````````````C_````````````````````````````````
+M``````````````$````!%W`5&`L`C``"`0`B`"(```````$````!(R@>>`\`
+M$@`$`0`B`"(```````$````!+N`G$`H`F`('`@`>`!X```````$````!1E`V
+M3`X`)`()`@`>`!X```````$````!7<!#E`D`L`0.`P`:`!H```````$````!
+MC*!9V`T`2`01`P`:`!H```````$````!NX!K"`@`8`06`P`:`!H```````$`
+M```!TO!R=`P`;`0:`P`:`!H`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````&0````R````!P@``````````````````!/_````````
+M``````````````````````````````````````$````"`^@#A!L``@```0$Z
+M`3H```````$````"!]`';!H$!`$!`0$"`*(```````$````"%7P3)!D$"P("
+M`@#?`'\```````$````"*O@?I!@$%@,#`@#5`'4`````````````%W`5&`L`
+M#`0"`0`\`#P`````````````(R@>>`\`$@0#`0`\`#P```````$`````+N`G
+M=`H`&`8$`0`P`#````````$`````1E`W%`X`)`8&`@`P`#````````$`````
+M7<!%)`D`,`@*`P`L`"P```````$`````C*!<E`T`2`@.`P`L`"P```````$`
+M````NX!K"`@`8`@3`P`L`"P```````$`````TO!R=`P`;`@7`P`L`"P`````
+M``$````!%W`I:`L`C`P"`0`B`"(```````$````!+N!+R`H`&`T$`0`>`!X`
+M``````$````!1E!I%`X`)`T&`@`>`!X```````$````!7<"!L`D`L`\*`P`:
+M`!H```````$````!C*"J4`T`2`\.`P`:`!H```````$````!NX#(9`@`8`\3
+M`P`:`!H```````$````!TO#7/`P`;`\7`P`:`!H`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````&0````R"0XR"P<`````
+M``````````````3_````````````````````````````````````````````
+M``$````"`^@#A!L`@@```0$Z`3H```````$````"!]`'"!H$A`$!`0$"`*(`
+M``````$````"%7P0S!D$BP$"`@$"`*(```````$````"*O@;O!@$E@$$9`$"
+M`*(`````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````,@```!D`````P````````````````8``&P`V`&\`XP%5`JP````````
+M````````````````````````````````````````````````````````````
+M````````#?\``````````````````````````````````````````````0``
+M``,`^@#(`P`!`/<!`F0"9````````0````,!]`&0!P`!`?@$`<D!R0``````
+M`0````,#Z`.$`@`"`OP"`.0`Y````````0````,'T`<(!@`$`_X!`*``H```
+M`````0````,+N`J,`0`&!/\!`(P`C````````0`````7<!48"P",!0(!`#P`
+M/````````0`````C*!YX#P`2!0,!`#P`/````````0`````NX"<0"@"8!P0"
+M`#``,````````0````!&4#9,#@`D!P8"`#``,````````0````!=P$.4"0"P
+M"0H#`"P`+````````0````",H%G8#0!("0X#`"P`+````````0````"[@&L(
+M"`!@"1,#`"P`+````````0````#2\')T#`!L"1<#`"P`+```````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+MR````&0````,`````(`"0'P``````````(`!1^R``4A(@`%(I(`!21``````
+M````&0```#(```!+````4````%,```!5````5P```%@```!:```"````!R``
+M``(````'(````@````(````"`````@````(````"`````@````(`````````
+M``````````````0#"00$`R``-@-!`'0`:`!E`'(`;P!S`"``0P!O`&T`;0!U
+M`&X`:0!C`&$`=`!I`&\`;@!S`"``20!N`&,````````````````````.`T$`
+M4@`U`#4`,@`S```````````````````````````````(`S$`+@`P````````
+M`````````!(!``+_``!`\PP!``$``0(#`0``"@8``O\``$`!````"0(N``$!
+M`(#Z"00```3_````!P6!`D````<%`0)````'!8("0```!P4"`D````<%`P)`
+M```'!00"0```!P4%`D````<%!@)````'!0<"0```!P4(`D````<%"0)````'
+M!0H"0``````)!RX``0$`H/H)!```!/\````'!8$"0```!P4!`D````<%@@)`
+M```'!0("0```!P4#`D````<%!`)````'!04"0```!P4&`D````<%!P)````'
+M!0@"0```!P4)`D````<%"@)```````````````````````"JJJJJJJJJJN[N
+M[N[N[N[N_O______________?[_?[_?[_?Q^O]_O]_O]?@`````!`0`"8EH`
+M``8:@`````#____^_____@``````````@`&WO````````0```````8`"G,0`
+M````H+```````^@````(````````````````.YK*`````&2``:08@`'K*(`!
+MTSR``?P<@`'4*(`!V2B``>&$@`'"5(`!ZTB``=-<@`'\/(`!V4B``>&D````
+M`#P$@``DA````^`((3P%@``DI0``/!^``B?_1N``OR@B!!$``0``````OR@@
+M`"#X(0/@,"$#X`@A/!J``B=:1W@\'X`")_]'#`-?T"($$0`!``````-?T"``
+M(/@A`T#X"0``````P$`A`^`((3P)@`(E*4=D/!^``B?_1T`!/T@B!!$``0``
+M```!/T@@`"#X(0$H0"(\`H`")$)'7`!```@`````!!$``0`````#Z$`B`0#X
+M(0/@``@```````````"`0"$`H$@A/`N``B5K1W2-(@``K0(``"4I``0E"``$
+0%0O_^P`````#X``(````````
+`
+end
diff --git a/sys/dev/usb/wlan/if_uath.c b/sys/dev/usb/wlan/if_uath.c
new file mode 100644
index 0000000..a19d3b0
--- /dev/null
+++ b/sys/dev/usb/wlan/if_uath.c
@@ -0,0 +1,2862 @@
+/*-
+ * Copyright (c) 2006 Sam Leffler, Errno Consulting
+ * Copyright (c) 2008-2009 Weongyo Jeong <weongyo@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ * redistribution must be conditioned upon including a substantially
+ * similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+/*
+ * This driver is distantly derived from a driver of the same name
+ * by Damien Bergamini. The original copyright is included below:
+ *
+ * Copyright (c) 2006
+ * Damien Bergamini <damien.bergamini@free.fr>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*-
+ * Driver for Atheros AR5523 USB parts.
+ *
+ * The driver requires firmware to be loaded into the device. This
+ * is done on device discovery from a user application (uathload)
+ * that is launched by devd when a device with suitable product ID
+ * is recognized. Once firmware has been loaded the device will
+ * reset the USB port and re-attach with the original product ID+1
+ * and this driver will be attached. The firmware is licensed for
+ * general use (royalty free) and may be incorporated in products.
+ * Note that the firmware normally packaged with the NDIS drivers
+ * for these devices does not work in this way and so does not work
+ * with this driver.
+ */
+#include <sys/param.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/mbuf.h>
+#include <sys/kernel.h>
+#include <sys/socket.h>
+#include <sys/systm.h>
+#include <sys/malloc.h>
+#include <sys/module.h>
+#include <sys/bus.h>
+#include <sys/endian.h>
+#include <sys/kdb.h>
+
+#include <machine/bus.h>
+#include <machine/resource.h>
+#include <sys/rman.h>
+
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_arp.h>
+#include <net/ethernet.h>
+#include <net/if_dl.h>
+#include <net/if_media.h>
+#include <net/if_types.h>
+
+#ifdef INET
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/in_var.h>
+#include <netinet/if_ether.h>
+#include <netinet/ip.h>
+#endif
+
+#include <net80211/ieee80211_var.h>
+#include <net80211/ieee80211_regdomain.h>
+#include <net80211/ieee80211_radiotap.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usb_core.h>
+#include <dev/usb/usb_busdma.h>
+#include <dev/usb/usb_debug.h>
+#include <dev/usb/usb_error.h>
+#include <dev/usb/usb_lookup.h>
+#include <dev/usb/usb_util.h>
+#include "usbdevs.h"
+
+#include <dev/usb/wlan/if_uathreg.h>
+#include <dev/usb/wlan/if_uathvar.h>
+
+SYSCTL_NODE(_hw_usb2, OID_AUTO, uath, CTLFLAG_RW, 0, "USB Atheros");
+
+static int uath_countrycode = CTRY_DEFAULT; /* country code */
+SYSCTL_INT(_hw_usb2_uath, OID_AUTO, countrycode, CTLFLAG_RW, &uath_countrycode,
+ 0, "country code");
+TUNABLE_INT("hw.usb2.uath.countrycode", &uath_countrycode);
+static int uath_regdomain = 0; /* regulatory domain */
+SYSCTL_INT(_hw_usb2_uath, OID_AUTO, regdomain, CTLFLAG_RD, &uath_regdomain,
+ 0, "regulatory domain");
+
+#ifdef UATH_DEBUG
+int uath_debug = 0;
+SYSCTL_INT(_hw_usb2_uath, OID_AUTO, debug, CTLFLAG_RW, &uath_debug, 0,
+ "uath debug level");
+TUNABLE_INT("hw.usb.uath.debug", &uath_debug);
+enum {
+ UATH_DEBUG_XMIT = 0x00000001, /* basic xmit operation */
+ UATH_DEBUG_XMIT_DUMP = 0x00000002, /* xmit dump */
+ UATH_DEBUG_RECV = 0x00000004, /* basic recv operation */
+ UATH_DEBUG_TX_PROC = 0x00000008, /* tx ISR proc */
+ UATH_DEBUG_RX_PROC = 0x00000010, /* rx ISR proc */
+ UATH_DEBUG_RECV_ALL = 0x00000020, /* trace all frames (beacons) */
+ UATH_DEBUG_INIT = 0x00000040, /* initialization of dev */
+ UATH_DEBUG_DEVCAP = 0x00000080, /* dev caps */
+ UATH_DEBUG_CMDS = 0x00000100, /* commands */
+ UATH_DEBUG_CMDS_DUMP = 0x00000200, /* command buffer dump */
+ UATH_DEBUG_RESET = 0x00000400, /* reset processing */
+ UATH_DEBUG_STATE = 0x00000800, /* 802.11 state transitions */
+ UATH_DEBUG_MULTICAST = 0x00001000, /* multicast */
+ UATH_DEBUG_WME = 0x00002000, /* WME */
+ UATH_DEBUG_CHANNEL = 0x00004000, /* channel */
+ UATH_DEBUG_RATES = 0x00008000, /* rates */
+ UATH_DEBUG_CRYPTO = 0x00010000, /* crypto */
+ UATH_DEBUG_LED = 0x00020000, /* LED */
+ UATH_DEBUG_ANY = 0xffffffff
+};
+#define DPRINTF(sc, m, fmt, ...) do { \
+ if (sc->sc_debug & (m)) \
+ printf(fmt, __VA_ARGS__); \
+} while (0)
+#else
+#define DPRINTF(sc, m, fmt, ...) do { \
+ (void) sc; \
+} while (0)
+#endif
+
+/* unaligned little endian access */
+#define LE_READ_2(p) \
+ ((u_int16_t) \
+ ((((u_int8_t *)(p))[0] ) | (((u_int8_t *)(p))[1] << 8)))
+#define LE_READ_4(p) \
+ ((u_int32_t) \
+ ((((u_int8_t *)(p))[0] ) | (((u_int8_t *)(p))[1] << 8) | \
+ (((u_int8_t *)(p))[2] << 16) | (((u_int8_t *)(p))[3] << 24)))
+
+/* recognized device vendors/products */
+static const struct usb2_device_id uath_devs[] = {
+#define UATH_DEV(v,p) { USB_VP(USB_VENDOR_##v, USB_PRODUCT_##v##_##p) }
+ UATH_DEV(ATHEROS, AR5523),
+ UATH_DEV(ATHEROS2, AR5523_1),
+ UATH_DEV(ATHEROS2, AR5523_2),
+ UATH_DEV(ATHEROS2, AR5523_3),
+ UATH_DEV(CONCEPTRONIC, AR5523_1),
+ UATH_DEV(CONCEPTRONIC, AR5523_2),
+ UATH_DEV(DLINK, DWLAG122),
+ UATH_DEV(DLINK, DWLAG132),
+ UATH_DEV(DLINK, DWLG132),
+ UATH_DEV(GIGASET, AR5523),
+ UATH_DEV(GIGASET, SMCWUSBTG),
+ UATH_DEV(GLOBALSUN, AR5523_1),
+ UATH_DEV(GLOBALSUN, AR5523_2),
+ UATH_DEV(NETGEAR, WG111U),
+ UATH_DEV(NETGEAR3, WG111T),
+ UATH_DEV(NETGEAR3, WPN111),
+ UATH_DEV(UMEDIA, TEW444UBEU),
+ UATH_DEV(UMEDIA, AR5523_2),
+ UATH_DEV(WISTRONNEWEB, AR5523_1),
+ UATH_DEV(WISTRONNEWEB, AR5523_2),
+ UATH_DEV(ZCOM, AR5523)
+#undef UATH_DEV
+};
+
+static usb2_callback_t uath_intr_rx_callback;
+static usb2_callback_t uath_intr_tx_callback;
+static usb2_callback_t uath_bulk_rx_callback;
+static usb2_callback_t uath_bulk_tx_callback;
+
+static const struct usb2_config uath_usbconfig[UATH_N_XFERS] = {
+ [UATH_INTR_RX] = {
+ .type = UE_BULK,
+ .endpoint = 0x1,
+ .direction = UE_DIR_IN,
+ .mh.bufsize = UATH_MAX_CMDSZ,
+ .mh.flags = {
+ .pipe_bof = 1,
+ .short_xfer_ok = 1
+ },
+ .mh.callback = uath_intr_rx_callback
+ },
+ [UATH_INTR_TX] = {
+ .type = UE_BULK,
+ .endpoint = 0x1,
+ .direction = UE_DIR_OUT,
+ .mh.bufsize = UATH_MAX_CMDSZ,
+ .mh.flags = {
+ .ext_buffer = 1,
+ .force_short_xfer = 1,
+ .pipe_bof = 1,
+ },
+ .mh.callback = uath_intr_tx_callback,
+ .mh.timeout = UATH_CMD_TIMEOUT
+ },
+ [UATH_BULK_RX] = {
+ .type = UE_BULK,
+ .endpoint = 0x2,
+ .direction = UE_DIR_IN,
+ .mh.bufsize = MCLBYTES,
+ .mh.flags = {
+ .ext_buffer = 1,
+ .pipe_bof = 1,
+ .short_xfer_ok = 1
+ },
+ .mh.callback = uath_bulk_rx_callback
+ },
+ [UATH_BULK_TX] = {
+ .type = UE_BULK,
+ .endpoint = 0x2,
+ .direction = UE_DIR_OUT,
+ .mh.bufsize = UATH_MAX_TXBUFSZ,
+ .mh.flags = {
+ .ext_buffer = 1,
+ .force_short_xfer = 1,
+ .pipe_bof = 1
+ },
+ .mh.callback = uath_bulk_tx_callback,
+ .mh.timeout = UATH_DATA_TIMEOUT
+ }
+};
+
+static struct ieee80211vap *uath_vap_create(struct ieee80211com *,
+ const char name[IFNAMSIZ], int unit, int opmode,
+ int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN]);
+static void uath_vap_delete(struct ieee80211vap *);
+static int uath_alloc_cmd_list(struct uath_softc *, struct uath_cmd [],
+ int, int);
+static void uath_free_cmd_list(struct uath_softc *, struct uath_cmd [],
+ int);
+static int uath_host_available(struct uath_softc *);
+static int uath_get_capability(struct uath_softc *, uint32_t, uint32_t *);
+static int uath_get_devcap(struct uath_softc *);
+static struct uath_cmd *
+ uath_get_cmdbuf(struct uath_softc *);
+static int uath_cmd_read(struct uath_softc *, uint32_t, const void *,
+ int, void *, int, int);
+static int uath_cmd_write(struct uath_softc *, uint32_t, const void *,
+ int, int);
+static void uath_stat(void *);
+#ifdef UATH_DEBUG
+static void uath_dump_cmd(const uint8_t *, int, char);
+static const char *
+ uath_codename(int);
+#endif
+static int uath_get_devstatus(struct uath_softc *,
+ uint8_t macaddr[IEEE80211_ADDR_LEN]);
+static int uath_get_status(struct uath_softc *, uint32_t, void *, int);
+static int uath_alloc_rx_data_list(struct uath_softc *);
+static int uath_alloc_tx_data_list(struct uath_softc *);
+static void uath_free_rx_data_list(struct uath_softc *);
+static void uath_free_tx_data_list(struct uath_softc *);
+static int uath_init_locked(void *);
+static void uath_init(void *);
+static void uath_stop_locked(struct ifnet *);
+static void uath_stop(struct ifnet *);
+static int uath_ioctl(struct ifnet *, u_long, caddr_t);
+static void uath_start(struct ifnet *);
+static int uath_raw_xmit(struct ieee80211_node *, struct mbuf *,
+ const struct ieee80211_bpf_params *);
+static void uath_scan_start(struct ieee80211com *);
+static void uath_scan_end(struct ieee80211com *);
+static void uath_set_channel(struct ieee80211com *);
+static void uath_update_mcast(struct ifnet *);
+static void uath_update_promisc(struct ifnet *);
+static int uath_config(struct uath_softc *, uint32_t, uint32_t);
+static int uath_config_multi(struct uath_softc *, uint32_t, const void *,
+ int);
+static int uath_switch_channel(struct uath_softc *,
+ struct ieee80211_channel *);
+static int uath_set_rxfilter(struct uath_softc *, uint32_t, uint32_t);
+static void uath_watchdog(void *);
+static void uath_abort_xfers(struct uath_softc *);
+static int uath_dataflush(struct uath_softc *);
+static int uath_cmdflush(struct uath_softc *);
+static int uath_flush(struct uath_softc *);
+static int uath_set_ledstate(struct uath_softc *, int);
+static int uath_set_chan(struct uath_softc *, struct ieee80211_channel *);
+static int uath_reset_tx_queues(struct uath_softc *);
+static int uath_wme_init(struct uath_softc *);
+static struct uath_data *
+ uath_getbuf(struct uath_softc *);
+static int uath_newstate(struct ieee80211vap *, enum ieee80211_state,
+ int);
+static int uath_set_key(struct uath_softc *,
+ const struct ieee80211_key *, int);
+static int uath_set_keys(struct uath_softc *, struct ieee80211vap *);
+static void uath_sysctl_node(struct uath_softc *);
+
+static int
+uath_match(device_t dev)
+{
+ struct usb2_attach_arg *uaa = device_get_ivars(dev);
+
+ if (uaa->usb2_mode != USB_MODE_HOST)
+ return (ENXIO);
+ if (uaa->info.bConfigIndex != UATH_CONFIG_INDEX)
+ return (ENXIO);
+ if (uaa->info.bIfaceIndex != UATH_IFACE_INDEX)
+ return (ENXIO);
+
+ return (usb2_lookup_id_by_uaa(uath_devs, sizeof(uath_devs), uaa));
+}
+
+static int
+uath_attach(device_t dev)
+{
+ struct uath_softc *sc = device_get_softc(dev);
+ struct usb2_attach_arg *uaa = device_get_ivars(dev);
+ struct ieee80211com *ic;
+ struct ifnet *ifp;
+ uint8_t bands, iface_index = UATH_IFACE_INDEX; /* XXX */
+ usb2_error_t error;
+ uint8_t macaddr[IEEE80211_ADDR_LEN];
+
+ sc->sc_dev = dev;
+ sc->sc_udev = uaa->device;
+#ifdef UATH_DEBUG
+ sc->sc_debug = uath_debug;
+#endif
+
+ /*
+ * Only post-firmware devices here.
+ */
+ mtx_init(&sc->sc_mtx, device_get_nameunit(sc->sc_dev), MTX_NETWORK_LOCK,
+ MTX_DEF);
+ callout_init(&sc->stat_ch, 0);
+ callout_init_mtx(&sc->watchdog_ch, &sc->sc_mtx, 0);
+
+ /*
+ * Allocate xfers for firmware commands.
+ */
+ error = uath_alloc_cmd_list(sc, sc->sc_cmd, UATH_CMD_LIST_COUNT,
+ UATH_MAX_CMDSZ);
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "could not allocate Tx command list\n");
+ goto fail;
+ }
+
+ error = usb2_transfer_setup(uaa->device, &iface_index, sc->sc_xfer,
+ uath_usbconfig, UATH_N_XFERS, sc, &sc->sc_mtx);
+ if (error) {
+ device_printf(dev, "could not allocate USB transfers, "
+ "err=%s\n", usb2_errstr(error));
+ goto fail1;
+ }
+
+ /*
+ * We're now ready to send+receive firmware commands.
+ */
+ UATH_LOCK(sc);
+ error = uath_host_available(sc);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not initialize adapter\n");
+ goto fail3;
+ }
+ error = uath_get_devcap(sc);
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "could not get device capabilities\n");
+ goto fail3;
+ }
+ UATH_UNLOCK(sc);
+
+ /* Create device sysctl node. */
+ uath_sysctl_node(sc);
+
+ ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211);
+ if (ifp == NULL) {
+ device_printf(sc->sc_dev, "can not allocate ifnet\n");
+ error = ENXIO;
+ goto fail2;
+ }
+
+ UATH_LOCK(sc);
+ error = uath_get_devstatus(sc, macaddr);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not get device status\n");
+ goto fail4;
+ }
+
+ /*
+ * Allocate xfers for Rx/Tx data pipes.
+ */
+ error = uath_alloc_rx_data_list(sc);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not allocate Rx data list\n");
+ goto fail4;
+ }
+ error = uath_alloc_tx_data_list(sc);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not allocate Tx data list\n");
+ goto fail4;
+ }
+ UATH_UNLOCK(sc);
+
+ ifp->if_softc = sc;
+ if_initname(ifp, "uath", device_get_unit(sc->sc_dev));
+ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+ ifp->if_init = uath_init;
+ ifp->if_ioctl = uath_ioctl;
+ ifp->if_start = uath_start;
+ /* XXX UATH_TX_DATA_LIST_COUNT */
+ IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN);
+ ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN;
+ IFQ_SET_READY(&ifp->if_snd);
+
+ ic = ifp->if_l2com;
+ ic->ic_ifp = ifp;
+ ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */
+ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */
+
+ /* set device capabilities */
+ ic->ic_caps =
+ IEEE80211_C_STA | /* station mode */
+ IEEE80211_C_MONITOR | /* monitor mode supported */
+ IEEE80211_C_TXPMGT | /* tx power management */
+ IEEE80211_C_SHPREAMBLE | /* short preamble supported */
+ IEEE80211_C_SHSLOT | /* short slot time supported */
+ IEEE80211_C_WPA | /* 802.11i */
+ IEEE80211_C_BGSCAN | /* capable of bg scanning */
+ IEEE80211_C_TXFRAG; /* handle tx frags */
+
+ /* put a regulatory domain to reveal informations. */
+ uath_regdomain = sc->sc_devcap.regDomain;
+
+ bands = 0;
+ setbit(&bands, IEEE80211_MODE_11B);
+ setbit(&bands, IEEE80211_MODE_11G);
+ if ((sc->sc_devcap.analog5GhzRevision & 0xf0) == 0x30)
+ setbit(&bands, IEEE80211_MODE_11A);
+ /* XXX turbo */
+ ieee80211_init_channels(ic, NULL, &bands);
+
+ ieee80211_ifattach(ic, macaddr);
+ ic->ic_raw_xmit = uath_raw_xmit;
+ ic->ic_scan_start = uath_scan_start;
+ ic->ic_scan_end = uath_scan_end;
+ ic->ic_set_channel = uath_set_channel;
+
+ ic->ic_vap_create = uath_vap_create;
+ ic->ic_vap_delete = uath_vap_delete;
+ ic->ic_update_mcast = uath_update_mcast;
+ ic->ic_update_promisc = uath_update_promisc;
+
+ bpfattach(ifp, DLT_IEEE802_11_RADIO,
+ sizeof (struct ieee80211_frame) + sizeof(sc->sc_txtap));
+
+ sc->sc_rxtap_len = sizeof sc->sc_rxtap;
+ sc->sc_rxtap.wr_ihdr.it_len = htole16(sc->sc_rxtap_len);
+ sc->sc_rxtap.wr_ihdr.it_present = htole32(UATH_RX_RADIOTAP_PRESENT);
+
+ sc->sc_txtap_len = sizeof sc->sc_txtap;
+ sc->sc_txtap.wt_ihdr.it_len = htole16(sc->sc_txtap_len);
+ sc->sc_txtap.wt_ihdr.it_present = htole32(UATH_TX_RADIOTAP_PRESENT);
+
+ if (bootverbose)
+ ieee80211_announce(ic);
+
+ return (0);
+
+fail4: if_free(ifp);
+fail3: UATH_UNLOCK(sc);
+fail2: usb2_transfer_unsetup(sc->sc_xfer, UATH_N_XFERS);
+fail1: uath_free_cmd_list(sc, sc->sc_cmd, UATH_CMD_LIST_COUNT);
+fail:
+ return (error);
+}
+
+static int
+uath_detach(device_t dev)
+{
+ struct uath_softc *sc = device_get_softc(dev);
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211com *ic = ifp->if_l2com;
+
+ if (!device_is_attached(dev))
+ return (0);
+
+ sc->sc_flags |= UATH_FLAG_INVALID;
+ uath_stop(ifp);
+ ieee80211_ifdetach(ic);
+
+ callout_drain(&sc->stat_ch);
+ callout_drain(&sc->watchdog_ch);
+
+ usb2_transfer_unsetup(sc->sc_xfer, UATH_N_XFERS);
+
+ /* free buffers */
+ UATH_LOCK(sc);
+ uath_free_rx_data_list(sc);
+ uath_free_tx_data_list(sc);
+ uath_free_cmd_list(sc, sc->sc_cmd, UATH_CMD_LIST_COUNT);
+ UATH_UNLOCK(sc);
+
+ bpfdetach(ifp);
+ if_free(ifp);
+ mtx_destroy(&sc->sc_mtx);
+ return (0);
+}
+
+static void
+uath_free_cmd_list(struct uath_softc *sc, struct uath_cmd cmds[], int ncmd)
+{
+ int i;
+
+ for (i = 0; i < ncmd; i++)
+ if (cmds[i].buf != NULL)
+ free(cmds[i].buf, M_USBDEV);
+}
+
+static int
+uath_alloc_cmd_list(struct uath_softc *sc, struct uath_cmd cmds[],
+ int ncmd, int maxsz)
+{
+ int i, error;
+
+ STAILQ_INIT(&sc->sc_cmd_active);
+ STAILQ_INIT(&sc->sc_cmd_pending);
+ STAILQ_INIT(&sc->sc_cmd_waiting);
+ STAILQ_INIT(&sc->sc_cmd_inactive);
+
+ for (i = 0; i < ncmd; i++) {
+ struct uath_cmd *cmd = &cmds[i];
+
+ cmd->sc = sc; /* backpointer for callbacks */
+ cmd->msgid = i;
+ cmd->buf = malloc(maxsz, M_USBDEV, M_NOWAIT);
+ if (cmd->buf == NULL) {
+ device_printf(sc->sc_dev,
+ "could not allocate xfer buffer\n");
+ error = ENOMEM;
+ goto fail;
+ }
+ STAILQ_INSERT_TAIL(&sc->sc_cmd_inactive, cmd, next);
+ UATH_STAT_INC(sc, st_cmd_inactive);
+ }
+ return (0);
+
+fail: uath_free_cmd_list(sc, cmds, ncmd);
+ return (error);
+}
+
+static int
+uath_host_available(struct uath_softc *sc)
+{
+ struct uath_cmd_host_available setup;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ /* inform target the host is available */
+ setup.sw_ver_major = htobe32(ATH_SW_VER_MAJOR);
+ setup.sw_ver_minor = htobe32(ATH_SW_VER_MINOR);
+ setup.sw_ver_patch = htobe32(ATH_SW_VER_PATCH);
+ setup.sw_ver_build = htobe32(ATH_SW_VER_BUILD);
+ return uath_cmd_read(sc, WDCMSG_HOST_AVAILABLE,
+ &setup, sizeof setup, NULL, 0, 0);
+}
+
+#ifdef UATH_DEBUG
+static void
+uath_dump_cmd(const uint8_t *buf, int len, char prefix)
+{
+ const char *sep = "";
+ int i;
+
+ for (i = 0; i < len; i++) {
+ if ((i % 16) == 0) {
+ printf("%s%c ", sep, prefix);
+ sep = "\n";
+ }
+ else if ((i % 4) == 0)
+ printf(" ");
+ printf("%02x", buf[i]);
+ }
+ printf("\n");
+}
+
+static const char *
+uath_codename(int code)
+{
+#define N(a) (sizeof(a)/sizeof(a[0]))
+ static const char *names[] = {
+ "0x00",
+ "HOST_AVAILABLE",
+ "BIND",
+ "TARGET_RESET",
+ "TARGET_GET_CAPABILITY",
+ "TARGET_SET_CONFIG",
+ "TARGET_GET_STATUS",
+ "TARGET_GET_STATS",
+ "TARGET_START",
+ "TARGET_STOP",
+ "TARGET_ENABLE",
+ "TARGET_DISABLE",
+ "CREATE_CONNECTION",
+ "UPDATE_CONNECT_ATTR",
+ "DELETE_CONNECT",
+ "SEND",
+ "FLUSH",
+ "STATS_UPDATE",
+ "BMISS",
+ "DEVICE_AVAIL",
+ "SEND_COMPLETE",
+ "DATA_AVAIL",
+ "SET_PWR_MODE",
+ "BMISS_ACK",
+ "SET_LED_STEADY",
+ "SET_LED_BLINK",
+ "SETUP_BEACON_DESC",
+ "BEACON_INIT",
+ "RESET_KEY_CACHE",
+ "RESET_KEY_CACHE_ENTRY",
+ "SET_KEY_CACHE_ENTRY",
+ "SET_DECOMP_MASK",
+ "SET_REGULATORY_DOMAIN",
+ "SET_LED_STATE",
+ "WRITE_ASSOCID",
+ "SET_STA_BEACON_TIMERS",
+ "GET_TSF",
+ "RESET_TSF",
+ "SET_ADHOC_MODE",
+ "SET_BASIC_RATE",
+ "MIB_CONTROL",
+ "GET_CHANNEL_DATA",
+ "GET_CUR_RSSI",
+ "SET_ANTENNA_SWITCH",
+ "0x2c", "0x2d", "0x2e",
+ "USE_SHORT_SLOT_TIME",
+ "SET_POWER_MODE",
+ "SETUP_PSPOLL_DESC",
+ "SET_RX_MULTICAST_FILTER",
+ "RX_FILTER",
+ "PER_CALIBRATION",
+ "RESET",
+ "DISABLE",
+ "PHY_DISABLE",
+ "SET_TX_POWER_LIMIT",
+ "SET_TX_QUEUE_PARAMS",
+ "SETUP_TX_QUEUE",
+ "RELEASE_TX_QUEUE",
+ };
+ static char buf[8];
+
+ if (code < N(names))
+ return names[code];
+ if (code == WDCMSG_SET_DEFAULT_KEY)
+ return "SET_DEFAULT_KEY";
+ snprintf(buf, sizeof(buf), "0x%02x", code);
+ return buf;
+#undef N
+}
+#endif
+
+/*
+ * Low-level function to send read or write commands to the firmware.
+ */
+static int
+uath_cmdsend(struct uath_softc *sc, uint32_t code, const void *idata, int ilen,
+ void *odata, int olen, int flags)
+{
+ struct uath_cmd_hdr *hdr;
+ struct uath_cmd *cmd;
+ int error;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ /* grab a xfer */
+ cmd = uath_get_cmdbuf(sc);
+ if (cmd == NULL) {
+ device_printf(sc->sc_dev, "%s: empty inactive queue\n",
+ __func__);
+ return (ENOBUFS);
+ }
+ cmd->flags = flags;
+ /* always bulk-out a multiple of 4 bytes */
+ cmd->buflen = roundup2(sizeof(struct uath_cmd_hdr) + ilen, 4);
+
+ hdr = (struct uath_cmd_hdr *)cmd->buf;
+ bzero(hdr, sizeof (struct uath_cmd_hdr)); /* XXX not needed */
+ hdr->len = htobe32(cmd->buflen);
+ hdr->code = htobe32(code);
+ hdr->msgid = cmd->msgid; /* don't care about endianness */
+ hdr->magic = htobe32((cmd->flags & UATH_CMD_FLAG_MAGIC) ? 1 << 24 : 0);
+ bcopy(idata, (uint8_t *)(hdr + 1), ilen);
+
+#ifdef UATH_DEBUG
+ if (sc->sc_debug & UATH_DEBUG_CMDS) {
+ printf("%s: send %s [flags 0x%x] olen %d\n",
+ __func__, uath_codename(code), cmd->flags, olen);
+ if (sc->sc_debug & UATH_DEBUG_CMDS_DUMP)
+ uath_dump_cmd(cmd->buf, cmd->buflen, '+');
+ }
+#endif
+ cmd->odata = odata;
+ KASSERT(odata == NULL ||
+ olen < UATH_MAX_CMDSZ - sizeof(*hdr) + sizeof(uint32_t),
+ ("odata %p olen %u", odata, olen));
+ cmd->olen = olen;
+
+ STAILQ_INSERT_TAIL(&sc->sc_cmd_pending, cmd, next);
+ UATH_STAT_INC(sc, st_cmd_pending);
+ usb2_transfer_start(sc->sc_xfer[UATH_INTR_TX]);
+
+ if (cmd->flags & UATH_CMD_FLAG_READ) {
+ usb2_transfer_start(sc->sc_xfer[UATH_INTR_RX]);
+
+ /* wait at most two seconds for command reply */
+ error = mtx_sleep(cmd, &sc->sc_mtx, 0, "uathcmd", 2 * hz);
+ cmd->odata = NULL; /* in case reply comes too late */
+ if (error != 0) {
+ device_printf(sc->sc_dev, "timeout waiting for reply "
+ "to cmd 0x%x (%u)\n", code, code);
+ } else if (cmd->olen != olen) {
+ device_printf(sc->sc_dev, "unexpected reply data count "
+ "to cmd 0x%x (%u), got %u, expected %u\n",
+ code, code, cmd->olen, olen);
+ error = EINVAL;
+ }
+ return (error);
+ }
+ return (0);
+}
+
+static int
+uath_cmd_read(struct uath_softc *sc, uint32_t code, const void *idata,
+ int ilen, void *odata, int olen, int flags)
+{
+
+ flags |= UATH_CMD_FLAG_READ;
+ return uath_cmdsend(sc, code, idata, ilen, odata, olen, flags);
+}
+
+static int
+uath_cmd_write(struct uath_softc *sc, uint32_t code, const void *data, int len,
+ int flags)
+{
+
+ flags &= ~UATH_CMD_FLAG_READ;
+ return uath_cmdsend(sc, code, data, len, NULL, 0, flags);
+}
+
+static struct uath_cmd *
+uath_get_cmdbuf(struct uath_softc *sc)
+{
+ struct uath_cmd *uc;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ uc = STAILQ_FIRST(&sc->sc_cmd_inactive);
+ if (uc != NULL) {
+ STAILQ_REMOVE_HEAD(&sc->sc_cmd_inactive, next);
+ UATH_STAT_DEC(sc, st_cmd_inactive);
+ } else
+ uc = NULL;
+ if (uc == NULL)
+ DPRINTF(sc, UATH_DEBUG_XMIT, "%s: %s\n", __func__,
+ "out of command xmit buffers");
+ return (uc);
+}
+
+/*
+ * This function is called periodically (every second) when associated to
+ * query device statistics.
+ */
+static void
+uath_stat(void *arg)
+{
+ struct uath_softc *sc = arg;
+ int error;
+
+ UATH_LOCK(sc);
+ /*
+ * Send request for statistics asynchronously. The timer will be
+ * restarted when we'll get the stats notification.
+ */
+ error = uath_cmd_write(sc, WDCMSG_TARGET_GET_STATS, NULL, 0,
+ UATH_CMD_FLAG_ASYNC);
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "could not query stats, error %d\n", error);
+ }
+ UATH_UNLOCK(sc);
+}
+
+static int
+uath_get_capability(struct uath_softc *sc, uint32_t cap, uint32_t *val)
+{
+ int error;
+
+ cap = htobe32(cap);
+ error = uath_cmd_read(sc, WDCMSG_TARGET_GET_CAPABILITY,
+ &cap, sizeof cap, val, sizeof(uint32_t), UATH_CMD_FLAG_MAGIC);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not read capability %u\n",
+ be32toh(cap));
+ return (error);
+ }
+ *val = be32toh(*val);
+ return (error);
+}
+
+static int
+uath_get_devcap(struct uath_softc *sc)
+{
+#define GETCAP(x, v) do { \
+ error = uath_get_capability(sc, x, &v); \
+ if (error != 0) \
+ return (error); \
+ DPRINTF(sc, UATH_DEBUG_DEVCAP, \
+ "%s: %s=0x%08x\n", __func__, #x, v); \
+} while (0)
+ struct uath_devcap *cap = &sc->sc_devcap;
+ int error;
+
+ /* collect device capabilities */
+ GETCAP(CAP_TARGET_VERSION, cap->targetVersion);
+ GETCAP(CAP_TARGET_REVISION, cap->targetRevision);
+ GETCAP(CAP_MAC_VERSION, cap->macVersion);
+ GETCAP(CAP_MAC_REVISION, cap->macRevision);
+ GETCAP(CAP_PHY_REVISION, cap->phyRevision);
+ GETCAP(CAP_ANALOG_5GHz_REVISION, cap->analog5GhzRevision);
+ GETCAP(CAP_ANALOG_2GHz_REVISION, cap->analog2GhzRevision);
+
+ GETCAP(CAP_REG_DOMAIN, cap->regDomain);
+ GETCAP(CAP_REG_CAP_BITS, cap->regCapBits);
+#if 0
+ /* NB: not supported in rev 1.5 */
+ GETCAP(CAP_COUNTRY_CODE, cap->countryCode);
+#endif
+ GETCAP(CAP_WIRELESS_MODES, cap->wirelessModes);
+ GETCAP(CAP_CHAN_SPREAD_SUPPORT, cap->chanSpreadSupport);
+ GETCAP(CAP_COMPRESS_SUPPORT, cap->compressSupport);
+ GETCAP(CAP_BURST_SUPPORT, cap->burstSupport);
+ GETCAP(CAP_FAST_FRAMES_SUPPORT, cap->fastFramesSupport);
+ GETCAP(CAP_CHAP_TUNING_SUPPORT, cap->chapTuningSupport);
+ GETCAP(CAP_TURBOG_SUPPORT, cap->turboGSupport);
+ GETCAP(CAP_TURBO_PRIME_SUPPORT, cap->turboPrimeSupport);
+ GETCAP(CAP_DEVICE_TYPE, cap->deviceType);
+ GETCAP(CAP_WME_SUPPORT, cap->wmeSupport);
+ GETCAP(CAP_TOTAL_QUEUES, cap->numTxQueues);
+ GETCAP(CAP_CONNECTION_ID_MAX, cap->connectionIdMax);
+
+ GETCAP(CAP_LOW_5GHZ_CHAN, cap->low5GhzChan);
+ GETCAP(CAP_HIGH_5GHZ_CHAN, cap->high5GhzChan);
+ GETCAP(CAP_LOW_2GHZ_CHAN, cap->low2GhzChan);
+ GETCAP(CAP_HIGH_2GHZ_CHAN, cap->high2GhzChan);
+ GETCAP(CAP_TWICE_ANTENNAGAIN_5G, cap->twiceAntennaGain5G);
+ GETCAP(CAP_TWICE_ANTENNAGAIN_2G, cap->twiceAntennaGain2G);
+
+ GETCAP(CAP_CIPHER_AES_CCM, cap->supportCipherAES_CCM);
+ GETCAP(CAP_CIPHER_TKIP, cap->supportCipherTKIP);
+ GETCAP(CAP_MIC_TKIP, cap->supportMicTKIP);
+
+ cap->supportCipherWEP = 1; /* NB: always available */
+
+ return (0);
+}
+
+static int
+uath_get_devstatus(struct uath_softc *sc, uint8_t macaddr[IEEE80211_ADDR_LEN])
+{
+ int error;
+
+ /* retrieve MAC address */
+ error = uath_get_status(sc, ST_MAC_ADDR, macaddr, IEEE80211_ADDR_LEN);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not read MAC address\n");
+ return (error);
+ }
+
+ error = uath_get_status(sc, ST_SERIAL_NUMBER,
+ &sc->sc_serial[0], sizeof(sc->sc_serial));
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "could not read device serial number\n");
+ return (error);
+ }
+ return (0);
+}
+
+static int
+uath_get_status(struct uath_softc *sc, uint32_t which, void *odata, int olen)
+{
+ int error;
+
+ which = htobe32(which);
+ error = uath_cmd_read(sc, WDCMSG_TARGET_GET_STATUS,
+ &which, sizeof(which), odata, olen, UATH_CMD_FLAG_MAGIC);
+ if (error != 0)
+ device_printf(sc->sc_dev,
+ "could not read EEPROM offset 0x%02x\n", be32toh(which));
+ return (error);
+}
+
+static void
+uath_free_data_list(struct uath_softc *sc, struct uath_data data[], int ndata,
+ int fillmbuf)
+{
+ int i;
+
+ for (i = 0; i < ndata; i++) {
+ struct uath_data *dp = &data[i];
+
+ if (fillmbuf == 1) {
+ if (dp->m != NULL) {
+ m_freem(dp->m);
+ dp->m = NULL;
+ dp->buf = NULL;
+ }
+ } else {
+ if (dp->buf != NULL) {
+ free(dp->buf, M_USBDEV);
+ dp->buf = NULL;
+ }
+ }
+#ifdef UATH_DEBUG
+ if (dp->ni != NULL)
+ device_printf(sc->sc_dev, "Node isn't NULL\n");
+#endif
+ }
+}
+
+static int
+uath_alloc_data_list(struct uath_softc *sc, struct uath_data data[],
+ int ndata, int maxsz, int fillmbuf)
+{
+ int i, error;
+
+ for (i = 0; i < ndata; i++) {
+ struct uath_data *dp = &data[i];
+
+ dp->sc = sc;
+ if (fillmbuf) {
+ /* XXX check maxsz */
+ dp->m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
+ if (dp->m == NULL) {
+ device_printf(sc->sc_dev,
+ "could not allocate rx mbuf\n");
+ error = ENOMEM;
+ goto fail;
+ }
+ dp->buf = mtod(dp->m, uint8_t *);
+ } else {
+ dp->m = NULL;
+ dp->buf = malloc(maxsz, M_USBDEV, M_NOWAIT);
+ if (dp->buf == NULL) {
+ device_printf(sc->sc_dev,
+ "could not allocate buffer\n");
+ error = ENOMEM;
+ goto fail;
+ }
+ }
+ dp->ni = NULL;
+ }
+
+ return (0);
+
+fail: uath_free_data_list(sc, data, ndata, fillmbuf);
+ return (error);
+}
+
+static int
+uath_alloc_rx_data_list(struct uath_softc *sc)
+{
+ int error, i;
+
+ /* XXX is it enough to store the RX packet with MCLBYTES bytes? */
+ error = uath_alloc_data_list(sc,
+ sc->sc_rx, UATH_RX_DATA_LIST_COUNT, MCLBYTES,
+ 1 /* setup mbufs */);
+ if (error != 0)
+ return (error);
+
+ STAILQ_INIT(&sc->sc_rx_active);
+ STAILQ_INIT(&sc->sc_rx_inactive);
+
+ for (i = 0; i < UATH_RX_DATA_LIST_COUNT; i++) {
+ STAILQ_INSERT_HEAD(&sc->sc_rx_inactive, &sc->sc_rx[i],
+ next);
+ UATH_STAT_INC(sc, st_rx_inactive);
+ }
+
+ return (0);
+}
+
+static int
+uath_alloc_tx_data_list(struct uath_softc *sc)
+{
+ int error, i;
+
+ error = uath_alloc_data_list(sc,
+ sc->sc_tx, UATH_TX_DATA_LIST_COUNT, UATH_MAX_TXBUFSZ,
+ 0 /* no mbufs */);
+ if (error != 0)
+ return (error);
+
+ STAILQ_INIT(&sc->sc_tx_active);
+ STAILQ_INIT(&sc->sc_tx_inactive);
+ STAILQ_INIT(&sc->sc_tx_pending);
+
+ for (i = 0; i < UATH_TX_DATA_LIST_COUNT; i++) {
+ STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, &sc->sc_tx[i],
+ next);
+ UATH_STAT_INC(sc, st_tx_inactive);
+ }
+
+ return (0);
+}
+
+static void
+uath_free_rx_data_list(struct uath_softc *sc)
+{
+
+ STAILQ_INIT(&sc->sc_rx_active);
+ STAILQ_INIT(&sc->sc_rx_inactive);
+
+ uath_free_data_list(sc, sc->sc_rx, UATH_RX_DATA_LIST_COUNT,
+ 1 /* free mbufs */);
+}
+
+static void
+uath_free_tx_data_list(struct uath_softc *sc)
+{
+
+ STAILQ_INIT(&sc->sc_tx_active);
+ STAILQ_INIT(&sc->sc_tx_inactive);
+ STAILQ_INIT(&sc->sc_tx_pending);
+
+ uath_free_data_list(sc, sc->sc_tx, UATH_TX_DATA_LIST_COUNT,
+ 0 /* no mbufs */);
+}
+
+static struct ieee80211vap *
+uath_vap_create(struct ieee80211com *ic,
+ const char name[IFNAMSIZ], int unit, int opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
+{
+ struct uath_vap *uvp;
+ struct ieee80211vap *vap;
+
+ if (!TAILQ_EMPTY(&ic->ic_vaps)) /* only one at a time */
+ return (NULL);
+ uvp = (struct uath_vap *) malloc(sizeof(struct uath_vap),
+ M_80211_VAP, M_NOWAIT | M_ZERO);
+ if (uvp == NULL)
+ return (NULL);
+ vap = &uvp->vap;
+ /* enable s/w bmiss handling for sta mode */
+ ieee80211_vap_setup(ic, vap, name, unit, opmode,
+ flags | IEEE80211_CLONE_NOBEACONS, bssid, mac);
+
+ /* override state transition machine */
+ uvp->newstate = vap->iv_newstate;
+ vap->iv_newstate = uath_newstate;
+
+ /* complete setup */
+ ieee80211_vap_attach(vap, ieee80211_media_change,
+ ieee80211_media_status);
+ ic->ic_opmode = opmode;
+ return (vap);
+}
+
+static void
+uath_vap_delete(struct ieee80211vap *vap)
+{
+ struct uath_vap *uvp = UATH_VAP(vap);
+
+ ieee80211_vap_detach(vap);
+ free(uvp, M_80211_VAP);
+}
+
+static int
+uath_init_locked(void *arg)
+{
+ struct uath_softc *sc = arg;
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211com *ic = ifp->if_l2com;
+ uint32_t val;
+ int error;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ uath_stop_locked(ifp);
+
+ /* reset variables */
+ sc->sc_intrx_nextnum = sc->sc_msgid = 0;
+
+ val = htobe32(0);
+ uath_cmd_write(sc, WDCMSG_BIND, &val, sizeof val, 0);
+
+ /* set MAC address */
+ uath_config_multi(sc, CFG_MAC_ADDR, IF_LLADDR(ifp), IEEE80211_ADDR_LEN);
+
+ /* XXX honor net80211 state */
+ uath_config(sc, CFG_RATE_CONTROL_ENABLE, 0x00000001);
+ uath_config(sc, CFG_DIVERSITY_CTL, 0x00000001);
+ uath_config(sc, CFG_ABOLT, 0x0000003f);
+ uath_config(sc, CFG_WME_ENABLED, 0x00000001);
+
+ uath_config(sc, CFG_SERVICE_TYPE, 1);
+ uath_config(sc, CFG_TP_SCALE, 0x00000000);
+ uath_config(sc, CFG_TPC_HALF_DBM5, 0x0000003c);
+ uath_config(sc, CFG_TPC_HALF_DBM2, 0x0000003c);
+ uath_config(sc, CFG_OVERRD_TX_POWER, 0x00000000);
+ uath_config(sc, CFG_GMODE_PROTECTION, 0x00000000);
+ uath_config(sc, CFG_GMODE_PROTECT_RATE_INDEX, 0x00000003);
+ uath_config(sc, CFG_PROTECTION_TYPE, 0x00000000);
+ uath_config(sc, CFG_MODE_CTS, 0x00000002);
+
+ error = uath_cmd_read(sc, WDCMSG_TARGET_START, NULL, 0,
+ &val, sizeof(val), UATH_CMD_FLAG_MAGIC);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not start target, error %d\n", error);
+ goto fail;
+ }
+ DPRINTF(sc, UATH_DEBUG_INIT, "%s returns handle: 0x%x\n",
+ uath_codename(WDCMSG_TARGET_START), be32toh(val));
+
+ /* set default channel */
+ error = uath_switch_channel(sc, ic->ic_curchan);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not switch channel, error %d\n", error);
+ goto fail;
+ }
+
+ val = htobe32(TARGET_DEVICE_AWAKE);
+ uath_cmd_write(sc, WDCMSG_SET_PWR_MODE, &val, sizeof val, 0);
+ /* XXX? check */
+ uath_cmd_write(sc, WDCMSG_RESET_KEY_CACHE, NULL, 0, 0);
+
+ usb2_transfer_start(sc->sc_xfer[UATH_BULK_RX]);
+ /* enable Rx */
+ uath_set_rxfilter(sc, 0x0, UATH_FILTER_OP_INIT);
+ uath_set_rxfilter(sc,
+ UATH_FILTER_RX_UCAST | UATH_FILTER_RX_MCAST |
+ UATH_FILTER_RX_BCAST | UATH_FILTER_RX_BEACON,
+ UATH_FILTER_OP_SET);
+
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ sc->sc_flags |= UATH_FLAG_INITDONE;
+
+ callout_reset(&sc->watchdog_ch, hz, uath_watchdog, sc);
+
+ return (0);
+
+fail:
+ uath_stop_locked(ifp);
+ return (error);
+}
+
+static void
+uath_init(void *arg)
+{
+ struct uath_softc *sc = arg;
+
+ UATH_LOCK(sc);
+ (void)uath_init_locked(sc);
+ UATH_UNLOCK(sc);
+}
+
+static void
+uath_stop_locked(struct ifnet *ifp)
+{
+ struct uath_softc *sc = ifp->if_softc;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ sc->sc_flags &= ~UATH_FLAG_INITDONE;
+
+ callout_stop(&sc->stat_ch);
+ callout_stop(&sc->watchdog_ch);
+ sc->sc_tx_timer = 0;
+ /* abort pending transmits */
+ uath_abort_xfers(sc);
+ /* flush data & control requests into the target */
+ (void)uath_flush(sc);
+ /* set a LED status to the disconnected. */
+ uath_set_ledstate(sc, 0);
+ /* stop the target */
+ uath_cmd_write(sc, WDCMSG_TARGET_STOP, NULL, 0, 0);
+}
+
+static void
+uath_stop(struct ifnet *ifp)
+{
+ struct uath_softc *sc = ifp->if_softc;
+
+ UATH_LOCK(sc);
+ uath_stop_locked(ifp);
+ UATH_UNLOCK(sc);
+}
+
+static int
+uath_config(struct uath_softc *sc, uint32_t reg, uint32_t val)
+{
+ struct uath_write_mac write;
+ int error;
+
+ write.reg = htobe32(reg);
+ write.len = htobe32(0); /* 0 = single write */
+ *(uint32_t *)write.data = htobe32(val);
+
+ error = uath_cmd_write(sc, WDCMSG_TARGET_SET_CONFIG, &write,
+ 3 * sizeof (uint32_t), 0);
+ if (error != 0) {
+ device_printf(sc->sc_dev, "could not write register 0x%02x\n",
+ reg);
+ }
+ return (error);
+}
+
+static int
+uath_config_multi(struct uath_softc *sc, uint32_t reg, const void *data,
+ int len)
+{
+ struct uath_write_mac write;
+ int error;
+
+ write.reg = htobe32(reg);
+ write.len = htobe32(len);
+ bcopy(data, write.data, len);
+
+ /* properly handle the case where len is zero (reset) */
+ error = uath_cmd_write(sc, WDCMSG_TARGET_SET_CONFIG, &write,
+ (len == 0) ? sizeof (uint32_t) : 2 * sizeof (uint32_t) + len, 0);
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "could not write %d bytes to register 0x%02x\n", len, reg);
+ }
+ return (error);
+}
+
+static int
+uath_switch_channel(struct uath_softc *sc, struct ieee80211_channel *c)
+{
+ int error;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ /* set radio frequency */
+ error = uath_set_chan(sc, c);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not set channel, error %d\n", error);
+ goto failed;
+ }
+ /* reset Tx rings */
+ error = uath_reset_tx_queues(sc);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not reset Tx queues, error %d\n", error);
+ goto failed;
+ }
+ /* set Tx rings WME properties */
+ error = uath_wme_init(sc);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not init Tx queues, error %d\n", error);
+ goto failed;
+ }
+ error = uath_set_ledstate(sc, 0);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not set led state, error %d\n", error);
+ goto failed;
+ }
+ error = uath_flush(sc);
+ if (error) {
+ device_printf(sc->sc_dev,
+ "could not flush pipes, error %d\n", error);
+ goto failed;
+ }
+failed:
+ return (error);
+}
+
+static int
+uath_set_rxfilter(struct uath_softc *sc, uint32_t bits, uint32_t op)
+{
+ struct uath_cmd_rx_filter rxfilter;
+
+ rxfilter.bits = htobe32(bits);
+ rxfilter.op = htobe32(op);
+
+ DPRINTF(sc, UATH_DEBUG_RECV | UATH_DEBUG_RECV_ALL,
+ "setting Rx filter=0x%x flags=0x%x\n", bits, op);
+ return uath_cmd_write(sc, WDCMSG_RX_FILTER, &rxfilter,
+ sizeof rxfilter, 0);
+}
+
+static void
+uath_watchdog(void *arg)
+{
+ struct uath_softc *sc = arg;
+ struct ifnet *ifp = sc->sc_ifp;
+
+ if (sc->sc_tx_timer > 0) {
+ if (--sc->sc_tx_timer == 0) {
+ device_printf(sc->sc_dev, "device timeout\n");
+ /*uath_init(ifp); XXX needs a process context! */
+ ifp->if_oerrors++;
+ return;
+ }
+ callout_reset(&sc->watchdog_ch, hz, uath_watchdog, sc);
+ }
+}
+
+static void
+uath_abort_xfers(struct uath_softc *sc)
+{
+ int i;
+
+ UATH_ASSERT_LOCKED(sc);
+ /* abort any pending transfers */
+ for (i = 0; i < UATH_N_XFERS; i++)
+ usb2_transfer_stop(sc->sc_xfer[i]);
+}
+
+static int
+uath_flush(struct uath_softc *sc)
+{
+ int error;
+
+ error = uath_dataflush(sc);
+ if (error != 0)
+ goto failed;
+
+ error = uath_cmdflush(sc);
+ if (error != 0)
+ goto failed;
+
+failed:
+ return (error);
+}
+
+static int
+uath_cmdflush(struct uath_softc *sc)
+{
+
+ return uath_cmd_write(sc, WDCMSG_FLUSH, NULL, 0, 0);
+}
+
+static int
+uath_dataflush(struct uath_softc *sc)
+{
+ struct uath_data *data;
+ struct uath_chunk *chunk;
+ struct uath_tx_desc *desc;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ data = uath_getbuf(sc);
+ if (data == NULL)
+ return (ENOBUFS);
+ data->buflen = sizeof(struct uath_chunk) + sizeof(struct uath_tx_desc);
+ data->m = NULL;
+ data->ni = NULL;
+ chunk = (struct uath_chunk *)data->buf;
+ desc = (struct uath_tx_desc *)(chunk + 1);
+
+ /* one chunk only */
+ chunk->seqnum = 0;
+ chunk->flags = UATH_CFLAGS_FINAL;
+ chunk->length = htobe16(sizeof (struct uath_tx_desc));
+
+ bzero(desc, sizeof(struct uath_tx_desc));
+ desc->msglen = htobe32(sizeof(struct uath_tx_desc));
+ desc->msgid = (sc->sc_msgid++) + 1; /* don't care about endianness */
+ desc->type = htobe32(WDCMSG_FLUSH);
+ desc->txqid = htobe32(0);
+ desc->connid = htobe32(0);
+ desc->flags = htobe32(0);
+
+#ifdef UATH_DEBUG
+ if (sc->sc_debug & UATH_DEBUG_CMDS) {
+ DPRINTF(sc, UATH_DEBUG_RESET, "send flush ix %d\n",
+ desc->msgid);
+ if (sc->sc_debug & UATH_DEBUG_CMDS_DUMP)
+ uath_dump_cmd(data->buf, data->buflen, '+');
+ }
+#endif
+
+ STAILQ_INSERT_TAIL(&sc->sc_tx_pending, data, next);
+ UATH_STAT_INC(sc, st_tx_pending);
+ sc->sc_tx_timer = 5;
+ usb2_transfer_start(sc->sc_xfer[UATH_BULK_TX]);
+
+ return (0);
+}
+
+static struct uath_data *
+_uath_getbuf(struct uath_softc *sc)
+{
+ struct uath_data *bf;
+
+ bf = STAILQ_FIRST(&sc->sc_tx_inactive);
+ if (bf != NULL) {
+ STAILQ_REMOVE_HEAD(&sc->sc_tx_inactive, next);
+ UATH_STAT_DEC(sc, st_tx_inactive);
+ } else
+ bf = NULL;
+ if (bf == NULL)
+ DPRINTF(sc, UATH_DEBUG_XMIT, "%s: %s\n", __func__,
+ "out of xmit buffers");
+ return (bf);
+}
+
+static struct uath_data *
+uath_getbuf(struct uath_softc *sc)
+{
+ struct uath_data *bf;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ bf = _uath_getbuf(sc);
+ if (bf == NULL) {
+ struct ifnet *ifp = sc->sc_ifp;
+
+ DPRINTF(sc, UATH_DEBUG_XMIT, "%s: stop queue\n", __func__);
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ }
+ return (bf);
+}
+
+static int
+uath_set_ledstate(struct uath_softc *sc, int connected)
+{
+
+ DPRINTF(sc, UATH_DEBUG_LED,
+ "set led state %sconnected\n", connected ? "" : "!");
+ connected = htobe32(connected);
+ return uath_cmd_write(sc, WDCMSG_SET_LED_STATE,
+ &connected, sizeof connected, 0);
+}
+
+static int
+uath_set_chan(struct uath_softc *sc, struct ieee80211_channel *c)
+{
+#ifdef UATH_DEBUG
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211com *ic = ifp->if_l2com;
+#endif
+ struct uath_cmd_reset reset;
+
+ bzero(&reset, sizeof reset);
+ if (IEEE80211_IS_CHAN_2GHZ(c))
+ reset.flags |= htobe32(UATH_CHAN_2GHZ);
+ if (IEEE80211_IS_CHAN_5GHZ(c))
+ reset.flags |= htobe32(UATH_CHAN_5GHZ);
+ /* NB: 11g =>'s 11b so don't specify both OFDM and CCK */
+ if (IEEE80211_IS_CHAN_G(c))
+ reset.flags |= htobe32(UATH_CHAN_OFDM);
+ else if (IEEE80211_IS_CHAN_B(c))
+ reset.flags |= htobe32(UATH_CHAN_CCK);
+ /* turbo can be used in either 2GHz or 5GHz */
+ if (c->ic_flags & IEEE80211_CHAN_TURBO)
+ reset.flags |= htobe32(UATH_CHAN_TURBO);
+ reset.freq = htobe32(c->ic_freq);
+ reset.maxrdpower = htobe32(50); /* XXX */
+ reset.channelchange = htobe32(1);
+ reset.keeprccontent = htobe32(0);
+
+ DPRINTF(sc, UATH_DEBUG_CHANNEL, "set channel %d, flags 0x%x freq %u\n",
+ ieee80211_chan2ieee(ic, c),
+ be32toh(reset.flags), be32toh(reset.freq));
+ return uath_cmd_write(sc, WDCMSG_RESET, &reset, sizeof reset, 0);
+}
+
+static int
+uath_reset_tx_queues(struct uath_softc *sc)
+{
+ int ac, error;
+
+ DPRINTF(sc, UATH_DEBUG_RESET, "%s: reset Tx queues\n", __func__);
+ for (ac = 0; ac < 4; ac++) {
+ const uint32_t qid = htobe32(ac);
+
+ error = uath_cmd_write(sc, WDCMSG_RELEASE_TX_QUEUE, &qid,
+ sizeof qid, 0);
+ if (error != 0)
+ break;
+ }
+ return (error);
+}
+
+static int
+uath_wme_init(struct uath_softc *sc)
+{
+ /* XXX get from net80211 */
+ static const struct uath_wme_settings uath_wme_11g[4] = {
+ { 7, 4, 10, 0, 0 }, /* Background */
+ { 3, 4, 10, 0, 0 }, /* Best-Effort */
+ { 3, 3, 4, 26, 0 }, /* Video */
+ { 2, 2, 3, 47, 0 } /* Voice */
+ };
+ struct uath_cmd_txq_setup qinfo;
+ int ac, error;
+
+ DPRINTF(sc, UATH_DEBUG_WME, "%s: setup Tx queues\n", __func__);
+ for (ac = 0; ac < 4; ac++) {
+ qinfo.qid = htobe32(ac);
+ qinfo.len = htobe32(sizeof(qinfo.attr));
+ qinfo.attr.priority = htobe32(ac); /* XXX */
+ qinfo.attr.aifs = htobe32(uath_wme_11g[ac].aifsn);
+ qinfo.attr.logcwmin = htobe32(uath_wme_11g[ac].logcwmin);
+ qinfo.attr.logcwmax = htobe32(uath_wme_11g[ac].logcwmax);
+ qinfo.attr.bursttime = htobe32(UATH_TXOP_TO_US(
+ uath_wme_11g[ac].txop));
+ qinfo.attr.mode = htobe32(uath_wme_11g[ac].acm);/*XXX? */
+ qinfo.attr.qflags = htobe32(1); /* XXX? */
+
+ error = uath_cmd_write(sc, WDCMSG_SETUP_TX_QUEUE, &qinfo,
+ sizeof qinfo, 0);
+ if (error != 0)
+ break;
+ }
+ return (error);
+}
+
+static int
+uath_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+{
+ struct ieee80211com *ic = ifp->if_l2com;
+ struct ifreq *ifr = (struct ifreq *) data;
+ int error = 0, startall = 0;
+
+ switch (cmd) {
+ case SIOCSIFFLAGS:
+ if (ifp->if_flags & IFF_UP) {
+ if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ uath_init(ifp->if_softc);
+ startall = 1;
+ }
+ } else {
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ uath_stop(ifp);
+ }
+ if (startall)
+ ieee80211_start_all(ic);
+ break;
+ case SIOCGIFMEDIA:
+ error = ifmedia_ioctl(ifp, ifr, &ic->ic_media, cmd);
+ break;
+ case SIOCGIFADDR:
+ error = ether_ioctl(ifp, cmd, data);
+ break;
+ default:
+ error = EINVAL;
+ break;
+ }
+
+ return (error);
+}
+
+static int
+uath_tx_start(struct uath_softc *sc, struct mbuf *m0, struct ieee80211_node *ni,
+ struct uath_data *data)
+{
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211com *ic = ifp->if_l2com;
+ struct uath_chunk *chunk;
+ struct uath_tx_desc *desc;
+ const struct ieee80211_frame *wh;
+ struct ieee80211_key *k;
+ int framelen, msglen;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ data->ni = ni;
+ data->m = m0;
+ chunk = (struct uath_chunk *)data->buf;
+ desc = (struct uath_tx_desc *)(chunk + 1);
+
+ if (bpf_peers_present(ifp->if_bpf)) {
+ struct uath_tx_radiotap_header *tap = &sc->sc_txtap;
+
+ tap->wt_flags = 0;
+ if (m0->m_flags & M_FRAG)
+ tap->wt_flags |= IEEE80211_RADIOTAP_F_FRAG;
+ tap->wt_chan_freq = htole16(ic->ic_curchan->ic_freq);
+ tap->wt_chan_flags = htole16(ic->ic_curchan->ic_flags);
+
+ bpf_mtap2(ifp->if_bpf, tap, sc->sc_txtap_len, m0);
+ }
+
+ wh = mtod(m0, struct ieee80211_frame *);
+ if (wh->i_fc[1] & IEEE80211_FC1_WEP) {
+ k = ieee80211_crypto_encap(ni, m0);
+ if (k == NULL) {
+ m_freem(m0);
+ return (ENOBUFS);
+ }
+
+ /* packet header may have moved, reset our local pointer */
+ wh = mtod(m0, struct ieee80211_frame *);
+ }
+ m_copydata(m0, 0, m0->m_pkthdr.len, (uint8_t *)(desc + 1));
+
+ framelen = m0->m_pkthdr.len + IEEE80211_CRC_LEN;
+ msglen = framelen + sizeof (struct uath_tx_desc);
+ data->buflen = msglen + sizeof (struct uath_chunk);
+
+ /* one chunk only for now */
+ chunk->seqnum = sc->sc_seqnum++;
+ chunk->flags = (m0->m_flags & M_FRAG) ? 0 : UATH_CFLAGS_FINAL;
+ if (m0->m_flags & M_LASTFRAG)
+ chunk->flags |= UATH_CFLAGS_FINAL;
+ chunk->flags = UATH_CFLAGS_FINAL;
+ chunk->length = htobe16(msglen);
+
+ /* fill Tx descriptor */
+ desc->msglen = htobe32(msglen);
+ /* NB: to get UATH_TX_NOTIFY reply, `msgid' must be larger than 0 */
+ desc->msgid = (sc->sc_msgid++) + 1; /* don't care about endianness */
+ desc->type = htobe32(WDCMSG_SEND);
+ switch (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) {
+ case IEEE80211_FC0_TYPE_CTL:
+ case IEEE80211_FC0_TYPE_MGT:
+ /* NB: force all management frames to highest queue */
+ if (ni->ni_flags & IEEE80211_NODE_QOS) {
+ /* NB: force all management frames to highest queue */
+ desc->txqid = htobe32(WME_AC_VO | UATH_TXQID_MINRATE);
+ } else
+ desc->txqid = htobe32(WME_AC_BE | UATH_TXQID_MINRATE);
+ break;
+ case IEEE80211_FC0_TYPE_DATA:
+ /* XXX multicast frames should honor mcastrate */
+ desc->txqid = htobe32(M_WME_GETAC(m0));
+ break;
+ default:
+ device_printf(sc->sc_dev, "bogus frame type 0x%x (%s)\n",
+ wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK, __func__);
+ m_freem(m0);
+ return (EIO);
+ }
+ if (sc->sc_state == IEEE80211_S_AUTH ||
+ sc->sc_state == IEEE80211_S_ASSOC ||
+ sc->sc_state == IEEE80211_S_RUN)
+ desc->connid = htobe32(UATH_ID_BSS);
+ else
+ desc->connid = htobe32(UATH_ID_INVALID);
+ desc->flags = htobe32(0 /* no UATH_TX_NOTIFY */);
+ desc->buflen = htobe32(m0->m_pkthdr.len);
+
+#ifdef UATH_DEBUG
+ DPRINTF(sc, UATH_DEBUG_XMIT,
+ "send frame ix %u framelen %d msglen %d connid 0x%x txqid 0x%x\n",
+ desc->msgid, framelen, msglen, be32toh(desc->connid),
+ be32toh(desc->txqid));
+ if (sc->sc_debug & UATH_DEBUG_XMIT_DUMP)
+ uath_dump_cmd(data->buf, data->buflen, '+');
+#endif
+
+ STAILQ_INSERT_TAIL(&sc->sc_tx_pending, data, next);
+ UATH_STAT_INC(sc, st_tx_pending);
+ usb2_transfer_start(sc->sc_xfer[UATH_BULK_TX]);
+
+ return (0);
+}
+
+/*
+ * Cleanup driver resources when we run out of buffers while processing
+ * fragments; return the tx buffers allocated and drop node references.
+ */
+static void
+uath_txfrag_cleanup(struct uath_softc *sc,
+ uath_datahead *frags, struct ieee80211_node *ni)
+{
+ struct uath_data *bf, *next;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ STAILQ_FOREACH_SAFE(bf, frags, next, next) {
+ /* NB: bf assumed clean */
+ STAILQ_REMOVE_HEAD(frags, next);
+ STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
+ UATH_STAT_INC(sc, st_tx_inactive);
+ ieee80211_node_decref(ni);
+ }
+}
+
+/*
+ * Setup xmit of a fragmented frame. Allocate a buffer for each frag and bump
+ * the node reference count to reflect the held reference to be setup by
+ * uath_tx_start.
+ */
+static int
+uath_txfrag_setup(struct uath_softc *sc, uath_datahead *frags,
+ struct mbuf *m0, struct ieee80211_node *ni)
+{
+ struct mbuf *m;
+ struct uath_data *bf;
+
+ UATH_ASSERT_LOCKED(sc);
+ for (m = m0->m_nextpkt; m != NULL; m = m->m_nextpkt) {
+ bf = uath_getbuf(sc);
+ if (bf == NULL) { /* out of buffers, cleanup */
+ uath_txfrag_cleanup(sc, frags, ni);
+ break;
+ }
+ ieee80211_node_incref(ni);
+ STAILQ_INSERT_TAIL(frags, bf, next);
+ }
+
+ return !STAILQ_EMPTY(frags);
+}
+
+/*
+ * Reclaim mbuf resources. For fragmented frames we need to claim each frag
+ * chained with m_nextpkt.
+ */
+static void
+uath_freetx(struct mbuf *m)
+{
+ struct mbuf *next;
+
+ do {
+ next = m->m_nextpkt;
+ m->m_nextpkt = NULL;
+ m_freem(m);
+ } while ((m = next) != NULL);
+}
+
+static void
+uath_start(struct ifnet *ifp)
+{
+ struct uath_data *bf;
+ struct uath_softc *sc = ifp->if_softc;
+ struct ieee80211_node *ni;
+ struct mbuf *m, *next;
+ uath_datahead frags;
+
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 ||
+ (sc->sc_flags & UATH_FLAG_INVALID))
+ return;
+
+ UATH_LOCK(sc);
+ for (;;) {
+ bf = uath_getbuf(sc);
+ if (bf == NULL)
+ break;
+
+ IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ if (m == NULL) {
+ STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
+ UATH_STAT_INC(sc, st_tx_inactive);
+ break;
+ }
+ ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
+ m->m_pkthdr.rcvif = NULL;
+
+ /*
+ * Check for fragmentation. If this frame has been broken up
+ * verify we have enough buffers to send all the fragments
+ * so all go out or none...
+ */
+ STAILQ_INIT(&frags);
+ if ((m->m_flags & M_FRAG) &&
+ !uath_txfrag_setup(sc, &frags, m, ni)) {
+ DPRINTF(sc, UATH_DEBUG_XMIT,
+ "%s: out of txfrag buffers\n", __func__);
+ uath_freetx(m);
+ goto bad;
+ }
+ sc->sc_seqnum = 0;
+ nextfrag:
+ /*
+ * Pass the frame to the h/w for transmission.
+ * Fragmented frames have each frag chained together
+ * with m_nextpkt. We know there are sufficient uath_data's
+ * to send all the frags because of work done by
+ * uath_txfrag_setup.
+ */
+ next = m->m_nextpkt;
+ if (uath_tx_start(sc, m, ni, bf) != 0) {
+ bad:
+ ifp->if_oerrors++;
+ reclaim:
+ STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
+ UATH_STAT_INC(sc, st_tx_inactive);
+ uath_txfrag_cleanup(sc, &frags, ni);
+ ieee80211_free_node(ni);
+ continue;
+ }
+
+ if (next != NULL) {
+ /*
+ * Beware of state changing between frags.
+ XXX check sta power-save state?
+ */
+ if (ni->ni_vap->iv_state != IEEE80211_S_RUN) {
+ DPRINTF(sc, UATH_DEBUG_XMIT,
+ "%s: flush fragmented packet, state %s\n",
+ __func__,
+ ieee80211_state_name[ni->ni_vap->iv_state]);
+ uath_freetx(next);
+ goto reclaim;
+ }
+ m = next;
+ bf = STAILQ_FIRST(&frags);
+ KASSERT(bf != NULL, ("no buf for txfrag"));
+ STAILQ_REMOVE_HEAD(&frags, next);
+ goto nextfrag;
+ }
+
+ sc->sc_tx_timer = 5;
+ }
+ UATH_UNLOCK(sc);
+}
+
+static int
+uath_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
+ const struct ieee80211_bpf_params *params)
+{
+ struct ieee80211com *ic = ni->ni_ic;
+ struct ifnet *ifp = ic->ic_ifp;
+ struct uath_data *bf;
+ struct uath_softc *sc = ifp->if_softc;
+
+ /* prevent management frames from being sent if we're not ready */
+ if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ m_freem(m);
+ ieee80211_free_node(ni);
+ return (ENETDOWN);
+ }
+
+ UATH_LOCK(sc);
+ /* grab a TX buffer */
+ bf = uath_getbuf(sc);
+ if (bf == NULL) {
+ ieee80211_free_node(ni);
+ m_freem(m);
+ UATH_UNLOCK(sc);
+ return (ENOBUFS);
+ }
+
+ sc->sc_seqnum = 0;
+ if (uath_tx_start(sc, m, ni, bf) != 0) {
+ ieee80211_free_node(ni);
+ ifp->if_oerrors++;
+ STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
+ UATH_STAT_INC(sc, st_tx_inactive);
+ UATH_UNLOCK(sc);
+ return (EIO);
+ }
+ UATH_UNLOCK(sc);
+
+ sc->sc_tx_timer = 5;
+ return (0);
+}
+
+static void
+uath_scan_start(struct ieee80211com *ic)
+{
+ /* do nothing */
+}
+
+static void
+uath_scan_end(struct ieee80211com *ic)
+{
+ /* do nothing */
+}
+
+static void
+uath_set_channel(struct ieee80211com *ic)
+{
+ struct ifnet *ifp = ic->ic_ifp;
+ struct uath_softc *sc = ifp->if_softc;
+
+ UATH_LOCK(sc);
+ (void)uath_switch_channel(sc, ic->ic_curchan);
+ UATH_UNLOCK(sc);
+}
+
+static int
+uath_set_rxmulti_filter(struct uath_softc *sc)
+{
+
+ return (0);
+}
+static void
+uath_update_mcast(struct ifnet *ifp)
+{
+ struct uath_softc *sc = ifp->if_softc;
+
+ /*
+ * this is for avoiding the race condition when we're try to
+ * connect to the AP with WPA.
+ */
+ if (!(sc->sc_flags & UATH_FLAG_INITDONE))
+ return;
+ (void)uath_set_rxmulti_filter(sc);
+}
+
+static void
+uath_update_promisc(struct ifnet *ifp)
+{
+ struct uath_softc *sc = ifp->if_softc;
+
+ if (!(sc->sc_flags & UATH_FLAG_INITDONE))
+ return;
+ uath_set_rxfilter(sc,
+ UATH_FILTER_RX_UCAST | UATH_FILTER_RX_MCAST |
+ UATH_FILTER_RX_BCAST | UATH_FILTER_RX_BEACON |
+ UATH_FILTER_RX_PROM, UATH_FILTER_OP_SET);
+}
+
+static int
+uath_create_connection(struct uath_softc *sc, uint32_t connid)
+{
+ const struct ieee80211_rateset *rs;
+ struct ieee80211com *ic = sc->sc_ifp->if_l2com;
+ struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps);
+ struct ieee80211_node *ni = vap->iv_bss;
+ struct uath_cmd_create_connection create;
+
+ bzero(&create, sizeof create);
+ create.connid = htobe32(connid);
+ create.bssid = htobe32(0);
+ /* XXX packed or not? */
+ create.size = htobe32(sizeof(struct uath_cmd_rateset));
+
+ rs = &ni->ni_rates;
+ create.connattr.rateset.length = rs->rs_nrates;
+ bcopy(rs->rs_rates, &create.connattr.rateset.set[0],
+ rs->rs_nrates);
+
+ /* XXX turbo */
+ if (IEEE80211_IS_CHAN_A(ni->ni_chan))
+ create.connattr.wlanmode = htobe32(WLAN_MODE_11a);
+ else if (IEEE80211_IS_CHAN_ANYG(ni->ni_chan))
+ create.connattr.wlanmode = htobe32(WLAN_MODE_11g);
+ else
+ create.connattr.wlanmode = htobe32(WLAN_MODE_11b);
+
+ return uath_cmd_write(sc, WDCMSG_CREATE_CONNECTION, &create,
+ sizeof create, 0);
+}
+
+static int
+uath_set_rates(struct uath_softc *sc, const struct ieee80211_rateset *rs)
+{
+ struct uath_cmd_rates rates;
+
+ bzero(&rates, sizeof rates);
+ rates.connid = htobe32(UATH_ID_BSS); /* XXX */
+ rates.size = htobe32(sizeof(struct uath_cmd_rateset));
+ /* XXX bounds check rs->rs_nrates */
+ rates.rateset.length = rs->rs_nrates;
+ bcopy(rs->rs_rates, &rates.rateset.set[0], rs->rs_nrates);
+
+ DPRINTF(sc, UATH_DEBUG_RATES,
+ "setting supported rates nrates=%d\n", rs->rs_nrates);
+ return uath_cmd_write(sc, WDCMSG_SET_BASIC_RATE,
+ &rates, sizeof rates, 0);
+}
+
+static int
+uath_write_associd(struct uath_softc *sc)
+{
+ struct ieee80211com *ic = sc->sc_ifp->if_l2com;
+ struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps);
+ struct ieee80211_node *ni = vap->iv_bss;
+ struct uath_cmd_set_associd associd;
+
+ bzero(&associd, sizeof associd);
+ associd.defaultrateix = htobe32(1); /* XXX */
+ associd.associd = htobe32(ni->ni_associd);
+ associd.timoffset = htobe32(0x3b); /* XXX */
+ IEEE80211_ADDR_COPY(associd.bssid, ni->ni_bssid);
+ return uath_cmd_write(sc, WDCMSG_WRITE_ASSOCID, &associd,
+ sizeof associd, 0);
+}
+
+static int
+uath_set_ledsteady(struct uath_softc *sc, int lednum, int ledmode)
+{
+ struct uath_cmd_ledsteady led;
+
+ led.lednum = htobe32(lednum);
+ led.ledmode = htobe32(ledmode);
+
+ DPRINTF(sc, UATH_DEBUG_LED, "set %s led %s (steady)\n",
+ (lednum == UATH_LED_LINK) ? "link" : "activity",
+ ledmode ? "on" : "off");
+ return uath_cmd_write(sc, WDCMSG_SET_LED_STEADY, &led, sizeof led, 0);
+}
+
+static int
+uath_set_ledblink(struct uath_softc *sc, int lednum, int ledmode,
+ int blinkrate, int slowmode)
+{
+ struct uath_cmd_ledblink led;
+
+ led.lednum = htobe32(lednum);
+ led.ledmode = htobe32(ledmode);
+ led.blinkrate = htobe32(blinkrate);
+ led.slowmode = htobe32(slowmode);
+
+ DPRINTF(sc, UATH_DEBUG_LED, "set %s led %s (blink)\n",
+ (lednum == UATH_LED_LINK) ? "link" : "activity",
+ ledmode ? "on" : "off");
+ return uath_cmd_write(sc, WDCMSG_SET_LED_BLINK, &led, sizeof led, 0);
+}
+
+static int
+uath_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
+{
+ enum ieee80211_state ostate = vap->iv_state;
+ int error;
+ struct ieee80211_node *ni = vap->iv_bss;
+ struct ieee80211com *ic = vap->iv_ic;
+ struct uath_softc *sc = ic->ic_ifp->if_softc;
+ struct uath_vap *uvp = UATH_VAP(vap);
+
+ DPRINTF(sc, UATH_DEBUG_STATE,
+ "%s: %s -> %s\n", __func__, ieee80211_state_name[vap->iv_state],
+ ieee80211_state_name[nstate]);
+
+ UATH_LOCK(sc);
+
+ callout_stop(&sc->stat_ch);
+ callout_stop(&sc->watchdog_ch);
+ sc->sc_state = nstate;
+
+ switch (nstate) {
+ case IEEE80211_S_INIT:
+ if (ostate == IEEE80211_S_RUN) {
+ /* turn link and activity LEDs off */
+ uath_set_ledstate(sc, 0);
+ }
+ break;
+
+ case IEEE80211_S_SCAN:
+ break;
+
+ case IEEE80211_S_AUTH:
+ /* XXX good place? set RTS threshold */
+ uath_config(sc, CFG_USER_RTS_THRESHOLD, vap->iv_rtsthreshold);
+ /* XXX bad place */
+ error = uath_set_keys(sc, vap);
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "could not set crypto keys, error %d\n", error);
+ break;
+ }
+ if (uath_switch_channel(sc, ni->ni_chan) != 0) {
+ device_printf(sc->sc_dev, "could not switch channel\n");
+ break;
+ }
+ if (uath_create_connection(sc, UATH_ID_BSS) != 0) {
+ device_printf(sc->sc_dev,
+ "could not create connection\n");
+ break;
+ }
+ break;
+
+ case IEEE80211_S_ASSOC:
+ if (uath_set_rates(sc, &ni->ni_rates) != 0) {
+ device_printf(sc->sc_dev,
+ "could not set negotiated rate set\n");
+ break;
+ }
+ break;
+
+ case IEEE80211_S_RUN:
+ /* XXX monitor mode doesn't be tested */
+ if (ic->ic_opmode == IEEE80211_M_MONITOR) {
+ uath_set_ledstate(sc, 1);
+ break;
+ }
+
+ /*
+ * Tx rate is controlled by firmware, report the maximum
+ * negotiated rate in ifconfig output.
+ */
+ ni->ni_txrate = ni->ni_rates.rs_rates[ni->ni_rates.rs_nrates-1];
+
+ if (uath_write_associd(sc) != 0) {
+ device_printf(sc->sc_dev,
+ "could not write association id\n");
+ break;
+ }
+ /* turn link LED on */
+ uath_set_ledsteady(sc, UATH_LED_LINK, UATH_LED_ON);
+ /* make activity LED blink */
+ uath_set_ledblink(sc, UATH_LED_ACTIVITY, UATH_LED_ON, 1, 2);
+ /* set state to associated */
+ uath_set_ledstate(sc, 1);
+
+ /* start statistics timer */
+ callout_reset(&sc->stat_ch, hz, uath_stat, sc);
+ break;
+ default:
+ break;
+ }
+ UATH_UNLOCK(sc);
+
+ IEEE80211_LOCK(ic);
+ uvp->newstate(vap, nstate, arg);
+ if (vap->iv_newstate_cb != NULL)
+ vap->iv_newstate_cb(vap, nstate, arg);
+ IEEE80211_UNLOCK(ic);
+
+ return (0);
+}
+
+static int
+uath_set_key(struct uath_softc *sc, const struct ieee80211_key *wk,
+ int index)
+{
+#if 0
+ struct uath_cmd_crypto crypto;
+ int i;
+
+ bzero(&crypto, sizeof crypto);
+ crypto.keyidx = htobe32(index);
+ crypto.magic1 = htobe32(1);
+ crypto.size = htobe32(368);
+ crypto.mask = htobe32(0xffff);
+ crypto.flags = htobe32(0x80000068);
+ if (index != UATH_DEFAULT_KEY)
+ crypto.flags |= htobe32(index << 16);
+ memset(crypto.magic2, 0xff, sizeof crypto.magic2);
+
+ /*
+ * Each byte of the key must be XOR'ed with 10101010 before being
+ * transmitted to the firmware.
+ */
+ for (i = 0; i < wk->wk_keylen; i++)
+ crypto.key[i] = wk->wk_key[i] ^ 0xaa;
+
+ DPRINTF(sc, UATH_DEBUG_CRYPTO,
+ "setting crypto key index=%d len=%d\n", index, wk->wk_keylen);
+ return uath_cmd_write(sc, WDCMSG_SET_KEY_CACHE_ENTRY, &crypto,
+ sizeof crypto, 0);
+#else
+ /* XXX support H/W cryto */
+ return (0);
+#endif
+}
+
+static int
+uath_set_keys(struct uath_softc *sc, struct ieee80211vap *vap)
+{
+ int i, error;
+
+ error = 0;
+ for (i = 0; i < IEEE80211_WEP_NKID; i++) {
+ const struct ieee80211_key *wk = &vap->iv_nw_keys[i];
+
+ if (wk->wk_flags & (IEEE80211_KEY_XMIT|IEEE80211_KEY_RECV)) {
+ error = uath_set_key(sc, wk, i);
+ if (error)
+ return (error);
+ }
+ }
+ if (vap->iv_def_txkey != IEEE80211_KEYIX_NONE) {
+ error = uath_set_key(sc, &vap->iv_nw_keys[vap->iv_def_txkey],
+ UATH_DEFAULT_KEY);
+ }
+ return (error);
+}
+
+#define UATH_SYSCTL_STAT_ADD32(c, h, n, p, d) \
+ SYSCTL_ADD_UINT(c, h, OID_AUTO, n, CTLFLAG_RD, p, 0, d)
+
+static void
+uath_sysctl_node(struct uath_softc *sc)
+{
+ struct sysctl_ctx_list *ctx;
+ struct sysctl_oid_list *child;
+ struct sysctl_oid *tree;
+ struct uath_stat *stats;
+
+ stats = &sc->sc_stat;
+ ctx = device_get_sysctl_ctx(sc->sc_dev);
+ child = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev));
+
+ tree = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "stats", CTLFLAG_RD,
+ NULL, "UATH statistics");
+ child = SYSCTL_CHILDREN(tree);
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "badchunkseqnum",
+ &stats->st_badchunkseqnum, "Bad chunk sequence numbers");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "invalidlen", &stats->st_invalidlen,
+ "Invalid length");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "multichunk", &stats->st_multichunk,
+ "Multi chunks");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "toobigrxpkt",
+ &stats->st_toobigrxpkt, "Too big rx packets");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "stopinprogress",
+ &stats->st_stopinprogress, "Stop in progress");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "crcerrs", &stats->st_crcerr,
+ "CRC errors");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "phyerr", &stats->st_phyerr,
+ "PHY errors");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "decrypt_crcerr",
+ &stats->st_decrypt_crcerr, "Decryption CRC errors");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "decrypt_micerr",
+ &stats->st_decrypt_micerr, "Decryption Misc errors");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "decomperr", &stats->st_decomperr,
+ "Decomp errors");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "keyerr", &stats->st_keyerr,
+ "Key errors");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "err", &stats->st_err,
+ "Unknown errors");
+
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "cmd_active",
+ &stats->st_cmd_active, "Active numbers in Command queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "cmd_inactive",
+ &stats->st_cmd_inactive, "Inactive numbers in Command queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "cmd_pending",
+ &stats->st_cmd_pending, "Pending numbers in Command queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "cmd_waiting",
+ &stats->st_cmd_waiting, "Waiting numbers in Command queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "rx_active",
+ &stats->st_rx_active, "Active numbers in RX queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "rx_inactive",
+ &stats->st_rx_inactive, "Inactive numbers in RX queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "tx_active",
+ &stats->st_tx_active, "Active numbers in TX queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "tx_inactive",
+ &stats->st_tx_inactive, "Inactive numbers in TX queue");
+ UATH_SYSCTL_STAT_ADD32(ctx, child, "tx_pending",
+ &stats->st_tx_pending, "Pending numbers in TX queue");
+}
+
+#undef UATH_SYSCTL_STAT_ADD32
+
+static void
+uath_cmdeof(struct uath_softc *sc, struct uath_cmd *cmd)
+{
+ struct uath_cmd_hdr *hdr;
+ int dlen;
+
+ hdr = (struct uath_cmd_hdr *)cmd->buf;
+ /* NB: msgid is passed thru w/o byte swapping */
+#ifdef UATH_DEBUG
+ if (sc->sc_debug & UATH_DEBUG_CMDS) {
+ int len = be32toh(hdr->len);
+ printf("%s: %s [ix %u] len %u status %u\n",
+ __func__, uath_codename(be32toh(hdr->code)),
+ hdr->msgid, len, be32toh(hdr->magic));
+ if (sc->sc_debug & UATH_DEBUG_CMDS_DUMP)
+ uath_dump_cmd(cmd->buf,
+ len > UATH_MAX_CMDSZ ? sizeof(*hdr) : len, '-');
+ }
+#endif
+ hdr->code = be32toh(hdr->code);
+ hdr->len = be32toh(hdr->len);
+ hdr->magic = be32toh(hdr->magic); /* target status on return */
+
+ switch (hdr->code & 0xff) {
+ /* reply to a read command */
+ default:
+ dlen = hdr->len - sizeof(*hdr);
+ DPRINTF(sc, UATH_DEBUG_RX_PROC | UATH_DEBUG_RECV_ALL,
+ "%s: code %d data len %u\n",
+ __func__, hdr->code & 0xff, dlen);
+ /*
+ * The first response from the target after the
+ * HOST_AVAILABLE has an invalid msgid so we must
+ * treat it specially.
+ */
+ if (hdr->msgid < UATH_CMD_LIST_COUNT) {
+ uint32_t *rp = (uint32_t *)(hdr+1);
+ u_int olen;
+
+ if (!(sizeof(*hdr) <= hdr->len &&
+ hdr->len < UATH_MAX_CMDSZ)) {
+ device_printf(sc->sc_dev,
+ "%s: invalid WDC msg length %u; "
+ "msg ignored\n", __func__, hdr->len);
+ return;
+ }
+ /*
+ * Calculate return/receive payload size; the
+ * first word, if present, always gives the
+ * number of bytes--unless it's 0 in which
+ * case a single 32-bit word should be present.
+ */
+ if (dlen >= sizeof(uint32_t)) {
+ olen = be32toh(rp[0]);
+ dlen -= sizeof(uint32_t);
+ if (olen == 0) {
+ /* convention is 0 =>'s one word */
+ olen = sizeof(uint32_t);
+ /* XXX KASSERT(olen == dlen ) */
+ }
+ } else
+ olen = 0;
+ if (cmd->odata != NULL) {
+ /* NB: cmd->olen validated in uath_cmd */
+ if (olen > cmd->olen) {
+ /* XXX complain? */
+ device_printf(sc->sc_dev,
+ "%s: cmd 0x%x olen %u cmd olen %u\n",
+ __func__, hdr->code, olen,
+ cmd->olen);
+ olen = cmd->olen;
+ }
+ if (olen > dlen) {
+ /* XXX complain, shouldn't happen */
+ device_printf(sc->sc_dev,
+ "%s: cmd 0x%x olen %u dlen %u\n",
+ __func__, hdr->code, olen, dlen);
+ olen = dlen;
+ }
+ /* XXX have submitter do this */
+ /* copy answer into caller's supplied buffer */
+ bcopy(&rp[1], cmd->odata, olen);
+ cmd->olen = olen;
+ }
+ }
+ wakeup_one(cmd); /* wake up caller */
+ break;
+
+ case WDCMSG_TARGET_START:
+ if (hdr->msgid >= UATH_CMD_LIST_COUNT) {
+ /* XXX */
+ return;
+ }
+ dlen = hdr->len - sizeof(*hdr);
+ if (dlen != sizeof(uint32_t)) {
+ /* XXX something wrong */
+ return;
+ }
+ /* XXX have submitter do this */
+ /* copy answer into caller's supplied buffer */
+ bcopy(hdr+1, cmd->odata, sizeof(uint32_t));
+ cmd->olen = sizeof(uint32_t);
+ wakeup_one(cmd); /* wake up caller */
+ break;
+
+ case WDCMSG_SEND_COMPLETE:
+ /* this notification is sent when UATH_TX_NOTIFY is set */
+ DPRINTF(sc, UATH_DEBUG_RX_PROC | UATH_DEBUG_RECV_ALL,
+ "%s: received Tx notification\n", __func__);
+ break;
+
+ case WDCMSG_TARGET_GET_STATS:
+ DPRINTF(sc, UATH_DEBUG_RX_PROC | UATH_DEBUG_RECV_ALL,
+ "%s: received device statistics\n", __func__);
+ callout_reset(&sc->stat_ch, hz, uath_stat, sc);
+ break;
+ }
+}
+
+static void
+uath_intr_rx_callback(struct usb2_xfer *xfer)
+{
+ struct uath_softc *sc = xfer->priv_sc;
+ struct uath_cmd *cmd;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ switch (USB_GET_STATE(xfer)) {
+ case USB_ST_TRANSFERRED:
+ cmd = STAILQ_FIRST(&sc->sc_cmd_waiting);
+ if (cmd == NULL)
+ goto setup;
+ STAILQ_REMOVE_HEAD(&sc->sc_cmd_waiting, next);
+ UATH_STAT_DEC(sc, st_cmd_waiting);
+ STAILQ_INSERT_TAIL(&sc->sc_cmd_inactive, cmd, next);
+ UATH_STAT_INC(sc, st_cmd_inactive);
+
+ KASSERT(xfer->actlen >= sizeof(struct uath_cmd_hdr),
+ ("short xfer error"));
+ usb2_copy_out(xfer->frbuffers, 0, cmd->buf, xfer->actlen);
+ uath_cmdeof(sc, cmd);
+ case USB_ST_SETUP:
+setup:
+ xfer->frlengths[0] = xfer->max_data_length;
+ usb2_start_hardware(xfer);
+ break;
+ default:
+ if (xfer->error != USB_ERR_CANCELLED) {
+ xfer->flags.stall_pipe = 1;
+ goto setup;
+ }
+ break;
+ }
+}
+
+static void
+uath_intr_tx_callback(struct usb2_xfer *xfer)
+{
+ struct uath_softc *sc = xfer->priv_sc;
+ struct uath_cmd *cmd;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ switch (USB_GET_STATE(xfer)) {
+ case USB_ST_TRANSFERRED:
+ cmd = STAILQ_FIRST(&sc->sc_cmd_active);
+ if (cmd == NULL)
+ goto setup;
+ STAILQ_REMOVE_HEAD(&sc->sc_cmd_active, next);
+ UATH_STAT_DEC(sc, st_cmd_active);
+ STAILQ_INSERT_TAIL((cmd->flags & UATH_CMD_FLAG_READ) ?
+ &sc->sc_cmd_waiting : &sc->sc_cmd_inactive, cmd, next);
+ if (cmd->flags & UATH_CMD_FLAG_READ)
+ UATH_STAT_INC(sc, st_cmd_waiting);
+ else
+ UATH_STAT_INC(sc, st_cmd_inactive);
+ /* FALLTHROUGH */
+ case USB_ST_SETUP:
+setup:
+ cmd = STAILQ_FIRST(&sc->sc_cmd_pending);
+ if (cmd == NULL) {
+ DPRINTF(sc, UATH_DEBUG_XMIT, "%s: empty pending queue\n",
+ __func__);
+ return;
+ }
+ STAILQ_REMOVE_HEAD(&sc->sc_cmd_pending, next);
+ UATH_STAT_DEC(sc, st_cmd_pending);
+ STAILQ_INSERT_TAIL((cmd->flags & UATH_CMD_FLAG_ASYNC) ?
+ &sc->sc_cmd_inactive : &sc->sc_cmd_active, cmd, next);
+ if (cmd->flags & UATH_CMD_FLAG_ASYNC)
+ UATH_STAT_INC(sc, st_cmd_inactive);
+ else
+ UATH_STAT_INC(sc, st_cmd_active);
+
+ usb2_set_frame_data(xfer, cmd->buf, 0);
+ xfer->frlengths[0] = cmd->buflen;
+ usb2_start_hardware(xfer);
+ break;
+ default:
+ if (xfer->error != USB_ERR_CANCELLED) {
+ xfer->flags.stall_pipe = 1;
+ goto setup;
+ }
+ break;
+ }
+}
+
+static void
+uath_update_rxstat(struct uath_softc *sc, uint32_t status)
+{
+
+ switch (status) {
+ case UATH_STATUS_STOP_IN_PROGRESS:
+ UATH_STAT_INC(sc, st_stopinprogress);
+ break;
+ case UATH_STATUS_CRC_ERR:
+ UATH_STAT_INC(sc, st_crcerr);
+ break;
+ case UATH_STATUS_PHY_ERR:
+ UATH_STAT_INC(sc, st_phyerr);
+ break;
+ case UATH_STATUS_DECRYPT_CRC_ERR:
+ UATH_STAT_INC(sc, st_decrypt_crcerr);
+ break;
+ case UATH_STATUS_DECRYPT_MIC_ERR:
+ UATH_STAT_INC(sc, st_decrypt_micerr);
+ break;
+ case UATH_STATUS_DECOMP_ERR:
+ UATH_STAT_INC(sc, st_decomperr);
+ break;
+ case UATH_STATUS_KEY_ERR:
+ UATH_STAT_INC(sc, st_keyerr);
+ break;
+ case UATH_STATUS_ERR:
+ UATH_STAT_INC(sc, st_err);
+ break;
+ default:
+ break;
+ }
+}
+
+static struct mbuf *
+uath_data_rxeof(struct usb2_xfer *xfer, struct uath_data *data,
+ struct uath_rx_desc **pdesc)
+{
+ struct uath_softc *sc = xfer->priv_sc;
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211com *ic = ifp->if_l2com;
+ struct uath_chunk *chunk;
+ struct uath_rx_desc *desc;
+ struct mbuf *m = data->m, *mnew, *mp;
+ uint16_t chunklen;
+
+ if (xfer->actlen < UATH_MIN_RXBUFSZ) {
+ DPRINTF(sc, UATH_DEBUG_RECV | UATH_DEBUG_RECV_ALL,
+ "%s: wrong xfer size (len=%d)\n", __func__, xfer->actlen);
+ ifp->if_ierrors++;
+ return (NULL);
+ }
+
+ chunk = (struct uath_chunk *)data->buf;
+ if (chunk->seqnum == 0 && chunk->flags == 0 && chunk->length == 0) {
+ device_printf(sc->sc_dev, "%s: strange response\n", __func__);
+ ifp->if_ierrors++;
+ UATH_RESET_INTRX(sc);
+ return (NULL);
+ }
+
+ if (chunk->seqnum != sc->sc_intrx_nextnum) {
+ DPRINTF(sc, UATH_DEBUG_XMIT, "invalid seqnum %d, expected %d\n",
+ chunk->seqnum, sc->sc_intrx_nextnum);
+ UATH_STAT_INC(sc, st_badchunkseqnum);
+ if (sc->sc_intrx_head != NULL)
+ m_freem(sc->sc_intrx_head);
+ UATH_RESET_INTRX(sc);
+ return (NULL);
+ }
+
+ /* check multi-chunk frames */
+ if ((chunk->seqnum == 0 && !(chunk->flags & UATH_CFLAGS_FINAL)) ||
+ (chunk->seqnum != 0 && (chunk->flags & UATH_CFLAGS_FINAL)) ||
+ chunk->flags & UATH_CFLAGS_RXMSG)
+ UATH_STAT_INC(sc, st_multichunk);
+
+ chunklen = be16toh(chunk->length);
+ if (chunk->flags & UATH_CFLAGS_FINAL)
+ chunklen -= sizeof(struct uath_rx_desc);
+
+ if (chunklen > 0 &&
+ (!(chunk->flags & UATH_CFLAGS_FINAL) || !(chunk->seqnum == 0))) {
+ /* we should use intermediate RX buffer */
+ if (chunk->seqnum == 0)
+ UATH_RESET_INTRX(sc);
+ if ((sc->sc_intrx_len + sizeof(struct uath_rx_desc) +
+ chunklen) > UATH_MAX_INTRX_SIZE) {
+ UATH_STAT_INC(sc, st_invalidlen);
+ ifp->if_iqdrops++;
+ if (sc->sc_intrx_head != NULL)
+ m_freem(sc->sc_intrx_head);
+ UATH_RESET_INTRX(sc);
+ return (NULL);
+ }
+
+ m->m_len = chunklen;
+ m->m_data += sizeof(struct uath_chunk);
+
+ if (sc->sc_intrx_head == NULL) {
+ sc->sc_intrx_head = m;
+ sc->sc_intrx_tail = m;
+ } else {
+ m->m_flags &= ~M_PKTHDR;
+ sc->sc_intrx_tail->m_next = m;
+ sc->sc_intrx_tail = m;
+ }
+ }
+ sc->sc_intrx_len += chunklen;
+
+ mnew = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
+ if (mnew == NULL) {
+ DPRINTF(sc, UATH_DEBUG_RECV | UATH_DEBUG_RECV_ALL,
+ "%s: can't get new mbuf, drop frame\n", __func__);
+ ifp->if_ierrors++;
+ if (sc->sc_intrx_head != NULL)
+ m_freem(sc->sc_intrx_head);
+ UATH_RESET_INTRX(sc);
+ return (NULL);
+ }
+
+ data->m = mnew;
+ data->buf = mtod(mnew, uint8_t *);
+
+ /* if the frame is not final continue the transfer */
+ if (!(chunk->flags & UATH_CFLAGS_FINAL)) {
+ sc->sc_intrx_nextnum++;
+ UATH_RESET_INTRX(sc);
+ return (NULL);
+ }
+
+ /*
+ * if the frame is not set UATH_CFLAGS_RXMSG, then rx descriptor is
+ * located at the end, 32-bit aligned
+ */
+ desc = (chunk->flags & UATH_CFLAGS_RXMSG) ?
+ (struct uath_rx_desc *)(chunk + 1) :
+ (struct uath_rx_desc *)(((uint8_t *)chunk) +
+ sizeof(struct uath_chunk) + be16toh(chunk->length) -
+ sizeof(struct uath_rx_desc));
+ *pdesc = desc;
+
+ DPRINTF(sc, UATH_DEBUG_RECV | UATH_DEBUG_RECV_ALL,
+ "%s: frame len %u code %u status %u rate %u antenna %u "
+ "rssi %d channel %u phyerror %u connix %u decrypterror %u "
+ "keycachemiss %u\n", __func__, be32toh(desc->framelen)
+ , be32toh(desc->code), be32toh(desc->status), be32toh(desc->rate)
+ , be32toh(desc->antenna), be32toh(desc->rssi), be32toh(desc->channel)
+ , be32toh(desc->phyerror), be32toh(desc->connix)
+ , be32toh(desc->decrypterror), be32toh(desc->keycachemiss));
+
+ if (be32toh(desc->len) > MCLBYTES) {
+ DPRINTF(sc, UATH_DEBUG_RECV | UATH_DEBUG_RECV_ALL,
+ "%s: bad descriptor (len=%d)\n", __func__,
+ be32toh(desc->len));
+ ifp->if_iqdrops++;
+ UATH_STAT_INC(sc, st_toobigrxpkt);
+ if (sc->sc_intrx_head != NULL)
+ m_freem(sc->sc_intrx_head);
+ UATH_RESET_INTRX(sc);
+ return (NULL);
+ }
+
+ uath_update_rxstat(sc, be32toh(desc->status));
+
+ /* finalize mbuf */
+ if (sc->sc_intrx_head == NULL) {
+ m->m_pkthdr.rcvif = ifp;
+ m->m_pkthdr.len = m->m_len =
+ be32toh(desc->framelen) - UATH_RX_DUMMYSIZE;
+ m->m_data += sizeof(struct uath_chunk);
+ } else {
+ mp = sc->sc_intrx_head;
+ mp->m_pkthdr.rcvif = ifp;
+ mp->m_flags |= M_PKTHDR;
+ mp->m_pkthdr.len = sc->sc_intrx_len;
+ m = mp;
+ }
+
+ /* there are a lot more fields in the RX descriptor */
+ if (bpf_peers_present(ifp->if_bpf)) {
+ struct uath_rx_radiotap_header *tap = &sc->sc_rxtap;
+
+ tap->wr_chan_freq = htole16(be32toh(desc->channel));
+ tap->wr_chan_flags = htole16(ic->ic_curchan->ic_flags);
+ tap->wr_dbm_antsignal = (int8_t)be32toh(desc->rssi);
+
+ bpf_mtap2(ifp->if_bpf, tap, sc->sc_rxtap_len, m);
+ }
+
+ ifp->if_ipackets++;
+ UATH_RESET_INTRX(sc);
+
+ return (m);
+}
+
+static void
+uath_bulk_rx_callback(struct usb2_xfer *xfer)
+{
+ struct uath_softc *sc = xfer->priv_sc;
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211com *ic = ifp->if_l2com;
+ struct ieee80211_frame *wh;
+ struct ieee80211_node *ni;
+ struct mbuf *m = NULL;
+ struct uath_data *data;
+ struct uath_rx_desc *desc = NULL;
+ int8_t nf;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ switch (USB_GET_STATE(xfer)) {
+ case USB_ST_TRANSFERRED:
+ data = STAILQ_FIRST(&sc->sc_rx_active);
+ if (data == NULL)
+ goto setup;
+ STAILQ_REMOVE_HEAD(&sc->sc_rx_active, next);
+ UATH_STAT_DEC(sc, st_rx_active);
+ m = uath_data_rxeof(xfer, data, &desc);
+ STAILQ_INSERT_TAIL(&sc->sc_rx_inactive, data, next);
+ UATH_STAT_INC(sc, st_rx_inactive);
+ /* FALLTHROUGH */
+ case USB_ST_SETUP:
+setup:
+ data = STAILQ_FIRST(&sc->sc_rx_inactive);
+ if (data == NULL)
+ return;
+ STAILQ_REMOVE_HEAD(&sc->sc_rx_inactive, next);
+ UATH_STAT_DEC(sc, st_rx_inactive);
+ STAILQ_INSERT_TAIL(&sc->sc_rx_active, data, next);
+ UATH_STAT_INC(sc, st_rx_active);
+ usb2_set_frame_data(xfer, data->buf, 0);
+ xfer->frlengths[0] = xfer->max_data_length;
+ usb2_start_hardware(xfer);
+
+ /*
+ * To avoid LOR we should unlock our private mutex here to call
+ * ieee80211_input() because here is at the end of a USB
+ * callback and safe to unlock.
+ */
+ UATH_UNLOCK(sc);
+ if (m != NULL && desc != NULL) {
+ wh = mtod(m, struct ieee80211_frame *);
+ ni = ieee80211_find_rxnode(ic,
+ (struct ieee80211_frame_min *)wh);
+ nf = -95; /* XXX */
+ if (ni != NULL) {
+ (void) ieee80211_input(ni, m,
+ (int)be32toh(desc->rssi), nf, 0);
+ /* node is no longer needed */
+ ieee80211_free_node(ni);
+ } else
+ (void) ieee80211_input_all(ic, m,
+ (int)be32toh(desc->rssi), nf, 0);
+ m = NULL;
+ desc = NULL;
+ }
+ UATH_LOCK(sc);
+ break;
+ default:
+ /* needs it to the inactive queue due to a error. */
+ data = STAILQ_FIRST(&sc->sc_rx_active);
+ if (data != NULL) {
+ STAILQ_REMOVE_HEAD(&sc->sc_rx_active, next);
+ UATH_STAT_DEC(sc, st_rx_active);
+ STAILQ_INSERT_TAIL(&sc->sc_rx_inactive, data, next);
+ UATH_STAT_INC(sc, st_rx_inactive);
+ }
+ if (xfer->error != USB_ERR_CANCELLED) {
+ xfer->flags.stall_pipe = 1;
+ ifp->if_ierrors++;
+ goto setup;
+ }
+ break;
+ }
+}
+
+static void
+uath_data_txeof(struct usb2_xfer *xfer, struct uath_data *data)
+{
+ struct uath_softc *sc = xfer->priv_sc;
+ struct ifnet *ifp = sc->sc_ifp;
+ struct mbuf *m;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ /*
+ * Do any tx complete callback. Note this must be done before releasing
+ * the node reference.
+ */
+ if (data->m) {
+ m = data->m;
+ if (m->m_flags & M_TXCB) {
+ /* XXX status? */
+ ieee80211_process_callback(data->ni, m, 0);
+ }
+ m_freem(m);
+ data->m = NULL;
+ }
+ if (data->ni) {
+ ieee80211_free_node(data->ni);
+ data->ni = NULL;
+ }
+ sc->sc_tx_timer = 0;
+ ifp->if_opackets++;
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+}
+
+static void
+uath_bulk_tx_callback(struct usb2_xfer *xfer)
+{
+ struct uath_softc *sc = xfer->priv_sc;
+ struct ifnet *ifp = sc->sc_ifp;
+ struct uath_data *data;
+
+ UATH_ASSERT_LOCKED(sc);
+
+ switch (USB_GET_STATE(xfer)) {
+ case USB_ST_TRANSFERRED:
+ data = STAILQ_FIRST(&sc->sc_tx_active);
+ if (data == NULL)
+ goto setup;
+ STAILQ_REMOVE_HEAD(&sc->sc_tx_active, next);
+ UATH_STAT_DEC(sc, st_tx_active);
+ uath_data_txeof(xfer, data);
+ STAILQ_INSERT_TAIL(&sc->sc_tx_inactive, data, next);
+ UATH_STAT_INC(sc, st_tx_inactive);
+ /* FALLTHROUGH */
+ case USB_ST_SETUP:
+setup:
+ data = STAILQ_FIRST(&sc->sc_tx_pending);
+ if (data == NULL) {
+ DPRINTF(sc, UATH_DEBUG_XMIT, "%s: empty pending queue\n",
+ __func__);
+ return;
+ }
+ STAILQ_REMOVE_HEAD(&sc->sc_tx_pending, next);
+ UATH_STAT_DEC(sc, st_tx_pending);
+ STAILQ_INSERT_TAIL(&sc->sc_tx_active, data, next);
+ UATH_STAT_INC(sc, st_tx_active);
+
+ usb2_set_frame_data(xfer, data->buf, 0);
+ xfer->frlengths[0] = data->buflen;
+ usb2_start_hardware(xfer);
+
+ UATH_UNLOCK(sc);
+ uath_start(ifp);
+ UATH_LOCK(sc);
+ break;
+ default:
+ data = STAILQ_FIRST(&sc->sc_tx_active);
+ if (data == NULL)
+ goto setup;
+ if (data->ni != NULL) {
+ ieee80211_free_node(data->ni);
+ data->ni = NULL;
+ ifp->if_oerrors++;
+ }
+ if (xfer->error != USB_ERR_CANCELLED) {
+ xfer->flags.stall_pipe = 1;
+ goto setup;
+ }
+ break;
+ }
+}
+
+static device_method_t uath_methods[] = {
+ DEVMETHOD(device_probe, uath_match),
+ DEVMETHOD(device_attach, uath_attach),
+ DEVMETHOD(device_detach, uath_detach),
+ { 0, 0 }
+};
+static driver_t uath_driver = {
+ "uath",
+ uath_methods,
+ sizeof(struct uath_softc)
+};
+static devclass_t uath_devclass;
+
+DRIVER_MODULE(uath, uhub, uath_driver, uath_devclass, NULL, 0);
+MODULE_DEPEND(uath, wlan, 1, 1, 1);
+MODULE_DEPEND(uath, usb, 1, 1, 1);
diff --git a/sys/dev/usb/wlan/if_uathreg.h b/sys/dev/usb/wlan/if_uathreg.h
new file mode 100644
index 0000000..1e7929b
--- /dev/null
+++ b/sys/dev/usb/wlan/if_uathreg.h
@@ -0,0 +1,601 @@
+/* $OpenBSD: if_uathreg.h,v 1.2 2006/09/18 16:34:23 damien Exp $ */
+/* $FreeBSD$ */
+
+/*-
+ * Copyright (c) 2006
+ * Damien Bergamini <damien.bergamini@free.fr>
+ * Copyright (c) 2006 Sam Leffler, Errno Consulting
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define UATH_CONFIG_INDEX 0
+#define UATH_IFACE_INDEX 0
+
+/* all fields are big endian */
+struct uath_fwblock {
+ uint32_t flags;
+#define UATH_WRITE_BLOCK (1 << 4)
+
+ uint32_t len;
+#define UATH_MAX_FWBLOCK_SIZE 2048
+
+ uint32_t total;
+ uint32_t remain;
+ uint32_t rxtotal;
+ uint32_t pad[123];
+} __packed;
+
+#define UATH_MAX_CMDSZ 512
+
+/*
+ * Messages are passed in Target Endianness. All fixed-size
+ * fields of a WDS Control Message are treated as 32-bit
+ * values and Control Msgs are guaranteed to be 32-bit aligned.
+ *
+ * The format of a WDS Control Message is as follows:
+ * Message Length 32 bits
+ * Message Opcode 32 bits
+ * Message ID 32 bits
+ * parameter 1
+ * parameter 2
+ * ...
+ *
+ * A variable-length parameter, or a parmeter that is larger than
+ * 32 bits is passed as <length, data> pair, where length is a
+ * 32-bit quantity and data is padded to 32 bits.
+ */
+struct uath_cmd_hdr {
+ uint32_t len; /* msg length including header */
+ uint32_t code; /* operation code */
+/* NB: these are defined for rev 1.5 firmware; rev 1.6 is different */
+/* messages from Host -> Target */
+#define WDCMSG_HOST_AVAILABLE 0x01
+#define WDCMSG_BIND 0x02
+#define WDCMSG_TARGET_RESET 0x03
+#define WDCMSG_TARGET_GET_CAPABILITY 0x04
+#define WDCMSG_TARGET_SET_CONFIG 0x05
+#define WDCMSG_TARGET_GET_STATUS 0x06
+#define WDCMSG_TARGET_GET_STATS 0x07
+#define WDCMSG_TARGET_START 0x08
+#define WDCMSG_TARGET_STOP 0x09
+#define WDCMSG_TARGET_ENABLE 0x0a
+#define WDCMSG_TARGET_DISABLE 0x0b
+#define WDCMSG_CREATE_CONNECTION 0x0c
+#define WDCMSG_UPDATE_CONNECT_ATTR 0x0d
+#define WDCMSG_DELETE_CONNECT 0x0e
+#define WDCMSG_SEND 0x0f
+#define WDCMSG_FLUSH 0x10
+/* messages from Target -> Host */
+#define WDCMSG_STATS_UPDATE 0x11
+#define WDCMSG_BMISS 0x12
+#define WDCMSG_DEVICE_AVAIL 0x13
+#define WDCMSG_SEND_COMPLETE 0x14
+#define WDCMSG_DATA_AVAIL 0x15
+#define WDCMSG_SET_PWR_MODE 0x16
+#define WDCMSG_BMISS_ACK 0x17
+#define WDCMSG_SET_LED_STEADY 0x18
+#define WDCMSG_SET_LED_BLINK 0x19
+/* more messages */
+#define WDCMSG_SETUP_BEACON_DESC 0x1a
+#define WDCMSG_BEACON_INIT 0x1b
+#define WDCMSG_RESET_KEY_CACHE 0x1c
+#define WDCMSG_RESET_KEY_CACHE_ENTRY 0x1d
+#define WDCMSG_SET_KEY_CACHE_ENTRY 0x1e
+#define WDCMSG_SET_DECOMP_MASK 0x1f
+#define WDCMSG_SET_REGULATORY_DOMAIN 0x20
+#define WDCMSG_SET_LED_STATE 0x21
+#define WDCMSG_WRITE_ASSOCID 0x22
+#define WDCMSG_SET_STA_BEACON_TIMERS 0x23
+#define WDCMSG_GET_TSF 0x24
+#define WDCMSG_RESET_TSF 0x25
+#define WDCMSG_SET_ADHOC_MODE 0x26
+#define WDCMSG_SET_BASIC_RATE 0x27
+#define WDCMSG_MIB_CONTROL 0x28
+#define WDCMSG_GET_CHANNEL_DATA 0x29
+#define WDCMSG_GET_CUR_RSSI 0x2a
+#define WDCMSG_SET_ANTENNA_SWITCH 0x2b
+#define WDCMSG_USE_SHORT_SLOT_TIME 0x2f
+#define WDCMSG_SET_POWER_MODE 0x30
+#define WDCMSG_SETUP_PSPOLL_DESC 0x31
+#define WDCMSG_SET_RX_MULTICAST_FILTER 0x32
+#define WDCMSG_RX_FILTER 0x33
+#define WDCMSG_PER_CALIBRATION 0x34
+#define WDCMSG_RESET 0x35
+#define WDCMSG_DISABLE 0x36
+#define WDCMSG_PHY_DISABLE 0x37
+#define WDCMSG_SET_TX_POWER_LIMIT 0x38
+#define WDCMSG_SET_TX_QUEUE_PARAMS 0x39
+#define WDCMSG_SETUP_TX_QUEUE 0x3a
+#define WDCMSG_RELEASE_TX_QUEUE 0x3b
+#define WDCMSG_SET_DEFAULT_KEY 0x43
+ uint32_t msgid; /* msg id (supplied by host) */
+ uint32_t magic; /* response desired/target status */
+ uint32_t debug[4]; /* debug data area */
+ /* msg data follows */
+} __packed;
+
+struct uath_chunk {
+ uint8_t seqnum; /* sequence number for ordering */
+ uint8_t flags;
+#define UATH_CFLAGS_FINAL 0x01 /* final chunk of a msg */
+#define UATH_CFLAGS_RXMSG 0x02 /* chunk contains rx completion */
+#define UATH_CFLAGS_DEBUG 0x04 /* for debugging */
+ uint16_t length; /* chunk size in bytes */
+ /* chunk data follows */
+} __packed;
+
+#define UATH_RX_DUMMYSIZE 4
+
+/*
+ * Message format for a WDCMSG_DATA_AVAIL message from Target to Host.
+ */
+struct uath_rx_desc {
+ uint32_t len; /* msg length including header */
+ uint32_t code; /* WDCMSG_DATA_AVAIL */
+ uint32_t gennum; /* generation number */
+ uint32_t status; /* start of RECEIVE_INFO */
+#define UATH_STATUS_OK 0
+#define UATH_STATUS_STOP_IN_PROGRESS 1
+#define UATH_STATUS_CRC_ERR 2
+#define UATH_STATUS_PHY_ERR 3
+#define UATH_STATUS_DECRYPT_CRC_ERR 4
+#define UATH_STATUS_DECRYPT_MIC_ERR 5
+#define UATH_STATUS_DECOMP_ERR 6
+#define UATH_STATUS_KEY_ERR 7
+#define UATH_STATUS_ERR 8
+ uint32_t tstamp_low; /* low-order 32-bits of rx timestamp */
+ uint32_t tstamp_high; /* high-order 32-bits of rx timestamp */
+ uint32_t framelen; /* frame length */
+ uint32_t rate; /* rx rate code */
+ uint32_t antenna;
+ int32_t rssi;
+ uint32_t channel;
+ uint32_t phyerror;
+ uint32_t connix; /* key table ix for bss traffic */
+ uint32_t decrypterror;
+ uint32_t keycachemiss;
+ uint32_t pad; /* XXX? */
+} __packed;
+
+struct uath_tx_desc {
+ uint32_t msglen;
+ uint32_t msgid; /* msg id (supplied by host) */
+ uint32_t type; /* opcode: WDMSG_SEND or WDCMSG_FLUSH */
+ uint32_t txqid; /* tx queue id and flags */
+#define UATH_TXQID_MASK 0x0f
+#define UATH_TXQID_MINRATE 0x10 /* use min tx rate */
+#define UATH_TXQID_FF 0x20 /* content is fast frame */
+ uint32_t connid; /* tx connection id */
+#define UATH_ID_INVALID 0xffffffff /* for sending prior to connection */
+ uint32_t flags; /* non-zero if response desired */
+#define UATH_TX_NOTIFY (1 << 24) /* f/w will send a UATH_NOTIF_TX */
+ uint32_t buflen; /* payload length */
+} __packed;
+
+struct uath_cmd_host_available {
+ uint32_t sw_ver_major;
+ uint32_t sw_ver_minor;
+ uint32_t sw_ver_patch;
+ uint32_t sw_ver_build;
+} __packed;
+#define ATH_SW_VER_MAJOR 1
+#define ATH_SW_VER_MINOR 5
+#define ATH_SW_VER_PATCH 0
+#define ATH_SW_VER_BUILD 9999
+
+struct uath_cmd_bind {
+ uint32_t targethandle;
+ uint32_t hostapiversion;
+} __packed;
+
+/* structure for command WDCMSG_RESET */
+struct uath_cmd_reset {
+ uint32_t flags; /* channel flags */
+#define UATH_CHAN_TURBO 0x0100
+#define UATH_CHAN_CCK 0x0200
+#define UATH_CHAN_OFDM 0x0400
+#define UATH_CHAN_2GHZ 0x1000
+#define UATH_CHAN_5GHZ 0x2000
+ uint32_t freq; /* channel frequency */
+ uint32_t maxrdpower;
+ uint32_t cfgctl;
+ uint32_t twiceantennareduction;
+ uint32_t channelchange;
+ uint32_t keeprccontent;
+} __packed;
+
+/* structure for commands UATH_CMD_READ_MAC and UATH_CMD_READ_EEPROM */
+struct uath_read_mac {
+ uint32_t len;
+ uint8_t data[32];
+} __packed;
+
+/* structure for command UATH_CMD_WRITE_MAC */
+struct uath_write_mac {
+ uint32_t reg;
+ uint32_t len;
+ uint8_t data[32];
+} __packed;
+
+/* structure for command UATH_CMD_STA_JOIN */
+struct uath_cmd_join_bss {
+ uint32_t bssid; /* NB: use zero */
+ uint32_t bssmac[2]; /* bssid mac address */
+ uint32_t bsstype;
+ uint32_t wlanmode;
+ uint32_t beaconinterval;
+ uint32_t dtiminterval;
+ uint32_t cfpinterval;
+ uint32_t atimwindow;
+ uint32_t defaultrateix;
+ uint32_t shortslottime11g;
+ uint32_t sleepduration;
+ uint32_t bmissthreshold;
+ uint32_t tcppowerlimit;
+ uint32_t quietduration;
+ uint32_t quietoffset;
+ uint32_t quietackctsallow;
+ uint32_t bssdefaultkey; /* XXX? */
+} __packed;
+
+struct uath_cmd_assoc_bss {
+ uint32_t bssid;
+ uint32_t associd;
+} __packed;
+
+struct uath_cmd_start_bss {
+ uint32_t bssid;
+} __packed;
+
+/* structure for command UATH_CMD_0C */
+struct uath_cmd_0c {
+ uint32_t magic1;
+ uint32_t magic2;
+ uint32_t magic3;
+} __packed;
+
+struct uath_cmd_ledsteady { /* WDCMSG_SET_LED_STEADY */
+ uint32_t lednum;
+#define UATH_LED_LINK 0
+#define UATH_LED_ACTIVITY 1
+ uint32_t ledmode;
+#define UATH_LED_OFF 0
+#define UATH_LED_ON 1
+} __packed;
+
+struct uath_cmd_ledblink { /* WDCMSG_SET_LED_BLINK */
+ uint32_t lednum;
+ uint32_t ledmode;
+ uint32_t blinkrate;
+ uint32_t slowmode;
+} __packed;
+
+struct uath_cmd_ledstate { /* WDCMSG_SET_LED_STATE */
+ uint32_t connected;
+} __packed;
+
+struct uath_connkey_rec {
+ uint8_t bssid[IEEE80211_ADDR_LEN];
+ uint32_t keyiv;
+ uint32_t extkeyiv;
+ uint16_t keyflags;
+ uint16_t keylen;
+ uint16_t keytype; /* WEP, TKIP or AES */
+ /* As far as I know, MIPS 4Kp is 32-bit processor */
+ uint32_t priv;
+ uint8_t keyval[32];
+ uint16_t aes_keylen;
+ uint8_t aes_keyval[16];
+ uint8_t mic_txkeyval[8];
+ uint8_t mic_rxkeyval[8];
+ int64_t keyrsc[17];
+ int32_t keytsc[17];
+ int32_t keyexttsc[17];
+} __packed;
+
+/* structure for command UATH_CMD_CRYPTO */
+struct uath_cmd_crypto {
+ uint32_t keyidx;
+#define UATH_DEFAULT_KEY 6
+ uint32_t xorkey;
+ uint32_t size;
+ struct uath_connkey_rec rec;
+} __packed;
+
+struct uath_cmd_rateset {
+ uint8_t length;
+#define UATH_MAX_NRATES 32
+ uint8_t set[UATH_MAX_NRATES];
+};
+
+/* structure for command WDCMSG_SET_BASIC_RATE */
+struct uath_cmd_rates {
+ uint32_t connid;
+ uint32_t keeprccontent;
+ uint32_t size;
+ struct uath_cmd_rateset rateset;
+} __packed;
+
+enum {
+ WLAN_MODE_NONE = 0,
+ WLAN_MODE_11b,
+ WLAN_MODE_11a,
+ WLAN_MODE_11g,
+ WLAN_MODE_11a_TURBO,
+ WLAN_MODE_11g_TURBO,
+ WLAN_MODE_11a_TURBO_PRIME,
+ WLAN_MODE_11g_TURBO_PRIME,
+ WLAN_MODE_11a_XR,
+ WLAN_MODE_11g_XR,
+};
+
+struct uath_cmd_connection_attr {
+ uint32_t longpreambleonly;
+ struct uath_cmd_rateset rateset;
+ uint32_t wlanmode;
+} __packed;
+
+/* structure for command WDCMSG_CREATE_CONNECTION */
+struct uath_cmd_create_connection {
+ uint32_t connid;
+ uint32_t bssid;
+ uint32_t size;
+ struct uath_cmd_connection_attr connattr;
+} __packed;
+
+struct uath_cmd_txq_setparams { /* WDCMSG_SET_TX_QUEUE_PARAMS */
+ uint32_t qnum;
+ uint32_t aifs;
+ uint32_t logcwmin;
+ uint32_t logcwmax;
+ uint32_t bursttime;
+ uint32_t qflags;
+} __packed;
+
+struct uath_cmd_txq_attr {
+ uint32_t priority;
+ uint32_t aifs;
+ uint32_t logcwmin;
+ uint32_t logcwmax;
+ uint32_t bursttime;
+ uint32_t mode;
+ uint32_t qflags;
+} __packed;
+
+struct uath_cmd_txq_setup { /* WDCMSG_SETUP_TX_QUEUE */
+ uint32_t qid;
+ uint32_t len;
+ struct uath_cmd_txq_attr attr;
+} __packed;
+
+struct uath_cmd_stoptxdma { /* WDCMSG_STOP_TX_DMA */
+ uint32_t qnum;
+ uint32_t msec;
+} __packed;
+
+/* structure for command UATH_CMD_31 */
+struct uath_cmd_31 {
+ uint32_t magic1;
+ uint32_t magic2;
+} __packed;
+
+struct uath_cmd_rx_filter { /* WDCMSG_RX_FILTER */
+ uint32_t bits;
+#define UATH_FILTER_RX_UCAST 0x00000001
+#define UATH_FILTER_RX_MCAST 0x00000002
+#define UATH_FILTER_RX_BCAST 0x00000004
+#define UATH_FILTER_RX_CONTROL 0x00000008
+#define UATH_FILTER_RX_BEACON 0x00000010 /* beacon frames */
+#define UATH_FILTER_RX_PROM 0x00000020 /* promiscuous mode */
+#define UATH_FILTER_RX_PHY_ERR 0x00000040 /* phy errors */
+#define UATH_FILTER_RX_PHY_RADAR 0x00000080 /* radar phy errors */
+#define UATH_FILTER_RX_XR_POOL 0x00000400 /* XR group polls */
+#define UATH_FILTER_RX_PROBE_REQ 0x00000800
+ uint32_t op;
+#define UATH_FILTER_OP_INIT 0x0
+#define UATH_FILTER_OP_SET 0x1
+#define UATH_FILTER_OP_CLEAR 0x2
+#define UATH_FILTER_OP_TEMP 0x3
+#define UATH_FILTER_OP_RESTORE 0x4
+} __packed;
+
+struct uath_cmd_rx_mcast_filter { /* WDCMSG_SET_RX_MCAST_FILTER */
+ uint32_t filter0;
+ uint32_t filter1;
+} __packed;
+
+struct uath_cmd_set_associd { /* WDCMSG_WRITE_ASSOCID */
+ uint32_t defaultrateix;
+ uint32_t associd;
+ uint32_t timoffset;
+ uint32_t turboprime;
+ uint32_t bssid[2];
+} __packed;
+
+struct uath_cmd_set_stabeacon_timers { /* WDCMSG_SET_STA_BEACON_TIMERS */
+ uint32_t nexttbtt;
+ uint32_t nextdtim;
+ uint32_t nextcfp;
+ uint32_t beaconperiod;
+ uint32_t dtimperiod;
+ uint32_t cfpperiod;
+ uint32_t cfpduration;
+ uint32_t sleepduration;
+ uint32_t bsmissthreshold;
+} __packed;
+
+enum {
+ CFG_NONE, /* Sentinal to indicate "no config" */
+ CFG_REG_DOMAIN, /* Regulatory Domain */
+ CFG_RATE_CONTROL_ENABLE,
+ CFG_DEF_XMIT_DATA_RATE, /* NB: if rate control is not enabled */
+ CFG_HW_TX_RETRIES,
+ CFG_SW_TX_RETRIES,
+ CFG_SLOW_CLOCK_ENABLE,
+ CFG_COMP_PROC,
+ CFG_USER_RTS_THRESHOLD,
+ CFG_XR2NORM_RATE_THRESHOLD,
+ CFG_XRMODE_SWITCH_COUNT,
+ CFG_PROTECTION_TYPE,
+ CFG_BURST_SEQ_THRESHOLD,
+ CFG_ABOLT,
+ CFG_IQ_LOG_COUNT_MAX,
+ CFG_MODE_CTS,
+ CFG_WME_ENABLED,
+ CFG_GPRS_CBR_PERIOD,
+ CFG_SERVICE_TYPE,
+ /* MAC Address to use. Overrides EEPROM */
+ CFG_MAC_ADDR,
+ CFG_DEBUG_EAR,
+ CFG_INIT_REGS,
+ /* An ID for use in error & debug messages */
+ CFG_DEBUG_ID,
+ CFG_COMP_WIN_SZ,
+ CFG_DIVERSITY_CTL,
+ CFG_TP_SCALE,
+ CFG_TPC_HALF_DBM5,
+ CFG_TPC_HALF_DBM2,
+ CFG_OVERRD_TX_POWER,
+ CFG_USE_32KHZ_CLOCK,
+ CFG_GMODE_PROTECTION,
+ CFG_GMODE_PROTECT_RATE_INDEX,
+ CFG_GMODE_NON_ERP_PREAMBLE,
+ CFG_WDC_TRANSPORT_CHUNK_SIZE,
+};
+
+enum {
+ /* Sentinal to indicate "no capability" */
+ CAP_NONE,
+ CAP_ALL, /* ALL capabilities */
+ CAP_TARGET_VERSION,
+ CAP_TARGET_REVISION,
+ CAP_MAC_VERSION,
+ CAP_MAC_REVISION,
+ CAP_PHY_REVISION,
+ CAP_ANALOG_5GHz_REVISION,
+ CAP_ANALOG_2GHz_REVISION,
+ /* Target supports WDC message debug features */
+ CAP_DEBUG_WDCMSG_SUPPORT,
+
+ CAP_REG_DOMAIN,
+ CAP_COUNTRY_CODE,
+ CAP_REG_CAP_BITS,
+
+ CAP_WIRELESS_MODES,
+ CAP_CHAN_SPREAD_SUPPORT,
+ CAP_SLEEP_AFTER_BEACON_BROKEN,
+ CAP_COMPRESS_SUPPORT,
+ CAP_BURST_SUPPORT,
+ CAP_FAST_FRAMES_SUPPORT,
+ CAP_CHAP_TUNING_SUPPORT,
+ CAP_TURBOG_SUPPORT,
+ CAP_TURBO_PRIME_SUPPORT,
+ CAP_DEVICE_TYPE,
+ CAP_XR_SUPPORT,
+ CAP_WME_SUPPORT,
+ CAP_TOTAL_QUEUES,
+ CAP_CONNECTION_ID_MAX, /* Should absorb CAP_KEY_CACHE_SIZE */
+
+ CAP_LOW_5GHZ_CHAN,
+ CAP_HIGH_5GHZ_CHAN,
+ CAP_LOW_2GHZ_CHAN,
+ CAP_HIGH_2GHZ_CHAN,
+
+ CAP_MIC_AES_CCM,
+ CAP_MIC_CKIP,
+ CAP_MIC_TKIP,
+ CAP_MIC_TKIP_WME,
+ CAP_CIPHER_AES_CCM,
+ CAP_CIPHER_CKIP,
+ CAP_CIPHER_TKIP,
+
+ CAP_TWICE_ANTENNAGAIN_5G,
+ CAP_TWICE_ANTENNAGAIN_2G,
+};
+
+enum {
+ ST_NONE, /* Sentinal to indicate "no status" */
+ ST_ALL,
+ ST_SERVICE_TYPE,
+ ST_WLAN_MODE,
+ ST_FREQ,
+ ST_BAND,
+ ST_LAST_RSSI,
+ ST_PS_FRAMES_DROPPED,
+ ST_CACHED_DEF_ANT,
+ ST_COUNT_OTHER_RX_ANT,
+ ST_USE_FAST_DIVERSITY,
+ ST_MAC_ADDR,
+ ST_RX_GENERATION_NUM,
+ ST_TX_QUEUE_DEPTH,
+ ST_SERIAL_NUMBER,
+ ST_WDC_TRANSPORT_CHUNK_SIZE,
+};
+
+enum {
+ BSS_ATTR_BEACON_INTERVAL,
+ BSS_ATTR_DTIM_INTERVAL,
+ BSS_ATTR_CFP_INTERVAL,
+ BSS_ATTR_CFP_MAX_DURATION,
+ BSS_ATTR_ATIM_WINDOW,
+ BSS_ATTR_DEFAULT_RATE_INDEX,
+ BSS_ATTR_SHORT_SLOT_TIME_11g,
+ BSS_ATTR_SLEEP_DURATION,
+ BSS_ATTR_BMISS_THRESHOLD,
+ BSS_ATTR_TPC_POWER_LIMIT,
+ BSS_ATTR_BSS_KEY_UPDATE,
+};
+
+struct uath_cmd_update_bss_attribute {
+ uint32_t bssid;
+ uint32_t attribute; /* BSS_ATTR_BEACON_INTERVAL, et al. */
+ uint32_t cfgsize; /* should be zero 0 */
+ uint32_t cfgdata;
+};
+
+struct uath_cmd_update_bss_attribute_key {
+ uint32_t bssid;
+ uint32_t attribute; /* BSS_ATTR_BSS_KEY_UPDATE */
+ uint32_t cfgsize; /* size of remaining data */
+ uint32_t bsskeyix;
+ uint32_t isdefaultkey;
+ uint32_t keyiv; /* IV generation control */
+ uint32_t extkeyiv; /* extended IV for TKIP & CCM */
+ uint32_t keyflags;
+ uint32_t keytype;
+ uint32_t initvalue; /* XXX */
+ uint32_t keyval[4];
+ uint32_t mictxkeyval[2];
+ uint32_t micrxkeyval[2];
+ uint32_t keyrsc[2];
+};
+
+enum {
+ TARGET_DEVICE_AWAKE,
+ TARGET_DEVICE_SLEEP,
+ TARGET_DEVICE_PWRDN,
+ TARGET_DEVICE_PWRSAVE,
+ TARGET_DEVICE_SUSPEND,
+ TARGET_DEVICE_RESUME,
+};
+
+#define UATH_MAX_TXBUFSZ \
+ (sizeof(struct uath_chunk) + sizeof(struct uath_tx_desc) + \
+ IEEE80211_MAX_LEN)
+
+/*
+ * it's not easy to measure how the chunk is passed into the host if the target
+ * passed the multi-chunks so just we check a minimal size we can imagine.
+ */
+#define UATH_MIN_RXBUFSZ (sizeof(struct uath_chunk))
diff --git a/sys/dev/usb/wlan/if_uathvar.h b/sys/dev/usb/wlan/if_uathvar.h
new file mode 100644
index 0000000..2717399
--- /dev/null
+++ b/sys/dev/usb/wlan/if_uathvar.h
@@ -0,0 +1,237 @@
+/* $OpenBSD: if_uathvar.h,v 1.3 2006/09/20 19:47:17 damien Exp $ */
+/* $FreeBSD$ */
+
+/*-
+ * Copyright (c) 2006
+ * Damien Bergamini <damien.bergamini@free.fr>
+ * Copyright (c) 2006 Sam Leffler, Errno Consulting
+ * Copyright (c) 2008-2009 Weongyo Jeong <weongyo@freebsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+enum {
+ UATH_INTR_RX,
+ UATH_INTR_TX,
+ UATH_BULK_RX,
+ UATH_BULK_TX,
+ UATH_N_XFERS = 4,
+};
+
+#define UATH_ID_BSS 2 /* Connection ID */
+
+#define UATH_RX_DATA_LIST_COUNT 128
+#define UATH_TX_DATA_LIST_COUNT 16
+#define UATH_CMD_LIST_COUNT 60
+
+#define UATH_DATA_TIMEOUT 10000
+#define UATH_CMD_TIMEOUT 1000
+
+/* flags for sending firmware commands */
+#define UATH_CMD_FLAG_ASYNC (1 << 0)
+#define UATH_CMD_FLAG_READ (1 << 1)
+#define UATH_CMD_FLAG_MAGIC (1 << 2)
+
+struct uath_rx_radiotap_header {
+ struct ieee80211_radiotap_header wr_ihdr;
+ uint8_t wr_flags;
+ uint16_t wr_chan_freq;
+ uint16_t wr_chan_flags;
+ int8_t wr_dbm_antsignal;
+} __packed;
+
+#define UATH_RX_RADIOTAP_PRESENT \
+ ((1 << IEEE80211_RADIOTAP_FLAGS) | \
+ (1 << IEEE80211_RADIOTAP_CHANNEL) | \
+ (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL))
+
+struct uath_tx_radiotap_header {
+ struct ieee80211_radiotap_header wt_ihdr;
+ uint8_t wt_flags;
+ uint16_t wt_chan_freq;
+ uint16_t wt_chan_flags;
+} __packed;
+
+#define UATH_TX_RADIOTAP_PRESENT \
+ ((1 << IEEE80211_RADIOTAP_FLAGS) | \
+ (1 << IEEE80211_RADIOTAP_CHANNEL))
+
+struct uath_data {
+ struct uath_softc *sc;
+ uint8_t *buf;
+ uint16_t buflen;
+ struct mbuf *m;
+ struct ieee80211_node *ni; /* NB: tx only */
+ STAILQ_ENTRY(uath_data) next;
+};
+typedef STAILQ_HEAD(, uath_data) uath_datahead;
+
+struct uath_cmd {
+ struct uath_softc *sc;
+ uint32_t flags;
+ uint32_t msgid;
+ uint8_t *buf;
+ uint16_t buflen;
+ void *odata; /* NB: tx only */
+ int olen; /* space in odata */
+ STAILQ_ENTRY(uath_cmd) next;
+};
+typedef STAILQ_HEAD(, uath_cmd) uath_cmdhead;
+
+struct uath_wme_settings {
+ uint8_t aifsn;
+ uint8_t logcwmin;
+ uint8_t logcwmax;
+ uint16_t txop;
+#define UATH_TXOP_TO_US(txop) ((txop) << 5)
+ uint8_t acm;
+};
+
+struct uath_devcap {
+ uint32_t targetVersion;
+ uint32_t targetRevision;
+ uint32_t macVersion;
+ uint32_t macRevision;
+ uint32_t phyRevision;
+ uint32_t analog5GhzRevision;
+ uint32_t analog2GhzRevision;
+ uint32_t regDomain;
+ uint32_t regCapBits;
+ uint32_t countryCode;
+ uint32_t keyCacheSize;
+ uint32_t numTxQueues;
+ uint32_t connectionIdMax;
+ uint32_t wirelessModes;
+#define UATH_WIRELESS_MODE_11A 0x01
+#define UATH_WIRELESS_MODE_TURBO 0x02
+#define UATH_WIRELESS_MODE_11B 0x04
+#define UATH_WIRELESS_MODE_11G 0x08
+#define UATH_WIRELESS_MODE_108G 0x10
+ uint32_t chanSpreadSupport;
+ uint32_t compressSupport;
+ uint32_t burstSupport;
+ uint32_t fastFramesSupport;
+ uint32_t chapTuningSupport;
+ uint32_t turboGSupport;
+ uint32_t turboPrimeSupport;
+ uint32_t deviceType;
+ uint32_t wmeSupport;
+ uint32_t low2GhzChan;
+ uint32_t high2GhzChan;
+ uint32_t low5GhzChan;
+ uint32_t high5GhzChan;
+ uint32_t supportCipherWEP;
+ uint32_t supportCipherAES_CCM;
+ uint32_t supportCipherTKIP;
+ uint32_t supportCipherMicAES_CCM;
+ uint32_t supportMicTKIP;
+ uint32_t twiceAntennaGain5G;
+ uint32_t twiceAntennaGain2G;
+};
+
+struct uath_stat {
+ uint32_t st_badchunkseqnum;
+ uint32_t st_invalidlen;
+ uint32_t st_multichunk;
+ uint32_t st_toobigrxpkt;
+ uint32_t st_stopinprogress;
+ uint32_t st_crcerr;
+ uint32_t st_phyerr;
+ uint32_t st_decrypt_crcerr;
+ uint32_t st_decrypt_micerr;
+ uint32_t st_decomperr;
+ uint32_t st_keyerr;
+ uint32_t st_err;
+ /* CMD/RX/TX queues */
+ uint32_t st_cmd_active;
+ uint32_t st_cmd_inactive;
+ uint32_t st_cmd_pending;
+ uint32_t st_cmd_waiting;
+ uint32_t st_rx_active;
+ uint32_t st_rx_inactive;
+ uint32_t st_tx_active;
+ uint32_t st_tx_inactive;
+ uint32_t st_tx_pending;
+};
+#define UATH_STAT_INC(sc, var) (sc)->sc_stat.var++
+#define UATH_STAT_DEC(sc, var) (sc)->sc_stat.var--
+
+struct uath_vap {
+ struct ieee80211vap vap;
+ int (*newstate)(struct ieee80211vap *,
+ enum ieee80211_state, int);
+};
+#define UATH_VAP(vap) ((struct uath_vap *)(vap))
+
+struct uath_softc {
+ struct ifnet *sc_ifp;
+ device_t sc_dev;
+ struct usb2_device *sc_udev;
+ struct mtx sc_mtx;
+ uint32_t sc_debug;
+
+ struct uath_stat sc_stat;
+ int (*sc_newstate)(struct ieee80211com *,
+ enum ieee80211_state, int);
+ enum ieee80211_state sc_state;
+
+ struct usb2_xfer *sc_xfer[UATH_N_XFERS];
+ struct uath_cmd sc_cmd[UATH_CMD_LIST_COUNT];
+ uath_cmdhead sc_cmd_active;
+ uath_cmdhead sc_cmd_inactive;
+ uath_cmdhead sc_cmd_pending;
+ uath_cmdhead sc_cmd_waiting;
+ struct uath_data sc_rx[UATH_RX_DATA_LIST_COUNT];
+ uath_datahead sc_rx_active;
+ uath_datahead sc_rx_inactive;
+ struct uath_data sc_tx[UATH_TX_DATA_LIST_COUNT];
+ uath_datahead sc_tx_active;
+ uath_datahead sc_tx_inactive;
+ uath_datahead sc_tx_pending;
+
+ uint32_t sc_msgid;
+ uint32_t sc_seqnum;
+ int sc_tx_timer;
+ struct callout watchdog_ch;
+ struct callout stat_ch;
+ /* multi-chunked support */
+ struct mbuf *sc_intrx_head;
+ struct mbuf *sc_intrx_tail;
+ uint8_t sc_intrx_nextnum;
+ uint32_t sc_intrx_len;
+#define UATH_MAX_INTRX_SIZE 3616
+
+ struct uath_devcap sc_devcap;
+ uint8_t sc_serial[16];
+
+ /* unsorted */
+ uint32_t sc_flags;
+#define UATH_FLAG_INVALID (1 << 1)
+#define UATH_FLAG_INITDONE (1 << 2)
+
+ struct uath_rx_radiotap_header sc_rxtap;
+ int sc_rxtap_len;
+ struct uath_tx_radiotap_header sc_txtap;
+ int sc_txtap_len;
+};
+
+#define UATH_LOCK(sc) mtx_lock(&(sc)->sc_mtx)
+#define UATH_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx)
+#define UATH_ASSERT_LOCKED(sc) mtx_assert(&(sc)->sc_mtx, MA_OWNED)
+
+#define UATH_RESET_INTRX(sc) do { \
+ (sc)->sc_intrx_head = NULL; \
+ (sc)->sc_intrx_tail = NULL; \
+ (sc)->sc_intrx_nextnum = 0; \
+ (sc)->sc_intrx_len = 0; \
+} while (0)
diff --git a/sys/modules/usb/uath/Makefile b/sys/modules/usb/uath/Makefile
new file mode 100644
index 0000000..a734dfc
--- /dev/null
+++ b/sys/modules/usb/uath/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../dev/usb/wlan
+
+KMOD = if_uath
+SRCS = if_uath.c if_uathvar.h if_uathreg.h \
+ bus_if.h device_if.h \
+ opt_bus.h opt_usb.h usb_if.h usbdevs.h
+
+.include <bsd.kmod.mk>
diff --git a/usr.sbin/uathload/Makefile b/usr.sbin/uathload/Makefile
new file mode 100644
index 0000000..ef29ecd
--- /dev/null
+++ b/usr.sbin/uathload/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+PROG= uathload
+NO_MAN=
+
+SRCS= uathload.c ar5523.bin
+
+WARNS?= 4
+
+CLEANFILES= ar5523.bin
+
+ar5523.bin: ${.CURDIR}/../../sys/contrib/dev/uath/ar5523.bin.uu
+ uudecode -p ${.CURDIR}/../../sys/contrib/dev/uath/ar5523.bin.uu > ${.TARGET}
+
+ar5523.o: ar5523.bin
+ ${LD} -b binary -d -warn-common -r -d -o ${.TARGET} ar5523.bin
+
+.include <bsd.prog.mk>
diff --git a/usr.sbin/uathload/uathload.c b/usr.sbin/uathload/uathload.c
new file mode 100644
index 0000000..64ae661
--- /dev/null
+++ b/usr.sbin/uathload/uathload.c
@@ -0,0 +1,233 @@
+/*-
+ * Copyright (c) 2006 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ * redistribution must be conditioned upon including a substantially
+ * similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Atheros AR5523 USB Station Firmware downloader.
+ *
+ * uathload -d ugen-device [firmware-file]
+ *
+ * Intended to be called from devd on device discovery.
+ */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/endian.h>
+#include <sys/mman.h>
+
+#include <sys/ioctl.h>
+#include <dev/usb/usb.h>
+#include <dev/usb/usb_ioctl.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <paths.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <unistd.h>
+
+/* all fields are big endian */
+struct uath_fwmsg {
+ uint32_t flags;
+#define UATH_WRITE_BLOCK (1 << 4)
+
+ uint32_t len;
+#define UATH_MAX_FWBLOCK_SIZE 2048
+
+ uint32_t total;
+ uint32_t remain;
+ uint32_t rxtotal;
+ uint32_t pad[123];
+} __packed;
+
+#define UATH_DATA_TIMEOUT 10000
+#define UATH_CMD_TIMEOUT 1000
+
+#define VERBOSE(_fmt, ...) do { \
+ if (verbose) { \
+ printf(_fmt, __VA_ARGS__); \
+ fflush(stdout); \
+ } \
+} while (0)
+
+extern uint8_t _binary_ar5523_bin_start;
+extern uint8_t _binary_ar5523_bin_end;
+
+static int
+getdevname(const char *devname, char *msgdev, char *datadev)
+{
+ char *bn, *dn;
+
+ dn = dirname(devname);
+ if (dn == NULL)
+ return (-1);
+ bn = basename(devname);
+ if (bn == NULL || strncmp(bn, "ugen", 4))
+ return (-1);
+ bn += 4;
+
+ /* NB: pipes are hardcoded */
+ snprintf(msgdev, 256, "%s/usb/%s.1", dn, bn);
+ snprintf(datadev, 256, "%s/usb/%s.2", dn, bn);
+ return (0);
+}
+
+static void
+usage(void)
+{
+ errx(-1, "usage: uathload [-v] -d devname [firmware]");
+}
+
+int
+main(int argc, char *argv[])
+{
+ const char *fwname, *devname;
+ char msgdev[256], datadev[256];
+ struct uath_fwmsg txmsg, rxmsg;
+ char *txdata;
+ struct stat sb;
+ int msg, data, fw, timeout, b, c;
+ int bufsize = 512, verbose = 0;
+ ssize_t len;
+
+ devname = NULL;
+ while ((c = getopt(argc, argv, "d:v")) != -1) {
+ switch (c) {
+ case 'd':
+ devname = optarg;
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ default:
+ usage();
+ /*NOTREACHED*/
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (devname == NULL)
+ errx(-1, "No device name; use -d to specify the ugen device");
+ if (argc > 1)
+ usage();
+
+ if (argc == 1) {
+ fwname = argv[0];
+ fw = open(fwname, O_RDONLY, 0);
+ if (fw < 0)
+ err(-1, "open(%s)", fwname);
+ if (fstat(fw, &sb) < 0)
+ err(-1, "fstat(%s)", fwname);
+ txdata = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fw, 0);
+ if (txdata == MAP_FAILED)
+ err(-1, "mmap(%s)", fwname);
+ len = sb.st_size;
+ } else {
+ fwname = "ar5523.bin (builtin)";
+ fw = -1;
+ txdata = &_binary_ar5523_bin_start;
+ len = &_binary_ar5523_bin_end - &_binary_ar5523_bin_start;
+ }
+ /* XXX verify device is an AR5005 part */
+ if (getdevname(devname, msgdev, datadev))
+ err(-1, "getdevname error");
+
+ msg = open(msgdev, O_RDWR, 0);
+ if (msg < 0)
+ err(-1, "open(%s)", msgdev);
+ timeout = UATH_DATA_TIMEOUT;
+ if (ioctl(msg, USB_SET_RX_TIMEOUT, &timeout) < 0)
+ err(-1, "%s: USB_SET_RX_TIMEOUT(%u)", msgdev, UATH_DATA_TIMEOUT);
+ if (ioctl(msg, USB_SET_RX_BUFFER_SIZE, &bufsize) < 0)
+ err(-1, "%s: USB_SET_RX_BUFFER_SIZE(%u)", msgdev, bufsize);
+
+ data = open(datadev, O_WRONLY, 0);
+ if (data < 0)
+ err(-1, "open(%s)", datadev);
+ timeout = UATH_DATA_TIMEOUT;
+ if (ioctl(data, USB_SET_TX_TIMEOUT, &timeout) < 0)
+ err(-1, "%s: USB_SET_TX_TIMEOUT(%u)", datadev,
+ UATH_DATA_TIMEOUT);
+
+ VERBOSE("Load firmware %s to %s\n", fwname, devname);
+
+ bzero(&txmsg, sizeof (struct uath_fwmsg));
+ txmsg.flags = htobe32(UATH_WRITE_BLOCK);
+ txmsg.total = htobe32(len);
+
+ b = 0;
+ while (len > 0) {
+ int mlen;
+
+ mlen = len;
+ if (mlen > UATH_MAX_FWBLOCK_SIZE)
+ mlen = UATH_MAX_FWBLOCK_SIZE;
+ txmsg.remain = htobe32(len - mlen);
+ txmsg.len = htobe32(mlen);
+
+ /* send firmware block meta-data */
+ VERBOSE("send block %2u: %zd bytes remaining", b, len - mlen);
+ if (write(msg, &txmsg, sizeof(txmsg)) != sizeof(txmsg)) {
+ VERBOSE("%s", "\n");
+ err(-1, "error sending msg (%s)", msgdev);
+ break;
+ }
+
+ /* send firmware block data */
+ VERBOSE("%s", "\n : data...");
+ if (write(data, txdata, mlen) != mlen) {
+ VERBOSE("%s", "\n");
+ err(-1, "error sending data (%s)", datadev);
+ break;
+ }
+
+ /* wait for ack from firmware */
+ VERBOSE("%s", "\n : wait for ack...");
+ bzero(&rxmsg, sizeof(rxmsg));
+ if (read(msg, &rxmsg, sizeof(rxmsg)) != sizeof(rxmsg)) {
+ VERBOSE("%s", "\n");
+ err(-1, "error reading msg (%s)", msgdev);
+ break;
+ }
+
+ VERBOSE("flags=0x%x total=%d\n",
+ be32toh(rxmsg.flags), be32toh(rxmsg.rxtotal));
+ len -= mlen;
+ txdata += mlen;
+ b++;
+ }
+ sleep(1);
+ close(fw);
+ close(msg);
+ close(data);
+ return 0;
+}
OpenPOWER on IntegriCloud